Pipe_ConfigurePipe() now automatically defaults IN pipes to accepting infinite IN...
authorDean Camera <dean@fourwalledcubicle.com>
Tue, 23 Jun 2009 08:03:09 +0000 (08:03 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Tue, 23 Jun 2009 08:03:09 +0000 (08:03 +0000)
16 files changed:
Demos/Host/Incomplete/BluetoothHost/BluetoothHCICommands.c
Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.c
Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c
Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c
Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c
Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c
Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c
Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c
Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c
Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c
LUFA/Drivers/USB/Class/Host/CDC.c
LUFA/Drivers/USB/LowLevel/Host.c
LUFA/Drivers/USB/LowLevel/Pipe.c
LUFA/Drivers/USB/LowLevel/Pipe.h
LUFA/ManPages/ChangeLog.txt
Projects/MissileLauncher/ConfigDescriptor.c

index d865ede..ddd159e 100644 (file)
@@ -96,7 +96,6 @@ void Bluetooth_ProcessHCICommands(void)
        {\r
                case Bluetooth_Init:\r
                        Pipe_SelectPipe(BLUETOOTH_EVENTS_PIPE);\r
-                       Pipe_SetInfiniteINRequests();\r
                        \r
                        memset(&Bluetooth_Connection, 0x00, sizeof(Bluetooth_Connection));\r
                                                           \r
index 8d66ebc..948c4fc 100644 (file)
@@ -86,7 +86,6 @@ uint8_t ProcessConfigurationDescriptor(void)
                                                                   EndpointData->EndpointAddress, EndpointData->EndpointSize,\r
                                                                   PIPE_BANK_SINGLE);\r
 \r
-                               Pipe_SetInfiniteINRequests();\r
                                Pipe_SetInterruptPeriod(EndpointData->PollingIntervalMS);\r
                                \r
                                /* Set the flag indicating that the events notification pipe has been found */\r
@@ -102,8 +101,6 @@ uint8_t ProcessConfigurationDescriptor(void)
                                                                   EndpointData->EndpointAddress, EndpointData->EndpointSize,\r
                                                                   PIPE_BANK_SINGLE);\r
 \r
-                               Pipe_SetInfiniteINRequests();\r
-\r
                                /* Set the flag indicating that the data IN pipe has been found */\r
                                FoundEndpoints |= (1 << BLUETOOTH_DATA_IN_PIPE);\r
                        }\r
index 33234e4..f1a57cd 100644 (file)
@@ -138,7 +138,6 @@ uint8_t ProcessConfigurationDescriptor(void)
                                Pipe_ConfigurePipe(CDC_NOTIFICATIONPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
                                                                   EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
 \r
-                               Pipe_SetInfiniteINRequests();\r
                                Pipe_SetInterruptPeriod(EndpointData->PollingIntervalMS);\r
                                \r
                                /* Set the flag indicating that the notification pipe has been found */\r
@@ -153,8 +152,6 @@ uint8_t ProcessConfigurationDescriptor(void)
                                /* Configure the data IN pipe */\r
                                Pipe_ConfigurePipe(CDC_DATAPIPE_IN, EP_TYPE_BULK, PIPE_TOKEN_IN,\r
                                                                   EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
-\r
-                               Pipe_SetInfiniteINRequests();\r
                                \r
                                /* Set the flag indicating that the data IN pipe has been found */\r
                                FoundEndpoints |= (1 << CDC_DATAPIPE_IN);\r
index 26181c1..dbec62b 100644 (file)
@@ -102,8 +102,6 @@ uint8_t ProcessConfigurationDescriptor(void)
                        /* Configure the HID data IN pipe */\r
                        Pipe_ConfigurePipe(HID_DATA_IN_PIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
                                                           EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
-\r
-                       Pipe_SetInfiniteINRequests();\r
                        \r
                        FoundEndpoints |= (1 << HID_DATA_IN_PIPE);\r
                }\r
index a22420d..4033060 100644 (file)
@@ -91,8 +91,6 @@ uint8_t ProcessConfigurationDescriptor(void)
        Pipe_ConfigurePipe(KEYBOARD_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
                           EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
 \r
-       Pipe_SetInfiniteINRequests();\r
-                       \r
        /* Valid data found, return success */\r
        return SuccessfulConfigRead;\r
 }\r
index d48026d..d9fd50f 100644 (file)
@@ -102,8 +102,6 @@ uint8_t ProcessConfigurationDescriptor(void)
        Pipe_ConfigurePipe(KEYBOARD_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
                           EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
 \r
-       Pipe_SetInfiniteINRequests();\r
-                       \r
        /* Valid data found, return success */\r
        return SuccessfulConfigRead;\r
 }\r
index d15a453..9f80b42 100644 (file)
@@ -98,8 +98,6 @@ uint8_t ProcessConfigurationDescriptor(void)
                                           EndpointData->EndpointAddress, EndpointData->EndpointSize,\r
                                           PIPE_BANK_DOUBLE);\r
 \r
-                       Pipe_SetInfiniteINRequests();\r
-\r
                        /* Set the flag indicating that the data IN pipe has been found */\r
                        FoundEndpoints |= (1 << MASS_STORE_DATA_IN_PIPE);\r
                }\r
index f594eb8..e0be70b 100644 (file)
@@ -91,8 +91,6 @@ uint8_t ProcessConfigurationDescriptor(void)
        Pipe_ConfigurePipe(MOUSE_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
                           EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
 \r
-       Pipe_SetInfiniteINRequests();\r
-                       \r
        /* Valid data found, return success */\r
        return SuccessfulConfigRead;\r
 }\r
index 04247ef..1d28351 100644 (file)
@@ -102,8 +102,6 @@ uint8_t ProcessConfigurationDescriptor(void)
        Pipe_ConfigurePipe(MOUSE_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
                           EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
 \r
-       Pipe_SetInfiniteINRequests();\r
-                       \r
        /* Valid data found, return success */\r
        return SuccessfulConfigRead;\r
 }\r
index 86a96b3..3515374 100644 (file)
@@ -101,7 +101,6 @@ uint8_t ProcessConfigurationDescriptor(void)
                                                                   EndpointData->EndpointAddress, EndpointData->EndpointSize,\r
                                                                   PIPE_BANK_DOUBLE);                   \r
 \r
-                               Pipe_SetInfiniteINRequests();\r
                                Pipe_SetInterruptPeriod(EndpointData->PollingIntervalMS);\r
                                \r
                                /* Set the flag indicating that the events pipe has been found */\r
@@ -118,8 +117,6 @@ uint8_t ProcessConfigurationDescriptor(void)
                                                                   EndpointData->EndpointAddress, EndpointData->EndpointSize,\r
                                                                   PIPE_BANK_DOUBLE);\r
 \r
-                               Pipe_SetInfiniteINRequests();\r
-\r
                                /* Set the flag indicating that the data IN pipe has been found */\r
                                FoundEndpoints |= (1 << SIMAGE_DATA_IN_PIPE);\r
                        }\r
index 2d5ec0f..943cb73 100644 (file)
@@ -109,7 +109,6 @@ static uint8_t CDC_Host_ProcessConfigDescriptor(USB_ClassInfo_CDC_Host_t* CDCInt
                                                                   EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
                                CDCInterfaceInfo->State.NotificationPipeSize = EndpointData->EndpointSize;\r
 \r
-                               Pipe_SetInfiniteINRequests();\r
                                Pipe_SetInterruptPeriod(EndpointData->PollingIntervalMS);\r
                                \r
                                FoundEndpoints |= CDC_FOUND_DATAPIPE_NOTIFICATION;\r
@@ -123,9 +122,6 @@ static uint8_t CDC_Host_ProcessConfigDescriptor(USB_ClassInfo_CDC_Host_t* CDCInt
                                                                   EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
                                CDCInterfaceInfo->State.DataINPipeSize = EndpointData->EndpointSize;\r
 \r
-                               Pipe_SetInfiniteINRequests();\r
-                               Pipe_Unfreeze();\r
-                               \r
                                FoundEndpoints |= CDC_FOUND_DATAPIPE_IN;\r
                        }\r
                        else\r
@@ -134,8 +130,6 @@ static uint8_t CDC_Host_ProcessConfigDescriptor(USB_ClassInfo_CDC_Host_t* CDCInt
                                                                   EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
                                CDCInterfaceInfo->State.DataOUTPipeSize = EndpointData->EndpointSize;\r
                                \r
-                               Pipe_Unfreeze();\r
-                               \r
                                FoundEndpoints |= CDC_FOUND_DATAPIPE_OUT;\r
                        }\r
                }\r
index 1932b64..037e6d8 100644 (file)
@@ -162,8 +162,6 @@ void USB_Host_ProcessNextHostState(void)
                                break;\r
                        }\r
 \r
-                       Pipe_SetInfiniteINRequests();\r
-                       \r
                        USB_ControlRequest = (USB_Request_Header_t)\r
                                {\r
                                        .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE),\r
index 35ba480..aead39d 100644 (file)
@@ -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));\r
        UPCFG1X = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
 \r
+       if (Token == PIPE_TOKEN_IN)\r
+         Pipe_SetInfiniteINRequests();\r
+\r
        return Pipe_IsConfigured();\r
 }\r
 \r
index 30f2d38..30e0fde 100644 (file)
                         *\r
                         *  A newly configured pipe is frozen by default, and must be unfrozen before use via the \ref Pipe_Unfreeze()\r
                         *  before being used. Pipes should be kept frozen unless waiting for data from a device while in IN mode, or\r
-                        *  sending data to the device in OUT mode.\r
+                        *  sending data to the device in OUT mode. IN type pipes are also automatically configured to accept infinite\r
+                        *  numbers of IN requests without automatic freezing - this can be overridden by a call to\r
+                        *  \ref Pipe_SetFiniteINRequests().\r
                         *\r
                         *  \note The default control pipe does not have to be manually configured, as it is automatically\r
                         *  configured by the library internally.\r
index b80fa4d..3843941 100644 (file)
@@ -32,6 +32,8 @@
   *    added NO_INTERNAL_SERIAL compile time option to turn off new serial number reading code\r
   *  - Fixed ADC driver for the ATMEGA32U4 and ATMEGA16U4 (thanks to Opendous Inc.)\r
   *  - Pipe stream functions now automatically set the correct pipe token, so that bidirectional pipes can be used\r
+  *  - Pipe_ConfigurePipe() now automatically defaults IN pipes to accepting infinite IN requests, this can still be changed by calling\r
+  *    the existing \ref Pipe_SetFiniteINRequests() function\r
   *\r
   *\r
   *  \section Sec_ChangeLog090605 Version 090605\r
index 2a6e152..405daa4 100644 (file)
@@ -103,8 +103,6 @@ uint8_t ProcessConfigurationDescriptor(void)
                        Pipe_ConfigurePipe(HID_DATA_IN_PIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
                                                           EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
 \r
-                       Pipe_SetInfiniteINRequests();\r
-                       \r
                        FoundEndpoints |= (1 << HID_DATA_IN_PIPE);\r
                }\r
                else\r