summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2016-07-27 13:24:57 -0700
committerKeith Packard <keithp@keithp.com>2016-07-27 13:24:57 -0700
commit71ddb973ff75680e78fbbef7978ab3893c367629 (patch)
treeaffd5d51d22d94a3879b43a48c576753284ce5fe
parent59874a062543c61d164089e8b31f55a9b860c0b1 (diff)
altos: Expose cc1200 radio test functions for telemini bringup
This exposes the cc1200 radio test function so we can load special test firmware in telemini to do the radio cal as it has no USB to perform that interactively. Signed-off-by: Keith Packard <keithp@keithp.com>
-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);
/*