diff options
author | Andrii Pientsov <andrii.pientsov@globallogic.com> | 2020-05-27 15:05:10 +0300 |
---|---|---|
committer | Andrii Pientsov <andrii.pientsov@globallogic.com> | 2020-05-27 15:05:10 +0300 |
commit | e919ef1e33c2cb56856cdbd22792a3bc3f36341d (patch) | |
tree | eb08d052d64d0814ea1cfc75664b64be68eaffbb /recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-dedup-rx.patch | |
parent | e0d7185cbf41d7921acdb90bcac898f5e9786848 (diff) | |
download | meta-mlinux-atmel-e919ef1e33c2cb56856cdbd22792a3bc3f36341d.tar.gz meta-mlinux-atmel-e919ef1e33c2cb56856cdbd22792a3bc3f36341d.tar.bz2 meta-mlinux-atmel-e919ef1e33c2cb56856cdbd22792a3bc3f36341d.zip |
Remove duplicate LoRa
Diffstat (limited to 'recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-dedup-rx.patch')
-rw-r--r-- | recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-dedup-rx.patch | 66 |
1 files changed, 0 insertions, 66 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 deleted file mode 100644 index c368033..0000000 --- a/recipes-connectivity/lora/lora-packet-forwarder/lora-packet-forwarder-dedup-rx.patch +++ /dev/null @@ -1,66 +0,0 @@ -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) { |