X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fao_packet_slave.c;h=9f14052af406c9293b3fbeeb7a73b92c3fff438c;hp=4c947fbffed989f324f24b98f08107ad6ef80a4a;hb=01952da35a57ae4da062facb26b3c6d7de29190f;hpb=84c93bb2fc4558a5e4654794ba90e730a84eaf67 diff --git a/src/ao_packet_slave.c b/src/ao_packet_slave.c index 4c947fbf..9f14052a 100644 --- a/src/ao_packet_slave.c +++ b/src/ao_packet_slave.c @@ -20,12 +20,16 @@ void ao_packet_slave(void) { - 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(); + if (ao_packet_recv()) { + memcpy(&ao_tx_packet.callsign, &ao_rx_packet.packet.callsign, AO_MAX_CALLSIGN); +#if HAS_FLIGHT + ao_flight_force_idle = TRUE; +#endif + ao_packet_send(); + } } ao_exit(); } @@ -42,19 +46,19 @@ ao_packet_slave_stop(void) { if (ao_packet_enable) { ao_packet_enable = 0; - ao_radio_abort(); while (ao_packet_task.wchan) { - ao_wake_task(&ao_packet_task); - ao_yield(); + ao_radio_recv_abort(); + ao_delay(AO_MS_TO_TICKS(10)); } - ao_radio_set_telemetry(); } } void -ao_packet_slave_init(void) +ao_packet_slave_init(uint8_t enable) { ao_add_stdio(ao_packet_pollchar, ao_packet_putchar, NULL); + if (enable) + ao_packet_slave_start(); }