diff options
author | Keith Packard <keithp@keithp.com> | 2011-09-27 23:50:43 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2012-03-26 19:20:14 -0700 |
commit | 77639dae0fb9975219c2e211ea6dd6c7965eeea2 (patch) | |
tree | 892975e909777fba4223b8b13e40fdda6f039566 /src | |
parent | 1b4a4c7b6a0c3f93267f33482f490e7aa25c2158 (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.c | 9 |
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; |