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

現在のプロトコルを取得する

Syntax
C++
uhs_status_t Usbh_Hid_GetProtocol(void* pContext, PHID_PROTOCOL pstData);
引数 
説明 
void* pContext 
[in] HIDデバイス識別へのポインタ 
PHID_PROTOCOL pstData 
[out] 取得するプロトコル情報へのポインタ 

現在のプロトコルの取得結果

返値の詳細 
説明 
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 
リクエスト送信失敗 

現在のプロトコルを取得します。 

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

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

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

1: uhs_status_t Usbh_Hid_GetProtocol(void* pContext, PHID_PROTOCOL pstData) 2: { 3: PHID_DEVICE pHidDevice; 4: usb_device_request_t* pRequest; 5: HID_FUNC_STATUS nRetval; 6: uhs_ubit8_t u8CntDeviceId; 7: uhs_ubit8_t *pu8GetBuff; 8: uhs_status_t nRetStatus; 9: uhs_status_t nRetvalResorce; 10: 11: 12: 13: 14: if( pContext == NULL ){ 15: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_PARAM_ERROR ); 16: return( USBHID_API_PARAM_ERROR ); 17: } 18: 19: 20: 21: 22: if( g_pHidDriver == NULL ) { 23: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NOT_INIT ); 24: return( USBHID_API_SYS_SYSTEM_ERROR ); 25: } 26: 27: 28: 29: 30: 31: nRetStatus = Usbh_Hid_CheckDeviceStatus(pContext, &pHidDevice, &u8CntDeviceId, ID_CLSREQ_DET); 32: if(nRetStatus != USBHID_API_SUCCESS){ 33: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_SYSTEM_ERROR ); 34: return(nRetStatus); 35: } 36: 37: 38: 39: 40: if(pstData == NULL) { 41: 42: 43: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 44: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_PARAM_ERROR ); 45: return( USBHID_API_PARAM_ERROR ); 46: } 47: 48: 49: 50: 51: if( pHidDevice->nDeviceStat == HID_DEVICE_STAT_CONNECTING ) { 52: 53: 54: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 55: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NOT_USE ); 56: return( USBHID_API_NOT_READY ); 57: } 58: else if( pHidDevice->nDeviceStat == HID_DEVICE_STAT_NO_SUPPORT ) { 59: 60: 61: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 62: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NO_SUPPORT ); 63: return( USBHID_API_NO_SUPPORT ); 64: } 65: else { 66: ; 67: } 68: 69: 70: 71: 72: pRequest = HidUtils_Malloc(sizeof(usb_device_request_t)); 73: if(pRequest == NULL) { 74: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 75: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 76: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 77: } 78: 79: 80: 81: 82: pu8GetBuff = HidUtils_Malloc(1); 83: if(pu8GetBuff == NULL) { 84: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 85: HidUtils_Free(pRequest); 86: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 87: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 88: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 89: } 90: 91: 92: 93: 94: pRequest->bmRequestType = 0xA1; 95: pRequest->bRequest = 0x03; 96: pRequest->wValue0 = 0; 97: pRequest->wValue1 = 0; 98: pRequest->wIndex0 = UNPACK16_LITTLE_ENDIAN_LSB( pHidDevice->u16Intf_num ); 99: pRequest->wIndex1 = UNPACK16_LITTLE_ENDIAN_MSB( pHidDevice->u16Intf_num ); 100: pRequest->wLength0 = UNPACK16_LITTLE_ENDIAN_LSB( 1 ); 101: pRequest->wLength1 = UNPACK16_LITTLE_ENDIAN_MSB( 1 ); 102: 103: 104: 105: 106: nRetval = Usbh_Hid_ForCommand(pHidDevice, pRequest, pu8GetBuff, NULL); 107: if(nRetval != HID_FUNC_STATUS_SUCCESS){ 108: HidUtils_Free(pRequest); 109: HidUtils_Free(pu8GetBuff); 110: 111: 112: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 113: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_FAILED_CLSREQ ); 114: return( USBHID_API_TRANS_CLSREQ_FAILED ); 115: } 116: 117: 118: 119: 120: pstData->u8Data = pu8GetBuff[0]; 121: 122: 123: 124: 125: HidUtils_Free(pu8GetBuff); 126: 127: 128: 129: 130: HidUtils_Free(pRequest); 131: 132: 133: 134: 135: nRetvalResorce = HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 136: if(nRetvalResorce != TRUE){ 137: 138: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 139: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 140: } 141: 142: return( USBHID_API_SUCCESS ); 143: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.