1: uhs_status_t Usbh_Hid_RestartIntIN(
void* pContext)
2: {
3:
PHID_DEVICE pHidDevice;
4: uhs_status_t nRetvalResorce;
5: HID_FUNC_STATUS nRetval;
6: uhs_ubit8_t u8CntDeviceId;
7: uhs_status_t nRetStatus;
8:
9:
10:
11:
12:
if( pContext == NULL ) {
13: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_PARAM_ERROR );
14:
return( USBHID_API_PARAM_ERROR );
15: }
16:
17:
18:
19:
20:
if( g_pHidDriver == NULL ) {
21: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NOT_INIT );
22:
return( USBHID_API_SYS_SYSTEM_ERROR );
23: }
24:
25:
26:
27:
28:
29: nRetStatus = Usbh_Hid_CheckDeviceStatus(pContext, &pHidDevice, &u8CntDeviceId, ID_API_DET);
30:
if(nRetStatus != USBHID_API_SUCCESS){
31: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_SYSTEM_ERROR );
32:
return(nRetStatus);
33: }
34:
35:
36:
37:
38: nRetvalResorce = HidUtils_AcquisitionSemaphore(pHidDevice->pIntInExecuteLock, WAITFOREVER);
39:
if( nRetvalResorce != TRUE ){
40:
41:
42:
43: (
void)HidUtils_ReleaseSemaphore( g_pHidDriver->pApiDetAccessLock[u8CntDeviceId] );
44: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE );
45:
return( USBHID_API_SYS_OUT_OF_RESOURCE );
46: }
47:
48:
49:
50:
51:
if( pHidDevice->nDeviceStat == HID_DEVICE_STAT_CONNECTING ) {
52:
53:
54: (
void)HidUtils_ReleaseSemaphore( pHidDevice->pIntInExecuteLock );
55: (
void)HidUtils_ReleaseSemaphore( g_pHidDriver->pApiDetAccessLock[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( pHidDevice->pIntInExecuteLock );
63: (
void)HidUtils_ReleaseSemaphore( g_pHidDriver->pApiDetAccessLock[u8CntDeviceId] );
64: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_NO_SUPPORT );
65:
return( USBHID_API_NO_SUPPORT );
66: }
67:
else {
68: ;
69: }
70:
71:
72:
if( pHidDevice->pIntInBuff->isIntINUserFlag == TRUE ) {
73:
74:
75: (
void)HidUtils_ReleaseSemaphore( pHidDevice->pIntInExecuteLock );
76:
77:
78:
79: (
void)HidUtils_ReleaseSemaphore( g_pHidDriver->pApiDetAccessLock[u8CntDeviceId] );
80:
81:
82: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_ALREADY_START_INTIN );
83:
return( USBHID_API_ALREADY_START_INTIN );
84: }
85:
86:
87:
88:
89: nRetval = Usbh_Hid_IssueIntInMsg(pHidDevice);
90:
if(nRetval != HID_FUNC_STATUS_SUCCESS ) {
91:
92:
93: (
void)HidUtils_ReleaseSemaphore( pHidDevice->pIntInExecuteLock );
94:
95:
96:
97: (
void)HidUtils_ReleaseSemaphore( g_pHidDriver->pApiDetAccessLock[u8CntDeviceId] );
98:
99:
100: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_FAILED_INTERRUPT );
101:
return( USBHID_API_TRANS_INT_FAILED );
102: }
103:
104:
105:
106:
107: pHidDevice->pIntInBuff->isIntINUserFlag = TRUE;
108:
109:
110:
111:
112: nRetvalResorce = HidUtils_ReleaseSemaphore( pHidDevice->pIntInExecuteLock );
113:
if(nRetvalResorce != TRUE){
114:
115:
116: (
void)HidUtils_ReleaseSemaphore( g_pHidDriver->pApiDetAccessLock[u8CntDeviceId] );
117:
118:
119: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE );
120:
return( USBHID_API_SYS_OUT_OF_RESOURCE );
121: }
122:
123:
124:
125:
126: nRetvalResorce = HidUtils_ReleaseSemaphore( g_pHidDriver->pApiDetAccessLock[u8CntDeviceId] );
127:
if(nRetvalResorce != TRUE){
128:
129: CIAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE );
130:
return( USBHID_API_SYS_OUT_OF_RESOURCE );
131: }
132:
133:
return( USBHID_API_SUCCESS );
134: }