/** * Configure function with expected descriptors and start functionality. * Usually invoked when device is configured. * \pDescriptors Pointer to the descriptors for function configure. * \wLength Length of descriptors in number of bytes. */ void HIDDKeyboard_ConfigureFunction(USBGenericDescriptor *pDescriptors, uint16_t wLength) { HIDDKeyboard *pKbd = &hiddKeyboard; HIDDFunction *pHidd = &pKbd->hidDrv; pDescriptors = pDescriptors; wLength = wLength; HIDDFunction_ParseInterface(pHidd, pDescriptors, wLength); /* Start receiving output reports */ HIDDFunction_StartPollingOutputs(pHidd); }
/** * Handles configureation changed event. * \param cfgnum New configuration number */ void HIDDMouseDriver_ConfigurationChangedHandler(uint8_t cfgnum) { HIDDMouseDriver * pMouse = &hiddMouseDriver; HIDDFunction * pHidd = &pMouse->hidDrv; USBDDriver * pUsbd = pHidd->pUsbd; USBConfigurationDescriptor *pDesc; if (cfgnum > 0) { /* Parse endpoints for reports */ pDesc = USBDDriver_GetCfgDescriptors(pUsbd, cfgnum); HIDDFunction_ParseInterface(pHidd, (USBGenericDescriptor*)pDesc, pDesc->wTotalLength); } }
/** * Handles configureation changed event. * \param cfgnum New configuration number */ void HIDDTransferDriver_ConfigurationChangedHandler(uint8_t cfgnum) { const USBDDriverDescriptors * pDescriptors = USBD_GetDriver()->pDescriptors; HIDDTransferDriver * pDrv = &hiddTransferDriver; HIDDFunction * pHidd = &pDrv->hidFunction; USBConfigurationDescriptor *pDesc; if (cfgnum > 0) { /* Parse endpoints for reports */ if (USBD_HAL_IsHighSpeed() && pDescriptors->pHsConfiguration) pDesc = (USBConfigurationDescriptor*)pDescriptors->pHsConfiguration; else pDesc = (USBConfigurationDescriptor*)pDescriptors->pFsConfiguration; HIDDFunction_ParseInterface(pHidd, (USBGenericDescriptor*)pDesc, pDesc->wTotalLength); /* Start polling for Output Reports */ HIDDFunction_StartPollingOutputs(pHidd); } }