From 1085ec5d57e0ed5d132f2bbdac1a0b6a32c0ab4a Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 5 Jul 2016 18:03:49 +0200 Subject: Switch from GPLv2 to GPLv2+ Signed-off-by: Keith Packard --- src/kernel/ao.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/kernel/ao.h') diff --git a/src/kernel/ao.h b/src/kernel/ao.h index 27a16606..0f878df5 100644 --- a/src/kernel/ao.h +++ b/src/kernel/ao.h @@ -3,7 +3,8 @@ * * 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 -- cgit v1.2.3 From 17adfd7939ff697afa96f7207a3fe17b6af789bd Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 27 Jul 2016 12:24:27 -0700 Subject: altos: Keep telemetry and command output from interleaving When monitoring telemetry, the frame needs to be sent together on one line, not split with the output of a command (like 'a') mixed in. Use a mutex for products with monitoring to keep command output and telemetry output each on separate lines. Signed-off-by: Keith Packard --- src/kernel/ao.h | 1 + src/kernel/ao_cmd.c | 6 ++++++ src/kernel/ao_monitor.c | 3 +++ 3 files changed, 10 insertions(+) (limited to 'src/kernel/ao.h') diff --git a/src/kernel/ao.h b/src/kernel/ao.h index 0f878df5..56945bf5 100644 --- a/src/kernel/ao.h +++ b/src/kernel/ao.h @@ -667,6 +667,7 @@ extern __xdata union ao_monitor ao_monitor_ring[AO_MONITOR_RING]; #define ao_monitor_ring_next(n) (((n) + 1) & (AO_MONITOR_RING - 1)) #define ao_monitor_ring_prev(n) (((n) - 1) & (AO_MONITOR_RING - 1)) +extern __data uint8_t ao_monitoring_mutex; extern __data uint8_t ao_monitoring; extern __data uint8_t ao_monitor_head; diff --git a/src/kernel/ao_cmd.c b/src/kernel/ao_cmd.c index 605a2f20..10716afd 100644 --- a/src/kernel/ao_cmd.c +++ b/src/kernel/ao_cmd.c @@ -394,11 +394,17 @@ ao_cmd(void) if (func) break; } +#if HAS_MONITOR + ao_mutex_get(&ao_monitoring_mutex); +#endif if (func) (*func)(); else ao_cmd_status = ao_cmd_syntax_error; report(); +#if HAS_MONITOR + ao_mutex_put(&ao_monitoring_mutex); +#endif } } diff --git a/src/kernel/ao_monitor.c b/src/kernel/ao_monitor.c index 8a5a04ba..9912161b 100644 --- a/src/kernel/ao_monitor.c +++ b/src/kernel/ao_monitor.c @@ -36,6 +36,7 @@ #error Must define AO_MONITOR_LED #endif +__data uint8_t ao_monitoring_mutex; __data uint8_t ao_monitoring; static __data uint8_t ao_monitor_disabled; static __data uint8_t ao_internal_monitoring; @@ -241,6 +242,7 @@ ao_monitor_put(void) printf ("rx cleanup: %d\n", ao_rx_done_tick - ao_fec_decode_end); } #endif + ao_mutex_get(&ao_monitoring_mutex); printf("TELEM "); hex((uint8_t) (ao_monitoring + 2)); sum = 0x5a; @@ -251,6 +253,7 @@ ao_monitor_put(void) } hex(sum); putchar ('\n'); + ao_mutex_put(&ao_monitoring_mutex); #if HAS_RSSI if (recv_raw.packet[ao_monitoring + 1] & AO_RADIO_STATUS_CRC_OK) { rssi = AO_RSSI_FROM_RADIO(recv_raw.packet[ao_monitoring]); -- cgit v1.2.3 From 59874a062543c61d164089e8b31f55a9b860c0b1 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 27 Jul 2016 13:23:06 -0700 Subject: fixup for interleave --- src/kernel/ao.h | 2 +- src/kernel/ao_monitor.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/kernel/ao.h') diff --git a/src/kernel/ao.h b/src/kernel/ao.h index 56945bf5..50fd065f 100644 --- a/src/kernel/ao.h +++ b/src/kernel/ao.h @@ -667,7 +667,7 @@ extern __xdata union ao_monitor ao_monitor_ring[AO_MONITOR_RING]; #define ao_monitor_ring_next(n) (((n) + 1) & (AO_MONITOR_RING - 1)) #define ao_monitor_ring_prev(n) (((n) - 1) & (AO_MONITOR_RING - 1)) -extern __data uint8_t ao_monitoring_mutex; +extern __xdata uint8_t ao_monitoring_mutex; extern __data uint8_t ao_monitoring; extern __data uint8_t ao_monitor_head; diff --git a/src/kernel/ao_monitor.c b/src/kernel/ao_monitor.c index 9912161b..7cbee288 100644 --- a/src/kernel/ao_monitor.c +++ b/src/kernel/ao_monitor.c @@ -36,7 +36,7 @@ #error Must define AO_MONITOR_LED #endif -__data uint8_t ao_monitoring_mutex; +__xdata uint8_t ao_monitoring_mutex; __data uint8_t ao_monitoring; static __data uint8_t ao_monitor_disabled; static __data uint8_t ao_internal_monitoring; -- cgit v1.2.3 From 71ddb973ff75680e78fbbef7978ab3893c367629 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 27 Jul 2016 13:24:57 -0700 Subject: 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 --- src/cc1111/ao_radio.c | 10 +++++----- src/drivers/ao_cc1200.c | 49 ++++++++++++++++++++++++++++++++----------------- src/kernel/ao.h | 6 ++++++ 3 files changed, 43 insertions(+), 22 deletions(-) (limited to 'src/kernel/ao.h') 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 @@ -640,6 +640,12 @@ ao_radio_continuity(uint8_t c); void ao_radio_rdf_abort(void); +void +ao_radio_test_on(void); + +void +ao_radio_test_off(void); + void ao_radio_init(void); -- cgit v1.2.3