change class driver open return type to bool
This commit is contained in:
@@ -229,16 +229,14 @@ void cdcd_reset(uint8_t rhport)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tusb_error_t cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t *p_length)
|
bool cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t *p_length)
|
||||||
{
|
{
|
||||||
if ( CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL != itf_desc->bInterfaceSubClass) return TUSB_ERROR_CDC_UNSUPPORTED_SUBCLASS;
|
// Only support ACM subclass
|
||||||
|
TU_ASSERT ( CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL == itf_desc->bInterfaceSubClass);
|
||||||
|
|
||||||
// Only support AT commands, no protocol and vendor specific commands.
|
// Only support AT commands, no protocol and vendor specific commands.
|
||||||
if ( !(tu_within(CDC_COMM_PROTOCOL_NONE, itf_desc->bInterfaceProtocol, CDC_COMM_PROTOCOL_ATCOMMAND_CDMA) ||
|
TU_ASSERT(tu_within(CDC_COMM_PROTOCOL_NONE, itf_desc->bInterfaceProtocol, CDC_COMM_PROTOCOL_ATCOMMAND_CDMA) ||
|
||||||
itf_desc->bInterfaceProtocol == 0xff ) )
|
itf_desc->bInterfaceProtocol == 0xff);
|
||||||
{
|
|
||||||
return TUSB_ERROR_CDC_UNSUPPORTED_PROTOCOL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find available interface
|
// Find available interface
|
||||||
cdcd_interface_t * p_cdc = NULL;
|
cdcd_interface_t * p_cdc = NULL;
|
||||||
@@ -250,6 +248,7 @@ tusb_error_t cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, u
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
TU_ASSERT(p_cdc);
|
||||||
|
|
||||||
//------------- Control Interface -------------//
|
//------------- Control Interface -------------//
|
||||||
p_cdc->itf_num = itf_desc->bInterfaceNumber;
|
p_cdc->itf_num = itf_desc->bInterfaceNumber;
|
||||||
@@ -258,15 +257,16 @@ tusb_error_t cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, u
|
|||||||
(*p_length) = sizeof(tusb_desc_interface_t);
|
(*p_length) = sizeof(tusb_desc_interface_t);
|
||||||
|
|
||||||
// Communication Functional Descriptors
|
// Communication Functional Descriptors
|
||||||
while( TUSB_DESC_CLASS_SPECIFIC == p_desc[DESC_OFFSET_TYPE] )
|
while ( TUSB_DESC_CLASS_SPECIFIC == tu_desc_type(p_desc) )
|
||||||
{
|
{
|
||||||
(*p_length) += p_desc[DESC_OFFSET_LEN];
|
(*p_length) += tu_desc_len(p_desc);
|
||||||
p_desc = tu_desc_next(p_desc);
|
p_desc = tu_desc_next(p_desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( TUSB_DESC_ENDPOINT == p_desc[DESC_OFFSET_TYPE])
|
if ( TUSB_DESC_ENDPOINT == tu_desc_type(p_desc) )
|
||||||
{ // notification endpoint if any
|
{
|
||||||
TU_ASSERT( dcd_edpt_open(rhport, (tusb_desc_endpoint_t const *) p_desc), TUSB_ERROR_DCD_OPEN_PIPE_FAILED);
|
// notification endpoint if any
|
||||||
|
TU_ASSERT( dcd_edpt_open(rhport, (tusb_desc_endpoint_t const *) p_desc) );
|
||||||
|
|
||||||
p_cdc->ep_notif = ((tusb_desc_endpoint_t const *) p_desc)->bEndpointAddress;
|
p_cdc->ep_notif = ((tusb_desc_endpoint_t const *) p_desc)->bEndpointAddress;
|
||||||
|
|
||||||
@@ -278,21 +278,21 @@ tusb_error_t cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, u
|
|||||||
if ( (TUSB_DESC_INTERFACE == p_desc[DESC_OFFSET_TYPE]) &&
|
if ( (TUSB_DESC_INTERFACE == p_desc[DESC_OFFSET_TYPE]) &&
|
||||||
(TUSB_CLASS_CDC_DATA == ((tusb_desc_interface_t const *) p_desc)->bInterfaceClass) )
|
(TUSB_CLASS_CDC_DATA == ((tusb_desc_interface_t const *) p_desc)->bInterfaceClass) )
|
||||||
{
|
{
|
||||||
// next to endpoint descritpor
|
// next to endpoint descriptor
|
||||||
(*p_length) += p_desc[DESC_OFFSET_LEN];
|
(*p_length) += tu_desc_len(p_desc);
|
||||||
p_desc = tu_desc_next(p_desc);
|
p_desc = tu_desc_next(p_desc);
|
||||||
|
|
||||||
// Open endpoint pair with usbd helper
|
// Open endpoint pair with usbd helper
|
||||||
tusb_desc_endpoint_t const *p_desc_ep = (tusb_desc_endpoint_t const *) p_desc;
|
tusb_desc_endpoint_t const *p_desc_ep = (tusb_desc_endpoint_t const *) p_desc;
|
||||||
TU_ASSERT_ERR( usbd_open_edpt_pair(rhport, p_desc_ep, TUSB_XFER_BULK, &p_cdc->ep_out, &p_cdc->ep_in) );
|
TU_ASSERT( usbd_open_edpt_pair(rhport, p_desc_ep, TUSB_XFER_BULK, &p_cdc->ep_out, &p_cdc->ep_in) );
|
||||||
|
|
||||||
(*p_length) += 2*sizeof(tusb_desc_endpoint_t);
|
(*p_length) += 2*sizeof(tusb_desc_endpoint_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prepare for incoming data
|
// Prepare for incoming data
|
||||||
TU_ASSERT( dcd_edpt_xfer(rhport, p_cdc->ep_out, p_cdc->epout_buf, CFG_TUD_CDC_EPSIZE), TUSB_ERROR_DCD_EDPT_XFER);
|
TU_ASSERT( dcd_edpt_xfer(rhport, p_cdc->ep_out, p_cdc->epout_buf, CFG_TUD_CDC_EPSIZE) );
|
||||||
|
|
||||||
return TUSB_ERROR_NONE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Invoked when class request DATA stage is finished.
|
// Invoked when class request DATA stage is finished.
|
||||||
|
@@ -113,7 +113,7 @@ ATTR_WEAK void tud_cdc_line_coding_cb(uint8_t itf, cdc_line_coding_t const* p_li
|
|||||||
#ifdef _TINY_USB_SOURCE_FILE_
|
#ifdef _TINY_USB_SOURCE_FILE_
|
||||||
|
|
||||||
void cdcd_init (void);
|
void cdcd_init (void);
|
||||||
tusb_error_t cdcd_open (uint8_t rhport, tusb_desc_interface_t const * p_interface_desc, uint16_t *p_length);
|
bool cdcd_open (uint8_t rhport, tusb_desc_interface_t const * p_interface_desc, uint16_t *p_length);
|
||||||
bool cdcd_control_request (uint8_t rhport, tusb_control_request_t const * p_request);
|
bool cdcd_control_request (uint8_t rhport, tusb_control_request_t const * p_request);
|
||||||
bool cdcd_control_request_complete (uint8_t rhport, tusb_control_request_t const * p_request);
|
bool cdcd_control_request_complete (uint8_t rhport, tusb_control_request_t const * p_request);
|
||||||
tusb_error_t cdcd_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes);
|
tusb_error_t cdcd_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes);
|
||||||
|
@@ -318,22 +318,22 @@ void hidd_reset(uint8_t rhport)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
tusb_error_t hidd_open(uint8_t rhport, tusb_desc_interface_t const * desc_itf, uint16_t *p_len)
|
bool hidd_open(uint8_t rhport, tusb_desc_interface_t const * desc_itf, uint16_t *p_len)
|
||||||
{
|
{
|
||||||
uint8_t const *p_desc = (uint8_t const *) desc_itf;
|
uint8_t const *p_desc = (uint8_t const *) desc_itf;
|
||||||
|
|
||||||
// TODO not support HID OUT Endpoint
|
// TODO support HID OUT Endpoint
|
||||||
TU_ASSERT(desc_itf->bNumEndpoints == 1, ERR_TUD_INVALID_DESCRIPTOR);
|
TU_ASSERT(desc_itf->bNumEndpoints == 1);
|
||||||
|
|
||||||
//------------- HID descriptor -------------//
|
//------------- HID descriptor -------------//
|
||||||
p_desc += p_desc[DESC_OFFSET_LEN];
|
p_desc = tu_desc_next(p_desc);
|
||||||
tusb_hid_descriptor_hid_t const *desc_hid = (tusb_hid_descriptor_hid_t const *) p_desc;
|
tusb_hid_descriptor_hid_t const *desc_hid = (tusb_hid_descriptor_hid_t const *) p_desc;
|
||||||
TU_ASSERT(HID_DESC_TYPE_HID == desc_hid->bDescriptorType, ERR_TUD_INVALID_DESCRIPTOR);
|
TU_ASSERT(HID_DESC_TYPE_HID == desc_hid->bDescriptorType);
|
||||||
|
|
||||||
//------------- Endpoint Descriptor -------------//
|
//------------- Endpoint Descriptor -------------//
|
||||||
p_desc += p_desc[DESC_OFFSET_LEN];
|
p_desc = tu_desc_next(p_desc);
|
||||||
tusb_desc_endpoint_t const *desc_edpt = (tusb_desc_endpoint_t const *) p_desc;
|
tusb_desc_endpoint_t const *desc_edpt = (tusb_desc_endpoint_t const *) p_desc;
|
||||||
TU_ASSERT(TUSB_DESC_ENDPOINT == desc_edpt->bDescriptorType, ERR_TUD_INVALID_DESCRIPTOR);
|
TU_ASSERT(TUSB_DESC_ENDPOINT == desc_edpt->bDescriptorType);
|
||||||
|
|
||||||
hidd_interface_t * p_hid = NULL;
|
hidd_interface_t * p_hid = NULL;
|
||||||
|
|
||||||
@@ -374,7 +374,7 @@ tusb_error_t hidd_open(uint8_t rhport, tusb_desc_interface_t const * desc_itf, u
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TU_ASSERT(p_hid, ERR_TUD_INVALID_DESCRIPTOR);
|
TU_ASSERT(p_hid);
|
||||||
p_hid->boot_protocol = true; // default mode is BOOT
|
p_hid->boot_protocol = true; // default mode is BOOT
|
||||||
}
|
}
|
||||||
/*------------- Generic (multiple report) -------------*/
|
/*------------- Generic (multiple report) -------------*/
|
||||||
@@ -386,12 +386,10 @@ tusb_error_t hidd_open(uint8_t rhport, tusb_desc_interface_t const * desc_itf, u
|
|||||||
p_hid->desc_report = usbd_desc_set->hid_report.generic;
|
p_hid->desc_report = usbd_desc_set->hid_report.generic;
|
||||||
p_hid->get_report_cb = tud_hid_generic_get_report_cb;
|
p_hid->get_report_cb = tud_hid_generic_get_report_cb;
|
||||||
p_hid->set_report_cb = tud_hid_generic_set_report_cb;
|
p_hid->set_report_cb = tud_hid_generic_set_report_cb;
|
||||||
|
|
||||||
TU_ASSERT(p_hid, ERR_TUD_INVALID_DESCRIPTOR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TU_VERIFY(p_hid->desc_report, ERR_TUD_INVALID_DESCRIPTOR);
|
TU_ASSERT(p_hid->desc_report);
|
||||||
TU_ASSERT( dcd_edpt_open(rhport, desc_edpt), ERR_TUD_EDPT_OPEN_FAILED );
|
TU_ASSERT(dcd_edpt_open(rhport, desc_edpt));
|
||||||
|
|
||||||
p_hid->itf_num = desc_itf->bInterfaceNumber;
|
p_hid->itf_num = desc_itf->bInterfaceNumber;
|
||||||
p_hid->ep_in = desc_edpt->bEndpointAddress;
|
p_hid->ep_in = desc_edpt->bEndpointAddress;
|
||||||
@@ -399,7 +397,7 @@ tusb_error_t hidd_open(uint8_t rhport, tusb_desc_interface_t const * desc_itf, u
|
|||||||
|
|
||||||
*p_len = sizeof(tusb_desc_interface_t) + sizeof(tusb_hid_descriptor_hid_t) + desc_itf->bNumEndpoints*sizeof(tusb_desc_endpoint_t);
|
*p_len = sizeof(tusb_desc_interface_t) + sizeof(tusb_hid_descriptor_hid_t) + desc_itf->bNumEndpoints*sizeof(tusb_desc_endpoint_t);
|
||||||
|
|
||||||
return TUSB_ERROR_NONE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle class control request
|
// Handle class control request
|
||||||
|
@@ -377,7 +377,7 @@ ATTR_WEAK void tud_hid_mouse_set_report_cb(uint8_t report_id, hid_report_type_t
|
|||||||
#ifdef _TINY_USB_SOURCE_FILE_
|
#ifdef _TINY_USB_SOURCE_FILE_
|
||||||
|
|
||||||
void hidd_init(void);
|
void hidd_init(void);
|
||||||
tusb_error_t hidd_open(uint8_t rhport, tusb_desc_interface_t const * p_interface_desc, uint16_t *p_length);
|
bool hidd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t *p_length);
|
||||||
bool hidd_control_request(uint8_t rhport, tusb_control_request_t const * p_request);
|
bool hidd_control_request(uint8_t rhport, tusb_control_request_t const * p_request);
|
||||||
bool hidd_control_request_complete (uint8_t rhport, tusb_control_request_t const * p_request);
|
bool hidd_control_request_complete (uint8_t rhport, tusb_control_request_t const * p_request);
|
||||||
tusb_error_t hidd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes);
|
tusb_error_t hidd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes);
|
||||||
|
@@ -150,25 +150,25 @@ void mscd_reset(uint8_t rhport)
|
|||||||
tu_memclr(&_mscd_itf, sizeof(mscd_interface_t));
|
tu_memclr(&_mscd_itf, sizeof(mscd_interface_t));
|
||||||
}
|
}
|
||||||
|
|
||||||
tusb_error_t mscd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t *p_len)
|
bool mscd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t *p_len)
|
||||||
{
|
{
|
||||||
// only support SCSI's BOT protocol
|
// only support SCSI's BOT protocol
|
||||||
TU_VERIFY( ( MSC_SUBCLASS_SCSI == itf_desc->bInterfaceSubClass &&
|
TU_ASSERT(MSC_SUBCLASS_SCSI == itf_desc->bInterfaceSubClass &&
|
||||||
MSC_PROTOCOL_BOT == itf_desc->bInterfaceProtocol ), TUSB_ERROR_MSC_UNSUPPORTED_PROTOCOL );
|
MSC_PROTOCOL_BOT == itf_desc->bInterfaceProtocol);
|
||||||
|
|
||||||
mscd_interface_t * p_msc = &_mscd_itf;
|
mscd_interface_t * p_msc = &_mscd_itf;
|
||||||
|
|
||||||
// Open endpoint pair with usbd helper
|
// Open endpoint pair with usbd helper
|
||||||
tusb_desc_endpoint_t const *p_desc_ep = (tusb_desc_endpoint_t const *) tu_desc_next( itf_desc );
|
tusb_desc_endpoint_t const *p_desc_ep = (tusb_desc_endpoint_t const *) tu_desc_next( itf_desc );
|
||||||
TU_ASSERT_ERR( usbd_open_edpt_pair(rhport, p_desc_ep, TUSB_XFER_BULK, &p_msc->ep_out, &p_msc->ep_in) );
|
TU_ASSERT( usbd_open_edpt_pair(rhport, p_desc_ep, TUSB_XFER_BULK, &p_msc->ep_out, &p_msc->ep_in) );
|
||||||
|
|
||||||
p_msc->itf_num = itf_desc->bInterfaceNumber;
|
p_msc->itf_num = itf_desc->bInterfaceNumber;
|
||||||
(*p_len) = sizeof(tusb_desc_interface_t) + 2*sizeof(tusb_desc_endpoint_t);
|
(*p_len) = sizeof(tusb_desc_interface_t) + 2*sizeof(tusb_desc_endpoint_t);
|
||||||
|
|
||||||
//------------- Queue Endpoint OUT for Command Block Wrapper -------------//
|
// Prepare for Command Block Wrapper
|
||||||
TU_ASSERT( dcd_edpt_xfer(rhport, p_msc->ep_out, (uint8_t*) &p_msc->cbw, sizeof(msc_cbw_t)), TUSB_ERROR_DCD_EDPT_XFER );
|
TU_ASSERT( dcd_edpt_xfer(rhport, p_msc->ep_out, (uint8_t*) &p_msc->cbw, sizeof(msc_cbw_t)) );
|
||||||
|
|
||||||
return TUSB_ERROR_NONE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle class control request
|
// Handle class control request
|
||||||
|
@@ -171,7 +171,7 @@ ATTR_WEAK bool tud_msc_is_writable_cb(uint8_t lun);
|
|||||||
#ifdef _TINY_USB_SOURCE_FILE_
|
#ifdef _TINY_USB_SOURCE_FILE_
|
||||||
|
|
||||||
void mscd_init(void);
|
void mscd_init(void);
|
||||||
tusb_error_t mscd_open(uint8_t rhport, tusb_desc_interface_t const * p_interface_desc, uint16_t *p_length);
|
bool mscd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t *p_length);
|
||||||
bool mscd_control_request(uint8_t rhport, tusb_control_request_t const * p_request);
|
bool mscd_control_request(uint8_t rhport, tusb_control_request_t const * p_request);
|
||||||
bool mscd_control_request_complete (uint8_t rhport, tusb_control_request_t const * p_request);
|
bool mscd_control_request_complete (uint8_t rhport, tusb_control_request_t const * p_request);
|
||||||
tusb_error_t mscd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes);
|
tusb_error_t mscd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes);
|
||||||
|
@@ -89,7 +89,7 @@ typedef struct {
|
|||||||
uint8_t class_code;
|
uint8_t class_code;
|
||||||
|
|
||||||
void (* init ) (void);
|
void (* init ) (void);
|
||||||
tusb_error_t (* open ) (uint8_t rhport, tusb_desc_interface_t const * desc_intf, uint16_t* p_length);
|
bool (* open ) (uint8_t rhport, tusb_desc_interface_t const * desc_intf, uint16_t* p_length);
|
||||||
bool (* control_request ) (uint8_t rhport, tusb_control_request_t const * request);
|
bool (* control_request ) (uint8_t rhport, tusb_control_request_t const * request);
|
||||||
bool (* control_request_complete ) (uint8_t rhport, tusb_control_request_t const * request);
|
bool (* control_request_complete ) (uint8_t rhport, tusb_control_request_t const * request);
|
||||||
tusb_error_t (* xfer_cb ) (uint8_t rhport, uint8_t ep_addr, xfer_result_t, uint32_t);
|
tusb_error_t (* xfer_cb ) (uint8_t rhport, uint8_t ep_addr, xfer_result_t, uint32_t);
|
||||||
@@ -458,7 +458,7 @@ static bool process_set_config(uint8_t rhport)
|
|||||||
_usbd_dev.itf2drv[desc_itf->bInterfaceNumber] = drv_id;
|
_usbd_dev.itf2drv[desc_itf->bInterfaceNumber] = drv_id;
|
||||||
|
|
||||||
uint16_t itf_len=0;
|
uint16_t itf_len=0;
|
||||||
TU_ASSERT_ERR( usbd_class_drivers[drv_id].open( rhport, desc_itf, &itf_len ), false );
|
TU_ASSERT( usbd_class_drivers[drv_id].open( rhport, desc_itf, &itf_len ) );
|
||||||
TU_ASSERT( itf_len >= sizeof(tusb_desc_interface_t) );
|
TU_ASSERT( itf_len >= sizeof(tusb_desc_interface_t) );
|
||||||
|
|
||||||
mark_interface_endpoint(_usbd_dev.ep2drv, p_desc, itf_len, drv_id);
|
mark_interface_endpoint(_usbd_dev.ep2drv, p_desc, itf_len, drv_id);
|
||||||
@@ -624,14 +624,14 @@ void dcd_event_xfer_complete (uint8_t rhport, uint8_t ep_addr, uint32_t xferred_
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
// Helper to parse an pair of endpoint descriptors (IN & OUT)
|
// Helper to parse an pair of endpoint descriptors (IN & OUT)
|
||||||
tusb_error_t usbd_open_edpt_pair(uint8_t rhport, tusb_desc_endpoint_t const* ep_desc, uint8_t xfer_type, uint8_t* ep_out, uint8_t* ep_in)
|
bool usbd_open_edpt_pair(uint8_t rhport, tusb_desc_endpoint_t const* ep_desc, uint8_t xfer_type, uint8_t* ep_out, uint8_t* ep_in)
|
||||||
{
|
{
|
||||||
for(int i=0; i<2; i++)
|
for(int i=0; i<2; i++)
|
||||||
{
|
{
|
||||||
TU_ASSERT(TUSB_DESC_ENDPOINT == ep_desc->bDescriptorType &&
|
TU_ASSERT(TUSB_DESC_ENDPOINT == ep_desc->bDescriptorType &&
|
||||||
xfer_type == ep_desc->bmAttributes.xfer, TUSB_ERROR_DESCRIPTOR_CORRUPTED);
|
xfer_type == ep_desc->bmAttributes.xfer );
|
||||||
|
|
||||||
TU_ASSERT( dcd_edpt_open(rhport, ep_desc), TUSB_ERROR_DCD_OPEN_PIPE_FAILED );
|
TU_ASSERT(dcd_edpt_open(rhport, ep_desc));
|
||||||
|
|
||||||
if ( tu_edpt_dir(ep_desc->bEndpointAddress) == TUSB_DIR_IN )
|
if ( tu_edpt_dir(ep_desc->bEndpointAddress) == TUSB_DIR_IN )
|
||||||
{
|
{
|
||||||
@@ -644,7 +644,7 @@ tusb_error_t usbd_open_edpt_pair(uint8_t rhport, tusb_desc_endpoint_t const* ep_
|
|||||||
ep_desc = (tusb_desc_endpoint_t const *) tu_desc_next(ep_desc);
|
ep_desc = (tusb_desc_endpoint_t const *) tu_desc_next(ep_desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TUSB_ERROR_NONE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper to defer an isr function
|
// Helper to defer an isr function
|
||||||
|
@@ -70,7 +70,7 @@ void usbd_control_stall(uint8_t rhport);
|
|||||||
/* Helper
|
/* Helper
|
||||||
*------------------------------------------------------------------*/
|
*------------------------------------------------------------------*/
|
||||||
// helper to parse an pair of In and Out endpoint descriptors. They must be consecutive
|
// helper to parse an pair of In and Out endpoint descriptors. They must be consecutive
|
||||||
tusb_error_t usbd_open_edpt_pair(uint8_t rhport, tusb_desc_endpoint_t const* p_desc_ep, uint8_t xfer_type, uint8_t* ep_out, uint8_t* ep_in);
|
bool usbd_open_edpt_pair(uint8_t rhport, tusb_desc_endpoint_t const* p_desc_ep, uint8_t xfer_type, uint8_t* ep_out, uint8_t* ep_in);
|
||||||
|
|
||||||
void usbd_defer_func( osal_task_func_t func, void* param, bool in_isr );
|
void usbd_defer_func( osal_task_func_t func, void* param, bool in_isr );
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user