X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Flib%2Fprintf%2FPrintfP.nc;h=b620e5e416f6a8b06caff9ade78afc9bb130ce7e;hb=e9bfab607e051bae6afb47b44892ce37541d1b44;hp=5736333fee9d042a0c4be0aa52bc96da8e75ce03;hpb=4fcac2bd5074f3334abd9a12c9bcee73c7c687b9;p=tinyos-2.x.git diff --git a/tos/lib/printf/PrintfP.nc b/tos/lib/printf/PrintfP.nc index 5736333f..b620e5e4 100644 --- a/tos/lib/printf/PrintfP.nc +++ b/tos/lib/printf/PrintfP.nc @@ -76,10 +76,12 @@ #ifdef _H_atmega128hardware_H static int uart_putchar(char c, FILE *stream); -static FILE atm128_stdout = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); +static FILE atm128_stdout = + FDEV_SETUP_STREAM(TCAST(int (*)(char c, FILE *stream), uart_putchar), + NULL, _FDEV_SETUP_WRITE); #endif -module PrintfP { +module PrintfP @safe() { provides { interface Boot; } @@ -109,11 +111,13 @@ implementation { } event void SerialControl.startDone(error_t error) { + if (state == S_STOPPED) { #ifdef _H_atmega128hardware_H - stdout = &atm128_stdout; + stdout = &atm128_stdout; #endif - atomic state = S_STARTED; - signal Boot.booted(); + atomic state = S_STARTED; + signal Boot.booted(); + } } event void SerialControl.stopDone(error_t error) { @@ -159,11 +163,18 @@ implementation { #ifdef _H_msp430hardware_h int putchar(int c) __attribute__((noinline)) @C() @spontaneous() { -#endif +#else #ifdef _H_atmega128hardware_H int uart_putchar(char c, FILE *stream) __attribute__((noinline)) @C() @spontaneous() { +#else +#ifdef __M16C62PHARDWARE_H__ + int lowlevel_putc(int c) __attribute__((noinline)) @C() @spontaneous() { +#else + int lowlevel_putc(int c) __attribute__((noinline)) @C() @spontaneous() { +#endif +#endif #endif - if((state == S_STARTED) && (call Queue.size() >= 5*sizeof(printf_msg_t))) { + if((state == S_STARTED) && (call Queue.size() >= ((PRINTF_BUFFER_SIZE)/2))) { state = S_FLUSHING; sendNext(); }