maqifrnswa / PCSI

Packet Compressed Sensing Imaging (PCSI)
GNU General Public License v3.0
27 stars 3 forks source link

Query - Identification in packet format #7

Closed darksidelemm closed 4 years ago

darksidelemm commented 4 years ago

Hi! This is an awesome project, and I'm looking forward to seeing where it goes! It looks like an interesting move forwards from using SSDV on high-altitude balloons ( e.g. SSDV over Wenet: https://github.com/projecthorus/wenet ) and on HF ( https://github.com/darksidelemm/hfssdv ).

I'll probably be giving it a go over HF using freedvtnc ( https://github.com/xssfox/freedv-tnc ) at some point soonish (your support for KISS-TCP should make this super easy!). However using freedv-tnc there isn't much going on in the way of identification on the channel - we're not using AX.25 framing, just pushing packets through. The same is true when transmitting imagery via Wenet, it's just SSDV packets pushed over a FSK+LDPC link. We rely on the callsign field in SSDV to meet our identification requirements.

Looking at the PDP spec ( https://maqifrnswa.github.io/PCSI/spec.html ) I see the packets only contain an image ID. So - I'm wondering if a small callsign identifier could be included in the packet format, in a similar way to how SSDV does things? This would also allow easier automated reconstruction of imagery from multiple receivers for display on a webpage (e.g. http://ssdv.habhub.org/ ), which would not be possible with the current packet format, unless additional framing overhead was introduced.

Again, this is awesome work!

73 Mark VK5QI

fsphil commented 4 years ago

At a minimum it could be just a simple wrapper around the PDP packet when it's not being used with AX.25, so you're not adding unnecessary overhead. All it would really need is a format identifier, callsign, PDP data, and ideally a checksum.

This is a really fascinating project, I'm looking forward to seeing it in action.

maqifrnswa commented 4 years ago

That's an excellent point! SSDV just uses 4 bytes for the callsign (base40 encoding), so it's not that expensive - but it is a bit of overhead. I also like the idea of coming up with a simple framing protocol like @fsphil described around the PDP payloads. I'll play around with both options and check back here later. Right now the GUI program just sends AX.25 frames over KISS, but you can hack it to just skip all the ax.25 framing stuff.

maqifrnswa commented 4 years ago

This is an interesting theoretical question. Breaking it down:

I think a solution can be as follows:

The spec can describe PDP (for a single image), but allow for any other way of transmitting session information as appropriate. For example:

Those protocols can be implemented in the reference software. What do you think?