From 78694ea52b2f0d631f0667e5fae313a5fe471c3e Mon Sep 17 00:00:00 2001 From: Oleg Hahm Date: Tue, 11 Nov 2014 18:54:00 +0100 Subject: [PATCH] transceiver: fix ignore command for 802.15.4 radios --- sys/transceiver/transceiver.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sys/transceiver/transceiver.c b/sys/transceiver/transceiver.c index 38bede760c..488011dfdd 100644 --- a/sys/transceiver/transceiver.c +++ b/sys/transceiver/transceiver.c @@ -482,6 +482,19 @@ static void receive_packet(uint16_t type, uint8_t pos) #ifdef DBG_IGNORE +#if MODULE_AT86RF231 || MODULE_CC2420 || MODULE_MC1322X + radio_address_t short_addr; + short_addr = (transceiver_buffer[transceiver_buffer_pos].frame.src_addr[1] << 8) + | transceiver_buffer[transceiver_buffer_pos].frame.src_addr[0]; + for (size_t j = 0; (j < TRANSCEIVER_MAX_IGNORED_ADDR) && (transceiver_ignored_addr[j]); j++) { + DEBUG("check if source (%u) is ignored -> %u\n", short_addr, transceiver_ignored_addr[j]); + + if (short_addr == transceiver_ignored_addr[j]) { + DEBUG("ignored packet from %" PRIu16 "\n", short_addr); + return; + } + } +#else for (size_t j = 0; (j < TRANSCEIVER_MAX_IGNORED_ADDR) && (transceiver_ignored_addr[j]); j++) { DEBUG("check if source (%u) is ignored -> %u\n", transceiver_buffer[transceiver_buffer_pos].src, transceiver_ignored_addr[j]); @@ -490,7 +503,7 @@ static void receive_packet(uint16_t type, uint8_t pos) return; } } - +#endif #endif }