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

通信機能を設定する

Syntax
C++
uhs_status_t Usbh_Hid_SetIdle(void* pContext, PHID_IDLE pstData);
引数 
説明 
void* pContext 
[in] HIDデバイス識別へのポインタ 
PHID_IDLE pstData 
[in] 設定するレポート頻度情報へのポインタ 

通信機能の設定結果

返値の詳細 
説明 
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デバイスを管理 して下さい。識別子情報に対してアクセスする事は禁止です。 

接続されたHIDデバイスが SetIdle リクエスト非サポートの場合は、エラーを返却します。

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

1: uhs_status_t Usbh_Hid_SetIdle(void* pContext, PHID_IDLE pstData) 2: { 3: PHID_DEVICE pHidDevice; 4: usb_device_request_t* pRequest; 5: HID_FUNC_STATUS nRetval; 6: uhs_ubit8_t u8CntDeviceId; 7: uhs_status_t nRetStatus; 8: uhs_status_t nRetvalResorce; 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: 41: 42: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 43: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_PARAM_ERROR ); 44: return( USBHID_API_PARAM_ERROR ); 45: } 46: if( pstData->u8Id > 3 ) { 47: 48: 49: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 50: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_PARAM_ERROR ); 51: return( USBHID_API_PARAM_ERROR ); 52: } 53: 54: 55: 56: 57: if( pHidDevice->nDeviceStat == HID_DEVICE_STAT_CONNECTING ) { 58: 59: 60: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 61: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NOT_USE ); 62: return( USBHID_API_NOT_READY ); 63: } 64: else if( pHidDevice->nDeviceStat == HID_DEVICE_STAT_NO_SUPPORT ) { 65: 66: 67: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 68: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NO_SUPPORT ); 69: return( USBHID_API_NO_SUPPORT ); 70: } 71: else { 72: ; 73: } 74: 75: 76: 77: 78: pRequest = HidUtils_Malloc(sizeof(usb_device_request_t)); 79: if(pRequest == NULL) { 80: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 81: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 82: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 83: } 84: 85: 86: 87: 88: pRequest->bmRequestType = 0x21; 89: pRequest->bRequest = 0x0A; 90: pRequest->wValue0 = UNPACK16_LITTLE_ENDIAN_LSB( (pstData->u8Duration << 8) | pstData->u8Id ); 91: pRequest->wValue1 = UNPACK16_LITTLE_ENDIAN_MSB( (pstData->u8Duration << 8) | pstData->u8Id ); 92: pRequest->wIndex0 = UNPACK16_LITTLE_ENDIAN_LSB( pHidDevice->u16Intf_num ); 93: pRequest->wIndex1 = UNPACK16_LITTLE_ENDIAN_MSB( pHidDevice->u16Intf_num ); 94: pRequest->wLength0 = 0; 95: pRequest->wLength1 = 0; 96: 97: 98: 99: 100: nRetval = Usbh_Hid_ForCommand(pHidDevice, pRequest, NULL, NULL); 101: if(nRetval != HID_FUNC_STATUS_SUCCESS){ 102: HidUtils_Free(pRequest); 103: 104: 105: (void)HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 106: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_FAILED_CLSREQ ); 107: return( USBHID_API_TRANS_CLSREQ_FAILED ); 108: } 109: 110: 111: 112: 113: HidUtils_Free(pRequest); 114: 115: 116: 117: 118: nRetvalResorce = HidUtils_ReleaseSemaphore( g_pHidDriver->pClsReqDetAccessLock[u8CntDeviceId] ); 119: if(nRetvalResorce != TRUE){ 120: 121: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE ); 122: return( USBHID_API_SYS_OUT_OF_RESOURCE ); 123: } 124: 125: return( USBHID_API_SUCCESS ); 126: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.