Fixed incorrect definition of the HID_KEYBOARD_SC_RIGHT_ARROW constant in the HID...
[pub/USBasp.git] / LUFA / Drivers / Peripheral / SerialStream.h
index 83c3036..cf376e9 100644 (file)
@@ -1,21 +1,21 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
-              
+     Copyright (C) Dean Camera, 2011.
+
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
-  Permission to use, copy, modify, distribute, and sell this 
+  Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in 
+  without fee, provided that the above copyright notice appear in
   all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting 
-  documentation, and that the name of the author not be used in 
-  advertising or publicity pertaining to distribution of the 
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
   software without specific, written prior permission.
 
   The author disclaim all warranties with regard to this
@@ -32,8 +32,8 @@
  *  \brief Standard avr-libc character stream driver for the USART.
  *
  *  Serial stream driver for the USART subsystem on supported USB AVRs. This makes use of the functions in the
- *  regular USART driver (see \ref Group_Serial), but allows the avr-libc standard stream functions (printf,
- *  puts, etc.) to work with the
+ *  regular USART driver (see \ref Group_Serial), but allows the avr-libc standard stream functions (\c printf,
+ *  \c puts, etc.) to work with the
  *  USART.
  */
 
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
- *    - LUFA/Drivers/Peripheral/SerialStream.c
+ *    - LUFA/Drivers/Peripheral/SerialStream.c <i>(Makefile source module name: LUFA_SRC_SERIALSTREAM)</i>
  *
- *  \section Module Description
+ *  \section Sec_ModDescription Module Description
  *  Serial stream driver for the USART subsystem on supported USB AVRs. This makes use of the functions in the
- *  regular USART driver (see \ref Group_Serial), but allows the avr-libc standard stream functions (printf,
- *  puts, etc.) to work with the
- *  USART.
+ *  regular USART driver (see \ref Group_Serial), but allows the avr-libc standard stream functions (\c printf,
+ *  \c puts, etc.) to work with the USART. Upon configuration, this will redirect the \c stdin standard input
+ *  and \c stdout output streams to the USART.
+ *
+ *  \section Sec_ExampleUsage Example Usage
+ *  The following snippet is an example of how this module may be used within a typical
+ *  application.
+ *
+ *  \code
+ *      // Initialise the Serial Stream driver before first use, with 9600 baud (and no double-speed mode)
+ *      SerialStream_Init(9600, false);
+ *
+ *      // Write a string to the USART via the implicit stdout stream
+ *      printf("Test String using stdout\r\n");
+ *
+ *      // Write a string to the USART via the explicit USART stream
+ *      fprintf(&USARTStream, "Test String using explicit stream handle\r\n");
+ * 
+ *      // Read in an integer from the USART using the implicit stdin stream
+ *      uint16_t TestValue;
+ *      scanf("%d", &TestValue);
+ *  \endcode
  *
  *  @{
  */
        /* Includes: */
                #include <avr/io.h>
                #include <stdio.h>
-               
+
                #include "Serial.h"
-       
+
        /* Enable C linkage for C++ Compilers: */
                #if defined(__cplusplus)
                        extern "C" {
                #endif
 
-       /* Private Interface - For use in library only: */      
+       /* Private Interface - For use in library only: */
        #if !defined(__DOXYGEN__)
-               /* External Variables: */
-                       extern FILE USARTStream;
-
                /* Function Prototypes: */
                #if defined(__INCLUDE_FROM_SERIALSTREAM_C)
-                       static int SerialStream_TxByte(char DataByte, FILE *Stream) ATTR_NON_NULL_PTR_ARG(2);
+                       static int SerialStream_TxByte(char DataByte,
+                                                      FILE *Stream) ATTR_NON_NULL_PTR_ARG(2);
                        static int SerialStream_RxByte(FILE *Stream) ATTR_NON_NULL_PTR_ARG(1);
                #endif
        #endif
 
        /* Public Interface - May be used in end-application: */
+               /* External Variables: */
+                       /** Named stream for the USART, once \ref SerialStream_Init() has been called. This may be used with the
+                        *  file based stream functions (fprintf, fscanf, etc.) that require a handle to the stream rather than
+                        *  using the stdin and stdout named streams.
+                        */
+                       extern FILE USARTStream;
+
                /* Inline Functions: */
-                       /** Initializes the serial stream (and regular USART driver) so that both the stream and regular
+                       /** Initialises the serial stream (and regular USART driver) so that both the stream and regular
                         *  USART driver functions can be used. Must be called before any stream or regular USART functions.
                         *
-                        *  \param[in] BaudRate     Baud rate to configure the USART to
-                        *  \param[in] DoubleSpeed  Enables double speed mode when set, halving the sample time to double the baud rate
+                        *  \param[in] BaudRate     Baud rate to configure the USART to.
+                        *  \param[in] DoubleSpeed  Enables double speed mode when set, halving the sample time to double the baud rate.
                         */
-                       static inline void SerialStream_Init(const uint32_t BaudRate, const bool DoubleSpeed)
+                       static inline void SerialStream_Init(const uint32_t BaudRate,
+                                                            const bool DoubleSpeed)
                        {
                                Serial_Init(BaudRate, DoubleSpeed);
-                               
+
                                stdout = &USARTStream;
                                stdin  = &USARTStream;
                        }
-                       
+
                        /** Turns off the serial stream (and regular USART driver), disabling and returning used hardware to
                         *  their default configuration.
                         */
                        static inline void SerialStream_ShutDown(void)
                        {
                                Serial_ShutDown();
-                       }                       
+                       }
 
        /* Disable C linkage for C++ Compilers: */
                #if defined(__cplusplus)
 #endif
 
 /** @} */
+