*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
#include "ao.h"
-__xdata struct ao_packet_recv ao_rx_packet;
-__xdata struct ao_packet ao_tx_packet;
-__pdata uint8_t ao_packet_rx_len, ao_packet_rx_used, ao_packet_tx_used;
+struct ao_packet_recv ao_rx_packet;
+struct ao_packet ao_tx_packet;
+uint8_t ao_packet_rx_len, ao_packet_rx_used, ao_packet_tx_used;
-static __xdata uint8_t tx_data[AO_PACKET_MAX];
-static __xdata uint8_t rx_data[AO_PACKET_MAX];
-static __pdata uint8_t rx_seq;
+static uint8_t tx_data[AO_PACKET_MAX];
+static uint8_t rx_data[AO_PACKET_MAX];
+static uint8_t rx_seq;
-__xdata struct ao_task ao_packet_task;
-__xdata uint8_t ao_packet_enable;
-__xdata uint8_t ao_packet_restart;
+struct ao_task ao_packet_task;
+uint8_t ao_packet_enable;
+uint8_t ao_packet_restart;
#if PACKET_HAS_MASTER
-__xdata uint8_t ao_packet_master_sleeping;
+uint8_t ao_packet_master_sleeping;
#endif
void
/* Check to see if we got a valid packet */
if (!dma_done)
return 0;
- if (!(ao_rx_packet.status & AO_RADIO_STATUS_CRC_OK)) {
- printf("bad crc addr %d len %d seq %d ack %d callsign %8.8s\n",
- ao_rx_packet.packet.addr,
- ao_rx_packet.packet.len,
- ao_rx_packet.packet.seq,
- ao_rx_packet.packet.ack,
- ao_rx_packet.packet.callsign);
- flush();
+ if (!(ao_rx_packet.status & AO_RADIO_STATUS_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) {
- printf ("bad call\n"); flush();
+ ao_xmemcmp(ao_config.callsign, "N0CALL", 7) != 0)
return 0;
- }
/* SYN packets carry no data */
if (ao_rx_packet.packet.len == AO_PACKET_SYN) {
#endif /* PACKET_HAS_MASTER */
void
-ao_packet_putchar(char c) __reentrant
+ao_packet_putchar(char c)
{
/* No need to block interrupts, all variables here
* are only manipulated in task context