summaryrefslogtreecommitdiff
path: root/recipes-connectivity/lora/lora-packet-forwarder
diff options
context:
space:
mode:
authorJason Reiss <jreiss@multitech.com>2019-06-04 14:16:52 -0500
committerJason Reiss <jreiss@multitech.com>2019-06-04 14:16:52 -0500
commit1db3228526ff0a380a0170e21320fd8d0d345cbe (patch)
tree48a029daaeb581a8adc8436665c45ebb84010e6d /recipes-connectivity/lora/lora-packet-forwarder
parentb5a2ca08e91475eeaee33166d018f532e1c069f5 (diff)
downloadmeta-mlinux-1db3228526ff0a380a0170e21320fd8d0d345cbe.tar.gz
meta-mlinux-1db3228526ff0a380a0170e21320fd8d0d345cbe.tar.bz2
meta-mlinux-1db3228526ff0a380a0170e21320fd8d0d345cbe.zip
lora: fix gps time stamping and synchronization, add patch for PKF deduplication to be incorporated into recipe later
Diffstat (limited to 'recipes-connectivity/lora/lora-packet-forwarder')
-rw-r--r--recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-dedup-rx.patch47
-rw-r--r--recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-gpsd.patch9
2 files changed, 56 insertions, 0 deletions
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;