void
ao_packet_slave(void)
{
+ uint8_t status;
+
ao_radio_set_packet();
ao_tx_packet.addr = ao_serial_number;
ao_tx_packet.len = AO_PACKET_SYN;
while (ao_packet_enable) {
- ao_packet_recv();
- ao_packet_send();
+ status = ao_packet_recv();
+ if (status & AO_DMA_DONE)
+ ao_packet_send();
}
ao_exit();
}
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
}
}
+#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
}