altos: add callsign to packet mode, increase payload to 64 bytes
[fw/altos] / src / ao_packet_slave.c
index 122c4da0588148ffb18d9b8daacc5a553cdbcfca..9b78767f55282b4e77c0f28f806124728151fccc 100644 (file)
 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();
 }
@@ -56,5 +61,5 @@ ao_packet_slave_init(void)
 {
        ao_add_stdio(ao_packet_pollchar,
                     ao_packet_putchar,
-                    ao_packet_flush);
+                    NULL);
 }