*/
/**
+ * This is the PrintfC component. It provides the printf service for printing
+ * data over the serial interface using the standard c-style printf command.
+ * Data printed using printf are buffered and only sent over the serial line after
+ * the buffer is half full or an explicit call to printfflush() is made. This
+ * buffer has a maximum size of 250 bytes at present. This component is wired
+ * to a shadowed MainC component so that printf statements can be made anywhere
+ * throughout your code, so long as you include the "printf.h" header file in
+ * every file you wish to use it. Take a look at the printf tutorial (lesson 15)
+ * for more details.
*
- * @author Kevin Klues (klueska@cs.wustl.edu)
- * @version $Revision$
- * @date $Date$
+ * The printf service is currently only available for msp430 based motes
+ * (i.e. telos, eyes) and atmega128x based motes (i.e. mica2, micaz, iris). On the
+ * atmega platforms, avr-libc version 1.4 or above must be used.
+ */
+
+/**
+ * @author Kevin Klues <klueska@cs.stanford.edu>
+ * @date September 18, 2007
*/
-
#include "printf.h"
configuration PrintfC {
provides {
- interface SplitControl as PrintfControl;
- interface PrintfFlush;
+ interface Boot;
}
+ uses interface Boot as MainBoot @exactlyonce();
}
implementation {
components SerialActiveMessageC;
- components new SerialAMSenderC(AM_PRINTFMSG);
+ components new SerialAMSenderC(AM_PRINTF_MSG);
+ components new PrintfQueueC(uint8_t, PRINTF_BUFFER_SIZE) as QueueC;
+
components PrintfP;
components LedsC;
-
- PrintfControl = PrintfP;
- PrintfFlush = PrintfP;
- PrintfP.Leds -> LedsC;
+ MainBoot = PrintfP.MainBoot;
+ Boot = PrintfP.Boot;
+
PrintfP.SerialControl -> SerialActiveMessageC;
+ PrintfP.Queue -> QueueC;
PrintfP.AMSend -> SerialAMSenderC;
PrintfP.Packet -> SerialAMSenderC;
+ //PrintfP.Leds -> LedsC;
}