diff options
author | Diego Ismirlian <dismirlian (at) google's mail.com> | 2017-07-09 18:30:46 -0300 |
---|---|---|
committer | Diego Ismirlian <dismirlian (at) google's mail.com> | 2017-07-09 18:30:46 -0300 |
commit | 025ca5345a8ffbb7de3b1c64fb0a5ddbbdacd3b0 (patch) | |
tree | 8b5fb3aa38faa39db8e35a1e59a6ef634b169974 /os/hal/src/usbh/hal_usbh_msd.c | |
parent | c9388668449f9d686b1e4df14f9143263cc0fafc (diff) | |
download | ChibiOS-Contrib-025ca5345a8ffbb7de3b1c64fb0a5ddbbdacd3b0.tar.gz ChibiOS-Contrib-025ca5345a8ffbb7de3b1c64fb0a5ddbbdacd3b0.tar.bz2 ChibiOS-Contrib-025ca5345a8ffbb7de3b1c64fb0a5ddbbdacd3b0.zip |
USBH: Added mechanism for out-of-tree class driver enumeration
Diffstat (limited to 'os/hal/src/usbh/hal_usbh_msd.c')
-rw-r--r-- | os/hal/src/usbh/hal_usbh_msd.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/os/hal/src/usbh/hal_usbh_msd.c b/os/hal/src/usbh/hal_usbh_msd.c index 061c754..f2a4e39 100644 --- a/os/hal/src/usbh/hal_usbh_msd.c +++ b/os/hal/src/usbh/hal_usbh_msd.c @@ -62,7 +62,7 @@ #define uerr(f, ...) do {} while(0) #endif -static void usbhmsdLUNObjectDeinit(USBHMassStorageLUNDriver *lunp); +static void _lun_object_deinit(USBHMassStorageLUNDriver *lunp); /*===========================================================================*/ /* USB Class driver loader for MSD */ @@ -70,10 +70,12 @@ static void usbhmsdLUNObjectDeinit(USBHMassStorageLUNDriver *lunp); USBHMassStorageDriver USBHMSD[HAL_USBHMSD_MAX_INSTANCES]; +static void _msd_init(void); static usbh_baseclassdriver_t *_msd_load(usbh_device_t *dev, const uint8_t *descriptor, uint16_t rem); static void _msd_unload(usbh_baseclassdriver_t *drv); static const usbh_classdriver_vmt_t class_driver_vmt = { + _msd_init, _msd_load, _msd_unload }; @@ -205,7 +207,7 @@ static void _msd_unload(usbh_baseclassdriver_t *drv) { /* disconnect all LUNs */ while (lunp) { usbhmsdLUNDisconnect(lunp); - usbhmsdLUNObjectDeinit(lunp); + _lun_object_deinit(lunp); lunp = lunp->next; } @@ -682,7 +684,7 @@ static const struct USBHMassStorageDriverVMT blk_vmt = { (bool (*)(void *, BlockDeviceInfo *))usbhmsdLUNGetInfo }; -static void usbhmsdLUNObjectDeinit(USBHMassStorageLUNDriver *lunp) { +static void _lun_object_deinit(USBHMassStorageLUNDriver *lunp) { osalDbgCheck(lunp != NULL); osalMutexLock(&lunp->mtx); lunp->msdp = NULL; @@ -692,7 +694,7 @@ static void usbhmsdLUNObjectDeinit(USBHMassStorageLUNDriver *lunp) { osalMutexUnlock(&lunp->mtx); } -static void usbhmsdLUNObjectInit(USBHMassStorageLUNDriver *lunp) { +static void _lun_object_init(USBHMassStorageLUNDriver *lunp) { osalDbgCheck(lunp != NULL); memset(lunp, 0, sizeof(*lunp)); lunp->vmt = &blk_vmt; @@ -954,19 +956,19 @@ bool usbhmsdLUNIsProtected(USBHMassStorageLUNDriver *lunp) { return FALSE; } -static void usbhmsdObjectInit(USBHMassStorageDriver *msdp) { +static void _msd_object_init(USBHMassStorageDriver *msdp) { osalDbgCheck(msdp != NULL); memset(msdp, 0, sizeof(*msdp)); msdp->info = &usbhmsdClassDriverInfo; } -void usbhmsdInit(void) { +static void _msd_init(void) { uint8_t i; for (i = 0; i < HAL_USBHMSD_MAX_INSTANCES; i++) { - usbhmsdObjectInit(&USBHMSD[i]); + _msd_object_init(&USBHMSD[i]); } for (i = 0; i < HAL_USBHMSD_MAX_LUNS; i++) { - usbhmsdLUNObjectInit(&MSBLKD[i]); + _lun_object_init(&MSBLKD[i]); } } #endif |