Add optional pipe double banking support to the Host mode Class drivers.
Descriptor processing routines now pass around void pointers rather than uint8_t pointers, as their destination datatype is know well known -- they are just streams of bytes until they are cast to the correct destination type by DESCRIPTOR_CAST.
This commit is contained in:
parent
f29fc1abc4
commit
64e5c4084f
25 changed files with 95 additions and 40 deletions
|
@ -69,7 +69,7 @@ uint8_t USB_GetDeviceConfigDescriptor(uint8_t ConfigNumber, uint16_t* const Conf
|
|||
#endif
|
||||
|
||||
void USB_GetNextDescriptorOfType(uint16_t* const BytesRem,
|
||||
uint8_t** const CurrConfigLoc,
|
||||
void** const CurrConfigLoc,
|
||||
const uint8_t Type)
|
||||
{
|
||||
while (*BytesRem)
|
||||
|
@ -82,7 +82,7 @@ void USB_GetNextDescriptorOfType(uint16_t* const BytesRem,
|
|||
}
|
||||
|
||||
void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem,
|
||||
uint8_t** const CurrConfigLoc,
|
||||
void** const CurrConfigLoc,
|
||||
const uint8_t Type,
|
||||
const uint8_t BeforeType)
|
||||
{
|
||||
|
@ -103,7 +103,7 @@ void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem,
|
|||
}
|
||||
|
||||
void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem,
|
||||
uint8_t** const CurrConfigLoc,
|
||||
void** const CurrConfigLoc,
|
||||
const uint8_t Type,
|
||||
const uint8_t AfterType)
|
||||
{
|
||||
|
@ -113,7 +113,7 @@ void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem,
|
|||
USB_GetNextDescriptorOfType(BytesRem, CurrConfigLoc, Type);
|
||||
}
|
||||
|
||||
uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, uint8_t** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine)
|
||||
uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, void** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine)
|
||||
{
|
||||
uint8_t ErrorCode;
|
||||
|
||||
|
|
|
@ -152,7 +152,7 @@
|
|||
* }
|
||||
* \endcode
|
||||
*/
|
||||
uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, uint8_t** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine);
|
||||
uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, void** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine);
|
||||
|
||||
/* Enums: */
|
||||
/** Enum for the possible return codes of the \ref USB_GetDeviceConfigDescriptor() function. */
|
||||
|
@ -213,7 +213,7 @@
|
|||
* \param[in] Type Descriptor type value to search for
|
||||
*/
|
||||
void USB_GetNextDescriptorOfType(uint16_t* const BytesRem,
|
||||
uint8_t** const CurrConfigLoc,
|
||||
void** const CurrConfigLoc,
|
||||
const uint8_t Type)
|
||||
ATTR_NON_NULL_PTR_ARG(1, 2);
|
||||
|
||||
|
@ -228,7 +228,7 @@
|
|||
* \param[in] BeforeType Descriptor type value which must not be reached before the given Type descriptor
|
||||
*/
|
||||
void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem,
|
||||
uint8_t** const CurrConfigLoc,
|
||||
void** const CurrConfigLoc,
|
||||
const uint8_t Type,
|
||||
const uint8_t BeforeType)
|
||||
ATTR_NON_NULL_PTR_ARG(1, 2);
|
||||
|
@ -243,7 +243,7 @@
|
|||
* \param[in] AfterType Descriptor type value which must be reached before the given Type descriptor
|
||||
*/
|
||||
void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem,
|
||||
uint8_t** const CurrConfigLoc,
|
||||
void** const CurrConfigLoc,
|
||||
const uint8_t Type,
|
||||
const uint8_t AfterType)
|
||||
ATTR_NON_NULL_PTR_ARG(1, 2);
|
||||
|
@ -256,10 +256,10 @@
|
|||
* \param[in,out] CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor
|
||||
*/
|
||||
static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,
|
||||
uint8_t** const CurrConfigLoc)
|
||||
void** const CurrConfigLoc)
|
||||
ATTR_NON_NULL_PTR_ARG(1, 2);
|
||||
static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,
|
||||
uint8_t** const CurrConfigLoc)
|
||||
void** const CurrConfigLoc)
|
||||
{
|
||||
uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue