read preferences for --replay
[fw/altos] / src / ao_packet_master.c
index 5e13a91adecb3889727688e172e0f9a957458fb3..641b49f411a48a5c5821e376f055a9872d754363 100644 (file)
@@ -29,6 +29,8 @@ ao_packet_getchar(void) __critical
                        ao_wake_task(&ao_packet_task);
                ao_usb_flush();
                ao_sleep(&ao_stdin_ready);
+               if (!ao_packet_enable)
+                       break;
        }
        return c;
 }
@@ -126,11 +128,10 @@ ao_packet_forward(void) __reentrant
        for (c = 0; (ao_packet_tx_used || ao_tx_packet.len) && c < 10; c++)
                ao_delay(AO_MS_TO_TICKS(100));
        ao_packet_enable = 0;
-       ao_radio_abort();
        while (ao_packet_echo_task.wchan || ao_packet_task.wchan) {
-               ao_wake_task(&ao_packet_echo_task);
-               ao_wake_task(&ao_packet_task);
-               ao_yield();
+               if (ao_packet_echo_task.wchan)
+                       ao_wake_task(&ao_packet_echo_task);
+               ao_delay(AO_MS_TO_TICKS(10));
        }
 }