AG903ライブラリリファレンス
内容インデックスホーム
Body Source
本文ソース
1: uhs_status_t Usbh_Hid_RegistCallBack(void* pContext, 2: hid_callback_t pUserNotifyCallback) 3: { 4: PHID_DEVICE pHidDevice; 5: uhs_status_t nRetvalResorce; 6: uhs_ubit8_t u8CntDeviceId; 7: uhs_status_t nRetStatus; 8: 9: 10: 11: 12: 13: CIAPI_HID_REPORT_MILESTONE( USBHID_CHKPOINTS_API_REGIST ); 14: 15: 16: 17: 18: if( pContext == NULL ){ 19: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_PARAM_ERROR ); 20: return( USBHID_API_PARAM_ERROR ); 21: } 22: 23: 24: 25: 26: if( g_pHidDriver == NULL ) { 27: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NOT_INIT ); 28: return( USBHID_API_SYS_SYSTEM_ERROR ); 29: } 30: 31: 32: 33: 34: 35: nRetStatus = Usbh_Hid_CheckDeviceStatus(pContext, &pHidDevice, &u8CntDeviceId, ID_CLSREQ_DET); 36: if(nRetStatus != USBHID_API_SUCCESS){ 37: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_SYSTEM_ERROR ); 38: return(nRetStatus); 39: } 40: 41: 42: 43: 44: if( pUserNotifyCallback == NULL ) { 45: 46: 47: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 48: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_PARAM_ERROR ); 49: return( USBHID_API_PARAM_ERROR ); 50: } 51: 52: 53: 54: 55: nRetvalResorce = HidUtils_AcquisitionSemaphore(pHidDevice->pRegistExecuteLock, WAITFOREVER); 56: if( nRetvalResorce != TRUE ){ 57: 58: 59: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 60: 61: 62: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 63: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 64: } 65: 66: 67: 68: 69: if( pHidDevice->nDeviceStat == HID_DEVICE_STAT_CONNECTING ) { 70: ; 71: } 72: else if( pHidDevice->nDeviceStat == HID_DEVICE_STAT_NO_SUPPORT ) { 73: 74: 75: 76: (void)HidUtils_ReleaseSemaphore( pHidDevice->pRegistExecuteLock ); 77: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 78: 79: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NO_SUPPORT ); 80: return( USBHID_API_NO_SUPPORT ); 81: } 82: else { 83: 84: 85: 86: (void)HidUtils_ReleaseSemaphore( pHidDevice->pRegistExecuteLock ); 87: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 88: 89: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_ALREADY_REGIST ); 90: return( USBHID_API_ALREADY_REGIST ); 91: } 92: 93: 94: pHidDevice->nDeviceStat = HID_DEVICE_STAT_REGIST; 95: 96: 97: 98: 99: pHidDevice->pUserNotifyCallback = pUserNotifyCallback; 100: 101: 102: 103: 104: if( (pHidDevice->pIntInBuff = (PHID_INTIN_BUFF)HidUtils_Malloc((uhs_size_t) sizeof(HID_INTIN_BUFF))) == NULL ) { 105: 106: pHidDevice->nDeviceStat = HID_DEVICE_STAT_CONNECTING; 107: 108: pHidDevice->pUserNotifyCallback = NULL; 109: 110: 111: 112: 113: (void)HidUtils_ReleaseSemaphore( pHidDevice->pRegistExecuteLock ); 114: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 115: 116: 117: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 118: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 119: } 120: 121: 122: 123: 124: pHidDevice->pIntInBuff->u8WritePos = 0; 125: pHidDevice->pIntInBuff->u8ReceiveSize = 0; 126: pHidDevice->pIntInBuff->isIntINUserFlag = TRUE; 127: 128: 129: 130: 131: if( (pHidDevice->pIntInBuff->pu8StartBuff = (uhs_ubit8_t*)HidUtils_Malloc((uhs_size_t)(USB_MAXPKT_CTRLEP))) == NULL ) { 132: 133: pHidDevice->nDeviceStat = HID_DEVICE_STAT_CONNECTING; 134: 135: pHidDevice->pUserNotifyCallback = NULL; 136: 137: 138: (void)HidUtils_Free( pHidDevice->pIntInBuff ); 139: 140: 141: (void)HidUtils_ReleaseSemaphore( pHidDevice->pRegistExecuteLock ); 142: 143: 144: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 145: 146: 147: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 148: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 149: } 150: 151: 152: 153: 154: if( (pHidDevice->pIntInBuff->pu8TempBuff = (uhs_ubit8_t*)HidUtils_Malloc((uhs_size_t)(pHidDevice->pIntInPipe->u32MaxPacketSize))) == NULL ) { 155: 156: pHidDevice->nDeviceStat = HID_DEVICE_STAT_CONNECTING; 157: 158: pHidDevice->pUserNotifyCallback = NULL; 159: 160: 161: (void)HidUtils_Free( pHidDevice->pIntInBuff->pu8StartBuff ); 162: 163: (void)HidUtils_Free( pHidDevice->pIntInBuff ); 164: 165: 166: (void)HidUtils_ReleaseSemaphore( pHidDevice->pRegistExecuteLock ); 167: 168: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 169: 170: 171: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 172: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 173: } 174: 175: 176: 177: 178: nRetvalResorce = HidUtils_ReleaseSemaphore( pHidDevice->pRegistExecuteLock ); 179: if(nRetvalResorce != TRUE){ 180: 181: pHidDevice->nDeviceStat = HID_DEVICE_STAT_CONNECTING; 182: 183: pHidDevice->pUserNotifyCallback = NULL; 184: 185: 186: (void)HidUtils_Free( pHidDevice->pIntInBuff->pu8TempBuff ); 187: 188: (void)HidUtils_Free( pHidDevice->pIntInBuff->pu8StartBuff ); 189: 190: (void)HidUtils_Free( pHidDevice->pIntInBuff ); 191: 192: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 193: 194: 195: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 196: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 197: } 198: 199: 200: 201: 202: nRetvalResorce = HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 203: if(nRetvalResorce != TRUE){ 204: 205: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 206: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 207: } 208: 209: 210: 211: 212: CIAPI_HID_REPORT_MILESTONE( USBHID_CHKPOINTS_API_REGIST_FINISH ); 213: 214: return( USBHID_API_SUCCESS ); 215: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.