1 /******************************************************************************
2 * @file ble_gap_aci.c
3 * @author MCD Application Team
4 * @date 23 May 2019
5 * @brief Source file for ble api STM32WB (gap_aci)
6 * Auto-generated file: do not edit!
7 ******************************************************************************
8 * @attention
9 *
10 * <h2><center>© Copyright (c) 2019 STMicroelectronics.
11 * All rights reserved.</center></h2>
12 *
13 * This software component is licensed by ST under Ultimate Liberty license
14 * SLA0044, the "License"; You may not use this file except in compliance with
15 * the License. You may obtain a copy of the License at:
16 * www.st.com/SLA0044
17 *
18 ******************************************************************************
19 */
20
21 #include "ble_gap_aci.h"
22
aci_gap_set_non_discoverable(void)23 tBleStatus aci_gap_set_non_discoverable(void)
24 {
25 struct hci_request rq;
26 tBleStatus status = 0;
27 Osal_MemSet(&rq, 0, sizeof(rq));
28 rq.ogf = 0x3f;
29 rq.ocf = 0x081;
30 rq.rparam = &status;
31 rq.rlen = 1;
32 if (hci_send_req(&rq, FALSE) < 0)
33 return BLE_STATUS_TIMEOUT;
34 if (status)
35 {
36 return status;
37 }
38 return BLE_STATUS_SUCCESS;
39 }
40
aci_gap_set_limited_discoverable(uint8_t Advertising_Type,uint16_t Advertising_Interval_Min,uint16_t Advertising_Interval_Max,uint8_t Own_Address_Type,uint8_t Advertising_Filter_Policy,uint8_t Local_Name_Length,uint8_t Local_Name[],uint8_t Service_Uuid_length,uint8_t Service_Uuid_List[],uint16_t Slave_Conn_Interval_Min,uint16_t Slave_Conn_Interval_Max)41 tBleStatus aci_gap_set_limited_discoverable(uint8_t Advertising_Type,
42 uint16_t Advertising_Interval_Min,
43 uint16_t Advertising_Interval_Max,
44 uint8_t Own_Address_Type,
45 uint8_t Advertising_Filter_Policy,
46 uint8_t Local_Name_Length,
47 uint8_t Local_Name[],
48 uint8_t Service_Uuid_length,
49 uint8_t Service_Uuid_List[],
50 uint16_t Slave_Conn_Interval_Min,
51 uint16_t Slave_Conn_Interval_Max)
52 {
53 struct hci_request rq;
54 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
55 aci_gap_set_limited_discoverable_cp0 *cp0 = (aci_gap_set_limited_discoverable_cp0*)(cmd_buffer);
56 aci_gap_set_limited_discoverable_cp1 *cp1 = (aci_gap_set_limited_discoverable_cp1*)(cmd_buffer + 1 + 2 + 2 + 1 + 1 + 1 + Local_Name_Length * (sizeof(uint8_t)));
57 aci_gap_set_limited_discoverable_cp2 *cp2 = (aci_gap_set_limited_discoverable_cp2*)(cmd_buffer + 1 + 2 + 2 + 1 + 1 + 1 + Local_Name_Length * (sizeof(uint8_t)) + 1 + Service_Uuid_length * (sizeof(uint8_t)));
58 tBleStatus status = 0;
59 int index_input = 0;
60 cp0->Advertising_Type = htob(Advertising_Type, 1);
61 index_input += 1;
62 cp0->Advertising_Interval_Min = htob(Advertising_Interval_Min, 2);
63 index_input += 2;
64 cp0->Advertising_Interval_Max = htob(Advertising_Interval_Max, 2);
65 index_input += 2;
66 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
67 index_input += 1;
68 cp0->Advertising_Filter_Policy = htob(Advertising_Filter_Policy, 1);
69 index_input += 1;
70 cp0->Local_Name_Length = htob(Local_Name_Length, 1);
71 index_input += 1;
72 /* var_len_data input */
73 {
74 Osal_MemCpy((void *) &cp0->Local_Name, (const void *) Local_Name, Local_Name_Length);
75 index_input += Local_Name_Length;
76 {
77 cp1->Service_Uuid_length = htob(Service_Uuid_length, 1);
78 }
79 index_input += 1;
80 Osal_MemCpy((void *) &cp1->Service_Uuid_List, (const void *) Service_Uuid_List, Service_Uuid_length);
81 index_input += Service_Uuid_length;
82 {
83 cp2->Slave_Conn_Interval_Min = htob(Slave_Conn_Interval_Min, 2);
84 }
85 index_input += 2;
86 {
87 cp2->Slave_Conn_Interval_Max = htob(Slave_Conn_Interval_Max, 2);
88 }
89 index_input += 2;
90 }
91 Osal_MemSet(&rq, 0, sizeof(rq));
92 rq.ogf = 0x3f;
93 rq.ocf = 0x082;
94 rq.event = 0x0F;
95 rq.cparam = cmd_buffer;
96 rq.clen = index_input;
97 rq.rparam = &status;
98 rq.rlen = 1;
99 if (hci_send_req(&rq, FALSE) < 0)
100 return BLE_STATUS_TIMEOUT;
101 if (status)
102 {
103 return status;
104 }
105 return BLE_STATUS_SUCCESS;
106 }
107
aci_gap_set_discoverable(uint8_t Advertising_Type,uint16_t Advertising_Interval_Min,uint16_t Advertising_Interval_Max,uint8_t Own_Address_Type,uint8_t Advertising_Filter_Policy,uint8_t Local_Name_Length,uint8_t Local_Name[],uint8_t Service_Uuid_length,uint8_t Service_Uuid_List[],uint16_t Slave_Conn_Interval_Min,uint16_t Slave_Conn_Interval_Max)108 tBleStatus aci_gap_set_discoverable(uint8_t Advertising_Type,
109 uint16_t Advertising_Interval_Min,
110 uint16_t Advertising_Interval_Max,
111 uint8_t Own_Address_Type,
112 uint8_t Advertising_Filter_Policy,
113 uint8_t Local_Name_Length,
114 uint8_t Local_Name[],
115 uint8_t Service_Uuid_length,
116 uint8_t Service_Uuid_List[],
117 uint16_t Slave_Conn_Interval_Min,
118 uint16_t Slave_Conn_Interval_Max)
119 {
120 struct hci_request rq;
121 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
122 aci_gap_set_discoverable_cp0 *cp0 = (aci_gap_set_discoverable_cp0*)(cmd_buffer);
123 aci_gap_set_discoverable_cp1 *cp1 = (aci_gap_set_discoverable_cp1*)(cmd_buffer + 1 + 2 + 2 + 1 + 1 + 1 + Local_Name_Length * (sizeof(uint8_t)));
124 aci_gap_set_discoverable_cp2 *cp2 = (aci_gap_set_discoverable_cp2*)(cmd_buffer + 1 + 2 + 2 + 1 + 1 + 1 + Local_Name_Length * (sizeof(uint8_t)) + 1 + Service_Uuid_length * (sizeof(uint8_t)));
125 tBleStatus status = 0;
126 int index_input = 0;
127 cp0->Advertising_Type = htob(Advertising_Type, 1);
128 index_input += 1;
129 cp0->Advertising_Interval_Min = htob(Advertising_Interval_Min, 2);
130 index_input += 2;
131 cp0->Advertising_Interval_Max = htob(Advertising_Interval_Max, 2);
132 index_input += 2;
133 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
134 index_input += 1;
135 cp0->Advertising_Filter_Policy = htob(Advertising_Filter_Policy, 1);
136 index_input += 1;
137 cp0->Local_Name_Length = htob(Local_Name_Length, 1);
138 index_input += 1;
139 /* var_len_data input */
140 {
141 Osal_MemCpy((void *) &cp0->Local_Name, (const void *) Local_Name, Local_Name_Length);
142 index_input += Local_Name_Length;
143 {
144 cp1->Service_Uuid_length = htob(Service_Uuid_length, 1);
145 }
146 index_input += 1;
147 Osal_MemCpy((void *) &cp1->Service_Uuid_List, (const void *) Service_Uuid_List, Service_Uuid_length);
148 index_input += Service_Uuid_length;
149 {
150 cp2->Slave_Conn_Interval_Min = htob(Slave_Conn_Interval_Min, 2);
151 }
152 index_input += 2;
153 {
154 cp2->Slave_Conn_Interval_Max = htob(Slave_Conn_Interval_Max, 2);
155 }
156 index_input += 2;
157 }
158 Osal_MemSet(&rq, 0, sizeof(rq));
159 rq.ogf = 0x3f;
160 rq.ocf = 0x083;
161 rq.cparam = cmd_buffer;
162 rq.clen = index_input;
163 rq.rparam = &status;
164 rq.rlen = 1;
165 if (hci_send_req(&rq, FALSE) < 0)
166 return BLE_STATUS_TIMEOUT;
167 if (status)
168 {
169 return status;
170 }
171 return BLE_STATUS_SUCCESS;
172 }
173
aci_gap_set_direct_connectable(uint8_t Own_Address_Type,uint8_t Directed_Advertising_Type,uint8_t Direct_Address_Type,uint8_t Direct_Address[6],uint16_t Advertising_Interval_Min,uint16_t Advertising_Interval_Max)174 tBleStatus aci_gap_set_direct_connectable(uint8_t Own_Address_Type,
175 uint8_t Directed_Advertising_Type,
176 uint8_t Direct_Address_Type,
177 uint8_t Direct_Address[6],
178 uint16_t Advertising_Interval_Min,
179 uint16_t Advertising_Interval_Max)
180 {
181 struct hci_request rq;
182 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
183 aci_gap_set_direct_connectable_cp0 *cp0 = (aci_gap_set_direct_connectable_cp0*)(cmd_buffer);
184 tBleStatus status = 0;
185 int index_input = 0;
186 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
187 index_input += 1;
188 cp0->Directed_Advertising_Type = htob(Directed_Advertising_Type, 1);
189 index_input += 1;
190 cp0->Direct_Address_Type = htob(Direct_Address_Type, 1);
191 index_input += 1;
192 Osal_MemCpy((void *) &cp0->Direct_Address, (const void *) Direct_Address, 6);
193 index_input += 6;
194 cp0->Advertising_Interval_Min = htob(Advertising_Interval_Min, 2);
195 index_input += 2;
196 cp0->Advertising_Interval_Max = htob(Advertising_Interval_Max, 2);
197 index_input += 2;
198 Osal_MemSet(&rq, 0, sizeof(rq));
199 rq.ogf = 0x3f;
200 rq.ocf = 0x084;
201 rq.cparam = cmd_buffer;
202 rq.clen = index_input;
203 rq.rparam = &status;
204 rq.rlen = 1;
205 if (hci_send_req(&rq, FALSE) < 0)
206 return BLE_STATUS_TIMEOUT;
207 if (status)
208 {
209 return status;
210 }
211 return BLE_STATUS_SUCCESS;
212 }
213
aci_gap_set_io_capability(uint8_t IO_Capability)214 tBleStatus aci_gap_set_io_capability(uint8_t IO_Capability)
215 {
216 struct hci_request rq;
217 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
218 aci_gap_set_io_capability_cp0 *cp0 = (aci_gap_set_io_capability_cp0*)(cmd_buffer);
219 tBleStatus status = 0;
220 int index_input = 0;
221 cp0->IO_Capability = htob(IO_Capability, 1);
222 index_input += 1;
223 Osal_MemSet(&rq, 0, sizeof(rq));
224 rq.ogf = 0x3f;
225 rq.ocf = 0x085;
226 rq.cparam = cmd_buffer;
227 rq.clen = index_input;
228 rq.rparam = &status;
229 rq.rlen = 1;
230 if (hci_send_req(&rq, FALSE) < 0)
231 return BLE_STATUS_TIMEOUT;
232 if (status)
233 {
234 return status;
235 }
236 return BLE_STATUS_SUCCESS;
237 }
238
aci_gap_set_authentication_requirement(uint8_t Bonding_Mode,uint8_t MITM_Mode,uint8_t SC_Support,uint8_t KeyPress_Notification_Support,uint8_t Min_Encryption_Key_Size,uint8_t Max_Encryption_Key_Size,uint8_t Use_Fixed_Pin,uint32_t Fixed_Pin,uint8_t Identity_Address_Type)239 tBleStatus aci_gap_set_authentication_requirement(uint8_t Bonding_Mode,
240 uint8_t MITM_Mode,
241 uint8_t SC_Support,
242 uint8_t KeyPress_Notification_Support,
243 uint8_t Min_Encryption_Key_Size,
244 uint8_t Max_Encryption_Key_Size,
245 uint8_t Use_Fixed_Pin,
246 uint32_t Fixed_Pin,
247 uint8_t Identity_Address_Type)
248 {
249 struct hci_request rq;
250 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
251 aci_gap_set_authentication_requirement_cp0 *cp0 = (aci_gap_set_authentication_requirement_cp0*)(cmd_buffer);
252 tBleStatus status = 0;
253 int index_input = 0;
254 cp0->Bonding_Mode = htob(Bonding_Mode, 1);
255 index_input += 1;
256 cp0->MITM_Mode = htob(MITM_Mode, 1);
257 index_input += 1;
258 cp0->SC_Support = htob(SC_Support, 1);
259 index_input += 1;
260 cp0->KeyPress_Notification_Support = htob(KeyPress_Notification_Support, 1);
261 index_input += 1;
262 cp0->Min_Encryption_Key_Size = htob(Min_Encryption_Key_Size, 1);
263 index_input += 1;
264 cp0->Max_Encryption_Key_Size = htob(Max_Encryption_Key_Size, 1);
265 index_input += 1;
266 cp0->Use_Fixed_Pin = htob(Use_Fixed_Pin, 1);
267 index_input += 1;
268 cp0->Fixed_Pin = htob(Fixed_Pin, 4);
269 index_input += 4;
270 cp0->Identity_Address_Type = htob(Identity_Address_Type, 1);
271 index_input += 1;
272 Osal_MemSet(&rq, 0, sizeof(rq));
273 rq.ogf = 0x3f;
274 rq.ocf = 0x086;
275 rq.cparam = cmd_buffer;
276 rq.clen = index_input;
277 rq.rparam = &status;
278 rq.rlen = 1;
279 if (hci_send_req(&rq, FALSE) < 0)
280 return BLE_STATUS_TIMEOUT;
281 if (status)
282 {
283 return status;
284 }
285 return BLE_STATUS_SUCCESS;
286 }
287
aci_gap_set_authorization_requirement(uint16_t Connection_Handle,uint8_t Authorization_Enable)288 tBleStatus aci_gap_set_authorization_requirement(uint16_t Connection_Handle,
289 uint8_t Authorization_Enable)
290 {
291 struct hci_request rq;
292 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
293 aci_gap_set_authorization_requirement_cp0 *cp0 = (aci_gap_set_authorization_requirement_cp0*)(cmd_buffer);
294 tBleStatus status = 0;
295 int index_input = 0;
296 cp0->Connection_Handle = htob(Connection_Handle, 2);
297 index_input += 2;
298 cp0->Authorization_Enable = htob(Authorization_Enable, 1);
299 index_input += 1;
300 Osal_MemSet(&rq, 0, sizeof(rq));
301 rq.ogf = 0x3f;
302 rq.ocf = 0x087;
303 rq.cparam = cmd_buffer;
304 rq.clen = index_input;
305 rq.rparam = &status;
306 rq.rlen = 1;
307 if (hci_send_req(&rq, FALSE) < 0)
308 return BLE_STATUS_TIMEOUT;
309 if (status)
310 {
311 return status;
312 }
313 return BLE_STATUS_SUCCESS;
314 }
315
aci_gap_pass_key_resp(uint16_t Connection_Handle,uint32_t Pass_Key)316 tBleStatus aci_gap_pass_key_resp(uint16_t Connection_Handle,
317 uint32_t Pass_Key)
318 {
319 struct hci_request rq;
320 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
321 aci_gap_pass_key_resp_cp0 *cp0 = (aci_gap_pass_key_resp_cp0*)(cmd_buffer);
322 tBleStatus status = 0;
323 int index_input = 0;
324 cp0->Connection_Handle = htob(Connection_Handle, 2);
325 index_input += 2;
326 cp0->Pass_Key = htob(Pass_Key, 4);
327 index_input += 4;
328 Osal_MemSet(&rq, 0, sizeof(rq));
329 rq.ogf = 0x3f;
330 rq.ocf = 0x088;
331 rq.cparam = cmd_buffer;
332 rq.clen = index_input;
333 rq.rparam = &status;
334 rq.rlen = 1;
335 if (hci_send_req(&rq, FALSE) < 0)
336 return BLE_STATUS_TIMEOUT;
337 if (status)
338 {
339 return status;
340 }
341 return BLE_STATUS_SUCCESS;
342 }
343
aci_gap_authorization_resp(uint16_t Connection_Handle,uint8_t Authorize)344 tBleStatus aci_gap_authorization_resp(uint16_t Connection_Handle,
345 uint8_t Authorize)
346 {
347 struct hci_request rq;
348 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
349 aci_gap_authorization_resp_cp0 *cp0 = (aci_gap_authorization_resp_cp0*)(cmd_buffer);
350 tBleStatus status = 0;
351 int index_input = 0;
352 cp0->Connection_Handle = htob(Connection_Handle, 2);
353 index_input += 2;
354 cp0->Authorize = htob(Authorize, 1);
355 index_input += 1;
356 Osal_MemSet(&rq, 0, sizeof(rq));
357 rq.ogf = 0x3f;
358 rq.ocf = 0x089;
359 rq.cparam = cmd_buffer;
360 rq.clen = index_input;
361 rq.rparam = &status;
362 rq.rlen = 1;
363 if (hci_send_req(&rq, FALSE) < 0)
364 return BLE_STATUS_TIMEOUT;
365 if (status)
366 {
367 return status;
368 }
369 return BLE_STATUS_SUCCESS;
370 }
371
aci_gap_init(uint8_t Role,uint8_t privacy_enabled,uint8_t device_name_char_len,uint16_t * Service_Handle,uint16_t * Dev_Name_Char_Handle,uint16_t * Appearance_Char_Handle)372 tBleStatus aci_gap_init(uint8_t Role,
373 uint8_t privacy_enabled,
374 uint8_t device_name_char_len,
375 uint16_t *Service_Handle,
376 uint16_t *Dev_Name_Char_Handle,
377 uint16_t *Appearance_Char_Handle)
378 {
379 struct hci_request rq;
380 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
381 aci_gap_init_cp0 *cp0 = (aci_gap_init_cp0*)(cmd_buffer);
382 aci_gap_init_rp0 resp;
383 Osal_MemSet(&resp, 0, sizeof(resp));
384 int index_input = 0;
385 cp0->Role = htob(Role, 1);
386 index_input += 1;
387 cp0->privacy_enabled = htob(privacy_enabled, 1);
388 index_input += 1;
389 cp0->device_name_char_len = htob(device_name_char_len, 1);
390 index_input += 1;
391 Osal_MemSet(&rq, 0, sizeof(rq));
392 rq.ogf = 0x3f;
393 rq.ocf = 0x08a;
394 rq.cparam = cmd_buffer;
395 rq.clen = index_input;
396 rq.rparam = &resp;
397 rq.rlen = sizeof(resp);
398 if (hci_send_req(&rq, FALSE) < 0)
399 return BLE_STATUS_TIMEOUT;
400 if (resp.Status)
401 {
402 return resp.Status;
403 }
404 *Service_Handle = btoh(resp.Service_Handle, 2);
405 *Dev_Name_Char_Handle = btoh(resp.Dev_Name_Char_Handle, 2);
406 *Appearance_Char_Handle = btoh(resp.Appearance_Char_Handle, 2);
407 return BLE_STATUS_SUCCESS;
408 }
409
aci_gap_set_non_connectable(uint8_t Advertising_Event_Type,uint8_t Own_Address_Type)410 tBleStatus aci_gap_set_non_connectable(uint8_t Advertising_Event_Type,
411 uint8_t Own_Address_Type)
412 {
413 struct hci_request rq;
414 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
415 aci_gap_set_non_connectable_cp0 *cp0 = (aci_gap_set_non_connectable_cp0*)(cmd_buffer);
416 tBleStatus status = 0;
417 int index_input = 0;
418 cp0->Advertising_Event_Type = htob(Advertising_Event_Type, 1);
419 index_input += 1;
420 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
421 index_input += 1;
422 Osal_MemSet(&rq, 0, sizeof(rq));
423 rq.ogf = 0x3f;
424 rq.ocf = 0x08b;
425 rq.cparam = cmd_buffer;
426 rq.clen = index_input;
427 rq.rparam = &status;
428 rq.rlen = 1;
429 if (hci_send_req(&rq, FALSE) < 0)
430 return BLE_STATUS_TIMEOUT;
431 if (status)
432 {
433 return status;
434 }
435 return BLE_STATUS_SUCCESS;
436 }
437
aci_gap_set_undirected_connectable(uint16_t Advertising_Interval_Min,uint16_t Advertising_Interval_Max,uint8_t Own_Address_Type,uint8_t Adv_Filter_Policy)438 tBleStatus aci_gap_set_undirected_connectable(uint16_t Advertising_Interval_Min,
439 uint16_t Advertising_Interval_Max,
440 uint8_t Own_Address_Type,
441 uint8_t Adv_Filter_Policy)
442 {
443 struct hci_request rq;
444 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
445 aci_gap_set_undirected_connectable_cp0 *cp0 = (aci_gap_set_undirected_connectable_cp0*)(cmd_buffer);
446 tBleStatus status = 0;
447 int index_input = 0;
448 cp0->Advertising_Interval_Min = htob(Advertising_Interval_Min, 2);
449 index_input += 2;
450 cp0->Advertising_Interval_Max = htob(Advertising_Interval_Max, 2);
451 index_input += 2;
452 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
453 index_input += 1;
454 cp0->Adv_Filter_Policy = htob(Adv_Filter_Policy, 1);
455 index_input += 1;
456 Osal_MemSet(&rq, 0, sizeof(rq));
457 rq.ogf = 0x3f;
458 rq.ocf = 0x08c;
459 rq.cparam = cmd_buffer;
460 rq.clen = index_input;
461 rq.rparam = &status;
462 rq.rlen = 1;
463 if (hci_send_req(&rq, FALSE) < 0)
464 return BLE_STATUS_TIMEOUT;
465 if (status)
466 {
467 return status;
468 }
469 return BLE_STATUS_SUCCESS;
470 }
471
aci_gap_slave_security_req(uint16_t Connection_Handle)472 tBleStatus aci_gap_slave_security_req(uint16_t Connection_Handle)
473 {
474 struct hci_request rq;
475 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
476 aci_gap_slave_security_req_cp0 *cp0 = (aci_gap_slave_security_req_cp0*)(cmd_buffer);
477 tBleStatus status = 0;
478 int index_input = 0;
479 cp0->Connection_Handle = htob(Connection_Handle, 2);
480 index_input += 2;
481 Osal_MemSet(&rq, 0, sizeof(rq));
482 rq.ogf = 0x3f;
483 rq.ocf = 0x08d;
484 rq.event = 0x0F;
485 rq.cparam = cmd_buffer;
486 rq.clen = index_input;
487 rq.rparam = &status;
488 rq.rlen = 1;
489 if (hci_send_req(&rq, FALSE) < 0)
490 return BLE_STATUS_TIMEOUT;
491 if (status)
492 {
493 return status;
494 }
495 return BLE_STATUS_SUCCESS;
496 }
497
aci_gap_update_adv_data(uint8_t AdvDataLen,uint8_t AdvData[])498 tBleStatus aci_gap_update_adv_data(uint8_t AdvDataLen,
499 uint8_t AdvData[])
500 {
501 struct hci_request rq;
502 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
503 aci_gap_update_adv_data_cp0 *cp0 = (aci_gap_update_adv_data_cp0*)(cmd_buffer);
504 tBleStatus status = 0;
505 int index_input = 0;
506 cp0->AdvDataLen = htob(AdvDataLen, 1);
507 index_input += 1;
508 Osal_MemCpy((void *) &cp0->AdvData, (const void *) AdvData, AdvDataLen);
509 index_input += AdvDataLen;
510 Osal_MemSet(&rq, 0, sizeof(rq));
511 rq.ogf = 0x3f;
512 rq.ocf = 0x08e;
513 rq.cparam = cmd_buffer;
514 rq.clen = index_input;
515 rq.rparam = &status;
516 rq.rlen = 1;
517 if (hci_send_req(&rq, FALSE) < 0)
518 return BLE_STATUS_TIMEOUT;
519 if (status)
520 {
521 return status;
522 }
523 return BLE_STATUS_SUCCESS;
524 }
525
aci_gap_delete_ad_type(uint8_t ADType)526 tBleStatus aci_gap_delete_ad_type(uint8_t ADType)
527 {
528 struct hci_request rq;
529 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
530 aci_gap_delete_ad_type_cp0 *cp0 = (aci_gap_delete_ad_type_cp0*)(cmd_buffer);
531 tBleStatus status = 0;
532 int index_input = 0;
533 cp0->ADType = htob(ADType, 1);
534 index_input += 1;
535 Osal_MemSet(&rq, 0, sizeof(rq));
536 rq.ogf = 0x3f;
537 rq.ocf = 0x08f;
538 rq.cparam = cmd_buffer;
539 rq.clen = index_input;
540 rq.rparam = &status;
541 rq.rlen = 1;
542 if (hci_send_req(&rq, FALSE) < 0)
543 return BLE_STATUS_TIMEOUT;
544 if (status)
545 {
546 return status;
547 }
548 return BLE_STATUS_SUCCESS;
549 }
550
aci_gap_get_security_level(uint16_t Connection_Handle,uint8_t * Security_Mode,uint8_t * Security_Level)551 tBleStatus aci_gap_get_security_level(uint16_t Connection_Handle,
552 uint8_t *Security_Mode,
553 uint8_t *Security_Level)
554 {
555 struct hci_request rq;
556 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
557 aci_gap_get_security_level_cp0 *cp0 = (aci_gap_get_security_level_cp0*)(cmd_buffer);
558 aci_gap_get_security_level_rp0 resp;
559 Osal_MemSet(&resp, 0, sizeof(resp));
560 int index_input = 0;
561 cp0->Connection_Handle = htob(Connection_Handle, 2);
562 index_input += 2;
563 Osal_MemSet(&rq, 0, sizeof(rq));
564 rq.ogf = 0x3f;
565 rq.ocf = 0x090;
566 rq.cparam = cmd_buffer;
567 rq.clen = index_input;
568 rq.rparam = &resp;
569 rq.rlen = sizeof(resp);
570 if (hci_send_req(&rq, FALSE) < 0)
571 return BLE_STATUS_TIMEOUT;
572 if (resp.Status)
573 {
574 return resp.Status;
575 }
576 *Security_Mode = btoh(resp.Security_Mode, 1);
577 *Security_Level = btoh(resp.Security_Level, 1);
578 return BLE_STATUS_SUCCESS;
579 }
580
aci_gap_set_event_mask(uint16_t GAP_Evt_Mask)581 tBleStatus aci_gap_set_event_mask(uint16_t GAP_Evt_Mask)
582 {
583 struct hci_request rq;
584 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
585 aci_gap_set_event_mask_cp0 *cp0 = (aci_gap_set_event_mask_cp0*)(cmd_buffer);
586 tBleStatus status = 0;
587 int index_input = 0;
588 cp0->GAP_Evt_Mask = htob(GAP_Evt_Mask, 2);
589 index_input += 2;
590 Osal_MemSet(&rq, 0, sizeof(rq));
591 rq.ogf = 0x3f;
592 rq.ocf = 0x091;
593 rq.cparam = cmd_buffer;
594 rq.clen = index_input;
595 rq.rparam = &status;
596 rq.rlen = 1;
597 if (hci_send_req(&rq, FALSE) < 0)
598 return BLE_STATUS_TIMEOUT;
599 if (status)
600 {
601 return status;
602 }
603 return BLE_STATUS_SUCCESS;
604 }
605
aci_gap_configure_whitelist(void)606 tBleStatus aci_gap_configure_whitelist(void)
607 {
608 struct hci_request rq;
609 tBleStatus status = 0;
610 Osal_MemSet(&rq, 0, sizeof(rq));
611 rq.ogf = 0x3f;
612 rq.ocf = 0x092;
613 rq.rparam = &status;
614 rq.rlen = 1;
615 if (hci_send_req(&rq, FALSE) < 0)
616 return BLE_STATUS_TIMEOUT;
617 if (status)
618 {
619 return status;
620 }
621 return BLE_STATUS_SUCCESS;
622 }
623
aci_gap_terminate(uint16_t Connection_Handle,uint8_t Reason)624 tBleStatus aci_gap_terminate(uint16_t Connection_Handle,
625 uint8_t Reason)
626 {
627 struct hci_request rq;
628 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
629 aci_gap_terminate_cp0 *cp0 = (aci_gap_terminate_cp0*)(cmd_buffer);
630 tBleStatus status = 0;
631 int index_input = 0;
632 cp0->Connection_Handle = htob(Connection_Handle, 2);
633 index_input += 2;
634 cp0->Reason = htob(Reason, 1);
635 index_input += 1;
636 Osal_MemSet(&rq, 0, sizeof(rq));
637 rq.ogf = 0x3f;
638 rq.ocf = 0x093;
639 rq.event = 0x0F;
640 rq.cparam = cmd_buffer;
641 rq.clen = index_input;
642 rq.rparam = &status;
643 rq.rlen = 1;
644 if (hci_send_req(&rq, FALSE) < 0)
645 return BLE_STATUS_TIMEOUT;
646 if (status)
647 {
648 return status;
649 }
650 return BLE_STATUS_SUCCESS;
651 }
652
aci_gap_clear_security_db(void)653 tBleStatus aci_gap_clear_security_db(void)
654 {
655 struct hci_request rq;
656 tBleStatus status = 0;
657 Osal_MemSet(&rq, 0, sizeof(rq));
658 rq.ogf = 0x3f;
659 rq.ocf = 0x094;
660 rq.rparam = &status;
661 rq.rlen = 1;
662 if (hci_send_req(&rq, FALSE) < 0)
663 return BLE_STATUS_TIMEOUT;
664 if (status)
665 {
666 return status;
667 }
668 return BLE_STATUS_SUCCESS;
669 }
670
aci_gap_allow_rebond(uint16_t Connection_Handle)671 tBleStatus aci_gap_allow_rebond(uint16_t Connection_Handle)
672 {
673 struct hci_request rq;
674 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
675 aci_gap_allow_rebond_cp0 *cp0 = (aci_gap_allow_rebond_cp0*)(cmd_buffer);
676 tBleStatus status = 0;
677 int index_input = 0;
678 cp0->Connection_Handle = htob(Connection_Handle, 2);
679 index_input += 2;
680 Osal_MemSet(&rq, 0, sizeof(rq));
681 rq.ogf = 0x3f;
682 rq.ocf = 0x095;
683 rq.cparam = cmd_buffer;
684 rq.clen = index_input;
685 rq.rparam = &status;
686 rq.rlen = 1;
687 if (hci_send_req(&rq, FALSE) < 0)
688 return BLE_STATUS_TIMEOUT;
689 if (status)
690 {
691 return status;
692 }
693 return BLE_STATUS_SUCCESS;
694 }
695
aci_gap_start_limited_discovery_proc(uint16_t LE_Scan_Interval,uint16_t LE_Scan_Window,uint8_t Own_Address_Type,uint8_t Filter_Duplicates)696 tBleStatus aci_gap_start_limited_discovery_proc(uint16_t LE_Scan_Interval,
697 uint16_t LE_Scan_Window,
698 uint8_t Own_Address_Type,
699 uint8_t Filter_Duplicates)
700 {
701 struct hci_request rq;
702 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
703 aci_gap_start_limited_discovery_proc_cp0 *cp0 = (aci_gap_start_limited_discovery_proc_cp0*)(cmd_buffer);
704 tBleStatus status = 0;
705 int index_input = 0;
706 cp0->LE_Scan_Interval = htob(LE_Scan_Interval, 2);
707 index_input += 2;
708 cp0->LE_Scan_Window = htob(LE_Scan_Window, 2);
709 index_input += 2;
710 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
711 index_input += 1;
712 cp0->Filter_Duplicates = htob(Filter_Duplicates, 1);
713 index_input += 1;
714 Osal_MemSet(&rq, 0, sizeof(rq));
715 rq.ogf = 0x3f;
716 rq.ocf = 0x096;
717 rq.event = 0x0F;
718 rq.cparam = cmd_buffer;
719 rq.clen = index_input;
720 rq.rparam = &status;
721 rq.rlen = 1;
722 if (hci_send_req(&rq, FALSE) < 0)
723 return BLE_STATUS_TIMEOUT;
724 if (status)
725 {
726 return status;
727 }
728 return BLE_STATUS_SUCCESS;
729 }
730
aci_gap_start_general_discovery_proc(uint16_t LE_Scan_Interval,uint16_t LE_Scan_Window,uint8_t Own_Address_Type,uint8_t Filter_Duplicates)731 tBleStatus aci_gap_start_general_discovery_proc(uint16_t LE_Scan_Interval,
732 uint16_t LE_Scan_Window,
733 uint8_t Own_Address_Type,
734 uint8_t Filter_Duplicates)
735 {
736 struct hci_request rq;
737 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
738 aci_gap_start_general_discovery_proc_cp0 *cp0 = (aci_gap_start_general_discovery_proc_cp0*)(cmd_buffer);
739 tBleStatus status = 0;
740 int index_input = 0;
741 cp0->LE_Scan_Interval = htob(LE_Scan_Interval, 2);
742 index_input += 2;
743 cp0->LE_Scan_Window = htob(LE_Scan_Window, 2);
744 index_input += 2;
745 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
746 index_input += 1;
747 cp0->Filter_Duplicates = htob(Filter_Duplicates, 1);
748 index_input += 1;
749 Osal_MemSet(&rq, 0, sizeof(rq));
750 rq.ogf = 0x3f;
751 rq.ocf = 0x097;
752 rq.event = 0x0F;
753 rq.cparam = cmd_buffer;
754 rq.clen = index_input;
755 rq.rparam = &status;
756 rq.rlen = 1;
757 if (hci_send_req(&rq, FALSE) < 0)
758 return BLE_STATUS_TIMEOUT;
759 if (status)
760 {
761 return status;
762 }
763 return BLE_STATUS_SUCCESS;
764 }
765
aci_gap_start_name_discovery_proc(uint16_t LE_Scan_Interval,uint16_t LE_Scan_Window,uint8_t Peer_Address_Type,uint8_t Peer_Address[6],uint8_t Own_Address_Type,uint16_t Conn_Interval_Min,uint16_t Conn_Interval_Max,uint16_t Conn_Latency,uint16_t Supervision_Timeout,uint16_t Minimum_CE_Length,uint16_t Maximum_CE_Length)766 tBleStatus aci_gap_start_name_discovery_proc(uint16_t LE_Scan_Interval,
767 uint16_t LE_Scan_Window,
768 uint8_t Peer_Address_Type,
769 uint8_t Peer_Address[6],
770 uint8_t Own_Address_Type,
771 uint16_t Conn_Interval_Min,
772 uint16_t Conn_Interval_Max,
773 uint16_t Conn_Latency,
774 uint16_t Supervision_Timeout,
775 uint16_t Minimum_CE_Length,
776 uint16_t Maximum_CE_Length)
777 {
778 struct hci_request rq;
779 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
780 aci_gap_start_name_discovery_proc_cp0 *cp0 = (aci_gap_start_name_discovery_proc_cp0*)(cmd_buffer);
781 tBleStatus status = 0;
782 int index_input = 0;
783 cp0->LE_Scan_Interval = htob(LE_Scan_Interval, 2);
784 index_input += 2;
785 cp0->LE_Scan_Window = htob(LE_Scan_Window, 2);
786 index_input += 2;
787 cp0->Peer_Address_Type = htob(Peer_Address_Type, 1);
788 index_input += 1;
789 Osal_MemCpy((void *) &cp0->Peer_Address, (const void *) Peer_Address, 6);
790 index_input += 6;
791 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
792 index_input += 1;
793 cp0->Conn_Interval_Min = htob(Conn_Interval_Min, 2);
794 index_input += 2;
795 cp0->Conn_Interval_Max = htob(Conn_Interval_Max, 2);
796 index_input += 2;
797 cp0->Conn_Latency = htob(Conn_Latency, 2);
798 index_input += 2;
799 cp0->Supervision_Timeout = htob(Supervision_Timeout, 2);
800 index_input += 2;
801 cp0->Minimum_CE_Length = htob(Minimum_CE_Length, 2);
802 index_input += 2;
803 cp0->Maximum_CE_Length = htob(Maximum_CE_Length, 2);
804 index_input += 2;
805 Osal_MemSet(&rq, 0, sizeof(rq));
806 rq.ogf = 0x3f;
807 rq.ocf = 0x098;
808 rq.event = 0x0F;
809 rq.cparam = cmd_buffer;
810 rq.clen = index_input;
811 rq.rparam = &status;
812 rq.rlen = 1;
813 if (hci_send_req(&rq, FALSE) < 0)
814 return BLE_STATUS_TIMEOUT;
815 if (status)
816 {
817 return status;
818 }
819 return BLE_STATUS_SUCCESS;
820 }
821
aci_gap_start_auto_connection_establish_proc(uint16_t LE_Scan_Interval,uint16_t LE_Scan_Window,uint8_t Own_Address_Type,uint16_t Conn_Interval_Min,uint16_t Conn_Interval_Max,uint16_t Conn_Latency,uint16_t Supervision_Timeout,uint16_t Minimum_CE_Length,uint16_t Maximum_CE_Length,uint8_t Num_of_Whitelist_Entries,Whitelist_Entry_t Whitelist_Entry[])822 tBleStatus aci_gap_start_auto_connection_establish_proc(uint16_t LE_Scan_Interval,
823 uint16_t LE_Scan_Window,
824 uint8_t Own_Address_Type,
825 uint16_t Conn_Interval_Min,
826 uint16_t Conn_Interval_Max,
827 uint16_t Conn_Latency,
828 uint16_t Supervision_Timeout,
829 uint16_t Minimum_CE_Length,
830 uint16_t Maximum_CE_Length,
831 uint8_t Num_of_Whitelist_Entries,
832 Whitelist_Entry_t Whitelist_Entry[])
833 {
834 struct hci_request rq;
835 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
836 aci_gap_start_auto_connection_establish_proc_cp0 *cp0 = (aci_gap_start_auto_connection_establish_proc_cp0*)(cmd_buffer);
837 tBleStatus status = 0;
838 int index_input = 0;
839 cp0->LE_Scan_Interval = htob(LE_Scan_Interval, 2);
840 index_input += 2;
841 cp0->LE_Scan_Window = htob(LE_Scan_Window, 2);
842 index_input += 2;
843 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
844 index_input += 1;
845 cp0->Conn_Interval_Min = htob(Conn_Interval_Min, 2);
846 index_input += 2;
847 cp0->Conn_Interval_Max = htob(Conn_Interval_Max, 2);
848 index_input += 2;
849 cp0->Conn_Latency = htob(Conn_Latency, 2);
850 index_input += 2;
851 cp0->Supervision_Timeout = htob(Supervision_Timeout, 2);
852 index_input += 2;
853 cp0->Minimum_CE_Length = htob(Minimum_CE_Length, 2);
854 index_input += 2;
855 cp0->Maximum_CE_Length = htob(Maximum_CE_Length, 2);
856 index_input += 2;
857 cp0->Num_of_Whitelist_Entries = htob(Num_of_Whitelist_Entries, 1);
858 index_input += 1;
859 Osal_MemCpy((void*) &cp0->Whitelist_Entry, (const void *) Whitelist_Entry, Num_of_Whitelist_Entries * (sizeof(Whitelist_Entry_t)));
860 index_input += Num_of_Whitelist_Entries * (sizeof(Whitelist_Entry_t));
861 Osal_MemSet(&rq, 0, sizeof(rq));
862 rq.ogf = 0x3f;
863 rq.ocf = 0x099;
864 rq.event = 0x0F;
865 rq.cparam = cmd_buffer;
866 rq.clen = index_input;
867 rq.rparam = &status;
868 rq.rlen = 1;
869 if (hci_send_req(&rq, FALSE) < 0)
870 return BLE_STATUS_TIMEOUT;
871 if (status)
872 {
873 return status;
874 }
875 return BLE_STATUS_SUCCESS;
876 }
877
aci_gap_start_general_connection_establish_proc(uint8_t LE_Scan_Type,uint16_t LE_Scan_Interval,uint16_t LE_Scan_Window,uint8_t Own_Address_Type,uint8_t Scanning_Filter_Policy,uint8_t Filter_Duplicates)878 tBleStatus aci_gap_start_general_connection_establish_proc(uint8_t LE_Scan_Type,
879 uint16_t LE_Scan_Interval,
880 uint16_t LE_Scan_Window,
881 uint8_t Own_Address_Type,
882 uint8_t Scanning_Filter_Policy,
883 uint8_t Filter_Duplicates)
884 {
885 struct hci_request rq;
886 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
887 aci_gap_start_general_connection_establish_proc_cp0 *cp0 = (aci_gap_start_general_connection_establish_proc_cp0*)(cmd_buffer);
888 tBleStatus status = 0;
889 int index_input = 0;
890 cp0->LE_Scan_Type = htob(LE_Scan_Type, 1);
891 index_input += 1;
892 cp0->LE_Scan_Interval = htob(LE_Scan_Interval, 2);
893 index_input += 2;
894 cp0->LE_Scan_Window = htob(LE_Scan_Window, 2);
895 index_input += 2;
896 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
897 index_input += 1;
898 cp0->Scanning_Filter_Policy = htob(Scanning_Filter_Policy, 1);
899 index_input += 1;
900 cp0->Filter_Duplicates = htob(Filter_Duplicates, 1);
901 index_input += 1;
902 Osal_MemSet(&rq, 0, sizeof(rq));
903 rq.ogf = 0x3f;
904 rq.ocf = 0x09a;
905 rq.event = 0x0F;
906 rq.cparam = cmd_buffer;
907 rq.clen = index_input;
908 rq.rparam = &status;
909 rq.rlen = 1;
910 if (hci_send_req(&rq, FALSE) < 0)
911 return BLE_STATUS_TIMEOUT;
912 if (status)
913 {
914 return status;
915 }
916 return BLE_STATUS_SUCCESS;
917 }
918
aci_gap_start_selective_connection_establish_proc(uint8_t LE_Scan_Type,uint16_t LE_Scan_Interval,uint16_t LE_Scan_Window,uint8_t Own_Address_Type,uint8_t Scanning_Filter_Policy,uint8_t Filter_Duplicates,uint8_t Num_of_Whitelist_Entries,Whitelist_Entry_t Whitelist_Entry[])919 tBleStatus aci_gap_start_selective_connection_establish_proc(uint8_t LE_Scan_Type,
920 uint16_t LE_Scan_Interval,
921 uint16_t LE_Scan_Window,
922 uint8_t Own_Address_Type,
923 uint8_t Scanning_Filter_Policy,
924 uint8_t Filter_Duplicates,
925 uint8_t Num_of_Whitelist_Entries,
926 Whitelist_Entry_t Whitelist_Entry[])
927 {
928 struct hci_request rq;
929 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
930 aci_gap_start_selective_connection_establish_proc_cp0 *cp0 = (aci_gap_start_selective_connection_establish_proc_cp0*)(cmd_buffer);
931 tBleStatus status = 0;
932 int index_input = 0;
933 cp0->LE_Scan_Type = htob(LE_Scan_Type, 1);
934 index_input += 1;
935 cp0->LE_Scan_Interval = htob(LE_Scan_Interval, 2);
936 index_input += 2;
937 cp0->LE_Scan_Window = htob(LE_Scan_Window, 2);
938 index_input += 2;
939 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
940 index_input += 1;
941 cp0->Scanning_Filter_Policy = htob(Scanning_Filter_Policy, 1);
942 index_input += 1;
943 cp0->Filter_Duplicates = htob(Filter_Duplicates, 1);
944 index_input += 1;
945 cp0->Num_of_Whitelist_Entries = htob(Num_of_Whitelist_Entries, 1);
946 index_input += 1;
947 Osal_MemCpy((void*) &cp0->Whitelist_Entry, (const void *) Whitelist_Entry, Num_of_Whitelist_Entries * (sizeof(Whitelist_Entry_t)));
948 index_input += Num_of_Whitelist_Entries * (sizeof(Whitelist_Entry_t));
949 Osal_MemSet(&rq, 0, sizeof(rq));
950 rq.ogf = 0x3f;
951 rq.ocf = 0x09b;
952 rq.event = 0x0F;
953 rq.cparam = cmd_buffer;
954 rq.clen = index_input;
955 rq.rparam = &status;
956 rq.rlen = 1;
957 if (hci_send_req(&rq, FALSE) < 0)
958 return BLE_STATUS_TIMEOUT;
959 if (status)
960 {
961 return status;
962 }
963 return BLE_STATUS_SUCCESS;
964 }
965
aci_gap_create_connection(uint16_t LE_Scan_Interval,uint16_t LE_Scan_Window,uint8_t Peer_Address_Type,uint8_t Peer_Address[6],uint8_t Own_Address_Type,uint16_t Conn_Interval_Min,uint16_t Conn_Interval_Max,uint16_t Conn_Latency,uint16_t Supervision_Timeout,uint16_t Minimum_CE_Length,uint16_t Maximum_CE_Length)966 tBleStatus aci_gap_create_connection(uint16_t LE_Scan_Interval,
967 uint16_t LE_Scan_Window,
968 uint8_t Peer_Address_Type,
969 uint8_t Peer_Address[6],
970 uint8_t Own_Address_Type,
971 uint16_t Conn_Interval_Min,
972 uint16_t Conn_Interval_Max,
973 uint16_t Conn_Latency,
974 uint16_t Supervision_Timeout,
975 uint16_t Minimum_CE_Length,
976 uint16_t Maximum_CE_Length)
977 {
978 struct hci_request rq;
979 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
980 aci_gap_create_connection_cp0 *cp0 = (aci_gap_create_connection_cp0*)(cmd_buffer);
981 tBleStatus status = 0;
982 int index_input = 0;
983 cp0->LE_Scan_Interval = htob(LE_Scan_Interval, 2);
984 index_input += 2;
985 cp0->LE_Scan_Window = htob(LE_Scan_Window, 2);
986 index_input += 2;
987 cp0->Peer_Address_Type = htob(Peer_Address_Type, 1);
988 index_input += 1;
989 Osal_MemCpy((void *) &cp0->Peer_Address, (const void *) Peer_Address, 6);
990 index_input += 6;
991 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
992 index_input += 1;
993 cp0->Conn_Interval_Min = htob(Conn_Interval_Min, 2);
994 index_input += 2;
995 cp0->Conn_Interval_Max = htob(Conn_Interval_Max, 2);
996 index_input += 2;
997 cp0->Conn_Latency = htob(Conn_Latency, 2);
998 index_input += 2;
999 cp0->Supervision_Timeout = htob(Supervision_Timeout, 2);
1000 index_input += 2;
1001 cp0->Minimum_CE_Length = htob(Minimum_CE_Length, 2);
1002 index_input += 2;
1003 cp0->Maximum_CE_Length = htob(Maximum_CE_Length, 2);
1004 index_input += 2;
1005 Osal_MemSet(&rq, 0, sizeof(rq));
1006 rq.ogf = 0x3f;
1007 rq.ocf = 0x09c;
1008 rq.event = 0x0F;
1009 rq.cparam = cmd_buffer;
1010 rq.clen = index_input;
1011 rq.rparam = &status;
1012 rq.rlen = 1;
1013 if (hci_send_req(&rq, FALSE) < 0)
1014 return BLE_STATUS_TIMEOUT;
1015 if (status)
1016 {
1017 return status;
1018 }
1019 return BLE_STATUS_SUCCESS;
1020 }
1021
aci_gap_terminate_gap_proc(uint8_t Procedure_Code)1022 tBleStatus aci_gap_terminate_gap_proc(uint8_t Procedure_Code)
1023 {
1024 struct hci_request rq;
1025 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1026 aci_gap_terminate_gap_proc_cp0 *cp0 = (aci_gap_terminate_gap_proc_cp0*)(cmd_buffer);
1027 tBleStatus status = 0;
1028 int index_input = 0;
1029 cp0->Procedure_Code = htob(Procedure_Code, 1);
1030 index_input += 1;
1031 Osal_MemSet(&rq, 0, sizeof(rq));
1032 rq.ogf = 0x3f;
1033 rq.ocf = 0x09d;
1034 rq.cparam = cmd_buffer;
1035 rq.clen = index_input;
1036 rq.rparam = &status;
1037 rq.rlen = 1;
1038 if (hci_send_req(&rq, FALSE) < 0)
1039 return BLE_STATUS_TIMEOUT;
1040 if (status)
1041 {
1042 return status;
1043 }
1044 return BLE_STATUS_SUCCESS;
1045 }
1046
aci_gap_start_connection_update(uint16_t Connection_Handle,uint16_t Conn_Interval_Min,uint16_t Conn_Interval_Max,uint16_t Conn_Latency,uint16_t Supervision_Timeout,uint16_t Minimum_CE_Length,uint16_t Maximum_CE_Length)1047 tBleStatus aci_gap_start_connection_update(uint16_t Connection_Handle,
1048 uint16_t Conn_Interval_Min,
1049 uint16_t Conn_Interval_Max,
1050 uint16_t Conn_Latency,
1051 uint16_t Supervision_Timeout,
1052 uint16_t Minimum_CE_Length,
1053 uint16_t Maximum_CE_Length)
1054 {
1055 struct hci_request rq;
1056 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1057 aci_gap_start_connection_update_cp0 *cp0 = (aci_gap_start_connection_update_cp0*)(cmd_buffer);
1058 tBleStatus status = 0;
1059 int index_input = 0;
1060 cp0->Connection_Handle = htob(Connection_Handle, 2);
1061 index_input += 2;
1062 cp0->Conn_Interval_Min = htob(Conn_Interval_Min, 2);
1063 index_input += 2;
1064 cp0->Conn_Interval_Max = htob(Conn_Interval_Max, 2);
1065 index_input += 2;
1066 cp0->Conn_Latency = htob(Conn_Latency, 2);
1067 index_input += 2;
1068 cp0->Supervision_Timeout = htob(Supervision_Timeout, 2);
1069 index_input += 2;
1070 cp0->Minimum_CE_Length = htob(Minimum_CE_Length, 2);
1071 index_input += 2;
1072 cp0->Maximum_CE_Length = htob(Maximum_CE_Length, 2);
1073 index_input += 2;
1074 Osal_MemSet(&rq, 0, sizeof(rq));
1075 rq.ogf = 0x3f;
1076 rq.ocf = 0x09e;
1077 rq.event = 0x0F;
1078 rq.cparam = cmd_buffer;
1079 rq.clen = index_input;
1080 rq.rparam = &status;
1081 rq.rlen = 1;
1082 if (hci_send_req(&rq, FALSE) < 0)
1083 return BLE_STATUS_TIMEOUT;
1084 if (status)
1085 {
1086 return status;
1087 }
1088 return BLE_STATUS_SUCCESS;
1089 }
1090
aci_gap_send_pairing_req(uint16_t Connection_Handle,uint8_t Force_Rebond)1091 tBleStatus aci_gap_send_pairing_req(uint16_t Connection_Handle,
1092 uint8_t Force_Rebond)
1093 {
1094 struct hci_request rq;
1095 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1096 aci_gap_send_pairing_req_cp0 *cp0 = (aci_gap_send_pairing_req_cp0*)(cmd_buffer);
1097 tBleStatus status = 0;
1098 int index_input = 0;
1099 cp0->Connection_Handle = htob(Connection_Handle, 2);
1100 index_input += 2;
1101 cp0->Force_Rebond = htob(Force_Rebond, 1);
1102 index_input += 1;
1103 Osal_MemSet(&rq, 0, sizeof(rq));
1104 rq.ogf = 0x3f;
1105 rq.ocf = 0x09f;
1106 rq.event = 0x0F;
1107 rq.cparam = cmd_buffer;
1108 rq.clen = index_input;
1109 rq.rparam = &status;
1110 rq.rlen = 1;
1111 if (hci_send_req(&rq, FALSE) < 0)
1112 return BLE_STATUS_TIMEOUT;
1113 if (status)
1114 {
1115 return status;
1116 }
1117 return BLE_STATUS_SUCCESS;
1118 }
1119
aci_gap_resolve_private_addr(uint8_t Address[6],uint8_t Actual_Address[6])1120 tBleStatus aci_gap_resolve_private_addr(uint8_t Address[6],
1121 uint8_t Actual_Address[6])
1122 {
1123 struct hci_request rq;
1124 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1125 aci_gap_resolve_private_addr_cp0 *cp0 = (aci_gap_resolve_private_addr_cp0*)(cmd_buffer);
1126 aci_gap_resolve_private_addr_rp0 resp;
1127 Osal_MemSet(&resp, 0, sizeof(resp));
1128 int index_input = 0;
1129 Osal_MemCpy((void *) &cp0->Address, (const void *) Address, 6);
1130 index_input += 6;
1131 Osal_MemSet(&rq, 0, sizeof(rq));
1132 rq.ogf = 0x3f;
1133 rq.ocf = 0x0a0;
1134 rq.cparam = cmd_buffer;
1135 rq.clen = index_input;
1136 rq.rparam = &resp;
1137 rq.rlen = sizeof(resp);
1138 if (hci_send_req(&rq, FALSE) < 0)
1139 return BLE_STATUS_TIMEOUT;
1140 if (resp.Status)
1141 {
1142 return resp.Status;
1143 }
1144 Osal_MemCpy((void *) Actual_Address, (const void *) resp.Actual_Address, 6);
1145 return BLE_STATUS_SUCCESS;
1146 }
1147
aci_gap_set_broadcast_mode(uint16_t Advertising_Interval_Min,uint16_t Advertising_Interval_Max,uint8_t Advertising_Type,uint8_t Own_Address_Type,uint8_t Adv_Data_Length,uint8_t Adv_Data[],uint8_t Num_of_Whitelist_Entries,Whitelist_Entry_t Whitelist_Entry[])1148 tBleStatus aci_gap_set_broadcast_mode(uint16_t Advertising_Interval_Min,
1149 uint16_t Advertising_Interval_Max,
1150 uint8_t Advertising_Type,
1151 uint8_t Own_Address_Type,
1152 uint8_t Adv_Data_Length,
1153 uint8_t Adv_Data[],
1154 uint8_t Num_of_Whitelist_Entries,
1155 Whitelist_Entry_t Whitelist_Entry[])
1156 {
1157 struct hci_request rq;
1158 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1159 aci_gap_set_broadcast_mode_cp0 *cp0 = (aci_gap_set_broadcast_mode_cp0*)(cmd_buffer);
1160 aci_gap_set_broadcast_mode_cp1 *cp1 = (aci_gap_set_broadcast_mode_cp1*)(cmd_buffer + 2 + 2 + 1 + 1 + 1 + Adv_Data_Length * (sizeof(uint8_t)));
1161 tBleStatus status = 0;
1162 int index_input = 0;
1163 cp0->Advertising_Interval_Min = htob(Advertising_Interval_Min, 2);
1164 index_input += 2;
1165 cp0->Advertising_Interval_Max = htob(Advertising_Interval_Max, 2);
1166 index_input += 2;
1167 cp0->Advertising_Type = htob(Advertising_Type, 1);
1168 index_input += 1;
1169 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
1170 index_input += 1;
1171 cp0->Adv_Data_Length = htob(Adv_Data_Length, 1);
1172 index_input += 1;
1173 /* var_len_data input */
1174 {
1175 Osal_MemCpy((void *) &cp0->Adv_Data, (const void *) Adv_Data, Adv_Data_Length);
1176 index_input += Adv_Data_Length;
1177 {
1178 cp1->Num_of_Whitelist_Entries = htob(Num_of_Whitelist_Entries, 1);
1179 }
1180 index_input += 1;
1181 Osal_MemCpy((void *) &cp1->Whitelist_Entry, (const void *) Whitelist_Entry, Num_of_Whitelist_Entries * (sizeof(Whitelist_Entry_t)));
1182 index_input += Num_of_Whitelist_Entries * (sizeof(Whitelist_Entry_t));
1183 }
1184 Osal_MemSet(&rq, 0, sizeof(rq));
1185 rq.ogf = 0x3f;
1186 rq.ocf = 0x0a1;
1187 rq.cparam = cmd_buffer;
1188 rq.clen = index_input;
1189 rq.rparam = &status;
1190 rq.rlen = 1;
1191 if (hci_send_req(&rq, FALSE) < 0)
1192 return BLE_STATUS_TIMEOUT;
1193 if (status)
1194 {
1195 return status;
1196 }
1197 return BLE_STATUS_SUCCESS;
1198 }
1199
aci_gap_start_observation_proc(uint16_t LE_Scan_Interval,uint16_t LE_Scan_Window,uint8_t LE_Scan_Type,uint8_t Own_Address_Type,uint8_t Filter_Duplicates,uint8_t Scanning_Filter_Policy)1200 tBleStatus aci_gap_start_observation_proc(uint16_t LE_Scan_Interval,
1201 uint16_t LE_Scan_Window,
1202 uint8_t LE_Scan_Type,
1203 uint8_t Own_Address_Type,
1204 uint8_t Filter_Duplicates,
1205 uint8_t Scanning_Filter_Policy)
1206 {
1207 struct hci_request rq;
1208 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1209 aci_gap_start_observation_proc_cp0 *cp0 = (aci_gap_start_observation_proc_cp0*)(cmd_buffer);
1210 tBleStatus status = 0;
1211 int index_input = 0;
1212 cp0->LE_Scan_Interval = htob(LE_Scan_Interval, 2);
1213 index_input += 2;
1214 cp0->LE_Scan_Window = htob(LE_Scan_Window, 2);
1215 index_input += 2;
1216 cp0->LE_Scan_Type = htob(LE_Scan_Type, 1);
1217 index_input += 1;
1218 cp0->Own_Address_Type = htob(Own_Address_Type, 1);
1219 index_input += 1;
1220 cp0->Filter_Duplicates = htob(Filter_Duplicates, 1);
1221 index_input += 1;
1222 cp0->Scanning_Filter_Policy = htob(Scanning_Filter_Policy, 1);
1223 index_input += 1;
1224 Osal_MemSet(&rq, 0, sizeof(rq));
1225 rq.ogf = 0x3f;
1226 rq.ocf = 0x0a2;
1227 rq.event = 0x0F;
1228 rq.cparam = cmd_buffer;
1229 rq.clen = index_input;
1230 rq.rparam = &status;
1231 rq.rlen = 1;
1232 if (hci_send_req(&rq, FALSE) < 0)
1233 return BLE_STATUS_TIMEOUT;
1234 if (status)
1235 {
1236 return status;
1237 }
1238 return BLE_STATUS_SUCCESS;
1239 }
1240
aci_gap_get_bonded_devices(uint8_t * Num_of_Addresses,Bonded_Device_Entry_t Bonded_Device_Entry[])1241 tBleStatus aci_gap_get_bonded_devices(uint8_t *Num_of_Addresses,
1242 Bonded_Device_Entry_t Bonded_Device_Entry[])
1243 {
1244 struct hci_request rq;
1245 aci_gap_get_bonded_devices_rp0 resp;
1246 Osal_MemSet(&resp, 0, sizeof(resp));
1247 Osal_MemSet(&rq, 0, sizeof(rq));
1248 rq.ogf = 0x3f;
1249 rq.ocf = 0x0a3;
1250 rq.rparam = &resp;
1251 rq.rlen = sizeof(resp);
1252 if (hci_send_req(&rq, FALSE) < 0)
1253 return BLE_STATUS_TIMEOUT;
1254 if (resp.Status)
1255 {
1256 return resp.Status;
1257 }
1258 *Num_of_Addresses = btoh(resp.Num_of_Addresses, 1);
1259 Osal_MemCpy((void *) Bonded_Device_Entry, (const void *) resp.Bonded_Device_Entry, *Num_of_Addresses * (sizeof(Bonded_Device_Entry_t)));
1260 return BLE_STATUS_SUCCESS;
1261 }
1262
aci_gap_is_device_bonded(uint8_t Peer_Address_Type,uint8_t Peer_Address[6])1263 tBleStatus aci_gap_is_device_bonded(uint8_t Peer_Address_Type,
1264 uint8_t Peer_Address[6])
1265 {
1266 struct hci_request rq;
1267 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1268 aci_gap_is_device_bonded_cp0 *cp0 = (aci_gap_is_device_bonded_cp0*)(cmd_buffer);
1269 tBleStatus status = 0;
1270 int index_input = 0;
1271 cp0->Peer_Address_Type = htob(Peer_Address_Type, 1);
1272 index_input += 1;
1273 Osal_MemCpy((void *) &cp0->Peer_Address, (const void *) Peer_Address, 6);
1274 index_input += 6;
1275 Osal_MemSet(&rq, 0, sizeof(rq));
1276 rq.ogf = 0x3f;
1277 rq.ocf = 0x0a4;
1278 rq.cparam = cmd_buffer;
1279 rq.clen = index_input;
1280 rq.rparam = &status;
1281 rq.rlen = 1;
1282 if (hci_send_req(&rq, FALSE) < 0)
1283 return BLE_STATUS_TIMEOUT;
1284 if (status)
1285 {
1286 return status;
1287 }
1288 return BLE_STATUS_SUCCESS;
1289 }
1290
aci_gap_numeric_comparison_value_confirm_yesno(uint16_t Connection_Handle,uint8_t Confirm_Yes_No)1291 tBleStatus aci_gap_numeric_comparison_value_confirm_yesno(uint16_t Connection_Handle,
1292 uint8_t Confirm_Yes_No)
1293 {
1294 struct hci_request rq;
1295 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1296 aci_gap_numeric_comparison_value_confirm_yesno_cp0 *cp0 = (aci_gap_numeric_comparison_value_confirm_yesno_cp0*)(cmd_buffer);
1297 tBleStatus status = 0;
1298 int index_input = 0;
1299 cp0->Connection_Handle = htob(Connection_Handle, 2);
1300 index_input += 2;
1301 cp0->Confirm_Yes_No = htob(Confirm_Yes_No, 1);
1302 index_input += 1;
1303 Osal_MemSet(&rq, 0, sizeof(rq));
1304 rq.ogf = 0x3f;
1305 rq.ocf = 0x0a5;
1306 rq.cparam = cmd_buffer;
1307 rq.clen = index_input;
1308 rq.rparam = &status;
1309 rq.rlen = 1;
1310 if (hci_send_req(&rq, FALSE) < 0)
1311 return BLE_STATUS_TIMEOUT;
1312 if (status)
1313 {
1314 return status;
1315 }
1316 return BLE_STATUS_SUCCESS;
1317 }
1318
aci_gap_passkey_input(uint16_t Connection_Handle,uint8_t Input_Type)1319 tBleStatus aci_gap_passkey_input(uint16_t Connection_Handle,
1320 uint8_t Input_Type)
1321 {
1322 struct hci_request rq;
1323 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1324 aci_gap_passkey_input_cp0 *cp0 = (aci_gap_passkey_input_cp0*)(cmd_buffer);
1325 tBleStatus status = 0;
1326 int index_input = 0;
1327 cp0->Connection_Handle = htob(Connection_Handle, 2);
1328 index_input += 2;
1329 cp0->Input_Type = htob(Input_Type, 1);
1330 index_input += 1;
1331 Osal_MemSet(&rq, 0, sizeof(rq));
1332 rq.ogf = 0x3f;
1333 rq.ocf = 0x0a6;
1334 rq.cparam = cmd_buffer;
1335 rq.clen = index_input;
1336 rq.rparam = &status;
1337 rq.rlen = 1;
1338 if (hci_send_req(&rq, FALSE) < 0)
1339 return BLE_STATUS_TIMEOUT;
1340 if (status)
1341 {
1342 return status;
1343 }
1344 return BLE_STATUS_SUCCESS;
1345 }
1346
aci_gap_get_oob_data(uint8_t OOB_Data_Type,uint8_t * Address_Type,uint8_t Address[6],uint8_t * OOB_Data_Len,uint8_t OOB_Data[16])1347 tBleStatus aci_gap_get_oob_data(uint8_t OOB_Data_Type,
1348 uint8_t *Address_Type,
1349 uint8_t Address[6],
1350 uint8_t *OOB_Data_Len,
1351 uint8_t OOB_Data[16])
1352 {
1353 struct hci_request rq;
1354 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1355 aci_gap_get_oob_data_cp0 *cp0 = (aci_gap_get_oob_data_cp0*)(cmd_buffer);
1356 aci_gap_get_oob_data_rp0 resp;
1357 Osal_MemSet(&resp, 0, sizeof(resp));
1358 int index_input = 0;
1359 cp0->OOB_Data_Type = htob(OOB_Data_Type, 1);
1360 index_input += 1;
1361 Osal_MemSet(&rq, 0, sizeof(rq));
1362 rq.ogf = 0x3f;
1363 rq.ocf = 0x0a7;
1364 rq.cparam = cmd_buffer;
1365 rq.clen = index_input;
1366 rq.rparam = &resp;
1367 rq.rlen = sizeof(resp);
1368 if (hci_send_req(&rq, FALSE) < 0)
1369 return BLE_STATUS_TIMEOUT;
1370 if (resp.Status)
1371 {
1372 return resp.Status;
1373 }
1374 *Address_Type = btoh(resp.Address_Type, 1);
1375 Osal_MemCpy((void *) Address, (const void *) resp.Address, 6);
1376 *OOB_Data_Len = btoh(resp.OOB_Data_Len, 1);
1377 Osal_MemCpy((void *) OOB_Data, (const void *) resp.OOB_Data, 16);
1378 return BLE_STATUS_SUCCESS;
1379 }
1380
aci_gap_set_oob_data(uint8_t Device_Type,uint8_t Address_Type,uint8_t Address[6],uint8_t OOB_Data_Type,uint8_t OOB_Data_Len,uint8_t OOB_Data[16])1381 tBleStatus aci_gap_set_oob_data(uint8_t Device_Type,
1382 uint8_t Address_Type,
1383 uint8_t Address[6],
1384 uint8_t OOB_Data_Type,
1385 uint8_t OOB_Data_Len,
1386 uint8_t OOB_Data[16])
1387 {
1388 struct hci_request rq;
1389 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1390 aci_gap_set_oob_data_cp0 *cp0 = (aci_gap_set_oob_data_cp0*)(cmd_buffer);
1391 tBleStatus status = 0;
1392 int index_input = 0;
1393 cp0->Device_Type = htob(Device_Type, 1);
1394 index_input += 1;
1395 cp0->Address_Type = htob(Address_Type, 1);
1396 index_input += 1;
1397 Osal_MemCpy((void *) &cp0->Address, (const void *) Address, 6);
1398 index_input += 6;
1399 cp0->OOB_Data_Type = htob(OOB_Data_Type, 1);
1400 index_input += 1;
1401 cp0->OOB_Data_Len = htob(OOB_Data_Len, 1);
1402 index_input += 1;
1403 Osal_MemCpy((void *) &cp0->OOB_Data, (const void *) OOB_Data, 16);
1404 index_input += 16;
1405 Osal_MemSet(&rq, 0, sizeof(rq));
1406 rq.ogf = 0x3f;
1407 rq.ocf = 0x0a8;
1408 rq.cparam = cmd_buffer;
1409 rq.clen = index_input;
1410 rq.rparam = &status;
1411 rq.rlen = 1;
1412 if (hci_send_req(&rq, FALSE) < 0)
1413 return BLE_STATUS_TIMEOUT;
1414 if (status)
1415 {
1416 return status;
1417 }
1418 return BLE_STATUS_SUCCESS;
1419 }
1420
aci_gap_add_devices_to_resolving_list(uint8_t Num_of_Resolving_list_Entries,Whitelist_Identity_Entry_t Whitelist_Identity_Entry[],uint8_t Clear_Resolving_List)1421 tBleStatus aci_gap_add_devices_to_resolving_list(uint8_t Num_of_Resolving_list_Entries,
1422 Whitelist_Identity_Entry_t Whitelist_Identity_Entry[],
1423 uint8_t Clear_Resolving_List)
1424 {
1425 struct hci_request rq;
1426 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1427 aci_gap_add_devices_to_resolving_list_cp0 *cp0 = (aci_gap_add_devices_to_resolving_list_cp0*)(cmd_buffer);
1428 aci_gap_add_devices_to_resolving_list_cp1 *cp1 = (aci_gap_add_devices_to_resolving_list_cp1*)(cmd_buffer + 1 + Num_of_Resolving_list_Entries * (sizeof(Whitelist_Identity_Entry_t)));
1429 tBleStatus status = 0;
1430 int index_input = 0;
1431 cp0->Num_of_Resolving_list_Entries = htob(Num_of_Resolving_list_Entries, 1);
1432 index_input += 1;
1433 /* var_len_data input */
1434 {
1435 Osal_MemCpy((void *) &cp0->Whitelist_Identity_Entry, (const void *) Whitelist_Identity_Entry, Num_of_Resolving_list_Entries * (sizeof(Whitelist_Identity_Entry_t)));
1436 index_input += Num_of_Resolving_list_Entries * (sizeof(Whitelist_Identity_Entry_t));
1437 {
1438 cp1->Clear_Resolving_List = htob(Clear_Resolving_List, 1);
1439 }
1440 index_input += 1;
1441 }
1442 Osal_MemSet(&rq, 0, sizeof(rq));
1443 rq.ogf = 0x3f;
1444 rq.ocf = 0x0a9;
1445 rq.cparam = cmd_buffer;
1446 rq.clen = index_input;
1447 rq.rparam = &status;
1448 rq.rlen = 1;
1449 if (hci_send_req(&rq, FALSE) < 0)
1450 return BLE_STATUS_TIMEOUT;
1451 if (status)
1452 {
1453 return status;
1454 }
1455 return BLE_STATUS_SUCCESS;
1456 }
1457
aci_gap_remove_bonded_device(uint8_t Peer_Identity_Address_Type,uint8_t Peer_Identity_Address[6])1458 tBleStatus aci_gap_remove_bonded_device(uint8_t Peer_Identity_Address_Type,
1459 uint8_t Peer_Identity_Address[6])
1460 {
1461 struct hci_request rq;
1462 uint8_t cmd_buffer[BLE_CMD_MAX_PARAM_LEN];
1463 aci_gap_remove_bonded_device_cp0 *cp0 = (aci_gap_remove_bonded_device_cp0*)(cmd_buffer);
1464 tBleStatus status = 0;
1465 int index_input = 0;
1466 cp0->Peer_Identity_Address_Type = htob(Peer_Identity_Address_Type, 1);
1467 index_input += 1;
1468 Osal_MemCpy((void *) &cp0->Peer_Identity_Address, (const void *) Peer_Identity_Address, 6);
1469 index_input += 6;
1470 Osal_MemSet(&rq, 0, sizeof(rq));
1471 rq.ogf = 0x3f;
1472 rq.ocf = 0x0aa;
1473 rq.cparam = cmd_buffer;
1474 rq.clen = index_input;
1475 rq.rparam = &status;
1476 rq.rlen = 1;
1477 if (hci_send_req(&rq, FALSE) < 0)
1478 return BLE_STATUS_TIMEOUT;
1479 if (status)
1480 {
1481 return status;
1482 }
1483 return BLE_STATUS_SUCCESS;
1484 }
1485
1486