]> rtime.felk.cvut.cz Git - mirosot.git/blob - bluetooth/bth_cmd_complete_ev.c
An unsucesfull attempt to clean bluetooth library and make it working.
[mirosot.git] / bluetooth / bth_cmd_complete_ev.c
1 /*******************************************************************\r
2   bluetooth library\r
3 \r
4   bth_cmd_complete_ev.c - fce for reading packet event command complet \r
5                   \r
6   Copyright (C) 2006 by Petr Kovacik petr_kovacik@gmail.com\r
7 \r
8  *******************************************************************/\r
9 \r
10 #include <bth_config.h>\r
11 #include <string.h>\r
12 #include <stdlib.h>\r
13 #ifdef BTH_LX\r
14 #include <periph/sci_rs232.h>\r
15 //#include <assert.h>\r
16 #endif\r
17 #include <types.h>\r
18 #include "hci.h"\r
19 #include "inline_fce.h"\r
20 #include "hci_event.h"\r
21 #include "hci_command.h"\r
22 \r
23 \r
24 \r
25 int cmd_ev_none(uint8_t *bth_p, uint8_t size)\r
26 {\r
27     return -1;\r
28 };\r
29 \r
30 /********************************************************************/\r
31 /***********************   OGF = 0x01    ****************************/\r
32 /*-------------------LINK CONTROL COMMANDS--------------------------*/\r
33 /********************************************************************/\r
34 /*--- OCF = 0x0001 --- Inquiry */\r
35 //NONE\r
36 \r
37 /*--- OCF = 0x0002 --- Inquiry_Cancel ---*/\r
38 //STATUS\r
39 \r
40 /*--- OCF = 0x0003 --- Periodic_Inquiry_Mode ---*/\r
41 //STATUS\r
42 \r
43 /*--- OCF = 0x0004 --- Exit_Periodic_Inquiry_Mode ---*/\r
44 //STATUS\r
45 \r
46 /*--- OCF = 0x0005 --- Create_Connection ---*/\r
47 //NONE\r
48 \r
49 /*--- OCF = 0x0006 --- Disconnect ---*/\r
50 //NONE\r
51 \r
52 /*--- OCF = 0x0007 --- Add_SCO_Connection ---*/\r
53 //NONE\r
54 \r
55 /*--- OCF = 0x0009 --- Accept_Connection_Request ---*/\r
56 //NONE\r
57 \r
58 /*--- OCF = 0x000A --- Reject_Connection_Request ---*/\r
59 //NONE\r
60 \r
61 /*--- OCF = 0x000B --- Link_Key_Request_Reply ---*/\r
62 //STATUS, BD_ADDR\r
63 int cmd_ev_01x000b(uint8_t *bth_p, uint8_t size)\r
64 {\r
65     return -1;\r
66 };\r
67 \r
68 /*--- OCF = 0x000D --- PIN_Code_Request_Reply ---*/\r
69 //STATUS, BD_ADDR\r
70 int cmd_ev_01x000d(uint8_t *bth_p, uint8_t size)\r
71 {\r
72     return -1;\r
73 };\r
74 \r
75 /*--- OCF = 0x000E --- PIN_Code_Request_Negative_Reply ---*/\r
76 //STATUS, BD_ADDR\r
77 int cmd_ev_01x000e(uint8_t *bth_p, uint8_t size)\r
78 {\r
79     return -1;\r
80 };\r
81 \r
82 /*--- OCF = 0x000F --- Change_Connection_Packet_Type ---*/\r
83 //NONE\r
84 \r
85 /*--- OCF = 0x0011 --- Authentication_Requested ---*/\r
86 //NONE\r
87 \r
88 /*--- OCF = 0x0013 --- Set_Connection_Encryption ---*/\r
89 //NONE\r
90 \r
91 /*--- OCF = 0x0015 --- Change_Connection_Link_Key ---*/\r
92 //NONE\r
93 \r
94 /*--- OCF = 0x0017 --- Master_Link_Key ---*/\r
95 //NONE\r
96 \r
97 /*--- OCF = 0x0019 --- Remote_Name_Request ---*/\r
98 //NONE\r
99 \r
100 /*--- OCF = 0x001B --- Read_Remote_Supported_Features ---*/\r
101 //NONE\r
102 \r
103 /*--- OCF = 0x001F --- Read_Clock_Offset ---*/\r
104 //NONE\r
105 \r
106 \r
107 \r
108 /********************************************************************/\r
109 /***********************   OGF = 0x02    ****************************/\r
110 /*-------------------LINK POLICY COMMANDS--------------------------*/\r
111 /********************************************************************/\r
112 /*--- OCF = 0x0001 --- Hold_Mode ---*/\r
113 //NONE\r
114 \r
115 /*--- OCF = 0x0003 --- Sniff_Mode ---*/\r
116 //NONE\r
117 \r
118 /*--- OCF = 0x0004 --- Exit_Sniff_Mode ---*/\r
119 //NONE\r
120 \r
121 /*--- OCF = 0x0005 --- Park_Mode ---*/\r
122 //NONE\r
123 \r
124 /*--- OCF = 0x0006 --- Exit_Park_Mode ---*/\r
125 //NONE\r
126 \r
127 /*--- OCF = 0x0007 --- QoS_Setup ---*/\r
128 //NONE\r
129 \r
130 /*--- OCF = 0x0009 --- Role_Discovery ---*/\r
131 //Status, Connection_Handle, Current_Role\r
132 int cmd_ev_02x0009(uint8_t *bth_p, uint8_t size)\r
133 {\r
134     return -1;\r
135 };\r
136 \r
137 /*--- OCF = 0x000b --- Switch_Role ---*/\r
138 //NONE\r
139 \r
140 /*--- OCF = 0x000C --- Read_Link_Policy_Settings ---*/\r
141 //Status, Connection_Handle, Link_Policy_Settings/\r
142 int cmd_ev_02x000C(uint8_t *bth_p, uint8_t size)\r
143 {\r
144     return -1;\r
145 };\r
146 \r
147 /*--- OCF = 0x000D --- Write_Link_Policy_Settings ---*/\r
148 //Link_Policy_Settings, Status, Connection_Handle\r
149 int cmd_ev_02x000D(uint8_t *bth_p, uint8_t size)\r
150 {\r
151   write_link_policy_rp bth_q;\r
152   int i;\r
153 //  store16(bth_q.status,*((uint8_t*)bth_p+WRITE_LINK_POLICY_RP____status));\r
154   __bthtomc16((uint8_t*)&bth_q.status,((uint8_t*)bth_p+WRITE_LINK_POLICY_RP____status));\r
155   __bthtomc16((uint8_t*)&bth_q.handle,((uint8_t*)bth_p+WRITE_LINK_POLICY_RP____handle));\r
156 //  store_le16(&bth_q.handle,*((uint16_t*)((uint8_t*)bth_p+WRITE_LINK_POLICY_RP____handle)));\r
157 /*prohledam vsechna zarizeni, se kterymi mam uzavrenou komunikaci*/\r
158   for(i=0;i<8;i++)\r
159   {\r
160     if(bth_connected[i]!=NULL)\r
161     {\r
162       if(bth_connected[i]->handle==bth_q.handle)\r
163       {\r
164         if(bth_q.status!=0)\r
165         {\r
166           //problehla chyba, u domluvi s timto zarizenim - tj.\r
167           return (bth_q.status);\r
168         }else\r
169         {\r
170           change_connection_packet_type(bth_q.handle,btohs(0xcc18));\r
171           return 0;\r
172 //          return ((int)*((uint8_t*)bth_p+WRITE_LINK_POLICY_RP____status));\r
173         };\r
174       };\r
175     };\r
176   };\r
177   return(-1);\r
178 };\r
179 \r
180 \r
181 /********************************************************************/\r
182 /***********************   OGF = 0x03    ****************************/\r
183 /*--------------HOST CONTROLLER & BASEBAND COMMANDS-----------------*/\r
184 /********************************************************************/\r
185 /*--- OCF = 0x0001 --- Set_Event_Mask ---*/\r
186 //STATUS\r
187 \r
188 /*--- OCF = 0x0003 --- Reset ---*/\r
189 //STATUS\r
190 \r
191 /*--- OCF = 0x0005 --- Set_Event_Filter ---*/\r
192 //STATUS\r
193 \r
194 /*--- OCF = 0x0008 --- Flush ---*/\r
195 //STATUS, Connection_Handle\r
196 int cmd_ev_03x0008(uint8_t *bth_p, uint8_t size)\r
197 {\r
198     return -1;\r
199 };\r
200 \r
201 /*--- OCF = 0x0009 --- Read_PIN_Type ---*/\r
202 //STATUS, PIN_Type\r
203 int cmd_ev_03x0009(uint8_t *bth_p, uint8_t size)\r
204 {\r
205     return -1;\r
206 };\r
207 \r
208 /*--- OCF = 0x000a --- Write_PIN_Type ---*/\r
209 //STATUS\r
210 \r
211 /*--- OCF = 0x000b --- Create_New_Unit_Key ---*/\r
212 //STATUS\r
213 \r
214 /*--- OCF = 0x000d --- Read_Stored_Link_Key ---*/\r
215 //STATUS, Max_Num_Keys, Num_Keys_Read\r
216 int cmd_ev_03x000d(uint8_t *bth_p, uint8_t size)\r
217 {\r
218     return -1;\r
219 };\r
220 \r
221 /*--- OCF = 0x0011 --- Write_Stored_Link_Key ---*/\r
222 //STATUS, Num_Keys_Written\r
223 int cmd_ev_03x0011(uint8_t *bth_p, uint8_t size)\r
224 {\r
225     return -1;\r
226 };\r
227 \r
228 /*--- OCF = 0x0012 --- Delete_Stored_Link_Key ---*/\r
229 //STATUS, Num_Keys_Deleted\r
230 int cmd_ev_03x0012(uint8_t *bth_p, uint8_t size)\r
231 {\r
232     return -1;\r
233 };\r
234 \r
235 /*--- OCF = 0x0013 --- Change_Local_Name ---*/\r
236 //STATUS\r
237 \r
238 /*--- OCF = 0x0014 --- Read_Local_Name ---*/\r
239 //Status, Name\r
240 int cmd_ev_03x0014(uint8_t *bth_p, uint8_t size)\r
241 {\r
242     return -1;\r
243 };\r
244 \r
245 /*--- OCF = 0x0015 --- Read_Connection_Accept_Timeout ---*/\r
246 //STATUS,Conn_Accept_Timeout\r
247 int cmd_ev_03x0015(uint8_t *bth_p, uint8_t size)\r
248 {\r
249     return -1;\r
250 };\r
251 \r
252 /*--- OCF = 0x0016 --- Write_Connection_Accept_Timeout ---*/\r
253 //STATUS\r
254 \r
255 /*--- OCF = 0x0017 --- Read_Page_Timeout ---*/\r
256 //STATUS,Page_Timeout\r
257 int cmd_ev_03x0017(uint8_t *bth_p, uint8_t size)\r
258 {\r
259     return -1;\r
260 };\r
261 \r
262 /*--- OCF = 0x0018 --- Write_Page_Timeout ---*/\r
263 //STATUS\r
264 \r
265 /*--- OCF = 0x0019 --- Read_Scan_Enable ---*/\r
266 //STATUS, Scan_Enable\r
267 int cmd_ev_03x0019(uint8_t *bth_p, uint8_t size)\r
268 {\r
269     return -1;\r
270 };\r
271 \r
272 /*--- OCF = 0x001a --- Write_Scan_Enable ---*/\r
273 //STATUS\r
274 \r
275 /*--- OCF = 0x001b --- Read_Page_Scan_Activity ---*/\r
276 //STATUS, Page_Scan_Interval, Page_Scan_Window\r
277 int cmd_ev_03x001b(uint8_t *bth_p, uint8_t size)\r
278 {\r
279     return -1;\r
280 };\r
281 \r
282 /*--- OCF = 0x001c --- Write_Page_Scan_Activity ---*/\r
283 //STATUS\r
284 \r
285 /*--- OCF = 0x001d --- Read_Inquiry_Scan_Activity ---*/\r
286 //STATUS,Inquiry_Scan_Interval, Inquiry_Scan_Window\r
287 int cmd_ev_03x001d(uint8_t *bth_p, uint8_t size)\r
288 {\r
289     return -1;\r
290 };\r
291 \r
292 /*--- OCF = 0x001e --- Write_Inquiry_Scan_Activity ---*/\r
293 //STATUS\r
294 \r
295 /*--- OCF = 0x001f --- Read_Authentication_Enable ---*/\r
296 //STATUS, Authentication_Enable\r
297 int cmd_ev_03x001f(uint8_t *bth_p, uint8_t size)\r
298 {\r
299     return -1;\r
300 };\r
301 \r
302 /*--- OCF = 0x0020 --- Write_Authentication_Enable ---*/\r
303 //STATUS\r
304 \r
305 /*--- OCF = 0x0021 --- Read_Encryption_Mode ---*/\r
306 //STATUS,Encryption_Mode\r
307 int cmd_ev_03x0021(uint8_t *bth_p, uint8_t size)\r
308 {\r
309     return -1;\r
310 };\r
311 \r
312 /*--- OCF = 0x0022 --- Write_Encryption_Mode ---*/\r
313 //STATUS\r
314 \r
315 /*--- OCF = 0x0023 --- Read_Class_of_Device ---*/\r
316 //STATUS,Class_of_Device\r
317 int cmd_ev_03x0023(uint8_t *bth_p, uint8_t size)\r
318 {\r
319     return -1;\r
320 };\r
321 \r
322 /*--- OCF = 0x0024 --- Write_Class_of_Device ---*/\r
323 //STATUS\r
324 \r
325 \r
326 /*--- OCF = 0x0025 --- Read_Voice_Setting ---*/\r
327 //STATUS,Voice_Setting\r
328 int cmd_ev_03x0025(uint8_t *bth_p, uint8_t size)\r
329 {\r
330     return -1;\r
331 };\r
332 \r
333 /*--- OCF = 0x0026 --- Write_Voice_Setting ---*/\r
334 //STATUS\r
335 \r
336 \r
337 /*--- OCF = 0x0027 --- Read_Automatic_Flush_Timeout ---*/\r
338 //STATUS, Connection_Handle, Flush_Timeout\r
339 int cmd_ev_03x0027(uint8_t *bth_p, uint8_t size)\r
340 {\r
341     return -1;\r
342 };\r
343 \r
344 /*--- OCF = 0x0028 --- Write_Automatic_Flush_Timeout ---*/\r
345 //STATUS,Connection_Handle\r
346 int cmd_ev_03x0028(uint8_t *bth_p, uint8_t size)\r
347 {\r
348     return -1;\r
349 };\r
350 \r
351 /*--- OCF = 0x0029 --- Read_Num_Broadcast_Retransmissions ---*/\r
352 //STATUS,Num_Broadcast_Retran\r
353 int cmd_ev_03x0029(uint8_t *bth_p, uint8_t size)\r
354 {\r
355     return -1;\r
356 };\r
357 \r
358 /*--- OCF = 0x002a --- Write_Num_Broadcast_Retransmissions ---*/\r
359 //STATUS\r
360 \r
361 /*--- OCF = 0x002b --- Read_Hold_Mode_Activity ---*/\r
362 //STATUS, Hold_Mode_Activity\r
363 int cmd_ev_03x002b(uint8_t *bth_p, uint8_t size)\r
364 {\r
365     return -1;\r
366 };\r
367 \r
368 /*--- OCF = 0x002c --- Write_Hold_Mode_Activity ---*/\r
369 //STATUS\r
370 \r
371 /*--- OCF = 0x002d --- Read_Transmit_Power_Level ---*/\r
372 //STATUS,Connection_Handle,Transmit_Power_Level\r
373 int cmd_ev_03x002d(uint8_t *bth_p, uint8_t size)\r
374 {\r
375     return -1;\r
376 };\r
377 \r
378 /*--- OCF = 0x002e --- Read_SCO_Flow_Control_Enable ---*/\r
379 //STATUS, SCO_Flow_Control_Enable\r
380 int cmd_ev_03x002e(uint8_t *bth_p, uint8_t size)\r
381 {\r
382     return -1;\r
383 };\r
384 \r
385 /*--- OCF = 0x002f --- Write_SCO_Flow_Control_Enable ---*/\r
386 /*STATUS*/\r
387 \r
388 /*--- OCF = 0x0031 --- Set_Host_Controller_To_Host_Flow_Control*/\r
389 /*STATUS*/\r
390 \r
391 /*--- OCF = 0x0033 --- Host_Buffer_Size ---*/\r
392 /*STATUS*/\r
393 \r
394 /*--- OCF = 0x0035 --- Host_Number_Of_Completed_Packets ---*/\r
395 /*NONE*/\r
396 \r
397 /*--- OCF = 0x0036 --- Read_Link_Supervision_Timeout ---*/\r
398 /*STATUS,Connection_Handle, Link_Supervision_Timeout*/\r
399 int cmd_ev_03x0036(uint8_t *bth_p, uint8_t size)\r
400 {\r
401     return -1;\r
402 };\r
403 \r
404 /*--- OCF = 0x0037 --- Write_Link_Supervision_Timeout ---*/\r
405 //STATUS,Connection_Handle\r
406 int cmd_ev_03x0037(uint8_t *bth_p, uint8_t size)\r
407 {\r
408     return -1;\r
409 };\r
410 \r
411 /*--- OCF = 0x0038 --- Read_Number_Of_Supported_IAC ---*/\r
412 //STATUS,Num_Support_IAC\r
413 int cmd_ev_03x0038(uint8_t *bth_p, uint8_t size)\r
414 {\r
415     return -1;\r
416 };\r
417 \r
418 /*--- OCF = 0x0039 --- Read_Current_IAC_LAP ---*/\r
419 //STATUS,Num_Current_IAC, IAC_LAP[i]\r
420 int cmd_ev_03x0039(uint8_t *bth_p, uint8_t size)\r
421 {\r
422     return -1;\r
423 };\r
424 \r
425 /*--- OCF = 0x003a --- Write_Current_IAC_LAP*/\r
426 /*STATUS*/\r
427 \r
428 /*--- OCF = 0x003b --- Read_Page_Scan_Period_Mode ---*/\r
429 /*STATUS,Page_Scan_Period_Mode*/\r
430 int cmd_ev_03x003b(uint8_t *bth_p, uint8_t size)\r
431 {\r
432     return -1;\r
433 };\r
434 \r
435 /*--- OCF = 0x003c --- Write_Page_Scan_Period_Mode ---*/\r
436 //STATUS\r
437 \r
438 /*--- OCF = 0x003d --- Read_Page_Scan_Mode ---*/\r
439 //STATUS,Page_Scan_Mode\r
440 int cmd_ev_03x003d(uint8_t *bth_p, uint8_t size)\r
441 {\r
442     return -1;\r
443 };\r
444 \r
445 \r
446 /********************************************************************/\r
447 /***********************   OGF = 0x04    ****************************/\r
448 /*-------------------INFORMATIONAL PARAMETERS-----------------------*/\r
449 /********************************************************************/\r
450 \r
451 /*--- OCF = 0x0001 --- Read_Local_Version_Information ---*/\r
452 //STATUS, HCI Version, HCI Revision, LMP Version, Manufacturer_Name, LMP Subversion\r
453 int cmd_ev_04x0001(uint8_t *bth_p, uint8_t size)\r
454 {\r
455     return -1;\r
456 };\r
457 \r
458 /*--- OCF = 0x0003 --- Read_Local_Supported_Features ---*/\r
459 //STATUS, LMP_Features\r
460 int cmd_ev_04x0003(uint8_t *bth_p, uint8_t size)\r
461 {\r
462     return -1;\r
463 };\r
464 \r
465 /*--- OCF = 0x0005 --- Read_Buffer_Size ---*/\r
466 //STATUS, HC_ACL_Data_Packet_Length, HC_SCO_Data_Packet_Length, HC_Total_Num_ACL_Data_Packets,\r
467 //HC_Total_Num_SCO_Data_Packets\r
468 int cmd_ev_04x0005(uint8_t *bth_p, uint8_t size)\r
469 {\r
470     return -1;\r
471 };\r
472 \r
473 \r
474 /*--- OCF = 0x0007 --- Read_Country_Code ---*/\r
475 //STATUS, Country_Code\r
476 int cmd_ev_04x0007(uint8_t *bth_p, uint8_t size)\r
477 {\r
478     return -1;\r
479 };\r
480 \r
481 /*--- OCF = 0x0009 --- Read_BD_ADDR ---*/\r
482 //STATUS, BD_ADDR\r
483 int cmd_ev_04x0009(uint8_t *bth_p, uint8_t size)\r
484 {\r
485   read_bd_addr_rp bth_q;\r
486 \r
487   int index;\r
488   store8(bth_q.status,*((uint8_t*)bth_p+READ_BD_ADDR_RP____status));\r
489   memcpy(&bth_local_info.bdaddr,((uint8_t*)bth_p+READ_BD_ADDR_RP____bdaddr),6);\r
490   index=bth_del_event(btohs(0x0910)); //obcode read_bd_addr\r
491   if(index==-1)\r
492   {    \r
493     return -1;\r
494   }\r
495 \r
496   else\r
497   {\r
498 //    assert(index >= 0 && index < LANCOMMAND);\r
499     if(*((uint8_t*)bth_p+READ_BD_ADDR_RP____status)==0)\r
500     {\r
501       free(bth_array_adrr_check_packet[index]);\r
502       bth_array_adrr_check_packet[index]=NULL;\r
503       return 0; //prikaz probehl bez komplikaci\r
504     }\r
505     else\r
506     {\r
507         /*status is not OK */\r
508       free(bth_array_adrr_check_packet[index]);\r
509       bth_array_adrr_check_packet[index]=NULL;\r
510       return((int)*((uint8_t*)bth_p+READ_BD_ADDR_RP____status)); //NOTE probably I put * here, but I don't remember it. It was yesterday >-]\r
511     };\r
512   };\r
513 };\r