summaryrefslogtreecommitdiff
path: root/src/device/usbd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/device/usbd.c')
-rw-r--r--src/device/usbd.c38
1 files changed, 32 insertions, 6 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c
index 2adac429c..9d15ea4a4 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -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,
+ .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,
+ },
#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
+ .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
};