summaryrefslogtreecommitdiff
path: root/src/cc1111
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-11-12 18:44:36 -0800
committerKeith Packard <keithp@keithp.com>2011-11-12 18:44:36 -0800
commit5972c642f0de0789e90268bfa19ef8b51c06eebc (patch)
tree5a586d149629d5e07bd0f682e4ce0c001367a96d /src/cc1111
parentef7f86453d686a49882e8c1b88a59228c4c631a9 (diff)
altos: Handle internal and external telem monitoring requests
Record separate internal vs external monitoring state, allowing both to happen at the same time, and when either is turned off, the other keeps working. This also adds disable/enable so that other radio users can temporarily take over the radio; monitoring will resume when the other radio user is finished. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/cc1111')
-rw-r--r--src/cc1111/ao_packet_master.c5
-rw-r--r--src/cc1111/ao_pins.h5
-rw-r--r--src/cc1111/ao_radio.c5
3 files changed, 13 insertions, 2 deletions
diff --git a/src/cc1111/ao_packet_master.c b/src/cc1111/ao_packet_master.c
index ab19f979..66f94288 100644
--- a/src/cc1111/ao_packet_master.c
+++ b/src/cc1111/ao_packet_master.c
@@ -114,7 +114,7 @@ ao_packet_forward(void) __reentrant
flush();
#if HAS_MONITOR
- ao_set_monitor(0);
+ ao_monitor_disable();
#endif
ao_add_task(&ao_packet_task, ao_packet_master, "master");
ao_add_task(&ao_packet_echo_task, ao_packet_echo, "echo");
@@ -132,6 +132,9 @@ ao_packet_forward(void) __reentrant
ao_wakeup(&ao_stdin_ready);
ao_delay(AO_MS_TO_TICKS(10));
}
+#if HAS_MONITOR
+ ao_monitor_enable();
+#endif
}
diff --git a/src/cc1111/ao_pins.h b/src/cc1111/ao_pins.h
index 7c5b4574..2b6232a4 100644
--- a/src/cc1111/ao_pins.h
+++ b/src/cc1111/ao_pins.h
@@ -107,6 +107,7 @@
#define PACKET_HAS_SLAVE 0
#define AO_LED_RED 1
#define AO_LED_GREEN 2
+ #define AO_MONITOR_LED AO_LED_GREEN
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
#define SPI_CS_ON_P1 1
#define SPI_CS_ON_P0 0
@@ -218,6 +219,7 @@
#define PACKET_HAS_SLAVE 0
#define AO_LED_RED 2
#define AO_LED_GREEN 1
+ #define AO_MONITOR_LED AO_LED_GREEN
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
#define SPI_CS_ON_P1 0
#define SPI_CS_ON_P0 1
@@ -245,6 +247,7 @@
#define PACKET_HAS_MASTER 1
#define PACKET_HAS_SLAVE 0
#define AO_LED_RED 2
+ #define AO_MONITOR_LED AO_LED_RED
#define LEDS_AVAILABLE (AO_LED_RED)
#define SPI_CS_ON_P1 0
#define SPI_CS_ON_P0 1
@@ -274,6 +277,7 @@
#define PACKET_HAS_SLAVE 0
#define AO_LED_RED 2
#define AO_LED_GREEN 1
+ #define AO_MONITOR_LED AO_LED_RED
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
#define SPI_CS_ON_P1 1
#define SPI_CS_ON_P0 0
@@ -312,6 +316,7 @@
#define PACKET_HAS_SLAVE 0
#define AO_LED_RED 1
#define AO_LED_GREEN 2
+ #define AO_MONITOR_LED AO_LED_RED
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
#define SPI_CS_ON_P1 1
#define SPI_CS_ON_P0 0
diff --git a/src/cc1111/ao_radio.c b/src/cc1111/ao_radio.c
index 75f241d4..ee506f89 100644
--- a/src/cc1111/ao_radio.c
+++ b/src/cc1111/ao_radio.c
@@ -421,7 +421,7 @@ ao_radio_test(void)
mode++;
if ((mode & 2) && !radio_on) {
#if HAS_MONITOR
- ao_set_monitor(0);
+ ao_monitor_disable();
#endif
#if PACKET_HAS_SLAVE
ao_packet_slave_stop();
@@ -439,6 +439,9 @@ ao_radio_test(void)
ao_radio_idle();
ao_radio_put();
radio_on = 0;
+#if HAS_MONITOR
+ ao_monitor_enable();
+#endif
}
}