From 366a8461566edd7982e8eb6b0790365f6d99e3ab Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 17 May 2015 13:01:13 +1000 Subject: Fix incorrect XMEGA serial driver stream functions (thanks to William Patterson). --- LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c | 12 +++++++----- LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h | 8 +++++--- 2 files changed, 12 insertions(+), 8 deletions(-) (limited to 'LUFA/Drivers') diff --git a/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c b/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c index 4e2935730..ff3ac0d4f 100644 --- a/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c +++ b/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c @@ -95,19 +95,20 @@ void Serial_SendData(USART_t* const USART, 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; - } + } - *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)) { @@ -116,7 +117,8 @@ void Serial_CreateBlockingStream(FILE* 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 diff --git a/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h b/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h index 1fed433e6..58f97011b 100644 --- a/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h +++ b/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h @@ -151,22 +151,24 @@ * 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. */ - 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. * + * \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. */ - 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 -- cgit v1.2.3