From a3a04aa6719a891a1350179d5ac451c3e18c3bf2 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 23 Jun 2009 08:03:09 +0000 Subject: [PATCH] Pipe_ConfigurePipe() now automatically defaults IN pipes to accepting infinite IN requests, this can still be changed by calling the existing \ref Pipe_SetFiniteINRequests() function. --- Demos/Host/Incomplete/BluetoothHost/BluetoothHCICommands.c | 1 - Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.c | 3 --- Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c | 3 --- Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c | 2 -- Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c | 2 -- .../Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c | 2 -- Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c | 2 -- Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c | 2 -- Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c | 2 -- Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c | 3 --- LUFA/Drivers/USB/Class/Host/CDC.c | 6 ------ LUFA/Drivers/USB/LowLevel/Host.c | 2 -- LUFA/Drivers/USB/LowLevel/Pipe.c | 3 +++ LUFA/Drivers/USB/LowLevel/Pipe.h | 4 +++- LUFA/ManPages/ChangeLog.txt | 2 ++ Projects/MissileLauncher/ConfigDescriptor.c | 2 -- 16 files changed, 8 insertions(+), 33 deletions(-) diff --git a/Demos/Host/Incomplete/BluetoothHost/BluetoothHCICommands.c b/Demos/Host/Incomplete/BluetoothHost/BluetoothHCICommands.c index d865edefe0..ddd159ef75 100644 --- a/Demos/Host/Incomplete/BluetoothHost/BluetoothHCICommands.c +++ b/Demos/Host/Incomplete/BluetoothHost/BluetoothHCICommands.c @@ -96,7 +96,6 @@ void Bluetooth_ProcessHCICommands(void) { case Bluetooth_Init: Pipe_SelectPipe(BLUETOOTH_EVENTS_PIPE); - Pipe_SetInfiniteINRequests(); memset(&Bluetooth_Connection, 0x00, sizeof(Bluetooth_Connection)); diff --git a/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.c b/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.c index 8d66ebc041..948c4fcc65 100644 --- a/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.c +++ b/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.c @@ -86,7 +86,6 @@ uint8_t ProcessConfigurationDescriptor(void) EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); - Pipe_SetInfiniteINRequests(); Pipe_SetInterruptPeriod(EndpointData->PollingIntervalMS); /* Set the flag indicating that the events notification pipe has been found */ @@ -102,8 +101,6 @@ uint8_t ProcessConfigurationDescriptor(void) EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); - Pipe_SetInfiniteINRequests(); - /* Set the flag indicating that the data IN pipe has been found */ FoundEndpoints |= (1 << BLUETOOTH_DATA_IN_PIPE); } diff --git a/Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c b/Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c index 33234e4fd5..f1a57cd740 100644 --- a/Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c +++ b/Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c @@ -138,7 +138,6 @@ uint8_t ProcessConfigurationDescriptor(void) Pipe_ConfigurePipe(CDC_NOTIFICATIONPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN, EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); - Pipe_SetInfiniteINRequests(); Pipe_SetInterruptPeriod(EndpointData->PollingIntervalMS); /* Set the flag indicating that the notification pipe has been found */ @@ -153,8 +152,6 @@ uint8_t ProcessConfigurationDescriptor(void) /* Configure the data IN pipe */ Pipe_ConfigurePipe(CDC_DATAPIPE_IN, EP_TYPE_BULK, PIPE_TOKEN_IN, EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); - - Pipe_SetInfiniteINRequests(); /* Set the flag indicating that the data IN pipe has been found */ FoundEndpoints |= (1 << CDC_DATAPIPE_IN); diff --git a/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c b/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c index 26181c1461..dbec62b637 100644 --- a/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c +++ b/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c @@ -102,8 +102,6 @@ uint8_t ProcessConfigurationDescriptor(void) /* Configure the HID data IN pipe */ Pipe_ConfigurePipe(HID_DATA_IN_PIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN, EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); - - Pipe_SetInfiniteINRequests(); FoundEndpoints |= (1 << HID_DATA_IN_PIPE); } diff --git a/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c b/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c index a22420d00e..4033060429 100644 --- a/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c +++ b/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c @@ -91,8 +91,6 @@ uint8_t ProcessConfigurationDescriptor(void) Pipe_ConfigurePipe(KEYBOARD_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN, EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); - Pipe_SetInfiniteINRequests(); - /* Valid data found, return success */ return SuccessfulConfigRead; } diff --git a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c index d48026d743..d9fd50f692 100644 --- a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c +++ b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c @@ -102,8 +102,6 @@ uint8_t ProcessConfigurationDescriptor(void) Pipe_ConfigurePipe(KEYBOARD_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN, EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); - Pipe_SetInfiniteINRequests(); - /* Valid data found, return success */ return SuccessfulConfigRead; } diff --git a/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c b/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c index d15a453cf3..9f80b42eeb 100644 --- a/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c +++ b/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c @@ -98,8 +98,6 @@ uint8_t ProcessConfigurationDescriptor(void) EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_DOUBLE); - Pipe_SetInfiniteINRequests(); - /* Set the flag indicating that the data IN pipe has been found */ FoundEndpoints |= (1 << MASS_STORE_DATA_IN_PIPE); } diff --git a/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c b/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c index f594eb8192..e0be70b1b5 100644 --- a/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c +++ b/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c @@ -91,8 +91,6 @@ uint8_t ProcessConfigurationDescriptor(void) Pipe_ConfigurePipe(MOUSE_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN, EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); - Pipe_SetInfiniteINRequests(); - /* Valid data found, return success */ return SuccessfulConfigRead; } diff --git a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c index 04247efab5..1d28351ee2 100644 --- a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c +++ b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c @@ -102,8 +102,6 @@ uint8_t ProcessConfigurationDescriptor(void) Pipe_ConfigurePipe(MOUSE_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN, EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); - Pipe_SetInfiniteINRequests(); - /* Valid data found, return success */ return SuccessfulConfigRead; } diff --git a/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c b/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c index 86a96b31af..351537430e 100644 --- a/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c +++ b/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c @@ -101,7 +101,6 @@ uint8_t ProcessConfigurationDescriptor(void) EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_DOUBLE); - Pipe_SetInfiniteINRequests(); Pipe_SetInterruptPeriod(EndpointData->PollingIntervalMS); /* Set the flag indicating that the events pipe has been found */ @@ -118,8 +117,6 @@ uint8_t ProcessConfigurationDescriptor(void) EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_DOUBLE); - Pipe_SetInfiniteINRequests(); - /* Set the flag indicating that the data IN pipe has been found */ FoundEndpoints |= (1 << SIMAGE_DATA_IN_PIPE); } diff --git a/LUFA/Drivers/USB/Class/Host/CDC.c b/LUFA/Drivers/USB/Class/Host/CDC.c index 2d5ec0fb26..943cb73630 100644 --- a/LUFA/Drivers/USB/Class/Host/CDC.c +++ b/LUFA/Drivers/USB/Class/Host/CDC.c @@ -109,7 +109,6 @@ static uint8_t CDC_Host_ProcessConfigDescriptor(USB_ClassInfo_CDC_Host_t* CDCInt EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); CDCInterfaceInfo->State.NotificationPipeSize = EndpointData->EndpointSize; - Pipe_SetInfiniteINRequests(); Pipe_SetInterruptPeriod(EndpointData->PollingIntervalMS); FoundEndpoints |= CDC_FOUND_DATAPIPE_NOTIFICATION; @@ -123,9 +122,6 @@ static uint8_t CDC_Host_ProcessConfigDescriptor(USB_ClassInfo_CDC_Host_t* CDCInt EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); CDCInterfaceInfo->State.DataINPipeSize = EndpointData->EndpointSize; - Pipe_SetInfiniteINRequests(); - Pipe_Unfreeze(); - FoundEndpoints |= CDC_FOUND_DATAPIPE_IN; } else @@ -134,8 +130,6 @@ static uint8_t CDC_Host_ProcessConfigDescriptor(USB_ClassInfo_CDC_Host_t* CDCInt EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); CDCInterfaceInfo->State.DataOUTPipeSize = EndpointData->EndpointSize; - Pipe_Unfreeze(); - FoundEndpoints |= CDC_FOUND_DATAPIPE_OUT; } } diff --git a/LUFA/Drivers/USB/LowLevel/Host.c b/LUFA/Drivers/USB/LowLevel/Host.c index 1932b645c0..037e6d80a8 100644 --- a/LUFA/Drivers/USB/LowLevel/Host.c +++ b/LUFA/Drivers/USB/LowLevel/Host.c @@ -162,8 +162,6 @@ void USB_Host_ProcessNextHostState(void) break; } - Pipe_SetInfiniteINRequests(); - USB_ControlRequest = (USB_Request_Header_t) { .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE), diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.c b/LUFA/Drivers/USB/LowLevel/Pipe.c index 35ba480cd6..aead39dc50 100644 --- a/LUFA/Drivers/USB/LowLevel/Pipe.c +++ b/LUFA/Drivers/USB/LowLevel/Pipe.c @@ -48,6 +48,9 @@ bool Pipe_ConfigurePipe(const uint8_t Number, const uint8_t Type, const uint8_t UPCFG0X = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0)); UPCFG1X = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size)); + if (Token == PIPE_TOKEN_IN) + Pipe_SetInfiniteINRequests(); + return Pipe_IsConfigured(); } diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.h b/LUFA/Drivers/USB/LowLevel/Pipe.h index 30f2d387c6..30e0fde90d 100644 --- a/LUFA/Drivers/USB/LowLevel/Pipe.h +++ b/LUFA/Drivers/USB/LowLevel/Pipe.h @@ -732,7 +732,9 @@ * * A newly configured pipe is frozen by default, and must be unfrozen before use via the \ref Pipe_Unfreeze() * before being used. Pipes should be kept frozen unless waiting for data from a device while in IN mode, or - * sending data to the device in OUT mode. + * sending data to the device in OUT mode. IN type pipes are also automatically configured to accept infinite + * numbers of IN requests without automatic freezing - this can be overridden by a call to + * \ref Pipe_SetFiniteINRequests(). * * \note The default control pipe does not have to be manually configured, as it is automatically * configured by the library internally. diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index b80fa4d6f7..3843941e72 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -32,6 +32,8 @@ * added NO_INTERNAL_SERIAL compile time option to turn off new serial number reading code * - Fixed ADC driver for the ATMEGA32U4 and ATMEGA16U4 (thanks to Opendous Inc.) * - Pipe stream functions now automatically set the correct pipe token, so that bidirectional pipes can be used + * - Pipe_ConfigurePipe() now automatically defaults IN pipes to accepting infinite IN requests, this can still be changed by calling + * the existing \ref Pipe_SetFiniteINRequests() function * * * \section Sec_ChangeLog090605 Version 090605 diff --git a/Projects/MissileLauncher/ConfigDescriptor.c b/Projects/MissileLauncher/ConfigDescriptor.c index 2a6e152569..405daa4fe0 100644 --- a/Projects/MissileLauncher/ConfigDescriptor.c +++ b/Projects/MissileLauncher/ConfigDescriptor.c @@ -103,8 +103,6 @@ uint8_t ProcessConfigurationDescriptor(void) Pipe_ConfigurePipe(HID_DATA_IN_PIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN, EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE); - Pipe_SetInfiniteINRequests(); - FoundEndpoints |= (1 << HID_DATA_IN_PIPE); } else