
RS92-SGP

Modulation: GFSK
raw: 4800 baud
SGP: 1 frame/s
raw-frame: 4800 symbols

RS92-SGP: manchester -> 2400 bit/s
8N1, startbit, 8 bit, stopbit (-> 10bit/byte)

Frame: 240 byte, little endian
error correction: (CRC,) Reed-Solomon


0x00:
Header (SGP): 2A 2A 2A 2A 2A 10
dann: 65 10 [FrameNb] [SondeID]


0x06:
65 10
0x08:
FrameNb(2byte), 20 20
0x0C:
SondeID(8byte), 00 61 00
0x17:
Cal_Nb(1byte)
Wenn Cal_Nb=00, dann
?? ?? 12 02 FF FF 01 00
      | freq: 0x0212 = 530 -> (400000 + freq*10) kHz
Frequenzen:
D7 00 -> 402.15 MHz (Zadar)
E0 00 -> 402.24 MHz (Udine)
E6 00 -> 402.30 MHz (Udine/Muenchen/Meiningen)
0E 01 -> 402.70 MHz (Idar-Oberstein/Kuemmersbruck)
22 01 -> 402.90 MHz (Hohenspeissenberg)
5E 01 -> 403.50 MHz (Uccle)
7C 01 -> 403.80 MHz (Praha)
86 01 -> 403.90 MHz (De Bilt)
90 01 -> 404.00 MHz (Udine)
9A 01 -> 404.10 MHz (Norderney)
AE 01 -> 404.30 MHz (Schleswig2)
C2 01 -> 404.50 MHz (Meppen 6,12 Uhr)
FE 01 -> 405.10 MHz (Meppen 9 Uhr/Lindenberg)
12 02 -> 405.30 MHz (Essen)
3A 02 -> 405.70 MHz (Bergen)


0x46:
67 3D
0x48:
GPS TOW (gps time of week)
(Receiver: Common Transmission Time vs Common Reception Time)

0x4E..0x55: GPS PRN
12*5 bit = 60 bit, auf 8 byte verteilt:
little endian
00000111 1122222x
33333444 4455555x
66666777 7788888x
99999AAA AABBBBBx
PRN-32, 6.bit:
Entweder es ist die 3.PRN in dem Block und dann steht es im sonst nicht genutzten 16.bit x,
oder wenn im 16-bit-Block noch eine weitere PRN folgt,
dann ist diese entweder PRN-1 oder eine gerade PRN,
so dass man im letzteren Fall das unterste Bit wieder loescht.
Das Status-Byte sollte anzeigen, dass es sich davor tatsaechlich um PRN-32 handelt
und nicht um einen Satelliten, der noch nicht gelockt ist.

0x56..0x61: 12 byte GPS STATUS

0x62: 12*8 byte GPS DATA
4 byte pseudochips; 3 byte delta_chips/385; 1 byte
pseudochip-counter 32bit-fract, Faktor 2^(-10)=1/1024
df = c/(chips/sec) / 2^10 = 299792.458/1023.0/1024.0 = 0.286183844 // c=299792458m/s, 1023000chips/s
pseudorange[m] = - df[m/chips] * pseudochips[chips]
dl = L1/(chips/sec)/4 = 1575.42/1.023/4.0; //385.0 // GPS L1 1575.42MHz=154*10.23MHz, dl=154*10/4
delta(pseudochips, 1s) = delta_chips/dl

delta(pseudochips) = ca 25800 +/- d, 
+ sat kommt naeher
- sat entfernt sich
d.h. chip-counter zaehlt, wieviele chips im Intervall schon empfangen wurden;
wenn sat sich entfernt, weniger chips.
nach ca 14 min reset

Geschwindigkeit kann aus delta_chips/385 errechnet werden:
a) 1sec-ECEF-Differenz von pseudochips und delta_chips (braucht nur Sat-Positionen);
b) delta_chips/Doppler als Relativgeschwindigkeiten mit gleicher "Design Matrix" wie fuer
   Positions-Approximation, wobei V-Startwert (0,0,0) (braucht auch Sat-Geschwindigkeiten).

Bei GPS-Loesung ist DOP-Wert der Konstellation wichtig fuer die Genauigkeit.
Bei almanac-Daten 500-1000m Fehler moeglich, rinex-ephemeris deutlich genauer.


0xC8:
8 byte aux-data (z.B. O3)


Error Correction Code
CRC16 / Reed-Solomon

HEADER     6
DATA       210
RS-PARITY  24 

2a2a2a2a2a10 (header)
6510 (L=2*0x10=32)
e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963b ebfb
690c (L=2*0x0c=24)
ca2b0fd9670f00670f8c0f11a458111e8810da410d30430d dc84
673d (L=2*0x3d=122)
b01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f04 6ed7
6805 (L=2*0x05=10)
03030000000000000000 b27d
ff02 (L=2*0x02=4)
02000200
f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1 (Reed-Solomon parity)

ecc/ecc-rs_vaisala.c:
1)
./ecc-rs_vaisala 2a2a2a2a2a106510e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963bebfb690cca2b0fd9670f00670f8c0f11a458111e8810da410d30430ddc84673db01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f046ed7680503030000000000000000b27dff0202000200f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1
RS92
codeword
errors: 0
0000000000000000000000000000000000000000000002000202FF7DB2000000000000000003030568D76E048F829501129F69008BA9D60097467305A0046D00B4D4E10393DA26010460BD0589E0B30019CCCA08860B3700422AE1008B99AE000D16B5049F541900DC5725FEA1DE9E0093A38A048C1F0600E9E0D0009987750111E820EF8A91E57FFFFFFFFFCF8FFF3F4F7FAF4FCFFF0F6E535AB03C8B2907AB6721851CB03D6784DC0D43300D41DA10881E1158A4110F8C0F67000F67D90F2BCA0C69FBEB3B964C753FBCD309983EBB42B3073D3D08006100343339333539344B202018E81065A1123673D06DEA60852E1812EC6806EDB969CDA7402ABEF0
frame:
2a2a2a2a2a106510e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963bebfb690cca2b0fd9670f00670f8c0f11a458111e8810da410d30430ddc84673db01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f046ed7680503030000000000000000b27dff0202000200f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1

2a)
./rs92gps -r rs92.wav > rs92raw.txt
cat rs92raw.txt | ./ecc-rs_vaisala > rs92raw_ecc.txt
./rs92gps --rawin1 -a almanac.txt rs92raw_ecc.txt
2b)
cat rs92raw.txt | ./ecc-rs_vaisala | ./rs92gps --rawin1 -a almanac.txt
2c)
./rs92gps -r rs92.wav | ./ecc-rs_vaisala | ./rs92gps --rawin1 -a almanac.txt

3)
./rs92ecc -b --ecc -e rinex.txt rs92.wav
./rs92ecc -b --ecc --crc -e rinex.txt rs92.wav
Fehler werden nur in raw-output angezeigt:
./rs92ecc -b --ecc -r rs92.wav



Bahndaten
SEM Almanac:
https://celestrak.com/GPS/almanac/SEM/
Rinex Ephemeris:
http://cddis.gsfc.nasa.gov/Data_and_Derived_Products/GNSS/broadcast_ephemeris_data.html
ftp://cddis.gsfc.nasa.gov/gnss/data/daily/YYYY/DDD/YYn/brdcDDD0.YYn.Z (updated)
ftp://cddis.gsfc.nasa.gov/gnss/data/daily/YYYY/brdc/brdcDDD0.YYn.Z (final)

GPS calendar:
http://adn.agi.com/GNSSWeb/

Geoid:
http://geographiclib.sourceforge.net/cgi-bin/GeoidEval


weitere Infos:
http://www.vaisala.com/Vaisala%20Documents/Brochures%20and%20Datasheets/RS92SGP-Datasheet-B210358EN-F-LOW.pdf
http://www.vaisala.com/Vaisala%20Documents/Vaisala%20News%20Articles/VN164/VN164_State-of-the-Art_Radiosonde_Telemetry.pdf
http://brmlab.cz/project/weathersonde/
http://prohu.altervista.org/convert.pdf (PTU, Haeberli 2001)

Reed-Solomon-Decoder:
http://www.ka9q.net/code/fec/
https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders

