From a674fa11967b1544352d187a2aad18c31d5621cf Mon Sep 17 00:00:00 2001 From: Jason Reiss Date: Tue, 4 Jun 2019 14:16:52 -0500 Subject: lora: fix gps time stamping and synchronization, add patch for PKF deduplication to be incorporated into recipe later --- .../lora-packet-forwarder-dedup-rx.patch | 47 ++++++++++++++++++++++ .../lora-packet-forwarder-gpsd.patch | 9 +++++ 2 files changed, 56 insertions(+) create mode 100644 recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-dedup-rx.patch (limited to 'recipes-connectivity/lora/lora-packet-forwarder') diff --git a/recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-dedup-rx.patch b/recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-dedup-rx.patch new file mode 100644 index 0000000..b80bb26 --- /dev/null +++ b/recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-dedup-rx.patch @@ -0,0 +1,47 @@ +diff --git a/lora_pkt_fwd/src/lora_pkt_fwd.c b/lora_pkt_fwd/src/lora_pkt_fwd.c +index 801f28d..7c94308 100644 +--- a/lora_pkt_fwd/src/lora_pkt_fwd.c ++++ b/lora_pkt_fwd/src/lora_pkt_fwd.c +@@ -1536,6 +1556,41 @@ void thread_up(void) { + memcpy((void *)(buff_up + buff_index), (void *)"{\"rxpk\":[", 9); + buff_index += 9; + ++ if (nb_pkt > 1) { ++ uint32_t check_addr = 0; ++ uint16_t check_fcnt = 0; ++ float check_snr = -30.0; ++ ++ for (i=0; i < nb_pkt; ++i) { ++ p = &rxpkt[i]; ++ check_addr = p->payload[1]; ++ check_addr |= p->payload[2] << 8; ++ check_addr |= p->payload[3] << 16; ++ check_addr |= p->payload[4] << 24; ++ ++ check_fcnt = p->payload[6]; ++ check_fcnt |= p->payload[7] << 8; ++ ++ check_snr = p->snr; ++ ++ for (j=0; j < nb_pkt; ++j) { ++ p = &rxpkt[j]; ++ mote_addr = p->payload[1]; ++ mote_addr |= p->payload[2] << 8; ++ mote_addr |= p->payload[3] << 16; ++ mote_addr |= p->payload[4] << 24; ++ ++ mote_fcnt = p->payload[6]; ++ mote_fcnt |= p->payload[7] << 8; ++ ++ if (check_addr == mote_addr && check_fcnt == mote_fcnt && p->snr < check_snr) { ++ // set status of duplicate packets rx'd on wrong channel ++ p->status = 1; ++ } ++ } ++ } ++ } ++ + /* serialize Lora packets metadata and payload */ + pkt_in_dgram = 0; + for (i=0; i < nb_pkt; ++i) { + diff --git a/recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-gpsd.patch b/recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-gpsd.patch index 1c3c698..02bef12 100644 --- a/recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-gpsd.patch +++ b/recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-gpsd.patch @@ -115,6 +115,15 @@ index 801f28d..6bca482 100644 if (i == LGW_HAL_SUCCESS) { MSG("INFO: GPS closed successfully\n"); } else { +@@ -2683,7 +2731,7 @@ static void gps_process_sync(void) { + i = lgw_gps_sync(&time_reference_gps, trig_tstamp, utc, gps_time); + pthread_mutex_unlock(&mx_timeref); + if (i != LGW_GPS_SUCCESS) { +- MSG("WARNING: [gps] GPS out of sync, keeping previous time reference\n"); ++// MSG("WARNING: [gps] GPS out of sync, keeping previous time reference\n"); + } + } + @@ -2691,7 +2695,7 @@ static void gps_process_coords(void) { /* position variable */ struct coord_s coord; -- cgit v1.2.3