summaryrefslogtreecommitdiff
path: root/recipes-connectivity/lora/lora-packet-forwarder
diff options
context:
space:
mode:
authorJohn Klug <john.klug@multitech.com>2019-06-18 16:49:59 -0500
committerJohn Klug <john.klug@multitech.com>2019-06-18 16:49:59 -0500
commit86ffd0b6a1796a4be5492d05fc7d9596bac1a1a3 (patch)
tree3528bac579fea80a04dad3147c17bdbf4763f654 /recipes-connectivity/lora/lora-packet-forwarder
parent9222f31ef4808c87da7aadfd5255102fa4284087 (diff)
parentaa56d1bc09d4b7de4137db08cb6aa3cad9196d48 (diff)
downloadmeta-mlinux-86ffd0b6a1796a4be5492d05fc7d9596bac1a1a3.tar.gz
meta-mlinux-86ffd0b6a1796a4be5492d05fc7d9596bac1a1a3.tar.bz2
meta-mlinux-86ffd0b6a1796a4be5492d05fc7d9596bac1a1a3.zip
Merge changes after 5.0.0 release
Diffstat (limited to 'recipes-connectivity/lora/lora-packet-forwarder')
-rw-r--r--recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-dedup-rx.patch66
-rw-r--r--recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-gpsd.patch9
2 files changed, 75 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..c368033
--- /dev/null
+++ b/recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-dedup-rx.patch
@@ -0,0 +1,66 @@
+diff --git a/lora_pkt_fwd/src/lora_pkt_fwd.c b/lora_pkt_fwd/src/lora_pkt_fwd.c
+index 801f28d..c35c64f 100644
+--- a/lora_pkt_fwd/src/lora_pkt_fwd.c
++++ b/lora_pkt_fwd/src/lora_pkt_fwd.c
+@@ -126,8 +126,9 @@ volatile bool quit_sig = false; /* 1 -> application terminates without shutting
+ static bool fwd_valid_pkt = true; /* packets with PAYLOAD CRC OK are forwarded */
+ static bool fwd_error_pkt = false; /* packets with PAYLOAD CRC ERROR are NOT forwarded */
+ static bool fwd_nocrc_pkt = false; /* packets with NO PAYLOAD CRC are NOT forwarded */
++static bool fwd_best_pkt = true; /* duplicate packets with low SNR are NOT forwarded */
+
+ /* network configuration variables */
+ static uint64_t lgwm = 0; /* Lora gateway MAC address */
+ static char serv_addr[64] = STR(DEFAULT_SERVER); /* address of the server (host name or IPv4/IPv6) */
+ static char serv_port_up[8] = STR(DEFAULT_PORT_UP); /* server port for upstream traffic */
+@@ -731,6 +742,12 @@ static int parse_gateway_configuration(const char * conf_file) {
+ }
+
+ /* packet filtering parameters */
++ val = json_object_get_value(conf_obj, "best_packet_filter");
++ if (json_value_get_type(val) == JSONBoolean) {
++ fwd_best_pkt = (bool)json_value_get_boolean(val);
++ }
++ MSG("INFO: duplicate packets received with low SNR will%s be forwarded\n", (!fwd_best_pkt ? "" : " NOT"));
++
+ val = json_object_get_value(conf_obj, "forward_crc_valid");
+ if (json_value_get_type(val) == JSONBoolean) {
+ fwd_valid_pkt = (bool)json_value_get_boolean(val);
+@@ -1536,6 +1562,38 @@ void thread_up(void) {
+ memcpy((void *)(buff_up + buff_index), (void *)"{\"rxpk\":[", 9);
+ buff_index += 9;
+
++ if (fwd_best_pkt && nb_pkt > 1) {
++ uint32_t check_addr = 0;
++ uint32_t check_mic = 0;
++ uint16_t check_fcnt = 0;
++ float check_snr = -30.0;
++
++ for (i=0; i < nb_pkt; ++i) {
++ p = &rxpkt[i];
++ if (p->size < 12)
++ continue;
++
++ memcpy(&check_addr, p->payload + 1, 4);
++ memcpy(&check_fcnt, p->payload + 6, 2);
++ memcpy(&check_mic, p->payload + p->size - 4, 4);
++
++ check_snr = p->snr;
++
++ for (j=0; j < nb_pkt; ++j) {
++ p = &rxpkt[j];
++
++ if (p->size >= 12
++ && memcmp(&check_addr, p->payload + 1, 4) == 0
++ && memcmp(&check_fcnt, p->payload + 6, 2) == 0
++ && memcmp(&check_mic, p->payload + p->size - 4, 4) == 0
++ && 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;