X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Flib%2Fprintf%2FPrintfC.nc;h=451368c76263ead75767d832fcfd9dcde24ba0c7;hb=4fcac2bd5074f3334abd9a12c9bcee73c7c687b9;hp=ec3ae397f31b801652782f39e9f017fdbc1f845e;hpb=ec0de8e1ac425b0f6855d46f737c2726cd82df88;p=tinyos-2.x.git diff --git a/tos/lib/printf/PrintfC.nc b/tos/lib/printf/PrintfC.nc index ec3ae397..451368c7 100644 --- a/tos/lib/printf/PrintfC.nc +++ b/tos/lib/printf/PrintfC.nc @@ -21,32 +21,48 @@ */ /** + * 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 + * @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; }