mirror of
https://github.com/hathach/tinyusb.git
synced 2025-02-21 03:40:52 +00:00
add helper tu_desc_find/find2/find3
This commit is contained in:
parent
3fd075b48b
commit
074289caa3
@ -543,22 +543,35 @@ TU_ATTR_ALWAYS_INLINE static inline const char *tu_edpt_type_str(tusb_xfer_type_
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Descriptor helper
|
// Descriptor helper
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
|
// return next descriptor
|
||||||
TU_ATTR_ALWAYS_INLINE static inline uint8_t const * tu_desc_next(void const* desc)
|
TU_ATTR_ALWAYS_INLINE static inline uint8_t const * tu_desc_next(void const* desc)
|
||||||
{
|
{
|
||||||
uint8_t const* desc8 = (uint8_t const*) desc;
|
uint8_t const* desc8 = (uint8_t const*) desc;
|
||||||
return desc8 + desc8[DESC_OFFSET_LEN];
|
return desc8 + desc8[DESC_OFFSET_LEN];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get descriptor type
|
||||||
TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_desc_type(void const* desc)
|
TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_desc_type(void const* desc)
|
||||||
{
|
{
|
||||||
return ((uint8_t const*) desc)[DESC_OFFSET_TYPE];
|
return ((uint8_t const*) desc)[DESC_OFFSET_TYPE];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get descriptor length
|
||||||
TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_desc_len(void const* desc)
|
TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_desc_len(void const* desc)
|
||||||
{
|
{
|
||||||
return ((uint8_t const*) desc)[DESC_OFFSET_LEN];
|
return ((uint8_t const*) desc)[DESC_OFFSET_LEN];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// find descriptor that match byte1 (type)
|
||||||
|
uint8_t const * tu_desc_find(uint8_t const* desc, uint8_t const* end, uint8_t byte1);
|
||||||
|
|
||||||
|
// find descriptor that match byte1 (type) and byte2
|
||||||
|
uint8_t const * tu_desc_find2(uint8_t const* desc, uint8_t const* end, uint8_t byte1, uint8_t byte2);
|
||||||
|
|
||||||
|
// find descriptor that match byte1 (type) and byte2
|
||||||
|
uint8_t const * tu_desc_find3(uint8_t const* desc, uint8_t const* end, uint8_t byte1, uint8_t byte2, uint8_t byte3);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
35
src/tusb.c
35
src/tusb.c
@ -73,6 +73,41 @@ bool tusb_inited(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// Descriptor helper
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
|
uint8_t const * tu_desc_find(uint8_t const* desc, uint8_t const* end, uint8_t byte1)
|
||||||
|
{
|
||||||
|
while(desc+1 < end)
|
||||||
|
{
|
||||||
|
if ( desc[1] == byte1 ) return desc;
|
||||||
|
desc += desc[DESC_OFFSET_LEN];
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t const * tu_desc_find2(uint8_t const* desc, uint8_t const* end, uint8_t byte1, uint8_t byte2)
|
||||||
|
{
|
||||||
|
while(desc+2 < end)
|
||||||
|
{
|
||||||
|
if ( desc[1] == byte1 && desc[2] == byte2) return desc;
|
||||||
|
desc += desc[DESC_OFFSET_LEN];
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t const * tu_desc_find3(uint8_t const* desc, uint8_t const* end, uint8_t byte1, uint8_t byte2, uint8_t byte3)
|
||||||
|
{
|
||||||
|
while(desc+3 < end)
|
||||||
|
{
|
||||||
|
if (desc[1] == byte1 && desc[2] == byte2 && desc[3] == byte3) return desc;
|
||||||
|
desc += desc[DESC_OFFSET_LEN];
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Endpoint Helper for both Host and Device stack
|
// Endpoint Helper for both Host and Device stack
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
Loading…
x
Reference in New Issue
Block a user