19 {193,
"QZS1", 0,
L6_SVC_CLAS, -1, 0}, {194,
"QZS2", 0,
L6_SVC_CLAS, -1, 204},
20 {195,
"QZS4", 0,
L6_SVC_CLAS, -1, 205}, {196,
"QZS1R", 0,
L6_SVC_CLAS, -1, 206},
21 {197,
"QZS5", 0,
L6_SVC_CLAS, -1, 207}, {199,
"QZS3", 0,
L6_SVC_CLAS, -1, 209},
22 {200,
"QZS6", 0,
L6_SVC_MADOCA_IONO, 0, 210}, {201,
"QZS7", 0,
L6_SVC_MADOCA_IONO, 1, 211},
23 {204,
"QZS2", 1,
L6_SVC_MADOCA, -1, 194}, {205,
"QZS4", 1,
L6_SVC_MADOCA, -1, 195},
24 {206,
"QZS1R", 1,
L6_SVC_MADOCA, -1, 196}, {207,
"QZS5", 1,
L6_SVC_MADOCA, -1, 197},
25 {209,
"QZS3", 1,
L6_SVC_MADOCA, -1, 199}, {210,
"QZS6", 1,
L6_SVC_MADOCA, -1, 200},
32 if (frame[5] != 0 || !(frame[6] & 0x80)) {
37 if (frame[i] != 0xAA) {
45 h->
preamble = ((uint32_t)frame[0] << 24) | ((uint32_t)frame[1] << 16) | ((uint32_t)frame[2] << 8) | frame[3];
54 h->
alert = (frame[6] >> 7) & 0x01;
97 return h->
svc == info->
svc;
101 static const char*
const ext[] = {
".l6",
".l6d",
".l6e"};
102 const char* p = strrchr(file,
'.');
108 for (i = 0; i <
sizeof(ext) /
sizeof(ext[0]); i++) {
109 for (k = 0; p[k] && ext[i][k]; k++) {
110 char c = p[k] >=
'A' && p[k] <=
'Z' ? (char)(p[k] -
'A' +
'a') : p[k];
111 if (c != ext[i][k])
break;
113 if (!p[k] && !ext[i][k]) {
127 if (!(fp = fopen(file,
"rb"))) {
155 memmove(buf, buf + n - keep, keep);
171 return "MADOCA-IONO";
const l6_prn_info_t * l6_prn_info(int prn)
Look up the auxiliary information of an L6 PRN.
static const l6_prn_info_t l6_prn_table[]
int l6_service_expected(const l6_header_t *h)
Test whether a classified frame matches the nominal assignment of its PRN.
l6_file_type_t l6_file_type(const char *file)
Classify a file name by its QZSS L6 extension (case-insensitive).
int l6_parse_header(const uint8_t *frame, l6_header_t *h)
Parse the header of one L6 frame and classify its service.
l6_service_t l6_file_service(const char *file)
Service of an L6 frame file, from the first non-null frame header.
int l6_is_null(const uint8_t *frame)
Test whether an L6 frame is a null message.
const char * l6_service_name(l6_service_t svc)
Short name of an L6 service, for logs.
MRTKLIB L6 Module — QZSS L6 frame header parsing.
l6_service_t
Service carried by an L6 frame.
l6_file_type_t
QZSS L6 file type from the file name extension.
#define L6_FILE_SCAN_BYTES
Auxiliary per-PRN information for one L6 PRN.