X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fao_stdio.c;h=3dd457f7c63959d6da9b70363aca0d4db44960e4;hb=359ba0d9fc2c5947e6adc98bebcd061069c61e79;hp=7bc416e1cf2a35ccce874033f61bf583e2f93830;hpb=ca5d323a3d206050d95f52a61e92c69e1f54e7b5;p=fw%2Faltos diff --git a/src/ao_stdio.c b/src/ao_stdio.c index 7bc416e1..3dd457f7 100644 --- a/src/ao_stdio.c +++ b/src/ao_stdio.c @@ -21,11 +21,11 @@ * Basic I/O functions to support SDCC stdio package */ -#define AO_NUM_STDIOS 2 +#define AO_NUM_STDIOS (HAS_USB + PACKET_HAS_SLAVE + USE_SERIAL_STDIN) static __xdata struct ao_stdio stdios[AO_NUM_STDIOS]; -static __data int8_t ao_cur_stdio; -static __data int8_t ao_num_stdios; +__data int8_t ao_cur_stdio; +__data int8_t ao_num_stdios; void putchar(char c) @@ -38,13 +38,14 @@ putchar(char c) void flush(void) { - stdios[ao_cur_stdio].flush(); + if (stdios[ao_cur_stdio].flush) + stdios[ao_cur_stdio].flush(); } __xdata uint8_t ao_stdin_ready; char -getchar(void) __reentrant +getchar(void) __reentrant __critical { char c; int8_t stdio = ao_cur_stdio; @@ -65,7 +66,7 @@ getchar(void) __reentrant void ao_add_stdio(char (*pollchar)(void), void (*putchar)(char), - void (*flush)(void)) + void (*flush)(void)) __reentrant { if (ao_num_stdios == AO_NUM_STDIOS) ao_panic(AO_PANIC_STDIO);