summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-09-27 23:50:43 -0700
committerKeith Packard <keithp@keithp.com>2012-03-26 19:20:14 -0700
commit77639dae0fb9975219c2e211ea6dd6c7965eeea2 (patch)
tree892975e909777fba4223b8b13e40fdda6f039566 /src
parent1b4a4c7b6a0c3f93267f33482f490e7aa25c2158 (diff)
altos: Require callsign match in packet code
Ignore packets with mismatching callsigns to avoid accidental connections between devices controlled by different stations. As a special case, if the device is configured with the default callsign (N0CALL), then let anyone connect. This allows configuration of new devices without needing to change the ground station callsign. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r--src/cc1111/ao_packet.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/cc1111/ao_packet.c b/src/cc1111/ao_packet.c
index f502d67c..7eeb0710 100644
--- a/src/cc1111/ao_packet.c
+++ b/src/cc1111/ao_packet.c
@@ -68,6 +68,15 @@ ao_packet_recv(void)
if (!(ao_rx_packet.status & PKT_APPEND_STATUS_1_CRC_OK))
return 0;
+ /* Accept packets with matching call signs, or any packet if
+ * our callsign hasn't been configured
+ */
+ if (ao_xmemcmp(ao_rx_packet.packet.callsign,
+ ao_config.callsign,
+ AO_MAX_CALLSIGN) != 0 &&
+ ao_xmemcmp(ao_config.callsign, CODE_TO_XDATA("N0CALL"), 7) != 0)
+ return 0;
+
/* SYN packets carry no data */
if (ao_rx_packet.packet.len == AO_PACKET_SYN) {
rx_seq = ao_rx_packet.packet.seq;