| 3001 | |
| 3002 | #ifndef CONFIG_RNDIS_COMPOSITE |
| 3003 | int usbdev_rndis_initialize(FAR const uint8_t *mac_address) |
| 3004 | { |
| 3005 | int ret; |
| 3006 | FAR struct usbdevclass_driver_s *classdev; |
| 3007 | FAR struct rndis_driver_s *drvr; |
| 3008 | struct usbdev_devinfo_s devinfo; |
| 3009 | |
| 3010 | memset(&devinfo, 0, sizeof(struct usbdev_devinfo_s)); |
| 3011 | devinfo.ninterfaces = RNDIS_NINTERFACES; |
| 3012 | devinfo.nstrings = RNDIS_NSTRIDS; |
| 3013 | devinfo.nendpoints = RNDIS_NUM_EPS; |
| 3014 | devinfo.epno[RNDIS_EP_INTIN_IDX] = CONFIG_RNDIS_EPINTIN; |
| 3015 | devinfo.epno[RNDIS_EP_BULKIN_IDX] = CONFIG_RNDIS_EPBULKIN; |
| 3016 | devinfo.epno[RNDIS_EP_BULKOUT_IDX] = CONFIG_RNDIS_EPBULKOUT; |
| 3017 | |
| 3018 | ret = usbclass_classobject(0, &devinfo, &classdev); |
| 3019 | if (ret) |
| 3020 | { |
| 3021 | nerr("usbclass_classobject failed: %d\n", ret); |
| 3022 | return ret; |
| 3023 | } |
| 3024 | |
| 3025 | drvr = (FAR struct rndis_driver_s *)classdev; |
| 3026 | |
| 3027 | if (mac_address) |
| 3028 | { |
| 3029 | memcpy(drvr->dev->host_mac_address, mac_address, 6); |
| 3030 | } |
| 3031 | |
| 3032 | ret = usbdev_register(&drvr->drvr); |
| 3033 | if (ret) |
| 3034 | { |
| 3035 | nerr("usbdev_register failed: %d\n", ret); |
| 3036 | usbtrace(TRACE_CLSERROR(USBSER_TRACEERR_DEVREGISTER), (uint16_t)-ret); |
| 3037 | usbclass_uninitialize(classdev); |
| 3038 | return ret; |
| 3039 | } |
| 3040 | |
| 3041 | return OK; |
| 3042 | } |
| 3043 | #endif |
| 3044 | |
| 3045 | /**************************************************************************** |
no test coverage detected