]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/lib/printf/PrintfP.nc
Oops, checked in wrong version of a file for last commit. Should be fixed now...
[tinyos-2.x.git] / tos / lib / printf / PrintfP.nc
index 5736333fee9d042a0c4be0aa52bc96da8e75ce03..a1a81f3beb6a05786d14f20b268ed2cffdadd126 100644 (file)
 
 #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) {
@@ -157,13 +161,16 @@ implementation {
     else post retrySend();
   }
   
-#ifdef _H_msp430hardware_h
-  int putchar(int c) __attribute__((noinline)) @C() @spontaneous() {
-#endif
 #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 putchar(int c) __attribute__((noinline)) @C() @spontaneous() {
+#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();
     }