Start of parser splitout.
This commit is contained in:
8
adsbus.c
8
adsbus.c
@@ -18,6 +18,12 @@ struct opts {
|
|||||||
char *backend_service;
|
char *backend_service;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef bool (*parser)(struct buf *, struct packet *);
|
||||||
|
static parser parsers[] = {
|
||||||
|
airspy_adsb_parse,
|
||||||
|
};
|
||||||
|
#define NUM_PARSERS (sizeof(parsers) / sizeof(*parsers))
|
||||||
|
|
||||||
|
|
||||||
static int parse_opts(int argc, char *argv[], struct opts *opts) {
|
static int parse_opts(int argc, char *argv[], struct opts *opts) {
|
||||||
int opt;
|
int opt;
|
||||||
@@ -128,7 +134,7 @@ static int loop(int bfd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct packet packet;
|
struct packet packet;
|
||||||
while (airspy_adsb_parse(&buf, &packet)) {
|
while (parsers[0](&buf, &packet)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buf.length == BUF_LEN_MAX) {
|
if (buf.length == BUF_LEN_MAX) {
|
||||||
|
|||||||
@@ -48,6 +48,6 @@ static bool airspy_adsb_parse_common(char *in, struct packet *packet) {
|
|||||||
}
|
}
|
||||||
uint16_t mlat_mhz = 2 * hex_to_int(&in[9], 1);
|
uint16_t mlat_mhz = 2 * hex_to_int(&in[9], 1);
|
||||||
packet->mlat_timestamp = hex_to_int(in, 4) * (MLAT_MHZ / mlat_mhz);
|
packet->mlat_timestamp = hex_to_int(in, 4) * (MLAT_MHZ / mlat_mhz);
|
||||||
packet->rssi = hex_to_int(&in[12], 2) * (RSSI_MAX / (1 << 16));
|
packet->rssi = hex_to_int(&in[12], 2) * (RSSI_MAX / UINT16_MAX);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user