summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cc1111/ao_adc.c2
-rw-r--r--src/cc1111/ao_arch.h17
-rw-r--r--src/cc1111/ao_intflash.c2
-rw-r--r--src/cc1111/ao_packet.c4
-rw-r--r--src/cc1111/ao_packet_master.c2
-rw-r--r--src/cc1111/ao_packet_slave.c2
-rw-r--r--src/core/ao.h6
-rw-r--r--src/core/ao_cmd.c4
-rw-r--r--src/core/ao_config.c11
-rw-r--r--src/core/ao_ee_fake.c2
-rw-r--r--src/core/ao_gps_report.c4
-rw-r--r--src/core/ao_host.h4
-rw-r--r--src/core/ao_monitor.c4
-rw-r--r--src/core/ao_telemetry.c10
-rw-r--r--src/drivers/ao_25lc1024.c6
-rw-r--r--src/drivers/ao_at45db161d.c6
-rw-r--r--src/drivers/ao_gps_skytraq.c4
-rw-r--r--src/product/Makefile.telebt1
-rw-r--r--src/product/Makefile.teledongle1
-rw-r--r--src/product/Makefile.telelaunch1
-rw-r--r--src/product/Makefile.telemetrum1
-rw-r--r--src/product/Makefile.telemini1
-rw-r--r--src/product/Makefile.telenano1
-rw-r--r--src/test/ao_flight_test.c8
-rw-r--r--src/tidongle/Makefile1
25 files changed, 72 insertions, 33 deletions
diff --git a/src/cc1111/ao_adc.c b/src/cc1111/ao_adc.c
index 6aa6e018..1688eceb 100644
--- a/src/cc1111/ao_adc.c
+++ b/src/cc1111/ao_adc.c
@@ -46,7 +46,7 @@ ao_adc_get(__xdata struct ao_adc *packet)
#else
uint8_t i = ao_adc_ring_prev(ao_adc_head);
#endif
- memcpy(packet, &ao_adc_ring[i], sizeof (struct ao_adc));
+ ao_xmemcpy(packet, &ao_adc_ring[i], sizeof (struct ao_adc));
}
void
diff --git a/src/cc1111/ao_arch.h b/src/cc1111/ao_arch.h
index 8a41791f..02e36189 100644
--- a/src/cc1111/ao_arch.h
+++ b/src/cc1111/ao_arch.h
@@ -204,4 +204,21 @@ struct ao_adc {
#define AO_ADC_RING 32
+/* ao_string.c */
+
+void
+_ao_xmemcpy(__xdata uint8_t *dst, __xdata uint8_t *src, uint8_t count);
+
+#define ao_xmemcpy(d,s,c) _ao_xmemcpy((__xdata uint8_t *) (d), (__xdata uint8_t *) (s), (c))
+
+void
+_ao_xmemset(__xdata uint8_t *dst, uint8_t value, uint8_t count);
+
+#define ao_xmemset(d,v,c) _ao_xmemset((__xdata uint8_t *) (d), (v), (c))
+
+int8_t
+_ao_xmemcmp(__xdata uint8_t *a, __xdata uint8_t *b, uint8_t count);
+
+#define ao_xmemcmp(d,s,c) _ao_xmemcmp((__xdata uint8_t *) (d), (__xdata uint8_t *) (s), (c))
+
#endif /* _AO_ARCH_H_ */
diff --git a/src/cc1111/ao_intflash.c b/src/cc1111/ao_intflash.c
index d76d954e..632e2a85 100644
--- a/src/cc1111/ao_intflash.c
+++ b/src/cc1111/ao_intflash.c
@@ -180,7 +180,7 @@ ao_storage_device_read(uint32_t pos, __xdata void *d, uint16_t len) __reentrant
{
if (pos >= ao_storage_total || pos + len > ao_storage_total)
return 0;
- memcpy(d, ao_intflash+pos, len);
+ ao_xmemcpy(d, ao_intflash+pos, len);
return 1;
}
diff --git a/src/cc1111/ao_packet.c b/src/cc1111/ao_packet.c
index f627e02b..37ba92e0 100644
--- a/src/cc1111/ao_packet.c
+++ b/src/cc1111/ao_packet.c
@@ -35,7 +35,7 @@ ao_packet_send(void)
ao_led_on(AO_LED_RED);
/* 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;
@@ -80,7 +80,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;
diff --git a/src/cc1111/ao_packet_master.c b/src/cc1111/ao_packet_master.c
index 0d0be30e..ab19f979 100644
--- a/src/cc1111/ao_packet_master.c
+++ b/src/cc1111/ao_packet_master.c
@@ -81,7 +81,7 @@ ao_packet_master(void)
ao_packet_master_delay = AO_PACKET_MASTER_DELAY_SHORT;
while (ao_packet_enable) {
uint8_t r;
- memcpy(ao_tx_packet.callsign, ao_config.callsign, AO_MAX_CALLSIGN);
+ ao_xmemcpy(ao_tx_packet.callsign, ao_config.callsign, AO_MAX_CALLSIGN);
ao_packet_send();
if (ao_tx_packet.len)
ao_packet_master_busy();
diff --git a/src/cc1111/ao_packet_slave.c b/src/cc1111/ao_packet_slave.c
index d7cafa68..fd5d443e 100644
--- a/src/cc1111/ao_packet_slave.c
+++ b/src/cc1111/ao_packet_slave.c
@@ -24,7 +24,7 @@ ao_packet_slave(void)
ao_tx_packet.len = AO_PACKET_SYN;
while (ao_packet_enable) {
if (ao_packet_recv()) {
- memcpy(&ao_tx_packet.callsign, &ao_rx_packet.packet.callsign, AO_MAX_CALLSIGN);
+ ao_xmemcpy(&ao_tx_packet.callsign, &ao_rx_packet.packet.callsign, AO_MAX_CALLSIGN);
#if HAS_FLIGHT
ao_flight_force_idle = TRUE;
#endif
diff --git a/src/core/ao.h b/src/core/ao.h
index 04610fea..c0474729 100644
--- a/src/core/ao.h
+++ b/src/core/ao.h
@@ -1817,4 +1817,10 @@ ao_log_single(void);
#define AO_TELEPYRO_NUM_ADC 9
+#ifndef ao_xmemcpy
+#define ao_xmemcpy(d,s,c) memcpy(d,s,c)
+#define ao_xmemset(d,v,c) memset(d,v,c)
+#define ao_xmemcmp(d,s,c) memcmp(d,s,c)
+#endif
+
#endif /* _AO_H_ */
diff --git a/src/core/ao_cmd.c b/src/core/ao_cmd.c
index 2b64b8ca..0c902f6b 100644
--- a/src/core/ao_cmd.c
+++ b/src/core/ao_cmd.c
@@ -265,8 +265,8 @@ help(void)
cs = ao_cmds[cmds];
for (cmd = 0; cs[cmd].func; cmd++)
printf("%-45s %s\n",
- cs[cmd].help,
- cs[cmd].help+1+strlen(cs[cmd].help));
+ cs[cmd].help,
+ cs[cmd].help+1+strlen(cs[cmd].help));
}
}
diff --git a/src/core/ao_config.c b/src/core/ao_config.c
index a653bed2..08cc79b1 100644
--- a/src/core/ao_config.c
+++ b/src/core/ao_config.c
@@ -78,8 +78,8 @@ _ao_config_get(void)
/* Version 0 stuff */
ao_config.main_deploy = AO_CONFIG_DEFAULT_MAIN_DEPLOY;
ao_config.radio_channel = AO_CONFIG_DEFAULT_RADIO_CHANNEL;
- memset(&ao_config.callsign, '\0', sizeof (ao_config.callsign));
- memcpy(&ao_config.callsign, AO_CONFIG_DEFAULT_CALLSIGN,
+ ao_xmemset(&ao_config.callsign, '\0', sizeof (ao_config.callsign));
+ ao_xmemcpy(&ao_config.callsign, AO_CONFIG_DEFAULT_CALLSIGN,
sizeof(AO_CONFIG_DEFAULT_CALLSIGN) - 1);
ao_config_dirty = 1;
}
@@ -148,7 +148,7 @@ ao_config_callsign_set(void) __reentrant
uint8_t c;
static __xdata char callsign[AO_MAX_CALLSIGN + 1];
- memset(callsign, '\0', sizeof callsign);
+ ao_xmemset(callsign, '\0', sizeof callsign);
ao_cmd_white();
c = 0;
while (ao_cmd_lex_c != '\n') {
@@ -161,7 +161,7 @@ ao_config_callsign_set(void) __reentrant
if (ao_cmd_status != ao_cmd_success)
return;
_ao_config_edit_start();
- memcpy(&ao_config.callsign, &callsign,
+ ao_xmemcpy(&ao_config.callsign, &callsign,
AO_MAX_CALLSIGN + 1);
_ao_config_edit_finish();
}
@@ -535,7 +535,8 @@ ao_config_help(void) __reentrant
for (cmd = 0; ao_config_vars[cmd].str != NULL; cmd++)
printf("%-20s %s\n",
ao_config_vars[cmd].str,
- ao_config_vars[cmd].str+1+strlen(ao_config_vars[cmd].str));
+ ao_config_vars[cmd].str+1+
+ strlen(ao_config_vars[cmd].str));
}
static void
diff --git a/src/core/ao_ee_fake.c b/src/core/ao_ee_fake.c
index b0c1d61e..7fcfcab0 100644
--- a/src/core/ao_ee_fake.c
+++ b/src/core/ao_ee_fake.c
@@ -32,6 +32,6 @@ ao_ee_write_config(uint8_t *buf, uint16_t len) __reentrant
uint8_t
ao_ee_read_config(uint8_t *buf, uint16_t len) __reentrant
{
- memset(buf, '\0', len);
+ ao_xmemset(buf, '\0', len);
return 1;
}
diff --git a/src/core/ao_gps_report.c b/src/core/ao_gps_report.c
index e57f8744..c52ef621 100644
--- a/src/core/ao_gps_report.c
+++ b/src/core/ao_gps_report.c
@@ -27,7 +27,7 @@ ao_gps_report(void)
for (;;) {
ao_sleep(&ao_gps_data);
ao_mutex_get(&ao_gps_mutex);
- memcpy(&gps_data, &ao_gps_data, sizeof (ao_gps_data));
+ ao_xmemcpy(&gps_data, &ao_gps_data, sizeof (ao_gps_data));
ao_mutex_put(&ao_gps_mutex);
if (!(gps_data.flags & AO_GPS_VALID))
@@ -72,7 +72,7 @@ ao_gps_tracking_report(void)
ao_sleep(&ao_gps_tracking_data);
ao_mutex_get(&ao_gps_mutex);
gps_log.tick = ao_gps_tick;
- memcpy(&gps_tracking_data, &ao_gps_tracking_data, sizeof (ao_gps_tracking_data));
+ ao_xmemcpy(&gps_tracking_data, &ao_gps_tracking_data, sizeof (ao_gps_tracking_data));
ao_mutex_put(&ao_gps_mutex);
if (!(n = gps_tracking_data.channels))
diff --git a/src/core/ao_host.h b/src/core/ao_host.h
index 65c25fe5..f2b2f0c9 100644
--- a/src/core/ao_host.h
+++ b/src/core/ao_host.h
@@ -125,3 +125,7 @@ struct ao_config {
#define ao_config_get()
struct ao_config ao_config = { 250, 16000 };
+
+#define ao_xmemcpy(d,s,c) memcpy(d,s,c)
+#define ao_xmemset(d,v,c) memset(d,v,c)
+#define ao_xmemcmp(d,s,c) memcmp(d,s,c)
diff --git a/src/core/ao_monitor.c b/src/core/ao_monitor.c
index 56d7604d..1a8bb52a 100644
--- a/src/core/ao_monitor.c
+++ b/src/core/ao_monitor.c
@@ -94,7 +94,7 @@ ao_monitor_put(void)
/* Typical RSSI offset for 38.4kBaud at 433 MHz is 74 */
rssi = (int16_t) (recv_orig.rssi >> 1) - 74;
- memcpy(callsign, recv_orig.telemetry_orig.callsign, AO_MAX_CALLSIGN);
+ ao_xmemcpy(callsign, recv_orig.telemetry_orig.callsign, AO_MAX_CALLSIGN);
if (state > ao_flight_invalid)
state = ao_flight_invalid;
if (recv_orig.status & PKT_APPEND_STATUS_1_CRC_OK) {
@@ -171,7 +171,7 @@ ao_monitor_put(void)
/* Typical RSSI offset for 38.4kBaud at 433 MHz is 74 */
rssi = (int16_t) (recv_tiny.rssi >> 1) - 74;
- memcpy(callsign, recv_tiny.telemetry_tiny.callsign, AO_MAX_CALLSIGN);
+ ao_xmemcpy(callsign, recv_tiny.telemetry_tiny.callsign, AO_MAX_CALLSIGN);
if (state > ao_flight_invalid)
state = ao_flight_invalid;
if (recv_tiny.status & PKT_APPEND_STATUS_1_CRC_OK) {
diff --git a/src/core/ao_telemetry.c b/src/core/ao_telemetry.c
index 26e4e2a0..95e53917 100644
--- a/src/core/ao_telemetry.c
+++ b/src/core/ao_telemetry.c
@@ -131,10 +131,10 @@ ao_send_configuration(void)
telemetry.configuration.apogee_delay = ao_config.apogee_delay;
telemetry.configuration.main_deploy = ao_config.main_deploy;
telemetry.configuration.flight_log_max = ao_config.flight_log_max >> 10;
- memcpy (telemetry.configuration.callsign,
+ ao_xmemcpy (telemetry.configuration.callsign,
ao_config.callsign,
AO_MAX_CALLSIGN);
- memcpy (telemetry.configuration.version,
+ ao_xmemcpy (telemetry.configuration.version,
ao_version,
AO_MAX_VERSION);
ao_radio_send(&telemetry, sizeof (telemetry));
@@ -150,7 +150,7 @@ ao_send_location(void)
{
telemetry.generic.type = AO_TELEMETRY_LOCATION;
ao_mutex_get(&ao_gps_mutex);
- memcpy(&telemetry.location.flags,
+ ao_xmemcpy(&telemetry.location.flags,
&ao_gps_data.flags,
26);
ao_mutex_put(&ao_gps_mutex);
@@ -167,7 +167,7 @@ ao_send_satellite(void)
telemetry.generic.type = AO_TELEMETRY_SATELLITE;
ao_mutex_get(&ao_gps_mutex);
telemetry.satellite.channels = ao_gps_tracking_data.channels;
- memcpy(&telemetry.satellite.sats,
+ ao_xmemcpy(&telemetry.satellite.sats,
&ao_gps_tracking_data.sats,
AO_MAX_GPS_TRACKING * sizeof (struct ao_telemetry_satellite_info));
ao_mutex_put(&ao_gps_mutex);
@@ -187,7 +187,7 @@ ao_send_companion(void)
telemetry.companion.update_period = ao_companion_setup.update_period;
telemetry.companion.channels = ao_companion_setup.channels;
ao_mutex_get(&ao_companion_mutex);
- memcpy(&telemetry.companion.companion_data,
+ ao_xmemcpy(&telemetry.companion.companion_data,
ao_companion_data,
ao_companion_setup.channels * 2);
ao_mutex_put(&ao_companion_mutex);
diff --git a/src/drivers/ao_25lc1024.c b/src/drivers/ao_25lc1024.c
index 738f8ce6..2d047a44 100644
--- a/src/drivers/ao_25lc1024.c
+++ b/src/drivers/ao_25lc1024.c
@@ -167,7 +167,7 @@ ao_storage_device_write(uint32_t pos, __xdata void *buf, uint16_t len) __reentra
ao_ee_flush_internal();
ao_ee_block = block;
}
- memcpy(ao_ee_data + (uint16_t) (pos & 0xff), buf, len);
+ ao_xmemcpy(ao_ee_data + (uint16_t) (pos & 0xff), buf, len);
ao_ee_block_dirty = 1;
} ao_mutex_put(&ao_ee_mutex);
return 1;
@@ -181,7 +181,7 @@ ao_storage_device_read(uint32_t pos, __xdata void *buf, uint16_t len) __reentran
/* Transfer the data */
ao_mutex_get(&ao_ee_mutex); {
ao_ee_fill(block);
- memcpy(buf, ao_ee_data + (uint16_t) (pos & 0xff), len);
+ ao_xmemcpy(buf, ao_ee_data + (uint16_t) (pos & 0xff), len);
} ao_mutex_put(&ao_ee_mutex);
return 1;
}
@@ -200,7 +200,7 @@ ao_storage_erase(uint32_t pos) __reentrant
ao_mutex_get(&ao_ee_mutex); {
ao_ee_flush_internal();
ao_ee_block = (uint16_t) (pos >> EE_BLOCK_SHIFT);
- memset(ao_ee_data, 0xff, EE_BLOCK_SIZE);
+ ao_xmemset(ao_ee_data, 0xff, EE_BLOCK_SIZE);
ao_ee_block_dirty = 1;
} ao_mutex_put(&ao_ee_mutex);
return 1;
diff --git a/src/drivers/ao_at45db161d.c b/src/drivers/ao_at45db161d.c
index aee9877a..6cd689e5 100644
--- a/src/drivers/ao_at45db161d.c
+++ b/src/drivers/ao_at45db161d.c
@@ -245,7 +245,7 @@ ao_storage_device_write(uint32_t pos, __xdata void *buf, uint16_t len) __reentra
ao_flash_flush_internal();
ao_flash_block = block;
}
- memcpy(ao_flash_data + (uint16_t) (pos & ao_flash_block_mask),
+ ao_xmemcpy(ao_flash_data + (uint16_t) (pos & ao_flash_block_mask),
buf,
len);
ao_flash_block_dirty = 1;
@@ -261,7 +261,7 @@ ao_storage_device_read(uint32_t pos, __xdata void *buf, uint16_t len) __reentran
/* Transfer the data */
ao_mutex_get(&ao_flash_mutex); {
ao_flash_fill(block);
- memcpy(buf,
+ ao_xmemcpy(buf,
ao_flash_data + (uint16_t) (pos & ao_flash_block_mask),
len);
} ao_mutex_put(&ao_flash_mutex);
@@ -282,7 +282,7 @@ ao_storage_erase(uint32_t pos) __reentrant
ao_mutex_get(&ao_flash_mutex); {
ao_flash_flush_internal();
ao_flash_block = (uint16_t) (pos >> ao_flash_block_shift);
- memset(ao_flash_data, 0xff, ao_flash_block_size);
+ ao_xmemset(ao_flash_data, 0xff, ao_flash_block_size);
ao_flash_block_dirty = 1;
} ao_mutex_put(&ao_flash_mutex);
return 1;
diff --git a/src/drivers/ao_gps_skytraq.c b/src/drivers/ao_gps_skytraq.c
index 7ac26946..6e65d651 100644
--- a/src/drivers/ao_gps_skytraq.c
+++ b/src/drivers/ao_gps_skytraq.c
@@ -265,7 +265,7 @@ ao_nmea_gga()
if (!ao_gps_error) {
ao_mutex_get(&ao_gps_mutex);
ao_gps_tick = ao_gps_next_tick;
- memcpy(&ao_gps_data, &ao_gps_next, sizeof (ao_gps_data));
+ ao_xmemcpy(&ao_gps_data, &ao_gps_next, sizeof (ao_gps_data));
ao_mutex_put(&ao_gps_mutex);
ao_wakeup(&ao_gps_data);
}
@@ -327,7 +327,7 @@ ao_nmea_gsv(void)
ao_gps_tracking_next.channels = 0;
else if (done) {
ao_mutex_get(&ao_gps_mutex);
- memcpy(&ao_gps_tracking_data, &ao_gps_tracking_next,
+ ao_xmemcpy(&ao_gps_tracking_data, &ao_gps_tracking_next,
sizeof(ao_gps_tracking_data));
ao_mutex_put(&ao_gps_mutex);
ao_wakeup(&ao_gps_tracking_data);
diff --git a/src/product/Makefile.telebt b/src/product/Makefile.telebt
index 46c87db0..8f7c7429 100644
--- a/src/product/Makefile.telebt
+++ b/src/product/Makefile.telebt
@@ -41,6 +41,7 @@ CC1111_SRC = \
ao_radio_cmac.c \
ao_romconfig.c \
ao_serial.c \
+ ao_string.c \
ao_timer.c \
ao_usb.c \
_bp.c
diff --git a/src/product/Makefile.teledongle b/src/product/Makefile.teledongle
index 56182b84..c1b422c0 100644
--- a/src/product/Makefile.teledongle
+++ b/src/product/Makefile.teledongle
@@ -43,6 +43,7 @@ CC1111_SRC = \
ao_radio.c \
ao_radio_cmac.c \
ao_romconfig.c \
+ ao_string.c \
ao_timer.c \
ao_usb.c \
_bp.c
diff --git a/src/product/Makefile.telelaunch b/src/product/Makefile.telelaunch
index 5da42e46..b40f61a2 100644
--- a/src/product/Makefile.telelaunch
+++ b/src/product/Makefile.telelaunch
@@ -45,6 +45,7 @@ CC1111_SRC = \
ao_romconfig.c \
ao_serial.c \
ao_spi.c \
+ ao_string.c \
ao_timer.c \
ao_usb.c \
_bp.c
diff --git a/src/product/Makefile.telemetrum b/src/product/Makefile.telemetrum
index 2759ac52..4f4195a9 100644
--- a/src/product/Makefile.telemetrum
+++ b/src/product/Makefile.telemetrum
@@ -54,6 +54,7 @@ CC1111_SRC = \
ao_radio.c \
ao_romconfig.c \
ao_serial.c \
+ ao_string.c \
ao_spi.c \
ao_timer.c \
ao_usb.c \
diff --git a/src/product/Makefile.telemini b/src/product/Makefile.telemini
index 7f251897..9f90b01f 100644
--- a/src/product/Makefile.telemini
+++ b/src/product/Makefile.telemini
@@ -45,6 +45,7 @@ CC1111_SRC = \
ao_packet_slave.c \
ao_radio.c \
ao_romconfig.c \
+ ao_string.c \
ao_timer.c \
_bp.c
diff --git a/src/product/Makefile.telenano b/src/product/Makefile.telenano
index c47e95ff..eff3ea97 100644
--- a/src/product/Makefile.telenano
+++ b/src/product/Makefile.telenano
@@ -44,6 +44,7 @@ CC1111_SRC = \
ao_packet_slave.c \
ao_radio.c \
ao_romconfig.c \
+ ao_string.c \
ao_timer.c \
_bp.c
diff --git a/src/test/ao_flight_test.c b/src/test/ao_flight_test.c
index 56733c89..921d44e7 100644
--- a/src/test/ao_flight_test.c
+++ b/src/test/ao_flight_test.c
@@ -173,6 +173,10 @@ struct ao_cmds {
const char *help;
};
+#define ao_xmemcpy(d,s,c) memcpy(d,s,c)
+#define ao_xmemset(d,v,c) memset(d,v,c)
+#define ao_xmemcmp(d,s,c) memcmp(d,s,c)
+
#include "ao_convert.c"
struct ao_config {
@@ -542,7 +546,7 @@ ao_sleep(void *wchan)
ao_flight_started = 1;
}
} else if (nword == 2 && strcmp(words[0], "TELEM") == 0) {
- char *hex = words[1];
+ __xdata char *hex = words[1];
char elt[3];
int i, len;
uint8_t sum;
@@ -574,7 +578,7 @@ ao_sleep(void *wchan)
continue;
}
if (len == 36) {
- memcpy(&telem, bytes + 1, 32);
+ ao_xmemcpy(&telem, bytes + 1, 32);
tick = telem.generic.tick;
switch (telem.generic.type) {
case AO_TELEMETRY_SENSOR_TELEMETRUM:
diff --git a/src/tidongle/Makefile b/src/tidongle/Makefile
index 057e420b..58b9d735 100644
--- a/src/tidongle/Makefile
+++ b/src/tidongle/Makefile
@@ -38,6 +38,7 @@ CC1111_SRC = \
ao_radio.c \
ao_radio_cmac.c \
ao_romconfig.c \
+ ao_string.c \
ao_timer.c \
ao_usb.c \
_bp.c