kopia lustrzana https://github.com/rs1729/RS
dft_detect: add dropsonde RD94/RD41
rodzic
08467ab0f6
commit
42ae1493f6
|
@ -50,6 +50,10 @@ static char rs92_header[] = //"10100110011001101001"
|
|||
"10100110011001101001"
|
||||
"10100110011001101001"
|
||||
"1010011001100110100110101010100110101001";
|
||||
static char rd94rd41_header[] = "10100110010110101001" // 0x1A = 0 01011000 1
|
||||
"10010101011010010101" // 0xCF = 0 11110011 1
|
||||
"10101001010101010101" // 0xFC = 0 00111111 1
|
||||
"10011001010110101001"; // 0x1D = 0 10111000 1
|
||||
|
||||
//int lms_sps = 4800; // lms6_403MHz
|
||||
static char lms6_header[] = "0101011000001000""0001110010010111"
|
||||
|
@ -64,6 +68,7 @@ static char m10_header[] = //"10011001100110010100110010011001";
|
|||
// frame byte[0..1]: byte[0]=framelen-1, byte[1]=type(8F=M2K2,9F=M10,AF=M10+,20=M20)
|
||||
// M2K2 : 64 8F : 01100100 10001111
|
||||
// M10 : 64 9F : 01100100 10011111 (framelen 0x64+1) (baud=9616)
|
||||
// M10 : 66 9F : 01100110 10011111 (framelen 0x66+1) (baud=9600) (2025)
|
||||
// M10-aux: 76 9F : 01110110 10011111 (framelen 0x76+1)
|
||||
// M10+ : 64 AF : 01100100 10101111 (w/ gtop-GPS)
|
||||
// M20 : 45 20 : 01000101 00100000 (framelen 0x45+1) (baud=9600)
|
||||
|
@ -151,6 +156,7 @@ static float set_lpIQ = 0.0;
|
|||
#define tn_M20 6
|
||||
#define tn_LMS6 8
|
||||
#define tn_MEISEI 9
|
||||
#define tn_RD94RD41 10
|
||||
#define tn_MRZ 12
|
||||
#define tn_MTS01 13
|
||||
#define tn_C34C50 15
|
||||
|
@ -163,28 +169,29 @@ static float set_lpIQ = 0.0;
|
|||
#define tn_IMET1rs 28
|
||||
#define tn_IMET1ab 29
|
||||
|
||||
#define Nrs 17
|
||||
#define idxIMETafsk 14
|
||||
#define idxRS 15
|
||||
#define idxI4 16
|
||||
#define idxIMETafsk 15
|
||||
#define idxRS 16
|
||||
#define idxI4 17
|
||||
#define Nrs 18
|
||||
static rsheader_t rs_hdr[Nrs] = {
|
||||
{ 2500, 0, 0, dfm_header, 1.0, 0.0, 0.65, 2, NULL, "DFM9", tn_DFM, 0, 1, 0.0, 0.0}, // DFM6: -2 ?
|
||||
{ 4800, 0, 0, rs41_header, 0.5, 0.0, 0.70, 2, NULL, "RS41", tn_RS41, 0, 1, 0.0, 0.0},
|
||||
{ 4800, 0, 0, rs92_header, 0.5, 0.0, 0.70, 3, NULL, "RS92", tn_RS92, 0, 1, 0.0, 0.0}, // RS92NGP: 1680/400=4.2
|
||||
{ 4800, 0, 0, lms6_header, 1.0, 0.0, 0.60, 8, NULL, "LMS6", tn_LMS6, 0, 1, 0.0, 0.0}, // lmsX: 7?
|
||||
{ 4800, 0, 0, imet54_header, 0.5, 0.0, 0.80, 2, NULL, "IMET5", tn_IMET5, 0, 1, 0.0, 0.0}, // (rs_hdr[idxI5])
|
||||
{ 9616, 0, 0, mk2a_header, 1.0, 0.0, 0.70, 2, NULL, "MK2LMS", tn_MK2LMS, 1, 2, 0.0, 0.0}, // Mk2a/LMS6-1680 , --IQ: decimate > 170kHz ...
|
||||
{ 9608, 0, 0, m10_header, 1.0, 0.0, 0.76, 2, NULL, "M10", tn_M10, 1, 2, 0.0, 0.0}, // M10.tn=5 (baud=9616) , M20.tn=6 (baud=9600)
|
||||
{ 2400, 0, 0, meisei_header, 1.0, 0.0, 0.70, 2, NULL, "MEISEI", tn_MEISEI, 0, 2, 0.0, 0.0},
|
||||
{ 2400, 0, 0, mrz_header, 1.5, 0.0, 0.80, 2, NULL, "MRZ", tn_MRZ, 0, 1, 0.0, 0.0},
|
||||
{ 1200, 0, 0, mts01_header, 1.0, 0.0, 0.65, 2, NULL, "MTS01", tn_MTS01, 0, 0, 0.0, 0.0},
|
||||
{ 5800, 0, 0, c34_preheader, 1.5, 0.0, 0.80, 2, NULL, "C34C50", tn_C34C50, 0, 2, 0.0, 0.0}, // C34/C50 2900 Hz tone
|
||||
{ 4800, 0, 0, weathex_header, 1.0, 0.0, 0.65, 2, NULL, "WXR301", tn_WXR301, 0, 3, 0.0, 0.0},
|
||||
{ 5000, 0, 0, wxr2pn9_header, 1.0, 0.0, 0.65, 2, NULL, "WXRPN9", tn_WXRpn9, 0, 3, 0.0, 0.0},
|
||||
{ 9600, 0, 0, imet1ab_header, 1.0, 0.0, 0.80, 2, NULL, "IMET1AB", tn_IMET1ab, 1, 3, 0.0, 0.0}, // (rs_hdr[idxAB])
|
||||
{ 9600, 0, 0, imet_preamble, 0.5, 0.0, 0.80, 4, NULL, "IMETafsk", tn_IMETa , 1, 1, 0.0, 0.0}, // IMET1AB, IMET1RS (IQ)IMET4
|
||||
{ 9600, 0, 0, imet1rs_header, 0.5, 0.0, 0.80, 2, NULL, "IMET1RS", tn_IMET1rs, 0, 3, 0.0, 0.0}, // (rs_hdr[idxRS]) IMET4: lpIQ=0 ...
|
||||
{ 9600, 0, 0, imet1rs_header, 0.5, 0.0, 0.80, 2, NULL, "IMET4", tn_IMET4, 1, 1, 0.0, 0.0}, // (rs_hdr[idxI4])
|
||||
{ 2500, 0, 0, dfm_header, 1.0, 0.0, 0.65, 2, NULL, "DFM9", tn_DFM, 0, 1, 0.0, 0.0}, // DFM6: -2 ?
|
||||
{ 4800, 0, 0, rs41_header, 0.5, 0.0, 0.70, 2, NULL, "RS41", tn_RS41, 0, 1, 0.0, 0.0},
|
||||
{ 4800, 0, 0, rs92_header, 0.5, 0.0, 0.70, 3, NULL, "RS92", tn_RS92, 0, 1, 0.0, 0.0}, // RS92NGP: 1680/400=4.2
|
||||
{ 4800, 0, 0, lms6_header, 1.0, 0.0, 0.60, 8, NULL, "LMS6", tn_LMS6, 0, 1, 0.0, 0.0}, // lmsX: 7?
|
||||
{ 4800, 0, 0, imet54_header, 0.5, 0.0, 0.80, 2, NULL, "IMET5", tn_IMET5, 0, 1, 0.0, 0.0}, // (rs_hdr[idxI5])
|
||||
{ 9616, 0, 0, mk2a_header, 1.0, 0.0, 0.70, 2, NULL, "MK2LMS", tn_MK2LMS, 1, 2, 0.0, 0.0}, // Mk2a/LMS6-1680 , --IQ: decimate > 170kHz ...
|
||||
{ 9608, 0, 0, m10_header, 1.0, 0.0, 0.76, 2, NULL, "M10", tn_M10, 1, 2, 0.0, 0.0}, // M10.tn=5 (baud=9616) , M20.tn=6 (baud=9600)
|
||||
{ 2400, 0, 0, meisei_header, 1.0, 0.0, 0.70, 2, NULL, "MEISEI", tn_MEISEI, 0, 2, 0.0, 0.0},
|
||||
{ 4800, 0, 0, rd94rd41_header, 1.0, 0.0, 0.70, 2, NULL, "RD94RD41", tn_RD94RD41, 0, 1, 0.0, 0.0}, // Dropsonde RD94/RD41
|
||||
{ 2400, 0, 0, mrz_header, 1.5, 0.0, 0.80, 2, NULL, "MRZ", tn_MRZ, 0, 1, 0.0, 0.0},
|
||||
{ 1200, 0, 0, mts01_header, 1.0, 0.0, 0.65, 2, NULL, "MTS01", tn_MTS01, 0, 0, 0.0, 0.0},
|
||||
{ 5800, 0, 0, c34_preheader, 1.5, 0.0, 0.80, 2, NULL, "C34C50", tn_C34C50, 0, 2, 0.0, 0.0}, // C34/C50 2900 Hz tone
|
||||
{ 4800, 0, 0, weathex_header, 1.0, 0.0, 0.65, 2, NULL, "WXR301", tn_WXR301, 0, 3, 0.0, 0.0},
|
||||
{ 5000, 0, 0, wxr2pn9_header, 1.0, 0.0, 0.65, 2, NULL, "WXRPN9", tn_WXRpn9, 0, 3, 0.0, 0.0},
|
||||
{ 9600, 0, 0, imet1ab_header, 1.0, 0.0, 0.80, 2, NULL, "IMET1AB", tn_IMET1ab, 1, 3, 0.0, 0.0}, // (rs_hdr[idxAB])
|
||||
{ 9600, 0, 0, imet_preamble, 0.5, 0.0, 0.80, 4, NULL, "IMETafsk", tn_IMETa , 1, 1, 0.0, 0.0}, // IMET1AB, IMET1RS (IQ)IMET4
|
||||
{ 9600, 0, 0, imet1rs_header, 0.5, 0.0, 0.80, 2, NULL, "IMET1RS", tn_IMET1rs, 0, 3, 0.0, 0.0}, // (rs_hdr[idxRS]) IMET4: lpIQ=0 ...
|
||||
{ 9600, 0, 0, imet1rs_header, 0.5, 0.0, 0.80, 2, NULL, "IMET4", tn_IMET4, 1, 1, 0.0, 0.0}, // (rs_hdr[idxI4])
|
||||
};
|
||||
|
||||
static int idx_MTS01 = -1,
|
||||
|
@ -1349,6 +1356,7 @@ int main(int argc, char **argv) {
|
|||
|
||||
int d2_tn = Nrs;
|
||||
|
||||
ui32_t frm2_M10M20 = 0;
|
||||
|
||||
#ifdef CYGWIN
|
||||
_setmode(fileno(stdin), _O_BINARY); // _setmode(_fileno(stdin), _O_BINARY);
|
||||
|
@ -1515,7 +1523,7 @@ int main(int argc, char **argv) {
|
|||
herrs = headcmp(1, mv_pos[j], mv[j]<0, rs_hdr+j);
|
||||
if (herrs < rs_hdr[j].herrs) // max bit-errors in header
|
||||
{
|
||||
if ( strncmp(rs_hdr[j].type, "M10", 3) == 0 || strncmp(rs_hdr[j].type, "M20", 3) == 0)
|
||||
if (strncmp(rs_hdr[j].type, "M10", 3) == 0 || strncmp(rs_hdr[j].type, "M20", 3) == 0)
|
||||
{
|
||||
ui32_t bytes = frm_M10(mv_pos[j], mv[j]<0, rs_hdr+j);
|
||||
int len = (bytes >> 8) & 0xFF;
|
||||
|
@ -1528,6 +1536,7 @@ int main(int argc, char **argv) {
|
|||
rs_hdr[j].type = "M10";
|
||||
rs_hdr[j].tn = tn_M10; // M10: 64 9F , M10+: 64 AF , M10-dop: 64 49 (len > 0x60)
|
||||
}
|
||||
frm2_M10M20 = bytes;
|
||||
}
|
||||
|
||||
if ( strncmp(rs_hdr[j].type, "IMETafsk", 8) == 0 ) // ? j == idxIMETafsk
|
||||
|
@ -1610,6 +1619,11 @@ int main(int argc, char **argv) {
|
|||
if ( !option_d2 || j == d2_tn ) {
|
||||
if (option_verbose) fprintf(stdout, "sample: %d\n", mv_pos[j]);
|
||||
fprintf(stdout, "%s: %.4f", rs_hdr[j].type, mv[j]);
|
||||
if (strncmp(rs_hdr[j].type, "M10", 3) == 0 || strncmp(rs_hdr[j].type, "M20", 3) == 0)
|
||||
{
|
||||
if (option_verbose) fprintf(stdout, " [%04X]", frm2_M10M20 & 0xFFFF);
|
||||
frm2_M10M20 = 0;
|
||||
}
|
||||
if (option_dc && option_iq) {
|
||||
fprintf(stdout, " , %+.1fHz", rs_hdr[j].df*sr_base);
|
||||
if (option_verbose) {
|
||||
|
|
Ładowanie…
Reference in New Issue