Fix incorrect XMEGA serial driver stream functions (thanks to William Patterson).
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 17 May 2015 03:01:13 +0000 (13:01 +1000)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 17 May 2015 03:01:13 +0000 (13:01 +1000)
LUFA/DoxygenPages/ChangeLog.txt
LUFA/DoxygenPages/MigrationInformation.txt
LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c
LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h

index 3b28fe5..4935e5f 100644 (file)
@@ -19,7 +19,7 @@
   *     exit automatically unless an external reset was the last reset cause (thanks to Alex Kazik)
   *
   *  <b>Fixed:</b>
   *     exit automatically unless an external reset was the last reset cause (thanks to Alex Kazik)
   *
   *  <b>Fixed:</b>
-  *   - None.
+  *   - Fixed broken XMEGA serial stream driver due to missing USART base pointer parameter (thanks to William Patterson)
   *
   *  \section Sec_ChangeLog140928 Version 140928
   *  <b>New:</b>
   *
   *  \section Sec_ChangeLog140928 Version 140928
   *  <b>New:</b>
index baabb3f..f4c9fd8 100644 (file)
@@ -12,7 +12,8 @@
  *
  *  \section Sec_MigrationXXXXXX Migrating from 140928 to XXXXXX
  *  <b>Non-USB Library Components</b>
  *
  *  \section Sec_MigrationXXXXXX Migrating from 140928 to XXXXXX
  *  <b>Non-USB Library Components</b>
- *    - The ATPROGRAM LUFA build system module now defaults to the Atmel ICE debuger tool, instead of the Atmel JTAG ICE3.
+ *    - The ATPROGRAM LUFA build system module now defaults to the Atmel ICE debugger tool, instead of the Atmel JTAG ICE3.
+ *    - The \x Serial_CreateStream() and \c Serial_CreateBlockingStream() functions now require a USART base pointer for XMEGA devices as the first parameter.
  *
  *  \section Sec_Migration140928 Migrating from 140302 to 140928
  *  <b>Device Mode</b>
  *
  *  \section Sec_Migration140928 Migrating from 140302 to 140928
  *  <b>Device Mode</b>
index 4e29357..ff3ac0d 100644 (file)
@@ -95,19 +95,20 @@ void Serial_SendData(USART_t* const USART,
          Serial_SendByte(USART, *((uint8_t*)Buffer++));
 }
 
          Serial_SendByte(USART, *((uint8_t*)Buffer++));
 }
 
-void Serial_CreateStream(FILE* Stream)
+void Serial_CreateStream(USART_t* USART, FILE* Stream)
 {
        if (!(Stream))
        {
                Stream = &USARTSerialStream;
                stdin  = Stream;
                stdout = Stream;
 {
        if (!(Stream))
        {
                Stream = &USARTSerialStream;
                stdin  = Stream;
                stdout = Stream;
-       }
+    }
 
 
-       *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar, _FDEV_SETUP_RW);
+    *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar, _FDEV_SETUP_RW);
+    fdev_set_udata(Stream, USART);
 }
 
 }
 
-void Serial_CreateBlockingStream(FILE* Stream)
+void Serial_CreateBlockingStream(USART_t* USART, FILE* Stream)
 {
        if (!(Stream))
        {
 {
        if (!(Stream))
        {
@@ -116,7 +117,8 @@ void Serial_CreateBlockingStream(FILE* Stream)
                stdout = Stream;
        }
 
                stdout = Stream;
        }
 
-       *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar_Blocking, _FDEV_SETUP_RW);
+    *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar_Blocking, _FDEV_SETUP_RW);
+    fdev_set_udata(Stream, USART);
 }
 
 #endif
 }
 
 #endif
index 1fed433..58f9701 100644 (file)
                         *  be used when the read data is processed byte-per-bye (via \c getc()) or when the user application will implement its own
                         *  line buffering.
                         *
                         *  be used when the read data is processed byte-per-bye (via \c getc()) or when the user application will implement its own
                         *  line buffering.
                         *
+                        *  \param[in,out] USART   Pointer to the base of the USART peripheral within the device.
                         *  \param[in,out] Stream  Pointer to a FILE structure where the created stream should be placed, if \c NULL, \c stdout
                         *                         and \c stdin will be configured to use the USART.
                         *
                         *  \pre The USART must first be configured via a call to \ref Serial_Init() before the stream is used.
                         */
                         *  \param[in,out] Stream  Pointer to a FILE structure where the created stream should be placed, if \c NULL, \c stdout
                         *                         and \c stdin will be configured to use the USART.
                         *
                         *  \pre The USART must first be configured via a call to \ref Serial_Init() before the stream is used.
                         */
-                       void Serial_CreateStream(FILE* Stream);
+                       void Serial_CreateStream(USART_t* USART, FILE* Stream);
 
 
-                       /** Identical to \ref Serial_CreateStream(), except that reads are blocking until the calling stream function terminates
+            /** Identical to \ref Serial_CreateStream(), except that reads are blocking until the calling stream function terminates
                         *  the transfer.
                         *
                         *  the transfer.
                         *
+                        *  \param[in,out] USART   Pointer to the base of the USART peripheral within the device.
                         *  \param[in,out] Stream  Pointer to a FILE structure where the created stream should be placed, if \c NULL, \c stdout
                         *                         and \c stdin will be configured to use the USART.
                         *
                         *  \pre The USART must first be configured via a call to \ref Serial_Init() before the stream is used.
                         */
                         *  \param[in,out] Stream  Pointer to a FILE structure where the created stream should be placed, if \c NULL, \c stdout
                         *                         and \c stdin will be configured to use the USART.
                         *
                         *  \pre The USART must first be configured via a call to \ref Serial_Init() before the stream is used.
                         */
-                       void Serial_CreateBlockingStream(FILE* Stream);
+                       void Serial_CreateBlockingStream(USART_t* USART, FILE* Stream);
 
                /* Inline Functions: */
                        /** Initializes the USART, ready for serial data transmission and reception. This initializes the interface to
 
                /* Inline Functions: */
                        /** Initializes the USART, ready for serial data transmission and reception. This initializes the interface to