diff --git a/class/cdc/usbd_cdc_ecm.c b/class/cdc/usbd_cdc_ecm.c index c5d463f7..2a4b7772 100644 --- a/class/cdc/usbd_cdc_ecm.c +++ b/class/cdc/usbd_cdc_ecm.c @@ -173,7 +173,7 @@ void cdc_ecm_int_in(uint8_t busid, uint8_t ep, uint32_t nbytes) int usbd_cdc_ecm_start_write(uint8_t *buf, uint32_t len) { if (!usb_device_is_configured(0)) { - return -USB_ERR_NODEV; + return -USB_ERR_NOTCONN; } if (g_cdc_ecm_tx_data_length > 0) { @@ -189,7 +189,7 @@ int usbd_cdc_ecm_start_write(uint8_t *buf, uint32_t len) int usbd_cdc_ecm_start_read(uint8_t *buf, uint32_t len) { if (!usb_device_is_configured(0)) { - return -USB_ERR_NODEV; + return -USB_ERR_NOTCONN; } g_cdc_ecm_rx_data_length = 0; @@ -222,6 +222,10 @@ int usbd_cdc_ecm_eth_tx(struct pbuf *p) struct pbuf *q; uint8_t *buffer; + if (!usb_device_is_configured(0)) { + return -USB_ERR_NOTCONN; + } + if (g_cdc_ecm_tx_data_length > 0) { return -USB_ERR_BUSY; } @@ -261,8 +265,12 @@ struct usbd_interface *usbd_cdc_ecm_init_intf(struct usbd_interface *intf, const return intf; } -void usbd_cdc_ecm_set_connect(bool connect, uint32_t speed[2]) +int usbd_cdc_ecm_set_connect(bool connect, uint32_t speed[2]) { + if (!usb_device_is_configured(0)) { + return -USB_ERR_NOTCONN; + } + if (connect) { g_current_net_status = 2; memcpy(g_connect_speed_table, speed, 8); @@ -271,6 +279,8 @@ void usbd_cdc_ecm_set_connect(bool connect, uint32_t speed[2]) g_current_net_status = 1; usbd_cdc_ecm_send_notify(CDC_ECM_NOTIFY_CODE_NETWORK_CONNECTION, CDC_ECM_NET_DISCONNECTED, NULL); } + + return 0; } __WEAK void usbd_cdc_ecm_data_recv_done(uint32_t len) diff --git a/class/cdc/usbd_cdc_ecm.h b/class/cdc/usbd_cdc_ecm.h index 3e0284e3..780e7e2b 100644 --- a/class/cdc/usbd_cdc_ecm.h +++ b/class/cdc/usbd_cdc_ecm.h @@ -15,7 +15,7 @@ extern "C" { /* Init cdc ecm interface driver */ struct usbd_interface *usbd_cdc_ecm_init_intf(struct usbd_interface *intf, const uint8_t int_ep, const uint8_t out_ep, const uint8_t in_ep); -void usbd_cdc_ecm_set_connect(bool connect, uint32_t speed[2]); +int usbd_cdc_ecm_set_connect(bool connect, uint32_t speed[2]); void usbd_cdc_ecm_data_recv_done(uint32_t len); void usbd_cdc_ecm_data_send_done(uint32_t len); diff --git a/class/wireless/usbd_rndis.c b/class/wireless/usbd_rndis.c index a7be1214..2b93e479 100644 --- a/class/wireless/usbd_rndis.c +++ b/class/wireless/usbd_rndis.c @@ -515,7 +515,7 @@ void rndis_int_in(uint8_t busid, uint8_t ep, uint32_t nbytes) int usbd_rndis_start_write(uint8_t *buf, uint32_t len) { if (!usb_device_is_configured(0)) { - return -USB_ERR_NODEV; + return -USB_ERR_NOTCONN; } if (g_rndis_tx_data_length > 0) { @@ -531,7 +531,7 @@ int usbd_rndis_start_write(uint8_t *buf, uint32_t len) int usbd_rndis_start_read(uint8_t *buf, uint32_t len) { if (!usb_device_is_configured(0)) { - return -USB_ERR_NODEV; + return -USB_ERR_NOTCONN; } g_rndis_rx_data_buffer = buf; @@ -569,7 +569,7 @@ int usbd_rndis_eth_tx(struct pbuf *p) uint8_t *buffer; rndis_data_packet_t *hdr; - if (g_usbd_rndis.link_status == NDIS_MEDIA_STATE_DISCONNECTED) { + if (!usb_device_is_configured(0)) { return -USB_ERR_NOTCONN; } @@ -630,7 +630,7 @@ struct usbd_interface *usbd_rndis_init_intf(struct usbd_interface *intf, int usbd_rndis_set_connect(bool connect) { if (!usb_device_is_configured(0)) { - return -USB_ERR_NODEV; + return -USB_ERR_NOTCONN; } if(g_usbd_rndis.set_rsp_get)