summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ao_packet_slave.c26
-rw-r--r--src/ao_pins.h3
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 <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
}
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)