Add optional 's' command to packet slave to enable/disable slave mode
authorKeith Packard <keithp@keithp.com>
Thu, 22 Apr 2010 21:53:44 +0000 (14:53 -0700)
committerKeith Packard <keithp@keithp.com>
Thu, 22 Apr 2010 23:25:38 +0000 (16:25 -0700)
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 <keithp@keithp.com>
src/ao_packet_slave.c
src/ao_pins.h

index e03ebdc3a20cd90475ee00ea1610b3a3a6f28260..3c4ffb92d26837f5216fbbe1a0a8739447098ed7 100644 (file)
@@ -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 <enable>                         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
 }
index e9a265b0837a4c300f54f1c8e51e94b4b6d1ee54..5a0b4318056d694a591dd5ca52b2e83523da6e69 100644 (file)
@@ -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)