Start of parser splitout.

This commit is contained in:
Ian Gulliver
2016-02-15 00:29:46 +00:00
parent 276a78aac0
commit 487ecd170c
2 changed files with 8 additions and 2 deletions

View File

@@ -18,6 +18,12 @@ struct opts {
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) {
int opt;
@@ -128,7 +134,7 @@ static int loop(int bfd) {
}
struct packet packet;
while (airspy_adsb_parse(&buf, &packet)) {
while (parsers[0](&buf, &packet)) {
}
if (buf.length == BUF_LEN_MAX) {

View File

@@ -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);
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;
}