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: }