summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2009-10-30 23:53:03 -0700
committerKeith Packard <keithp@keithp.com>2009-10-30 23:53:03 -0700
commit4f7ed9ff484778381db647c27d2a34d0cadec41e (patch)
treecc476e5338d20cd33bfb2e717dd94178b01a86d3
parent6a7aa1810a90a9216160aec55ec4bd02b3240e1b (diff)
Do more flushing in packet test code
-rw-r--r--src/ao_packet.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/ao_packet.c b/src/ao_packet.c
index 620cd001..0dce326c 100644
--- a/src/ao_packet.c
+++ b/src/ao_packet.c
@@ -198,8 +198,10 @@ ao_packet_putchar(char c)
char
ao_packet_getchar(void) __critical
{
- while (rx_used == rx_len && ao_packet_enable)
+ while (rx_used == rx_len && ao_packet_enable) {
+ flush();
ao_sleep(&rx_data);
+ }
if (!ao_packet_enable)
return 0;
@@ -213,8 +215,11 @@ ao_packet_echo(void) __reentrant
uint8_t c;
while (ao_packet_enable) {
c = ao_packet_getchar();
- if (ao_packet_enable)
+ if (ao_packet_enable) {
putchar(c);
+ if (c == (uint8_t) '\n')
+ flush();
+ }
}
ao_exit();
}
@@ -233,18 +238,14 @@ ao_packet_forward(void) __reentrant
else
ao_add_task(&ao_packet_task, ao_packet_slave, "slave");
ao_add_task(&ao_packet_echo_task, ao_packet_echo, "echo");
- while ((c = getchar()) != '~') {
+ while ((c = getchar()) != '~')
ao_packet_putchar(c);
- if (c == '\n')
- ao_packet_flush();
- }
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);
}
-#endif
}
__code struct ao_cmds ao_packet_cmds[] = {