xref: /btstack/src/btstack_defines.h (revision f7a05cdac4554088ea7e456e8f64fd1b4bef94ac)
1 /*
2  * Copyright (C) 2015 BlueKitchen GmbH
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the copyright holders nor the names of
14  *    contributors may be used to endorse or promote products derived
15  *    from this software without specific prior written permission.
16  * 4. Any redistribution, use, or modification is done solely for
17  *    personal benefit and not for any commercial purpose or for
18  *    monetary gain.
19  *
20  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
24  * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  *
33  * Please inquire about commercial licensing options at
34  * [email protected]
35  *
36  */
37 
38 /*
39  * btstack-defines.h
40  *
41  * BTstack definitions, events, and error codes */
42 
43 #ifndef __BTSTACK_DEFINES_H
44 #define __BTSTACK_DEFINES_H
45 
46 /**
47  * Address types
48  * @note: BTstack uses a custom addr type to refer to classic ACL and SCO devices
49  */
50  typedef enum {
51     BD_ADDR_TYPE_LE_PUBLIC = 0,
52     BD_ADDR_TYPE_LE_RANDOM = 1,
53     BD_ADDR_TYPE_SCO       = 0xfe,
54     BD_ADDR_TYPE_CLASSIC   = 0xff,
55     BD_ADDR_TYPE_UNKNOWN   = 0xfe
56  } bd_addr_type_t;
57 
58 // DEFINES
59 
60 #define DAEMON_EVENT_PACKET     0x05
61 
62 // L2CAP data
63 #define L2CAP_DATA_PACKET       0x06
64 
65 // RFCOMM data
66 #define RFCOMM_DATA_PACKET      0x07
67 
68 // Attribute protocol data
69 #define ATT_DATA_PACKET         0x08
70 
71 // Security Manager protocol data
72 #define SM_DATA_PACKET          0x09
73 
74 // SDP query result
75 // format: type (8), record_id (16), attribute_id (16), attribute_length (16), attribute_value (max 1k)
76 #define SDP_CLIENT_PACKET       0x0a
77 
78 // BNEP data
79 #define BNEP_DATA_PACKET        0x0b
80 
81 // Unicast Connectionless Data
82 #define UCD_DATA_PACKET         0x0c
83 
84 // debug log messages
85 #define LOG_MESSAGE_PACKET      0xfc
86 
87 
88 // ERRORS
89 
90 // last error code in 2.1 is 0x38 - we start with 0x50 for BTstack errors
91 #define BTSTACK_CONNECTION_TO_BTDAEMON_FAILED              0x50
92 #define BTSTACK_ACTIVATION_FAILED_SYSTEM_BLUETOOTH         0x51
93 #define BTSTACK_ACTIVATION_POWERON_FAILED                  0x52
94 #define BTSTACK_ACTIVATION_FAILED_UNKNOWN                  0x53
95 #define BTSTACK_NOT_ACTIVATED                              0x54
96 #define BTSTACK_BUSY                                       0x55
97 #define BTSTACK_MEMORY_ALLOC_FAILED                        0x56
98 #define BTSTACK_ACL_BUFFERS_FULL                           0x57
99 
100 // l2cap errors - enumeration by the command that created them
101 #define L2CAP_COMMAND_REJECT_REASON_COMMAND_NOT_UNDERSTOOD 0x60
102 #define L2CAP_COMMAND_REJECT_REASON_SIGNALING_MTU_EXCEEDED 0x61
103 #define L2CAP_COMMAND_REJECT_REASON_INVALID_CID_IN_REQUEST 0x62
104 
105 #define L2CAP_CONNECTION_RESPONSE_RESULT_SUCCESSFUL        0x63
106 #define L2CAP_CONNECTION_RESPONSE_RESULT_PENDING           0x64
107 #define L2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_PSM       0x65
108 #define L2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_SECURITY  0x66
109 #define L2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_RESOURCES 0x67
110 #define L2CAP_CONNECTION_RESPONSE_RESULT_RTX_TIMEOUT       0x68
111 
112 #define L2CAP_SERVICE_ALREADY_REGISTERED                   0x69
113 #define L2CAP_DATA_LEN_EXCEEDS_REMOTE_MTU                  0x6A
114 
115 #define RFCOMM_MULTIPLEXER_STOPPED                         0x70
116 #define RFCOMM_CHANNEL_ALREADY_REGISTERED                  0x71
117 #define RFCOMM_NO_OUTGOING_CREDITS                         0x72
118 #define RFCOMM_AGGREGATE_FLOW_OFF                          0x73
119 #define RFCOMM_DATA_LEN_EXCEEDS_MTU                        0x74
120 
121 #define SDP_HANDLE_ALREADY_REGISTERED                      0x80
122 #define SDP_QUERY_INCOMPLETE                               0x81
123 #define SDP_SERVICE_NOT_FOUND                              0x82
124 #define SDP_HANDLE_INVALID                                 0x83
125 
126 #define ATT_HANDLE_VALUE_INDICATION_IN_PORGRESS            0x90
127 #define ATT_HANDLE_VALUE_INDICATION_TIMEOUT                0x91
128 
129 #define GATT_CLIENT_NOT_CONNECTED                          0x93
130 #define GATT_CLIENT_BUSY                                   0x94
131 #define GATT_CLIENT_IN_WRONG_STATE                         0x95
132 #define GATT_CLIENT_DIFFERENT_CONTEXT_FOR_ADDRESS_ALREADY_EXISTS 0x96
133 #define GATT_CLIENT_VALUE_TOO_LONG                         0x97
134 #define GATT_CLIENT_CHARACTERISTIC_NOTIFICATION_NOT_SUPPORTED 0x98
135 #define GATT_CLIENT_CHARACTERISTIC_INDICATION_NOT_SUPPORTED   0x99
136 
137 #define BNEP_SERVICE_ALREADY_REGISTERED                    0xA0
138 #define BNEP_CHANNEL_NOT_CONNECTED                         0xA1
139 #define BNEP_DATA_LEN_EXCEEDS_MTU                          0xA2
140 
141 // COMMANDS
142 
143 #define OGF_BTSTACK 0x3d
144 
145 // cmds for BTstack
146 // get state: @returns HCI_STATE
147 #define BTSTACK_GET_STATE                                  0x01
148 
149 // set power mode: @param HCI_POWER_MODE
150 #define BTSTACK_SET_POWER_MODE                             0x02
151 
152 // set capture mode: @param on
153 #define BTSTACK_SET_ACL_CAPTURE_MODE                       0x03
154 
155 // get BTstack version
156 #define BTSTACK_GET_VERSION                                0x04
157 
158 // get system Bluetooth state
159 #define BTSTACK_GET_SYSTEM_BLUETOOTH_ENABLED               0x05
160 
161 // set system Bluetooth state
162 #define BTSTACK_SET_SYSTEM_BLUETOOTH_ENABLED               0x06
163 
164 // enable inquiry scan for this client
165 #define BTSTACK_SET_DISCOVERABLE                           0x07
166 
167 // set global Bluetooth state
168 #define BTSTACK_SET_BLUETOOTH_ENABLED                      0x08
169 
170 // create l2cap channel: @param bd_addr(48), psm (16)
171 #define L2CAP_CREATE_CHANNEL                               0x20
172 
173 // disconnect l2cap disconnect, @param channel(16), reason(8)
174 #define L2CAP_DISCONNECT                                   0x21
175 
176 // register l2cap service: @param psm(16), mtu (16)
177 #define L2CAP_REGISTER_SERVICE                             0x22
178 
179 // unregister l2cap disconnect, @param psm(16)
180 #define L2CAP_UNREGISTER_SERVICE                           0x23
181 
182 // accept connection @param bd_addr(48), dest cid (16)
183 #define L2CAP_ACCEPT_CONNECTION                            0x24
184 
185 // decline l2cap disconnect,@param bd_addr(48), dest cid (16), reason(8)
186 #define L2CAP_DECLINE_CONNECTION                           0x25
187 
188 // create l2cap channel: @param bd_addr(48), psm (16), mtu (16)
189 #define L2CAP_CREATE_CHANNEL_MTU                           0x26
190 
191 // register SDP Service Record: service record (size)
192 #define SDP_REGISTER_SERVICE_RECORD                        0x30
193 
194 // unregister SDP Service Record
195 #define SDP_UNREGISTER_SERVICE_RECORD                      0x31
196 
197 // Get remote RFCOMM services
198 #define SDP_CLIENT_QUERY_RFCOMM_SERVICES                   0x32
199 
200 // Get remote SDP services
201 #define SDP_CLIENT_QUERY_SERVICES                          0x33
202 
203 // RFCOMM "HCI" Commands
204 #define RFCOMM_CREATE_CHANNEL       0x40
205 #define RFCOMM_DISCONNECT     0x41
206 #define RFCOMM_REGISTER_SERVICE     0x42
207 #define RFCOMM_UNREGISTER_SERVICE   0x43
208 #define RFCOMM_ACCEPT_CONNECTION    0x44
209 #define RFCOMM_DECLINE_CONNECTION   0x45
210 #define RFCOMM_PERSISTENT_CHANNEL   0x46
211 #define RFCOMM_CREATE_CHANNEL_WITH_CREDITS   0x47
212 #define RFCOMM_REGISTER_SERVICE_WITH_CREDITS 0x48
213 #define RFCOMM_GRANT_CREDITS                 0x49
214 
215 // GAP Classic 0x50
216 #define GAP_DISCONNECT              0x50
217 
218 // GAP LE      0x60
219 #define GAP_LE_SCAN_START           0x60
220 #define GAP_LE_SCAN_STOP            0x61
221 #define GAP_LE_CONNECT              0x62
222 #define GAP_LE_CONNECT_CANCEL       0x63
223 #define GAP_LE_SET_SCAN_PARAMETERS  0x64
224 
225 // GATT (Client) 0x70
226 #define GATT_DISCOVER_ALL_PRIMARY_SERVICES                       0x70
227 #define GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID16                 0x71
228 #define GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID128                0x72
229 #define GATT_FIND_INCLUDED_SERVICES_FOR_SERVICE                  0x73
230 #define GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE                0x74
231 #define GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE_BY_UUID128     0x75
232 #define GATT_DISCOVER_CHARACTERISTIC_DESCRIPTORS                 0x76
233 #define GATT_READ_VALUE_OF_CHARACTERISTIC                        0x77
234 #define GATT_READ_LONG_VALUE_OF_CHARACTERISTIC                   0x78
235 #define GATT_WRITE_VALUE_OF_CHARACTERISTIC_WITHOUT_RESPONSE      0x79
236 #define GATT_WRITE_VALUE_OF_CHARACTERISTIC                       0x7A
237 #define GATT_WRITE_LONG_VALUE_OF_CHARACTERISTIC                  0x7B
238 #define GATT_RELIABLE_WRITE_LONG_VALUE_OF_CHARACTERISTIC         0x7C
239 #define GATT_READ_CHARACTERISTIC_DESCRIPTOR                      0X7D
240 #define GATT_READ_LONG_CHARACTERISTIC_DESCRIPTOR                 0X7E
241 #define GATT_WRITE_CHARACTERISTIC_DESCRIPTOR                     0X7F
242 #define GATT_WRITE_LONG_CHARACTERISTIC_DESCRIPTOR                0X80
243 #define GATT_WRITE_CLIENT_CHARACTERISTIC_CONFIGURATION           0X81
244 #define GATT_GET_MTU                                             0x82
245 
246 
247 // EVENTS
248 
249 /**
250  * @format 1
251  * @param state
252  */
253 #define BTSTACK_EVENT_STATE                                0x60
254 
255 // data: event(8), len(8), nr hci connections
256 #define BTSTACK_EVENT_NR_CONNECTIONS_CHANGED               0x61
257 
258 /**
259  * @format
260  */
261 #define BTSTACK_EVENT_POWERON_FAILED                       0x62
262 
263 /**
264  * @format 112
265  * @param major
266  * @param minor
267  @ @param revision
268  */
269 #define BTSTACK_EVENT_VERSION                              0x63
270 
271 // data: system bluetooth on/off (bool)
272 #define BTSTACK_EVENT_SYSTEM_BLUETOOTH_ENABLED             0x64
273 
274 // data: event (8), len(8), status (8) == 0, address (48), name (1984 bits = 248 bytes)
275 #define BTSTACK_EVENT_REMOTE_NAME_CACHED                   0x65
276 
277 // data: discoverable enabled (bool)
278 #define BTSTACK_EVENT_DISCOVERABLE_ENABLED                 0x66
279 
280 // Daemon Events used internally
281 
282 // data: event(8)
283 #define DAEMON_EVENT_CONNECTION_OPENED                     0x68
284 
285 // data: event(8)
286 #define DAEMON_EVENT_CONNECTION_CLOSED                     0x69
287 
288 // data: event(8), nr_connections(8)
289 #define DAEMON_NR_CONNECTIONS_CHANGED                      0x6A
290 
291 // data: event(8)
292 #define DAEMON_EVENT_NEW_RFCOMM_CREDITS                    0x6B
293 
294 // data: event(8)
295 #define DAEMON_EVENT_HCI_PACKET_SENT                       0x6C
296 
297 // L2CAP EVENTS
298 
299 // data: event (8), len(8), status (8), address(48), handle (16), psm (16), local_cid(16), remote_cid (16), local_mtu(16), remote_mtu(16), flush_timeout(16)
300 #define L2CAP_EVENT_CHANNEL_OPENED                         0x70
301 
302 // data: event (8), len(8), channel (16)
303 #define L2CAP_EVENT_CHANNEL_CLOSED                         0x71
304 
305 // data: event (8), len(8), address(48), handle (16), psm (16), local_cid(16), remote_cid (16)
306 #define L2CAP_EVENT_INCOMING_CONNECTION                    0x72
307 
308 // data: event(8), len(8), handle(16)
309 #define L2CAP_EVENT_TIMEOUT_CHECK                          0x73
310 
311 // data: event(8), len(8), local_cid(16), credits(8)
312 #define L2CAP_EVENT_CREDITS                                0x74
313 
314 // data: event(8), len(8), status (8), psm (16)
315 #define L2CAP_EVENT_SERVICE_REGISTERED                     0x75
316 
317 // data: event(8), len(8), handle(16), interval min(16), interval max(16), latency(16), timeout multiplier(16)
318 #define L2CAP_EVENT_CONNECTION_PARAMETER_UPDATE_REQUEST    0x76
319 
320 // data: event(8), len(8), handle(16), result (16) (0 == ok, 1 == fail)
321 #define L2CAP_EVENT_CONNECTION_PARAMETER_UPDATE_RESPONSE   0x77
322 
323 // RFCOMM EVENTS
324 /**
325  * @format 1B2122
326  * @param status
327  * @param bd_addr
328  * @param con_handle
329  * @param server_channel
330  * @param rfcomm_cid
331  * @param max_frame_size
332  */
333 #define RFCOMM_EVENT_OPEN_CHANNEL_COMPLETE                 0x80
334 
335 /**
336  * @format 2
337  * @param rfcomm_cid
338  */
339 #define RFCOMM_EVENT_CHANNEL_CLOSED                        0x81
340 
341 /**
342  * @format B12
343  * @param bd_addr
344  * @param server_channel
345  * @param rfcomm_cid
346  */
347 #define RFCOMM_EVENT_INCOMING_CONNECTION                   0x82
348 
349 /**
350  * @format 21
351  * @param rfcomm_cid
352  * @param line_status
353  */
354 #define RFCOMM_EVENT_REMOTE_LINE_STATUS                    0x83
355 
356 /**
357  * @format 21
358  * @param rfcomm_cid
359  * @param credits
360  */
361 #define RFCOMM_EVENT_CREDITS                               0x84
362 
363 /**
364  * @format 11
365  * @param status
366  * @param channel_id
367  */
368 #define RFCOMM_EVENT_SERVICE_REGISTERED                    0x85
369 
370 /**
371  * @format 11
372  * @param status
373  * @param server_channel_id
374  */
375 #define RFCOMM_EVENT_PERSISTENT_CHANNEL                    0x86
376 
377 // data: event (8), len(8), rfcomm_cid (16), modem status (8)
378 
379 /**
380  * @format 21
381  * @param rfcomm_cid
382  * @param modem_status
383  */
384 #define RFCOMM_EVENT_REMOTE_MODEM_STATUS                   0x87
385 
386 // data: event (8), len(8), rfcomm_cid (16), rpn_data_t (67)
387  /**
388   * TODO: format for variable data
389   * @param rfcomm_cid
390   * @param rpn_data
391   */
392 #define RFCOMM_EVENT_PORT_CONFIGURATION                    0x88
393 
394 
395 // data: event(8), len(8), status(8), service_record_handle(32)
396  /**
397   * @format 14
398   * @param status
399   * @param service_record_handle
400   */
401 #define SDP_SERVICE_REGISTERED                             0x90
402 
403 // data: event(8), len(8), status(8)
404 /**
405  * @format 1
406  * @param status
407  */
408 #define SDP_QUERY_COMPLETE                                 0x91
409 
410 // data: event(8), len(8), rfcomm channel(8), name(var)
411 /**
412  * @format 1T
413  * @param rfcomm_channel
414  * @param name
415  * @brief SDP_QUERY_RFCOMM_SERVICE 0x92
416  */
417 #define SDP_QUERY_RFCOMM_SERVICE                           0x92
418 
419 // data: event(8), len(8), record nr(16), attribute id(16), attribute value(var)
420 /**
421  * TODO: format for variable data
422  * @param record_nr
423  * @param attribute_id
424  * @param attribute_value
425  */
426 #define SDP_QUERY_ATTRIBUTE_VALUE                          0x93
427 
428 // not provided by daemon, only used for internal testing
429 #define SDP_QUERY_SERVICE_RECORD_HANDLE                    0x94
430 
431 /**
432  * @format H1
433  * @param handle
434  * @param status
435  */
436 #define GATT_QUERY_COMPLETE                                0xA0
437 
438 /**
439  * @format HX
440  * @param handle
441  * @param service
442  */
443 #define GATT_SERVICE_QUERY_RESULT                          0xA1
444 
445 /**
446  * @format HY
447  * @param handle
448  * @param characteristic
449  */
450 #define GATT_CHARACTERISTIC_QUERY_RESULT                   0xA2
451 
452 /**
453  * @format H2X
454  * @param handle
455  * @param include_handle
456  * @param service
457  */
458 #define GATT_INCLUDED_SERVICE_QUERY_RESULT                 0xA3
459 
460 /**
461  * @format HZ
462  * @param handle
463  * @param characteristic_descriptor
464  */
465 #define GATT_ALL_CHARACTERISTIC_DESCRIPTORS_QUERY_RESULT   0xA4
466 
467 /**
468  * @format H2LV
469  * @param handle
470  * @param value_handle
471  * @param value_length
472  * @param value
473  */
474 #define GATT_CHARACTERISTIC_VALUE_QUERY_RESULT             0xA5
475 
476 /**
477  * @format H22LV
478  * @param handle
479  * @param value_handle
480  * @param value_offset
481  * @param value_length
482  * @param value
483  */
484 #define GATT_LONG_CHARACTERISTIC_VALUE_QUERY_RESULT        0xA6
485 
486 /**
487  * @format H2LV
488  * @param handle
489  * @param value_handle
490  * @param value_length
491  * @param value
492  */
493 #define GATT_NOTIFICATION                                  0xA7
494 
495 /**
496  * @format H2LV
497  * @param handle
498  * @param value_handle
499  * @param value_length
500  * @param value
501  */
502 #define GATT_INDICATION                                    0xA8
503 
504 /**
505  * @format H2LV
506  * @param descriptor_handle
507  * @param descriptor_length
508  * @param descriptor
509  */
510 #define GATT_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT        0xA9
511 
512 /**
513  * @format H2LV
514  * @param handle
515  * @param descriptor_offset
516  * @param descriptor_length
517  * @param descriptor
518  */
519 #define GATT_LONG_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT   0xAA
520 
521 /**
522  * @format H2
523  * @param handle
524  * @param MTU
525  */
526 #define GATT_MTU                                           0xAB
527 
528 /**
529  * @format H2
530  * @param handle
531  * @param MTU
532  */
533 #define ATT_MTU_EXCHANGE_COMPLETE                          0xB5
534 
535 // data: event(8), len(8), status (8), hci_handle (16), attribute_handle (16)
536 #define ATT_HANDLE_VALUE_INDICATION_COMPLETE               0xB6
537 
538 
539 // data: event(8), len(8), status (8), bnep service uuid (16)
540 #define BNEP_EVENT_SERVICE_REGISTERED                      0xC0
541 
542 // data: event(8), len(8), status (8), bnep source uuid (16), bnep destination uuid (16), mtu (16), remote_address (48)
543 #define BNEP_EVENT_OPEN_CHANNEL_COMPLETE                   0xC1
544 
545 // data: event(8), len(8), bnep source uuid (16), bnep destination uuid (16), remote_address (48)
546 #define BNEP_EVENT_CHANNEL_CLOSED                          0xC2
547 
548 // data: event(8), len(8), bnep source uuid (16), bnep destination uuid (16), remote_address (48), channel state (8)
549 #define BNEP_EVENT_CHANNEL_TIMEOUT                         0xC3
550 
551 // data: event(8), len(8)
552 #define BNEP_EVENT_READY_TO_SEND                           0xC4
553 
554  /**
555   * @format H1B
556   * @param handle
557   * @param addr_type
558   * @param address
559   */
560 #define SM_JUST_WORKS_REQUEST                              0xD0
561 
562  /**
563   * @format H1B
564   * @param handle
565   * @param addr_type
566   * @param address
567   */
568 #define SM_JUST_WORKS_CANCEL                               0xD1
569 
570  /**
571   * @format H1B4
572   * @param handle
573   * @param addr_type
574   * @param address
575   * @param passkey
576   */
577 #define SM_PASSKEY_DISPLAY_NUMBER                          0xD2
578 
579  /**
580   * @format H1B
581   * @param handle
582   * @param addr_type
583   * @param address
584   */
585 #define SM_PASSKEY_DISPLAY_CANCEL                          0xD3
586 
587  /**
588   * @format H1B421
589   * @param handle
590   * @param addr_type
591   * @param address
592   */
593 #define SM_PASSKEY_INPUT_NUMBER                            0xD4
594 
595  /**
596   * @format H1B
597   * @param handle
598   * @param addr_type
599   * @param address
600   */
601 #define SM_PASSKEY_INPUT_CANCEL                            0xD5
602 
603  /**
604   * @format H1B
605   * @param handle
606   * @param addr_type
607   * @param address
608   */
609 #define SM_IDENTITY_RESOLVING_STARTED                      0xD6
610 
611  /**
612   * @format H1B
613   * @param handle
614   * @param addr_type
615   * @param address
616   */
617 #define SM_IDENTITY_RESOLVING_FAILED                       0xD7
618 
619  /**
620   * @format H1B2
621   * @param handle
622   * @param addr_type
623   * @param address
624   * @param le_device_db_index
625   */
626 #define SM_IDENTITY_RESOLVING_SUCCEEDED                    0xD8
627 
628  /**
629   * @format H1B
630   * @param handle
631   * @param addr_type
632   * @param address
633   */
634 #define SM_AUTHORIZATION_REQUEST                           0xD9
635 
636  /**
637   * @format H1B1
638   * @param handle
639   * @param addr_type
640   * @param address
641   * @param authorization_result
642   */
643 #define SM_AUTHORIZATION_RESULT                            0xDA
644 
645 // GAP
646 
647 // data: event(8), len(8), hci_handle (16), security_level (8)
648 #define GAP_SECURITY_LEVEL                                 0xE0
649 
650 // data: event(8), len(8), status (8), bd_addr(48)
651 #define GAP_DEDICATED_BONDING_COMPLETED                    0xE1
652 
653 /**
654  * @format 11B1JV
655  * @param advertising_event_type
656  * @param address_type
657  * @param address
658  * @param rssi
659  * @param data_length
660  * @param data
661  */
662 #define GAP_LE_ADVERTISING_REPORT                          0xE2
663 
664 #define HCI_EVENT_HSP_META                                 0xE8
665 
666 #define HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE             0x01
667 #define HSP_SUBEVENT_AUDIO_DISCONNECTION_COMPLETE          0x02
668 #define HSP_SUBEVENT_MICROPHONE_GAIN_CHANGED               0x03
669 #define HSP_SUBEVENT_SPEAKER_GAIN_CHANGED                  0x04
670 #define HSP_SUBEVENT_HS_COMMAND                            0x05
671 #define HSP_SUBEVENT_AG_INDICATION                         0x06
672 #define HSP_SUBEVENT_ERROR                                 0x07
673 #define HSP_SUBEVENT_RING                                  0x08
674 
675 #define HCI_EVENT_HFP_META                                 0xE9
676 
677 #define HFP_SUBEVENT_SERVICE_LEVEL_CONNECTION_ESTABLISHED  0x01
678 #define HFP_SUBEVENT_SERVICE_LEVEL_CONNECTION_RELEASED     0x02
679 #define HFP_SUBEVENT_AUDIO_CONNECTION_ESTABLISHED          0x03
680 #define HFP_SUBEVENT_AUDIO_CONNECTION_RELEASED             0x04
681 #define HFP_SUBEVENT_COMPLETE                              0x05
682 #define HFP_SUBEVENT_AG_INDICATOR_STATUS_CHANGED           0x06
683 #define HFP_SUBEVENT_NETWORK_OPERATOR_CHANGED              0x07
684 #define HFP_SUBEVENT_EXTENDED_AUDIO_GATEWAY_ERROR          0x08
685 #define HFP_SUBEVENT_CODECS_CONNECTION_COMPLETE            0x09
686 #define HFP_SUBEVENT_AUDIO_CONNECTION_COMPLETE             0x0A
687 
688 // ANCS Client
689 #define ANCS_CLIENT_CONNECTED                              0xF0
690 #define ANCS_CLIENT_NOTIFICATION                           0xF1
691 #define ANCS_CLIENT_DISCONNECTED                           0xF2
692 
693 // #define HCI_EVENT_HFP_META                                 0xxx
694 // #define HCI_EVENT_GATT_META                                0xxx
695 // #define HCI_EVENT_SDP_META                                 0xxx
696 // #define HCI_EVENT_ANCS_META                                0xxx
697 // #define HCI_EVENT_SM_META                                  0xxx
698 // #define HCI_EVENT_GAP_META                                 0xxx
699 // #define HCI_EVENT_BNEP_META                                0xxx
700 // #define HCI_EVENT_PAN_META                                 0xxx
701 
702 #endif
703