Polish up control split and treat it more like a normal endpoint.
This commit is contained in:
		| @@ -455,15 +455,6 @@ tusb_error_t hidd_control_request(uint8_t rhport, tusb_control_request_t const * | ||||
|     else if ( HID_REQ_CONTROL_SET_REPORT == p_request->bRequest ) | ||||
|     { | ||||
|       dcd_edpt_xfer(rhport, 0, _shared_control_buffer, p_request->wLength); | ||||
|  | ||||
|       // wValue = Report Type | Report ID | ||||
|       uint8_t const report_type = tu_u16_high(p_request->wValue); | ||||
|       uint8_t const report_id   = tu_u16_low(p_request->wValue); | ||||
|  | ||||
|       if ( p_hid->set_report_cb ) | ||||
|       { | ||||
|         p_hid->set_report_cb(report_id, (hid_report_type_t) report_type, _shared_control_buffer, p_request->wLength); | ||||
|       } | ||||
|     } | ||||
|     else if (HID_REQ_CONTROL_SET_IDLE == p_request->bRequest) | ||||
|     { | ||||
| @@ -495,6 +486,29 @@ tusb_error_t hidd_control_request(uint8_t rhport, tusb_control_request_t const * | ||||
|   return TUSB_ERROR_NONE; | ||||
| } | ||||
|  | ||||
| void hidd_control_request_complete(uint8_t rhport, tusb_control_request_t const * p_request) | ||||
| { | ||||
|   hidd_interface_t* p_hid = get_interface_by_itfnum( (uint8_t) p_request->wIndex ); | ||||
|   if (p_hid == NULL) { | ||||
|       return; | ||||
|   } | ||||
|  | ||||
|   if (p_request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS) | ||||
|   { | ||||
|     if ( HID_REQ_CONTROL_SET_REPORT == p_request->bRequest ) | ||||
|     { | ||||
|       // wValue = Report Type | Report ID | ||||
|       uint8_t const report_type = tu_u16_high(p_request->wValue); | ||||
|       uint8_t const report_id   = tu_u16_low(p_request->wValue); | ||||
|  | ||||
|       if ( p_hid->set_report_cb ) | ||||
|       { | ||||
|         p_hid->set_report_cb(report_id, (hid_report_type_t) report_type, _shared_control_buffer, p_request->wLength); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| tusb_error_t hidd_xfer_cb(uint8_t rhport, uint8_t edpt_addr, tusb_event_t event, uint32_t xferred_bytes) | ||||
| { | ||||
|   // nothing to do | ||||
|   | ||||
| @@ -379,6 +379,7 @@ ATTR_WEAK void tud_hid_mouse_set_report_cb(uint8_t report_id, hid_report_type_t | ||||
| void hidd_init(void); | ||||
| tusb_error_t hidd_open(uint8_t rhport, tusb_desc_interface_t const * p_interface_desc, uint16_t *p_length); | ||||
| tusb_error_t hidd_control_request(uint8_t rhport, tusb_control_request_t const * p_request, uint16_t bytes_already_sent); | ||||
| void 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 edpt_addr, tusb_event_t event, uint32_t xferred_bytes); | ||||
| void hidd_reset(uint8_t rhport); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Scott Shawcroft
					Scott Shawcroft