From e7dc7fab787df63a4de72c8450e94092eb04d7db Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 22 Apr 2010 14:53:44 -0700 Subject: [PATCH] Add optional 's' command to packet slave to enable/disable slave mode This option has been selected for teledongle so that you can use slave mode and hook two teledongles together over the RF link. Signed-off-by: Keith Packard --- src/ao_packet_slave.c | 26 ++++++++++++++++++++++++-- src/ao_pins.h | 3 ++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/ao_packet_slave.c b/src/ao_packet_slave.c index e03ebdc3..3c4ffb92 100644 --- a/src/ao_packet_slave.c +++ b/src/ao_packet_slave.c @@ -36,8 +36,10 @@ ao_packet_slave(void) void ao_packet_slave_start(void) { - ao_packet_enable = 1; - ao_add_task(&ao_packet_task, ao_packet_slave, "slave"); + if (!ao_packet_enable) { + ao_packet_enable = 1; + ao_add_task(&ao_packet_task, ao_packet_slave, "slave"); + } } void @@ -54,10 +56,30 @@ ao_packet_slave_stop(void) } } +#ifdef PACKET_HAS_SLAVE_CMD +void +ao_packet_slave_control(void) +{ + ao_cmd_hex(); + if (ao_cmd_lex_i) + ao_packet_slave_start(); + else + ao_packet_slave_stop(); +} + +__code struct ao_cmds ao_packet_slave_cmds[] = { + { 's', ao_packet_slave_control, "s Remote packet link slave" }, + { 0, ao_packet_slave_control, NULL }, +}; +#endif + void ao_packet_slave_init(void) { ao_add_stdio(ao_packet_pollchar, ao_packet_putchar, NULL); +#ifdef PACKET_HAS_SLAVE_CMD + ao_cmd_register(&ao_packet_slave_cmds[0]); +#endif } diff --git a/src/ao_pins.h b/src/ao_pins.h index e9a265b0..5a0b4318 100644 --- a/src/ao_pins.h +++ b/src/ao_pins.h @@ -41,7 +41,8 @@ #define DBG_ON_P1 1 #define DBG_ON_P0 0 #define PACKET_HAS_MASTER 1 - #define PACKET_HAS_SLAVE 0 + #define PACKET_HAS_SLAVE 1 + #define PACKET_HAS_SLAVE_CMD 1 #define AO_LED_RED 1 #define AO_LED_GREEN 2 #define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN) -- 2.30.2