X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fcc1111%2Fao_packet.c;h=7eeb07108f2504285983839bafa294bc55fb01cc;hb=059f09dbca4703c25b42389b54c6510331c39485;hp=f627e02b4022ee8004fd5400a4eb20d0d0ed60d8;hpb=f6f54d70b768dca1715ddddea64a4df00d82b09e;p=fw%2Faltos diff --git a/src/cc1111/ao_packet.c b/src/cc1111/ao_packet.c index f627e02b..7eeb0710 100644 --- a/src/cc1111/ao_packet.c +++ b/src/cc1111/ao_packet.c @@ -32,17 +32,21 @@ __xdata uint8_t ao_packet_master_sleeping; void ao_packet_send(void) { +#ifdef AO_LED_RED ao_led_on(AO_LED_RED); +#endif /* If any tx data is pending then copy it into the tx packet */ if (ao_packet_tx_used && ao_tx_packet.len == 0) { - memcpy(&ao_tx_packet.d, tx_data, ao_packet_tx_used); + ao_xmemcpy(&ao_tx_packet.d, tx_data, ao_packet_tx_used); ao_tx_packet.len = ao_packet_tx_used; ao_tx_packet.seq++; ao_packet_tx_used = 0; ao_wakeup(&tx_data); } ao_radio_send(&ao_tx_packet, sizeof (ao_tx_packet)); +#ifdef AO_LED_RED ao_led_off(AO_LED_RED); +#endif } uint8_t @@ -64,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; @@ -80,7 +93,7 @@ ao_packet_recv(void) /* Copy data to the receive data buffer and set up the * offsets */ - memcpy(rx_data, ao_rx_packet.packet.d, ao_rx_packet.packet.len); + ao_xmemcpy(rx_data, ao_rx_packet.packet.d, ao_rx_packet.packet.len); ao_packet_rx_used = 0; ao_packet_rx_len = ao_rx_packet.packet.len;