X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fao_packet_slave.c;h=9b78767f55282b4e77c0f28f806124728151fccc;hp=ba5ad1c1d13e6f0ca2cb4069454cb5fdf66d721e;hb=4738cb2fc639adb1d9237e6c903479f0690dd81a;hpb=0b483233118673cbc2cda1be6acd379df82bc95a diff --git a/src/ao_packet_slave.c b/src/ao_packet_slave.c index ba5ad1c1..9b78767f 100644 --- a/src/ao_packet_slave.c +++ b/src/ao_packet_slave.c @@ -20,12 +20,17 @@ 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) { + memcpy(&ao_tx_packet.callsign, &ao_rx_packet.packet.callsign, AO_MAX_CALLSIGN); + ao_packet_send(); + } } ao_exit(); } @@ -40,13 +45,15 @@ ao_packet_slave_start(void) void ao_packet_slave_stop(void) { - ao_packet_enable = 0; - ao_radio_abort(); - while (ao_packet_task.wchan) { - ao_wake_task(&ao_packet_task); - ao_yield(); + 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_set_telemetry(); } - ao_radio_set_telemetry(); } void @@ -54,5 +61,5 @@ ao_packet_slave_init(void) { ao_add_stdio(ao_packet_pollchar, ao_packet_putchar, - ao_packet_flush); + NULL); }