1:
9:
10:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
#include "usb_hid_boot.h"
24:
#include "usb_hid_osutils.h"
25:
#include "usb_hid_internal_api.h"
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
#ifdef USBH_STACK_DEBUG_BUILD
59:
static const char g_filename[] = __FILE__;
60:
#endif
61:
PHID_DRIVER g_pHidDriver = NULL;
62:
63:
64:
65:
66:
67:
83: uhs_status_t
Usbh_Hid_Init(
app_callback_info* stCallback)
84: {
85: HID_FUNC_STATUS nRetval;
86:
87:
88:
89:
90: IAPI_HID_REPORT_MILESTONE( USBHID_CHKPOINTS_API_INITIALIZE );
91:
92:
93:
94:
95:
if(stCallback->clsdrv_type != USB_CLASS_HID){
96: IAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_PARAM_ERROR );
97:
return(
UDI_STAT_DATA_ERROR );
98: }
99:
100:
101:
102:
103:
if(g_pHidDriver != NULL){
104: IAPI_HID_REPORT_SUMMARY( USBHID_LOG_ALREADY_INIT );
105:
return(
UDI_STAT_DATA_ERROR );
106: }
107:
108:
109:
110:
111:
112: g_pHidDriver = (
PHID_DRIVER)HidUtils_Malloc(
sizeof(HID_DRIVER));
113:
if( g_pHidDriver == NULL ) {
114: IAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE );
115:
return(
UDI_STAT_RESOURCE_UNAVAIL );
116: }
117:
118: nRetval = Usbh_Hid_CreateHidDriver( stCallback->attach_callback, stCallback->detach_callback );
119:
if(nRetval != HID_FUNC_STATUS_SUCCESS ) {
120: (
void)HidUtils_Free(g_pHidDriver);
121: g_pHidDriver = NULL;
122: IAPI_HID_REPORT_SUMMARY( USBHID_LOG_FAILED_CRE_HIDD );
123:
return(
UDI_STAT_DATA_ERROR );
124: }
125:
126:
127:
128:
129: nRetval = Usbh_Hid_Boot_Initialize();
130:
if(nRetval != HID_FUNC_STATUS_SUCCESS ) {
131: (
void)Usbh_Hid_DeleteHidDriver();
132: (
void)HidUtils_Free(g_pHidDriver);
133: g_pHidDriver = NULL;
134: IAPI_HID_REPORT_SUMMARY( USBHID_LOG_FAILED_BOOT_INIT );
135:
return(
UDI_STAT_DATA_ERROR );
136: }
137:
138:
139:
140:
141: IAPI_HID_REPORT_MILESTONE( USBHID_CHKPOINTS_API_INITIALIZE_FINISH );
142:
143:
return(
UDI_OK );
144: }
145:
146:
156: uhs_status_t
Usbh_Hid_Exit(
void* stCallback)
157: {
158: ((
void)stCallback);
159:
160: HID_FUNC_STATUS nRetval;
161: uhs_boolean_t bRetval;
162:
163:
164:
165:
166: IAPI_HID_REPORT_MILESTONE( USBHID_CHKPOINTS_API_FINALIZE );
167:
168:
169:
170:
171:
if( g_pHidDriver == NULL ) {
172: IAPI_HID_REPORT_SUMMARY( USBHID_LOG_NOT_INIT );
173:
return(
UDI_STAT_DATA_ERROR );
174: }
175:
176:
177:
178:
179: nRetval = Usbh_Hid_Boot_Finalize();
180:
if( nRetval != HID_FUNC_STATUS_SUCCESS ) {
181: IAPI_HID_REPORT_SUMMARY( USBHID_LOG_FAILED_BOOT_EXIT );
182: (
void)Usbh_Hid_DeleteHidDriver( );
183: (
void)HidUtils_Free(g_pHidDriver);
184: g_pHidDriver = NULL;
185:
return(
UDI_STAT_DATA_ERROR );
186: }
187:
188:
189:
190:
191:
192: nRetval = Usbh_Hid_DeleteHidDriver();
193:
if( nRetval != HID_FUNC_STATUS_SUCCESS ) {
194: IAPI_HID_REPORT_SUMMARY( USBHID_LOG_FAILED_DEL_HIDD );
195: (
void)HidUtils_Free(g_pHidDriver);
196: g_pHidDriver = NULL;
197:
return(
UDI_STAT_DATA_ERROR );
198: }
199:
200: bRetval = HidUtils_Free(g_pHidDriver);
201: g_pHidDriver = NULL;
202:
if( bRetval != TRUE ) {
203: IAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_OUT_OF_RESOURCE );
204:
return(
UDI_STAT_RESOURCE_UNAVAIL );
205: }
206:
207:
208:
209:
210: IAPI_HID_REPORT_MILESTONE( USBHID_CHKPOINTS_API_FINALIZE_FINISH );
211:
212:
return(
UDI_OK );
213: }
214:
215:
225: uhs_status_t
Usbh_Hid_ReregisterCallback(
app_callback_info* stCallback)
226: {
227:
228:
229:
230:
if( g_pHidDriver == NULL ) {
231: IAPI_HID_REPORT_SUMMARY( USBHID_LOG_NOT_INIT );
232:
return(
UDI_STAT_DATA_ERROR );
233: }
234:
235:
236:
237:
238:
if(stCallback->clsdrv_type != USB_CLASS_HID){
239: IAPI_HID_REPORT_SUMMARY( USBHID_LOG_SYS_PARAM_ERROR );
240:
return(
UDI_STAT_DATA_ERROR );
241: }
242:
243:
244:
245:
246: g_pHidDriver->pUserAttachCallback = stCallback->attach_callback;
247: g_pHidDriver->pUserDetachCallback = stCallback->detach_callback;
248:
249:
return(
UDI_OK );
250: }
251: