diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2010-09-30 07:56:47 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2010-09-30 07:56:47 +0000 |
commit | 7166c7ba3e27f3458b83360302c8af8a866f7a34 (patch) | |
tree | dd3d7d307c56cbcef53911bcd42f93e5ba908ecb /Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c | |
parent | 158afe910947739b1df00000628c1e758bdf0812 (diff) | |
download | lufa-7166c7ba3e27f3458b83360302c8af8a866f7a34.tar.gz lufa-7166c7ba3e27f3458b83360302c8af8a866f7a34.tar.bz2 lufa-7166c7ba3e27f3458b83360302c8af8a866f7a34.zip |
Fix low level host mode demos not correctly fetching the next endpoint when an invalid interface is discarded.
Update the pipe configuration routines in the host mode class drivers so that they use the same new code to enumerate compatible devices to increase reliability. Add support to the host mode class drivers for non-sequential (but non-overlapping with other interface) pipe numbers.
Diffstat (limited to 'Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c')
-rw-r--r-- | Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c b/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c index 0591aaca2..b16ac668c 100644 --- a/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c +++ b/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c @@ -75,8 +75,8 @@ uint8_t ProcessConfigurationDescriptor(void) } /* Save Printer interface details for later use */ - PrinterInterfaceNumber = DESCRIPTOR_CAST(CurrConfigLocation, USB_Descriptor_Interface_t).InterfaceNumber; - PrinterAltSetting = DESCRIPTOR_CAST(CurrConfigLocation, USB_Descriptor_Interface_t).AlternateSetting; + PrinterInterfaceNumber = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t)->InterfaceNumber; + PrinterAltSetting = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t)->AlternateSetting; while (!(DataINEndpoint) || !(DataOUTEndpoint)) { @@ -97,8 +97,11 @@ uint8_t ProcessConfigurationDescriptor(void) } /* Save Printer interface details for later use */ - PrinterInterfaceNumber = DESCRIPTOR_CAST(CurrConfigLocation, USB_Descriptor_Interface_t).InterfaceNumber; - PrinterAltSetting = DESCRIPTOR_CAST(CurrConfigLocation, USB_Descriptor_Interface_t).AlternateSetting; + PrinterInterfaceNumber = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t)->InterfaceNumber; + PrinterAltSetting = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t)->AlternateSetting; + + /* Skip the remainder of the loop as we have not found an endpoint yet */ + continue; } /* Retrieve the endpoint address from the endpoint descriptor */ @@ -106,7 +109,7 @@ uint8_t ProcessConfigurationDescriptor(void) /* If the endpoint is a IN type endpoint */ if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN) - DataINEndpoint = EndpointData; + DataINEndpoint = EndpointData; else DataOUTEndpoint = EndpointData; } |