usbnet: OS-agnostic (Windows/Linux/macOS) network driver
This commit is contained in:
		| @@ -184,21 +184,47 @@ static usbd_class_driver_t const _usbd_driver[] = | ||||
|   #endif | ||||
|  | ||||
|   #if CFG_TUD_NET | ||||
| #if CFG_TUD_NET != OPT_NET_EEM | ||||
|   /* RNDIS management interface */ | ||||
|   { | ||||
|       .class_code       =  | ||||
| #if CFG_TUD_NET == OPT_NET_RNDIS | ||||
|                           TUD_RNDIS_ITF_CLASS, | ||||
| #else | ||||
|                           TUSB_CLASS_CDC, | ||||
| #endif | ||||
|       .class_code       = TUD_RNDIS_ITF_CLASS, | ||||
|       .init             = netd_init, | ||||
|       .reset            = netd_reset, | ||||
|       .open             = netd_open, | ||||
|       .control_request  = netd_control_request, | ||||
|       .control_complete = netd_control_complete, | ||||
|       .xfer_cb          = netd_xfer_cb, | ||||
|       .sof              = NULL | ||||
|       .sof              = NULL, | ||||
|   }, | ||||
| #endif | ||||
|   /* CDC-ECM management interface; CDC-EEM data interface */ | ||||
|   { | ||||
|       .class_code       = TUSB_CLASS_CDC, | ||||
|       .init             = netd_init, | ||||
|       .reset            = netd_reset, | ||||
| #if CFG_TUD_NET == OPT_NET_EEM | ||||
|       .open             = netd_open_data, | ||||
| #else | ||||
|       .open             = netd_open, | ||||
| #endif | ||||
|       .control_request  = netd_control_request, | ||||
|       .control_complete = netd_control_complete, | ||||
|       .xfer_cb          = netd_xfer_cb, | ||||
|       .sof              = NULL, | ||||
|   }, | ||||
|   /* RNDIS/CDC-ECM data interface */ | ||||
| #if CFG_TUD_NET != OPT_NET_EEM | ||||
|   { | ||||
|       .class_code       = TUSB_CLASS_CDC_DATA, | ||||
|       .init             = netd_init_data, | ||||
|       .reset            = NULL, | ||||
|       .open             = netd_open_data, | ||||
|       .control_request  = NULL, | ||||
|       .control_complete = NULL, | ||||
|       .xfer_cb          = netd_xfer_cb, | ||||
|       .sof              = NULL, | ||||
|   }, | ||||
| #endif | ||||
|   #endif | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -342,8 +342,8 @@ TU_ATTR_WEAK bool tud_vendor_control_complete_cb(uint8_t rhport, tusb_control_re | ||||
|  | ||||
| //------------- CDC-ECM -------------// | ||||
|  | ||||
| // Length of template descriptor: 62 bytes | ||||
| #define TUD_CDC_ECM_DESC_LEN  (9+5+5+13+7+9+7+7) | ||||
| // Length of template descriptor: 71 bytes | ||||
| #define TUD_CDC_ECM_DESC_LEN  (9+5+5+13+7+9+9+7+7) | ||||
|  | ||||
| // CDC-ECM Descriptor Template | ||||
| // Interface number, description string index, MAC address string index, EP notification address and size, EP data address (out, in), and size, max segment size. | ||||
| @@ -358,8 +358,10 @@ TU_ATTR_WEAK bool tud_vendor_control_complete_cb(uint8_t rhport, tusb_control_re | ||||
|   13, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_ETHERNET_NETWORKING, _mac_stridx, 0, 0, 0, 0, U16_TO_U8S_LE(_maxsegmentsize), U16_TO_U8S_LE(0), 0,\ | ||||
|   /* Endpoint Notification */\ | ||||
|   7, TUSB_DESC_ENDPOINT, _ep_notif, TUSB_XFER_INTERRUPT, U16_TO_U8S_LE(_ep_notif_size), 1,\ | ||||
|   /* CDC Data Interface */\ | ||||
|   9, TUSB_DESC_INTERFACE, (uint8_t)((_itfnum)+1), 0, 2, TUSB_CLASS_CDC_DATA, 0, 0, 0,\ | ||||
|   /* CDC Data Interface (default inactive) */\ | ||||
|   9, TUSB_DESC_INTERFACE, (uint8_t)((_itfnum)+1), 0, 0, TUSB_CLASS_CDC_DATA, 0, 0, 0,\ | ||||
|   /* CDC Data Interface (alternative active) */\ | ||||
|   9, TUSB_DESC_INTERFACE, (uint8_t)((_itfnum)+1), 1, 2, TUSB_CLASS_CDC_DATA, 0, 0, 0,\ | ||||
|   /* Endpoint In */\ | ||||
|   7, TUSB_DESC_ENDPOINT, _epin, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0,\ | ||||
|   /* Endpoint Out */\ | ||||
| @@ -372,7 +374,7 @@ TU_ATTR_WEAK bool tud_vendor_control_complete_cb(uint8_t rhport, tusb_control_re | ||||
|   /* Windows XP */ | ||||
|   #define TUD_RNDIS_ITF_CLASS    TUSB_CLASS_CDC | ||||
|   #define TUD_RNDIS_ITF_SUBCLASS CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL | ||||
|   #define TUD_RNDIS_ITF_PROTOCOL CDC_COMM_PROTOCOL_MICROSOFT_RNDIS | ||||
|   #define TUD_RNDIS_ITF_PROTOCOL 0xFF /* CDC_COMM_PROTOCOL_MICROSOFT_RNDIS */ | ||||
| #else | ||||
|   /* Windows 7+ */ | ||||
|   #define TUD_RNDIS_ITF_CLASS    0xE0 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Peter Lawrence
					Peter Lawrence