AG903ライブラリリファレンス
内容インデックスホーム
前へ上へ次へ
Usbh_Hid_GetHIDDescriptor 関数

HIDディスクリプタを取得する

Syntax
C++
uhs_status_t Usbh_Hid_GetHIDDescriptor(void* pContext, PHID_DESC_INFO pstData);
引数 
説明 
void* pContext 
[in] HIDデバイス識別へのポインタ 
PHID_DESC_INFO pstData 
[out] 受信データ情報へのポインタ 

HIDディスクリプタの取得結果

返値の詳細 
説明 
USBHID_API_SUCCESS 
成功 
USBHID_API_PARAM_ERROR 
パラメータエラー 
USBHID_API_SYS_SYSTEM_ERROR 
初期化済みでない、デバイス情報不一致 
USBHID_API_SYS_OUT_OF_RESOURCE 
リソース獲得失敗 
USBHID_API_NOT_READY 
使用準備が出来ていない 
USBHID_API_NO_SUPPORT 
非サポートデバイス 
USBHID_API_TRANS_CLSREQ_FAILED 
リクエスト送信失敗 

HIDディスクリプタを取得します。 

pContext は、接続コールバックにてHIDデバイスクラスドライバから ユーザアプリケーションへ渡される識別子情報です。 

ユーザアプリケーションは、この識別子で複数台のHIDデバイスを管理 して下さい。識別子情報に対してアクセスする事は禁止です。

通知用コールバックからの呼出しは禁止です。

1: uhs_status_t Usbh_Hid_GetHIDDescriptor(void* pContext, PHID_DESC_INFO pstData) 2: { 3: PHID_DEVICE pHidDevice; 4: uhs_ubit8_t u8CntDeviceId; 5: uhs_status_t nRetStatus; 6: uhs_status_t nRetvalResorce; 7: uhs_ubit8_t u8Len; 8: uhs_ubit8_t i; 9: 10: 11: 12: 13: if( pContext == NULL ){ 14: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_PARAM_ERROR ); 15: return( USBHID_API_PARAM_ERROR ); 16: } 17: 18: 19: 20: 21: if( g_pHidDriver == NULL ) { 22: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NOT_INIT ); 23: return( USBHID_API_SYS_SYSTEM_ERROR ); 24: } 25: 26: 27: 28: 29: 30: nRetStatus = Usbh_Hid_CheckDeviceStatus(pContext, &pHidDevice, &u8CntDeviceId, ID_CLSREQ_DET); 31: if(nRetStatus != USBHID_API_SUCCESS){ 32: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_SYSTEM_ERROR ); 33: return(nRetStatus); 34: } 35: 36: 37: 38: 39: if( (pstData == NULL) || 40: (pstData->pu8Buff == NULL) || 41: (pstData->u16Length == 0) ) { 42: 43: 44: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 45: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_PARAM_ERROR ); 46: return( USBHID_API_PARAM_ERROR ); 47: } 48: 49: 50: 51: 52: if( pHidDevice->nDeviceStat == HID_DEVICE_STAT_CONNECTING ) { 53: 54: 55: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 56: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NOT_USE ); 57: return( USBHID_API_NOT_READY ); 58: } 59: else if( pHidDevice->nDeviceStat == HID_DEVICE_STAT_NO_SUPPORT ) { 60: 61: 62: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 63: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NO_SUPPORT ); 64: return( USBHID_API_NO_SUPPORT ); 65: } 66: else { 67: ; 68: } 69: 70: 71: 72: 73: u8Len = pstData->u16Length >= pHidDevice->hid_desc.data[0] ? pHidDevice->hid_desc.data[0] : pstData->u16Length; 74: for(i = 0; i < u8Len; i++) { 75: pstData->pu8Buff[i] = pHidDevice->hid_desc.data[i]; 76: } 77: 78: 79: 80: 81: nRetvalResorce = HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 82: if(nRetvalResorce != TRUE){ 83: 84: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 85: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 86: } 87: 88: return( USBHID_API_SUCCESS ); 89: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.