X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fao_packet_master.c;h=0808bc80af419c68efbfa4f8869eb8526bef634a;hp=3b23ad92c882396f543a169c02053dbe1b7afcd7;hb=484b44e81b655f1ecb48256095382a56d2839bae;hpb=07213dc34fa20470a4b36a327a83d75b0f010ebb diff --git a/src/ao_packet_master.c b/src/ao_packet_master.c index 3b23ad92..0808bc80 100644 --- a/src/ao_packet_master.c +++ b/src/ao_packet_master.c @@ -21,16 +21,13 @@ static char ao_packet_getchar(void) __critical { char c; - while ((c = ao_packet_pollchar()) == AO_READ_AGAIN) - { + while ((c = ao_packet_pollchar()) == AO_READ_AGAIN) { if (!ao_packet_enable) break; if (ao_packet_master_sleeping) - ao_wake_task(&ao_packet_task); + ao_wakeup(&ao_packet_master_sleeping); ao_usb_flush(); ao_sleep(&ao_stdin_ready); - if (!ao_packet_enable) - break; } return c; } @@ -41,7 +38,7 @@ ao_packet_echo(void) __reentrant uint8_t c; while (ao_packet_enable) { c = ao_packet_getchar(); - if (ao_packet_enable) + if (c != AO_READ_AGAIN) ao_usb_putchar(c); } ao_exit(); @@ -97,7 +94,8 @@ ao_packet_master(void) if (ao_rx_packet.packet.len) ao_packet_master_busy(); ao_packet_master_sleeping = 1; - ao_delay(ao_packet_master_delay); + ao_alarm(ao_packet_master_delay); + ao_sleep(&ao_packet_master_sleeping); ao_packet_master_sleeping = 0; } } @@ -126,8 +124,8 @@ ao_packet_forward(void) __reentrant ao_delay(AO_MS_TO_TICKS(100)); ao_packet_enable = 0; while (ao_packet_echo_task.wchan || ao_packet_task.wchan) { - if (ao_packet_echo_task.wchan) - ao_wake_task(&ao_packet_echo_task); + ao_radio_recv_abort(); + ao_wakeup(&ao_stdin_ready); ao_delay(AO_MS_TO_TICKS(10)); } }