daniestevez / gr-satellites

GNU Radio decoder for Amateur satellites
GNU General Public License v3.0
790 stars 163 forks source link

Added new deframer for GEOSCAN satellite platform #678

Closed Foxiks closed 1 month ago

Foxiks commented 1 month ago

Added new deframer for GEOSCAN satellite platform. New packet length is 74 bytes. I changed the block by adding a parameter to select packet length for old and new satellite platform

Foxiks commented 1 month ago

Actually the new packet length will only be used on the new satellites, but StartoSat TK-1 will still have the old packet length, so I made the switch via a parameter, but maybe it's worth just dedicating a new block for this?

daniestevez commented 1 month ago

Your idea to use the same block is preferable, because it avoids unnecessary code duplication.

There is also GEOSCAN-EDELVEIS.yml using the GEOSCAN deframer. Will this satellite maintain the old packet length too?

Foxiks commented 1 month ago

GEOSCAN-EDELVEIS.yml is applicable for StratoSat TK-1, and new satellites can also use it, only it is necessary to specify the packet length not 66, but 74 bytes, and everything else remains the same

daniestevez commented 1 month ago

Maybe my question wasn't clear. There is a satellite called GEOSCAN-EDELVEIS (NORAD ID 53385) which in gr-satellites is described by the file GEOSCAN-EDELVEIS.yml. Will this satellite only transmit 66 byte frames or will it also transmit 74 byte frames?

Foxiks commented 1 month ago

The GEOSCAN-EDELVEIS satellite is long gone, but this yml file is suitable for StratoSat TK-1

daniestevez commented 1 month ago

I wasn't aware that GEOSCAN-EDELVEIS had decayed. StratoSat TK-1 has its own SatYAML file STRATOSAT-TK1.yml. Each satellite supported by gr-satellites has its own SatYAML file.

Foxiks commented 1 month ago

Excellent! The thing is that I use separate deframers inside GR and did not pay attention to SatYML. Tell me what I should change or add to add support for the new GEOSCAN satellite platform?

daniestevez commented 1 month ago

I outlined the required changes in

The new parameter is not reachable through SatYAML. A way to specify this framing should be added in satyaml.py, documented in satyaml.rst, and hooked up in gr_satellites_flowgraph.py.

Can you take a look at existing code in those files and let me know if you have questions?

Foxiks commented 1 month ago

Yes, I will try to work with this.

Foxiks commented 1 month ago

I added a parameter for variable packet length, because I was informed that on the new GEOSCAN satellite platform it is possible to change the packet length up to 255 bytes

daniestevez commented 1 month ago

Besides the open conversations, I'm missing a way to test these changes. For instance, a SatYAML file and sample recording for one of the new satellites.

daniestevez commented 1 month ago

Thanks! I've tested this with the provided IQ recording .

Here is the flowgraph and SatYAML file I used: new_geoscan.zip

This produces frames that look like this:

***** VERBOSE PDU DEBUG PRINT ******
((transmitter . 9k6 FSK downlink))
pdu length =         72 bytes
pdu vector contents = 
0000: 00 98 04 34 4c f0 00 00 00 00 00 00 00 00 00 00 
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0040: 00 00 00 00 00 00 00 00 
************************************

***** VERBOSE PDU DEBUG PRINT ******
((transmitter . 9k6 FSK downlink))
pdu length =         72 bytes
pdu vector contents = 
0000: 00 98 3e 34 41 00 00 00 89 ba 9a f4 3b 9b 58 6f 
0010: 42 c9 03 a3 a7 f0 bc 67 35 4e 2a 7e f4 65 cc bc 
0020: b5 2a 31 8b 76 2b 5a e8 86 e2 45 89 a2 0e 3d 64 
0030: e6 bb 9d 1b c3 4b 6b 38 90 c2 19 07 f0 b7 14 a3 
0040: 00 00 00 00 00 00 00 00 
************************************

***** VERBOSE PDU DEBUG PRINT ******
((transmitter . 9k6 FSK downlink))
pdu length =         72 bytes
pdu vector contents = 
0000: 00 98 3e 34 41 38 00 00 25 7d 4d 9c 5b 8d e2 7a 
0010: 85 9e 95 1d ec d8 4b 61 95 af 4c d1 ec e0 d3 53 
0020: 64 ca 01 ea 48 ef 58 62 eb 3a ad 28 a3 96 a4 9c 
0030: 2d 14 6d dc dc 83 11 31 12 a0 ff 00 08 ed 5e 45 
0040: 00 00 00 00 00 00 00 00 
************************************

[...]

The only things that remain to make this PR mergeable are:

Foxiks commented 1 month ago

It seems like it's ready now!

daniestevez commented 1 month ago

Great. Squashing and merging.