remove control from class driver array
This commit is contained in:
		| @@ -104,16 +104,6 @@ typedef struct { | ||||
|  | ||||
| static usbd_class_driver_t const usbd_class_drivers[] = | ||||
| { | ||||
|     { | ||||
|         .class_code      = TUSB_CLASS_UNSPECIFIED, | ||||
|         .init            = controld_init, | ||||
|         .open            = NULL, | ||||
|         .control_request = NULL, | ||||
|         .control_request_complete = NULL, | ||||
|         .xfer_cb         = controld_xfer_cb, | ||||
|         .sof             = NULL, | ||||
|         .reset           = controld_reset | ||||
|     }, | ||||
|   #if CFG_TUD_CDC | ||||
|     { | ||||
|         .class_code      = TUSB_CLASS_CDC, | ||||
| @@ -223,9 +213,8 @@ static void usbd_reset(uint8_t rhport) | ||||
|   tu_varclr(&_usbd_dev); | ||||
|   memset(_usbd_dev.itf2drv, 0xff, sizeof(_usbd_dev.itf2drv)); // invalid mapping | ||||
|   memset(_usbd_dev.ep2drv , 0xff, sizeof(_usbd_dev.ep2drv )); // invalid mapping | ||||
|   // Always map the 0th endpoint to the control driver. | ||||
|   _usbd_dev.ep2drv[TUSB_DIR_IN][0] = 0; | ||||
|   _usbd_dev.ep2drv[TUSB_DIR_OUT][0] = 0; | ||||
|  | ||||
|   controld_reset(rhport); | ||||
|  | ||||
|   for (uint8_t i = 0; i < USBD_CLASS_DRIVER_COUNT; i++) | ||||
|   { | ||||
| @@ -253,10 +242,17 @@ static void usbd_task_body(void) | ||||
|       { | ||||
|         // Invoke the class callback associated with the endpoint address | ||||
|         uint8_t const ep_addr = event.xfer_complete.ep_addr; | ||||
|         uint8_t const drv_id = _usbd_dev.ep2drv[edpt_dir(ep_addr)][edpt_number(ep_addr)]; | ||||
|  | ||||
|         if ( drv_id < USBD_CLASS_DRIVER_COUNT ) | ||||
|         if ( 0 == edpt_number(ep_addr) ) | ||||
|         { | ||||
|           // control transfer | ||||
|           controld_xfer_cb(event.rhport, ep_addr, event.xfer_complete.result, event.xfer_complete.len); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|           uint8_t const drv_id = _usbd_dev.ep2drv[edpt_dir(ep_addr)][edpt_number(ep_addr)]; | ||||
|           TU_ASSERT(drv_id < USBD_CLASS_DRIVER_COUNT,); | ||||
|  | ||||
|           usbd_class_drivers[drv_id].xfer_cb(event.rhport, ep_addr, event.xfer_complete.result, event.xfer_complete.len); | ||||
|         } | ||||
|       } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 hathach
					hathach