From 7eb4eb7cdd1ba6a9a6e1ae82968294445667f2e0 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 26 May 2009 04:46:35 +0000 Subject: Fix all device mode demos broken in the recent API changes. Change USBtoSerial Tx to polling-driven rather than interrupt driven, to ensure more time for the Rx interrupt to be serviced. --- Demos/Device/AudioOutput/AudioOutput.c | 8 ++++---- Demos/Device/AudioOutput/Descriptors.c | 2 +- Demos/Device/GenericHID/GenericHID.c | 3 +++ Demos/Device/MassStorage/MassStorage.c | 8 ++++---- Demos/Device/USBtoSerial/USBtoSerial.c | 26 +++----------------------- 5 files changed, 15 insertions(+), 32 deletions(-) (limited to 'Demos/Device') diff --git a/Demos/Device/AudioOutput/AudioOutput.c b/Demos/Device/AudioOutput/AudioOutput.c index 7ec2e3534..40e376b52 100644 --- a/Demos/Device/AudioOutput/AudioOutput.c +++ b/Demos/Device/AudioOutput/AudioOutput.c @@ -75,7 +75,7 @@ int main(void) /** Event handler for the USB_Connect event. This indicates that the device is enumerating via the status LEDs, and * configures the sample update and PWM timers. */ -void EventHandler_USB_Connect(void) +void EVENT_USB_Connect(void) { /* Start USB management task */ Scheduler_SetTaskMode(USB_USBTask, TASK_RUN); @@ -110,7 +110,7 @@ void EventHandler_USB_Connect(void) /** Event handler for the USB_Disconnect event. This indicates that the device is no longer connected to a host via * the status LEDs, disables the sample update and PWM output timers and stops the USB and Audio management tasks. */ -void EventHandler_USB_Disconnect(void) +void EVENT_USB_Disconnect(void) { /* Stop the timers */ TCCR0B = 0; @@ -140,7 +140,7 @@ void EventHandler_USB_Disconnect(void) /** Event handler for the USB_ConfigurationChanged event. This is fired when the host set the current configuration * of the USB device after enumeration - the device endpoints are configured. */ -void EventHandler_USB_ConfigurationChanged(void) +void EVENT_USB_ConfigurationChanged(void) { /* Setup audio stream endpoint */ Endpoint_ConfigureEndpoint(AUDIO_STREAM_EPNUM, EP_TYPE_ISOCHRONOUS, @@ -155,7 +155,7 @@ void EventHandler_USB_ConfigurationChanged(void) * control requests that are not handled internally by the USB library (including the Audio class-specific * requests) so that they can be handled appropriately for the application. */ -void EventHandler_USB_UnhandledControlPacket(void) +void EVENT_USB_UnhandledControlPacket(void) { /* Process General and Audio specific control requests */ switch (USB_ControlRequest.bRequest) diff --git a/Demos/Device/AudioOutput/Descriptors.c b/Demos/Device/AudioOutput/Descriptors.c index 0c3873b41..92d7e0d57 100644 --- a/Demos/Device/AudioOutput/Descriptors.c +++ b/Demos/Device/AudioOutput/Descriptors.c @@ -271,7 +271,7 @@ USB_Descriptor_String_t PROGMEM ProductString = * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the * USB host. */ -uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) +uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); diff --git a/Demos/Device/GenericHID/GenericHID.c b/Demos/Device/GenericHID/GenericHID.c index f43499a0f..058d269fe 100644 --- a/Demos/Device/GenericHID/GenericHID.c +++ b/Demos/Device/GenericHID/GenericHID.c @@ -59,6 +59,9 @@ int main(void) /* Disable clock division */ clock_prescale_set(clock_div_1); + /* Hardware Initialization */ + LEDs_Init(); + /* Indicate USB not ready */ UpdateStatus(Status_USBNotReady); diff --git a/Demos/Device/MassStorage/MassStorage.c b/Demos/Device/MassStorage/MassStorage.c index 82e7e8aa2..72a230219 100644 --- a/Demos/Device/MassStorage/MassStorage.c +++ b/Demos/Device/MassStorage/MassStorage.c @@ -86,7 +86,7 @@ int main(void) } /** Event handler for the USB_Connect event. This indicates that the device is enumerating via the status LEDs. */ -void EventHandler_USB_Connect(void) +void EVENT_USB_Connect(void) { /* Indicate USB enumerating */ UpdateStatus(Status_USBEnumerating); @@ -98,7 +98,7 @@ void EventHandler_USB_Connect(void) /** Event handler for the USB_Disconnect event. This indicates that the device is no longer connected to a host via * the status LEDs and stops the Mass Storage management task. */ -void EventHandler_USB_Disconnect(void) +void EVENT_USB_Disconnect(void) { /* Stop running mass storage task */ Scheduler_SetTaskMode(USB_MassStorage, TASK_STOP); @@ -110,7 +110,7 @@ void EventHandler_USB_Disconnect(void) /** Event handler for the USB_ConfigurationChanged event. This is fired when the host set the current configuration * of the USB device after enumeration - the device endpoints are configured and the Mass Storage management task started. */ -void EventHandler_USB_ConfigurationChanged(void) +void EVENT_USB_ConfigurationChanged(void) { /* Setup Mass Storage In and Out Endpoints */ Endpoint_ConfigureEndpoint(MASS_STORAGE_IN_EPNUM, EP_TYPE_BULK, @@ -132,7 +132,7 @@ void EventHandler_USB_ConfigurationChanged(void) * control requests that are not handled internally by the USB library (including the Mass Storage class-specific * requests) so that they can be handled appropriately for the application. */ -void EventHandler_USB_UnhandledControlPacket(void) +void EVENT_USB_UnhandledControlPacket(void) { /* Process UFI specific control requests */ switch (USB_ControlRequest.bRequest) diff --git a/Demos/Device/USBtoSerial/USBtoSerial.c b/Demos/Device/USBtoSerial/USBtoSerial.c index ef51a6eeb..7cef56560 100644 --- a/Demos/Device/USBtoSerial/USBtoSerial.c +++ b/Demos/Device/USBtoSerial/USBtoSerial.c @@ -256,16 +256,9 @@ TASK(CDC_Task) } } - /* Check if Rx buffer contains data */ + /* Check if Rx buffer contains data - if so, send it */ if (Rx_Buffer.Elements) - { - /* Initiate the transmission of the buffer contents if USART idle */ - if (!(Transmitting)) - { - Transmitting = true; - Serial_TxByte(Buffer_GetElement(&Rx_Buffer)); - } - } + Serial_TxByte(Buffer_GetElement(&Rx_Buffer)); /* Select the Serial Tx Endpoint */ Endpoint_SelectEndpoint(CDC_TX_EPNUM); @@ -303,19 +296,6 @@ TASK(CDC_Task) } } -/** ISR to handle the USART transmit complete interrupt, fired each time the USART has sent a character. This reloads the USART - * data register with the next byte from the Rx_Buffer circular buffer if a character is available, or stops the transmission if - * the buffer is currently empty. - */ -ISR(USART1_TX_vect, ISR_BLOCK) -{ - /* Send next character if available */ - if (Rx_Buffer.Elements) - UDR1 = Buffer_GetElement(&Rx_Buffer); - else - Transmitting = false; -} - /** ISR to handle the USART receive complete interrupt, fired each time the USART has received a character. This stores the received * character into the Tx_Buffer circular buffer for later transmission to the host. */ @@ -383,7 +363,7 @@ void ReconfigureUSART(void) UCSR1A = (1 << U2X1); /* Enable transmit and receive modules and interrupts */ - UCSR1B = ((1 << TXCIE1) | (1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1)); + UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1)); /* Set the USART mode to the mask generated by the Line Coding options */ UCSR1C = ConfigMask; -- cgit v1.2.3