summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cc1111/ao_radio.c10
-rw-r--r--src/drivers/ao_cc1200.c49
-rw-r--r--src/kernel/ao.h6
3 files changed, 43 insertions, 22 deletions
diff --git a/src/cc1111/ao_radio.c b/src/cc1111/ao_radio.c
index ad337fc5..166d14d5 100644
--- a/src/cc1111/ao_radio.c
+++ b/src/cc1111/ao_radio.c
@@ -588,13 +588,13 @@ ao_radio_rdf_abort(void)
/* Output carrier */
-static __xdata ao_radio_test_on;
+static __xdata radio_test_on;
void
ao_radio_test(uint8_t on)
{
if (on) {
- if (!ao_radio_test_on) {
+ if (!radio_test_on) {
#if HAS_MONITOR
ao_monitor_disable();
#endif
@@ -606,13 +606,13 @@ ao_radio_test(uint8_t on)
#endif
ao_radio_get(0xff);
RFST = RFST_STX;
- ao_radio_test_on = 1;
+ radio_test_on = 1;
}
} else {
- if (ao_radio_test_on) {
+ if (radio_test_on) {
ao_radio_idle();
ao_radio_put();
- ao_radio_test_on = 0;
+ radio_test_on = 0;
#if HAS_MONITOR
ao_monitor_enable();
#endif
diff --git a/src/drivers/ao_cc1200.c b/src/drivers/ao_cc1200.c
index 1f2a3ba9..2bc99734 100644
--- a/src/drivers/ao_cc1200.c
+++ b/src/drivers/ao_cc1200.c
@@ -803,18 +803,12 @@ ao_radio_rdf_abort(void)
ao_wakeup(&ao_radio_wake);
}
-static void
-ao_radio_test_cmd(void)
+static uint8_t radio_on;
+
+void
+ao_radio_test_on(void)
{
- uint8_t mode = 2;
- static uint8_t radio_on;
- ao_cmd_white();
- if (ao_cmd_lex_c != '\n') {
- ao_cmd_decimal();
- mode = (uint8_t) ao_cmd_lex_u32;
- }
- mode++;
- if ((mode & 2) && !radio_on) {
+ if (!radio_on) {
#if HAS_MONITOR
ao_monitor_disable();
#endif
@@ -837,12 +831,12 @@ ao_radio_test_cmd(void)
#endif
radio_on = 1;
}
- if (mode == 3) {
- printf ("Hit a character to stop..."); flush();
- getchar();
- putchar('\n');
- }
- if ((mode & 1) && radio_on) {
+}
+
+void
+ao_radio_test_off(void)
+{
+ if (radio_on) {
ao_radio_idle();
ao_radio_put();
radio_on = 0;
@@ -855,6 +849,27 @@ ao_radio_test_cmd(void)
}
}
+static void
+ao_radio_test_cmd(void)
+{
+ uint8_t mode = 2;
+ ao_cmd_white();
+ if (ao_cmd_lex_c != '\n') {
+ ao_cmd_decimal();
+ mode = (uint8_t) ao_cmd_lex_u32;
+ }
+ mode++;
+ if ((mode & 2))
+ ao_radio_test_on();
+ if (mode == 3) {
+ printf ("Hit a character to stop..."); flush();
+ getchar();
+ putchar('\n');
+ }
+ if ((mode & 1))
+ ao_radio_test_off();
+}
+
void
ao_radio_send(const void *d, uint8_t size)
{
diff --git a/src/kernel/ao.h b/src/kernel/ao.h
index 50fd065f..fb41d7a9 100644
--- a/src/kernel/ao.h
+++ b/src/kernel/ao.h
@@ -641,6 +641,12 @@ void
ao_radio_rdf_abort(void);
void
+ao_radio_test_on(void);
+
+void
+ao_radio_test_off(void);
+
+void
ao_radio_init(void);
/*