xref: /btstack/src/btstack_defines.h (revision f8744dea348aac4ad28e54a0c199eaf60119842a)
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 #include <stdint.h>
47 #include "btstack_linked_list.h"
48 
49 // TYPES
50 
51 // packet handler
52 typedef void (*btstack_packet_handler_t) (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
53 
54 // packet callback supporting multiple registrations
55 typedef struct {
56     btstack_linked_item_t    item;
57     btstack_packet_handler_t callback;
58 } btstack_packet_callback_registration_t;
59 
60 /**
61  * @brief 128 bit key used with AES128 in Security Manager
62  */
63 typedef uint8_t sm_key_t[16];
64 
65 // DEFINES
66 
67 #define DAEMON_EVENT_PACKET     0x05
68 
69 // L2CAP data
70 #define L2CAP_DATA_PACKET       0x06
71 
72 // RFCOMM data
73 #define RFCOMM_DATA_PACKET      0x07
74 
75 // Attribute protocol data
76 #define ATT_DATA_PACKET         0x08
77 
78 // Security Manager protocol data
79 #define SM_DATA_PACKET          0x09
80 
81 // SDP query result
82 // format: type (8), record_id (16), attribute_id (16), attribute_length (16), attribute_value (max 1k)
83 #define SDP_CLIENT_PACKET       0x0a
84 
85 // BNEP data
86 #define BNEP_DATA_PACKET        0x0b
87 
88 // Unicast Connectionless Data
89 #define UCD_DATA_PACKET         0x0c
90 
91 // debug log messages
92 #define LOG_MESSAGE_PACKET      0xfc
93 
94 
95 // ERRORS
96 
97 // last error code in 2.1 is 0x38 - we start with 0x50 for BTstack errors
98 #define BTSTACK_CONNECTION_TO_BTDAEMON_FAILED              0x50
99 #define BTSTACK_ACTIVATION_FAILED_SYSTEM_BLUETOOTH         0x51
100 #define BTSTACK_ACTIVATION_POWERON_FAILED                  0x52
101 #define BTSTACK_ACTIVATION_FAILED_UNKNOWN                  0x53
102 #define BTSTACK_NOT_ACTIVATED                              0x54
103 #define BTSTACK_BUSY                                       0x55
104 #define BTSTACK_MEMORY_ALLOC_FAILED                        0x56
105 #define BTSTACK_ACL_BUFFERS_FULL                           0x57
106 
107 // l2cap errors - enumeration by the command that created them
108 #define L2CAP_COMMAND_REJECT_REASON_COMMAND_NOT_UNDERSTOOD 0x60
109 #define L2CAP_COMMAND_REJECT_REASON_SIGNALING_MTU_EXCEEDED 0x61
110 #define L2CAP_COMMAND_REJECT_REASON_INVALID_CID_IN_REQUEST 0x62
111 
112 #define L2CAP_CONNECTION_RESPONSE_RESULT_SUCCESSFUL        0x63
113 #define L2CAP_CONNECTION_RESPONSE_RESULT_PENDING           0x64
114 #define L2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_PSM       0x65
115 #define L2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_SECURITY  0x66
116 #define L2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_RESOURCES 0x67
117 #define L2CAP_CONNECTION_RESPONSE_RESULT_RTX_TIMEOUT       0x68
118 
119 #define L2CAP_SERVICE_ALREADY_REGISTERED                   0x69
120 #define L2CAP_DATA_LEN_EXCEEDS_REMOTE_MTU                  0x6A
121 
122 #define RFCOMM_MULTIPLEXER_STOPPED                         0x70
123 #define RFCOMM_CHANNEL_ALREADY_REGISTERED                  0x71
124 #define RFCOMM_NO_OUTGOING_CREDITS                         0x72
125 #define RFCOMM_AGGREGATE_FLOW_OFF                          0x73
126 #define RFCOMM_DATA_LEN_EXCEEDS_MTU                        0x74
127 
128 #define SDP_HANDLE_ALREADY_REGISTERED                      0x80
129 #define SDP_QUERY_INCOMPLETE                               0x81
130 #define SDP_SERVICE_NOT_FOUND                              0x82
131 #define SDP_HANDLE_INVALID                                 0x83
132 #define SDP_QUERY_BUSY                                     0x84
133 
134 #define ATT_HANDLE_VALUE_INDICATION_IN_PORGRESS            0x90
135 #define ATT_HANDLE_VALUE_INDICATION_TIMEOUT                0x91
136 
137 #define GATT_CLIENT_NOT_CONNECTED                          0x93
138 #define GATT_CLIENT_BUSY                                   0x94
139 #define GATT_CLIENT_IN_WRONG_STATE                         0x95
140 #define GATT_CLIENT_DIFFERENT_CONTEXT_FOR_ADDRESS_ALREADY_EXISTS 0x96
141 #define GATT_CLIENT_VALUE_TOO_LONG                         0x97
142 #define GATT_CLIENT_CHARACTERISTIC_NOTIFICATION_NOT_SUPPORTED 0x98
143 #define GATT_CLIENT_CHARACTERISTIC_INDICATION_NOT_SUPPORTED   0x99
144 
145 #define BNEP_SERVICE_ALREADY_REGISTERED                    0xA0
146 #define BNEP_CHANNEL_NOT_CONNECTED                         0xA1
147 #define BNEP_DATA_LEN_EXCEEDS_MTU                          0xA2
148 
149 // COMMANDS
150 
151 #define OGF_BTSTACK 0x3d
152 
153 // cmds for BTstack
154 // get state: @returns HCI_STATE
155 #define BTSTACK_GET_STATE                                  0x01
156 
157 // set power mode: param HCI_POWER_MODE
158 #define BTSTACK_SET_POWER_MODE                             0x02
159 
160 // set capture mode: param on
161 #define BTSTACK_SET_ACL_CAPTURE_MODE                       0x03
162 
163 // get BTstack version
164 #define BTSTACK_GET_VERSION                                0x04
165 
166 // get system Bluetooth state
167 #define BTSTACK_GET_SYSTEM_BLUETOOTH_ENABLED               0x05
168 
169 // set system Bluetooth state
170 #define BTSTACK_SET_SYSTEM_BLUETOOTH_ENABLED               0x06
171 
172 // enable inquiry scan for this client
173 #define BTSTACK_SET_DISCOVERABLE                           0x07
174 
175 // set global Bluetooth state
176 #define BTSTACK_SET_BLUETOOTH_ENABLED                      0x08
177 
178 // create l2cap channel: param bd_addr(48), psm (16)
179 #define L2CAP_CREATE_CHANNEL                               0x20
180 
181 // disconnect l2cap disconnect, param channel(16), reason(8)
182 #define L2CAP_DISCONNECT                                   0x21
183 
184 // register l2cap service: param psm(16), mtu (16)
185 #define L2CAP_REGISTER_SERVICE                             0x22
186 
187 // unregister l2cap disconnect, param psm(16)
188 #define L2CAP_UNREGISTER_SERVICE                           0x23
189 
190 // accept connection param bd_addr(48), dest cid (16)
191 #define L2CAP_ACCEPT_CONNECTION                            0x24
192 
193 // decline l2cap disconnect,param bd_addr(48), dest cid (16), reason(8)
194 #define L2CAP_DECLINE_CONNECTION                           0x25
195 
196 // create l2cap channel: param bd_addr(48), psm (16), mtu (16)
197 #define L2CAP_CREATE_CHANNEL_MTU                           0x26
198 
199 // register SDP Service Record: service record (size)
200 #define SDP_REGISTER_SERVICE_RECORD                        0x30
201 
202 // unregister SDP Service Record
203 #define SDP_UNREGISTER_SERVICE_RECORD                      0x31
204 
205 // Get remote RFCOMM services
206 #define SDP_CLIENT_QUERY_RFCOMM_SERVICES                   0x32
207 
208 // Get remote SDP services
209 #define SDP_CLIENT_QUERY_SERVICES                          0x33
210 
211 // RFCOMM "HCI" Commands
212 #define RFCOMM_CREATE_CHANNEL       0x40
213 #define RFCOMM_DISCONNECT     0x41
214 #define RFCOMM_REGISTER_SERVICE     0x42
215 #define RFCOMM_UNREGISTER_SERVICE   0x43
216 #define RFCOMM_ACCEPT_CONNECTION    0x44
217 #define RFCOMM_DECLINE_CONNECTION   0x45
218 #define RFCOMM_PERSISTENT_CHANNEL   0x46
219 #define RFCOMM_CREATE_CHANNEL_WITH_CREDITS   0x47
220 #define RFCOMM_REGISTER_SERVICE_WITH_CREDITS 0x48
221 #define RFCOMM_GRANT_CREDITS                 0x49
222 
223 // GAP Classic 0x50
224 #define GAP_DISCONNECT              0x50
225 
226 // GAP LE      0x60
227 #define GAP_LE_SCAN_START           0x60
228 #define GAP_LE_SCAN_STOP            0x61
229 #define GAP_LE_CONNECT              0x62
230 #define GAP_LE_CONNECT_CANCEL       0x63
231 #define GAP_LE_SET_SCAN_PARAMETERS  0x64
232 
233 // GATT (Client) 0x70
234 #define GATT_DISCOVER_ALL_PRIMARY_SERVICES                       0x70
235 #define GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID16                 0x71
236 #define GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID128                0x72
237 #define GATT_FIND_INCLUDED_SERVICES_FOR_SERVICE                  0x73
238 #define GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE                0x74
239 #define GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE_BY_UUID128     0x75
240 #define GATT_DISCOVER_CHARACTERISTIC_DESCRIPTORS                 0x76
241 #define GATT_READ_VALUE_OF_CHARACTERISTIC                        0x77
242 #define GATT_READ_LONG_VALUE_OF_CHARACTERISTIC                   0x78
243 #define GATT_WRITE_VALUE_OF_CHARACTERISTIC_WITHOUT_RESPONSE      0x79
244 #define GATT_WRITE_VALUE_OF_CHARACTERISTIC                       0x7A
245 #define GATT_WRITE_LONG_VALUE_OF_CHARACTERISTIC                  0x7B
246 #define GATT_RELIABLE_WRITE_LONG_VALUE_OF_CHARACTERISTIC         0x7C
247 #define GATT_READ_CHARACTERISTIC_DESCRIPTOR                      0X7D
248 #define GATT_READ_LONG_CHARACTERISTIC_DESCRIPTOR                 0X7E
249 #define GATT_WRITE_CHARACTERISTIC_DESCRIPTOR                     0X7F
250 #define GATT_WRITE_LONG_CHARACTERISTIC_DESCRIPTOR                0X80
251 #define GATT_WRITE_CLIENT_CHARACTERISTIC_CONFIGURATION           0X81
252 #define GATT_GET_MTU                                             0x82
253 
254 
255 // EVENTS
256 
257 /**
258  * @format 1
259  * @param state
260  */
261 #define BTSTACK_EVENT_STATE                                0x60
262 
263 // data: event(8), len(8), nr hci connections
264 #define BTSTACK_EVENT_NR_CONNECTIONS_CHANGED               0x61
265 
266 /**
267  * @format
268  */
269 #define BTSTACK_EVENT_POWERON_FAILED                       0x62
270 
271 /**
272  * @format 1
273  * @param discoverable
274  */
275 #define BTSTACK_EVENT_DISCOVERABLE_ENABLED                 0x66
276 
277 // Daemon Events
278 
279 /**
280  * @format 112
281  * @param major
282  * @param minor
283  @ @param revision
284  */
285 #define DAEMON_EVENT_VERSION                               0x63
286 
287 // data: system bluetooth on/off (bool)
288 /**
289  * @format 1
290  * param system_bluetooth_enabled
291  */
292 #define DAEMON_EVENT_SYSTEM_BLUETOOTH_ENABLED              0x64
293 
294 // data: event (8), len(8), status (8) == 0, address (48), name (1984 bits = 248 bytes)
295 
296 /*
297  * @format 1BT
298  * @param status == 0 to match read_remote_name_request
299  * @param address
300  * @param name
301  */
302 #define DAEMON_EVENT_REMOTE_NAME_CACHED                    0x65
303 
304 // internal daemon events
305 
306 // data: event(8)
307 #define DAEMON_EVENT_CONNECTION_OPENED                     0x67
308 
309 // data: event(8)
310 #define DAEMON_EVENT_CONNECTION_CLOSED                     0x68
311 
312 
313 // additional HCI events
314 
315 /**
316  * @brief Outgoing packet
317  */
318 #define HCI_EVENT_TRANSPORT_PACKET_SENT                    0x6E
319 
320 /**
321  * @format B
322  * @param handle
323  */
324 #define HCI_EVENT_SCO_CAN_SEND_NOW                         0x6F
325 
326 // L2CAP EVENTS
327 
328 /**
329  * @format 1BH222222
330  * @param status
331  * @param address
332  * @param handle
333  * @param psm
334  * @param local_cid
335  * @param remote_cid
336  * @param local_mtu
337  * @param remote_mtu
338  * @param flush_timeout
339  */
340 #define L2CAP_EVENT_CHANNEL_OPENED                         0x70
341 
342 /*
343  * @format 2
344  * @param local_cid
345  */
346 #define L2CAP_EVENT_CHANNEL_CLOSED                         0x71
347 
348 /**
349  * @format 1BH222
350  * @param status
351  * @param address
352  * @param handle
353  * @param psm
354  * @param local_cid
355  * @param remote_cid
356  */
357 #define L2CAP_EVENT_INCOMING_CONNECTION                    0x72
358 
359 // ??
360 // data: event(8), len(8), handle(16)
361 #define L2CAP_EVENT_TIMEOUT_CHECK                          0x73
362 
363 // ??
364 // data: event(8), len(8), local_cid(16), credits(8)
365 #define L2CAP_EVENT_CREDITS                                0x74
366 
367 /**
368  * @format 12
369  * @param status
370  * @param psm
371  */
372 #define L2CAP_EVENT_SERVICE_REGISTERED                     0x75
373 
374 /**
375  * @format H2222
376  * @param handle
377  * @param interval_min
378  * @param interval_max
379  * @param latencey
380  * @param timeout_multiplier
381  */
382 #define L2CAP_EVENT_CONNECTION_PARAMETER_UPDATE_REQUEST    0x76
383 
384 // data: event(8), len(8), handle(16), result (16) (0 == ok, 1 == fail)
385  /**
386   * @format H2
387   * @param handle
388   * @result
389   */
390 #define L2CAP_EVENT_CONNECTION_PARAMETER_UPDATE_RESPONSE   0x77
391 
392 /**
393  * @format 2
394  * @param local_cid
395  */
396 #define L2CAP_EVENT_CAN_SEND_NOW                           0x78
397 
398 // RFCOMM EVENTS
399 
400 /**
401  * @format 1B2122
402  * @param status
403  * @param bd_addr
404  * @param con_handle
405  * @param server_channel
406  * @param rfcomm_cid
407  * @param max_frame_size
408  */
409 #define RFCOMM_EVENT_CHANNEL_OPENED                 0x80
410 
411 /**
412  * @format 2
413  * @param rfcomm_cid
414  */
415 #define RFCOMM_EVENT_CHANNEL_CLOSED                        0x81
416 
417 /**
418  * @format B12
419  * @param bd_addr
420  * @param server_channel
421  * @param rfcomm_cid
422  */
423 #define RFCOMM_EVENT_INCOMING_CONNECTION                   0x82
424 
425 /**
426  * @format 21
427  * @param rfcomm_cid
428  * @param line_status
429  */
430 #define RFCOMM_EVENT_REMOTE_LINE_STATUS                    0x83
431 
432 /**
433  * @format 21
434  * @param rfcomm_cid
435  * @param credits
436  */
437 #define RFCOMM_EVENT_CREDITS                               0x84
438 
439 /**
440  * @format 11
441  * @param status
442  * @param channel_id
443  */
444 #define RFCOMM_EVENT_SERVICE_REGISTERED                    0x85
445 
446 /**
447  * @format 11
448  * @param status
449  * @param server_channel_id
450  */
451 #define RFCOMM_EVENT_PERSISTENT_CHANNEL                    0x86
452 
453 /**
454  * @format 21
455  * @param rfcomm_cid
456  * @param modem_status
457  */
458 #define RFCOMM_EVENT_REMOTE_MODEM_STATUS                   0x87
459 
460  /**
461   * TODO: format for variable data 2?
462   * param rfcomm_cid
463   * param rpn_data
464   */
465 #define RFCOMM_EVENT_PORT_CONFIGURATION                    0x88
466 
467 /**
468  * @format 2
469  * @param rfcomm_cid
470  */
471 #define RFCOMM_EVENT_CAN_SEND_NOW                          0x89
472 
473 
474 /**
475   * @format 14
476   * @param status
477   * @param service_record_handle
478   */
479 #define SDP_EVENT_SERVICE_REGISTERED                             0x90
480 
481 /**
482  * @format 1
483  * @param status
484  */
485 #define SDP_EVENT_QUERY_COMPLETE                                 0x91
486 
487 /**
488  * @format 1T
489  * @param rfcomm_channel
490  * @param name
491  */
492 #define SDP_EVENT_QUERY_RFCOMM_SERVICE                           0x92
493 
494 /**
495  * @format 22221
496  * @param record_id
497  * @param attribute_id
498  * @param attribute_length
499  * @param data_offset
500  * @param data
501  */
502 #define SDP_EVENT_QUERY_ATTRIBUTE_BYTE                           0x93
503 
504 /**
505  * @format 22LV
506  * @param record_id
507  * @param attribute_id
508  * @param attribute_length
509  * @param attribute_value
510  */
511 #define SDP_EVENT_QUERY_ATTRIBUTE_VALUE                          0x94
512 
513 /**
514  * @format 224
515  * @param total_count
516  * @param record_index
517  * @param record_handle
518  * @note Not provided by daemon, only used for internal testing
519  */
520 #define SDP_EVENT_QUERY_SERVICE_RECORD_HANDLE                    0x95
521 
522 /**
523  * @format H1
524  * @param handle
525  * @param status
526  */
527 #define GATT_EVENT_QUERY_COMPLETE                                0xA0
528 
529 /**
530  * @format HX
531  * @param handle
532  * @param service
533  */
534 #define GATT_EVENT_SERVICE_QUERY_RESULT                          0xA1
535 
536 /**
537  * @format HY
538  * @param handle
539  * @param characteristic
540  */
541 #define GATT_EVENT_CHARACTERISTIC_QUERY_RESULT                   0xA2
542 
543 /**
544  * @format H2X
545  * @param handle
546  * @param include_handle
547  * @param service
548  */
549 #define GATT_EVENT_INCLUDED_SERVICE_QUERY_RESULT                 0xA3
550 
551 /**
552  * @format HZ
553  * @param handle
554  * @param characteristic_descriptor
555  */
556 #define GATT_EVENT_ALL_CHARACTERISTIC_DESCRIPTORS_QUERY_RESULT   0xA4
557 
558 /**
559  * @format H2LV
560  * @param handle
561  * @param value_handle
562  * @param value_length
563  * @param value
564  */
565 #define GATT_EVENT_CHARACTERISTIC_VALUE_QUERY_RESULT             0xA5
566 
567 /**
568  * @format H22LV
569  * @param handle
570  * @param value_handle
571  * @param value_offset
572  * @param value_length
573  * @param value
574  */
575 #define GATT_EVENT_LONG_CHARACTERISTIC_VALUE_QUERY_RESULT        0xA6
576 
577 /**
578  * @format H2LV
579  * @param handle
580  * @param value_handle
581  * @param value_length
582  * @param value
583  */
584 #define GATT_EVENT_NOTIFICATION                                  0xA7
585 
586 /**
587  * @format H2LV
588  * @param handle
589  * @param value_handle
590  * @param value_length
591  * @param value
592  */
593 #define GATT_EVENT_INDICATION                                    0xA8
594 
595 /**
596  * @format H2LV
597  * @param descriptor_handle
598  * @param descriptor_length
599  * @param descriptor
600  */
601 #define GATT_EVENT_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT        0xA9
602 
603 /**
604  * @format H2LV
605  * @param handle
606  * @param descriptor_offset
607  * @param descriptor_length
608  * @param descriptor
609  */
610 #define GATT_EVENT_LONG_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT   0xAA
611 
612 /**
613  * @format H2
614  * @param handle
615  * @param MTU
616  */
617 #define GATT_EVENT_MTU                                           0xAB
618 
619 /**
620  * @format H2
621  * @param handle
622  * @param MTU
623  */
624 #define ATT_EVENT_MTU_EXCHANGE_COMPLETE                          0xB5
625 
626  /**
627   * @format 1H2
628   * @param status
629   * @param conn_handle
630   * @param attribute_handle
631   */
632 #define ATT_EVENT_HANDLE_VALUE_INDICATION_COMPLETE               0xB6
633 
634 /**
635  * @format
636  */
637 #define ATT_EVENT_CAN_SEND_NOW                                   0xB7
638 
639 // TODO: daemon only event
640 
641 /**
642  * @format 12
643  * @param status
644  * @param service_uuid
645  */
646  #define BNEP_EVENT_SERVICE_REGISTERED                      0xC0
647 
648 /**
649  * @format 12222B
650  * @param status
651  * @param bnep_cid
652  * @param source_uuid
653  * @param destination_uuid
654  * @param mtu
655  * @param remote_address
656  */
657  #define BNEP_EVENT_CHANNEL_OPENED                   0xC1
658 
659 /**
660  * @format 222B
661  * @param bnep_cid
662  * @param source_uuid
663  * @param destination_uuid
664  * @param remote_address
665  */
666  #define BNEP_EVENT_CHANNEL_CLOSED                          0xC2
667 
668 /**
669  * @format 222B1
670  * @param bnep_cid
671  * @param source_uuid
672  * @param destination_uuid
673  * @param remote_address
674  * @param channel_state
675  */
676 #define BNEP_EVENT_CHANNEL_TIMEOUT                         0xC3
677 
678 /**
679  * @format 222B
680  * @param bnep_cid
681  * @param source_uuid
682  * @param destination_uuid
683  * @param remote_address
684  */
685  #define BNEP_EVENT_CAN_SEND_NOW                           0xC4
686 
687  /**
688   * @format H1B
689   * @param handle
690   * @param addr_type
691   * @param address
692   */
693 #define SM_EVENT_JUST_WORKS_REQUEST                              0xD0
694 
695  /**
696   * @format H1B
697   * @param handle
698   * @param addr_type
699   * @param address
700   */
701 #define SM_EVENT_JUST_WORKS_CANCEL                               0xD1
702 
703  /**
704   * @format H1B4
705   * @param handle
706   * @param addr_type
707   * @param address
708   * @param passkey
709   */
710 #define SM_EVENT_PASSKEY_DISPLAY_NUMBER                          0xD2
711 
712  /**
713   * @format H1B
714   * @param handle
715   * @param addr_type
716   * @param address
717   */
718 #define SM_EVENT_PASSKEY_DISPLAY_CANCEL                          0xD3
719 
720  /**
721   * @format H1B421
722   * @param handle
723   * @param addr_type
724   * @param address
725   */
726 #define SM_EVENT_PASSKEY_INPUT_NUMBER                            0xD4
727 
728  /**
729   * @format H1B
730   * @param handle
731   * @param addr_type
732   * @param address
733   */
734 #define SM_EVENT_PASSKEY_INPUT_CANCEL                            0xD5
735 
736  /**
737   * @format H1B
738   * @param handle
739   * @param addr_type
740   * @param address
741   */
742 #define SM_EVENT_IDENTITY_RESOLVING_STARTED                      0xD6
743 
744  /**
745   * @format H1B
746   * @param handle
747   * @param addr_type
748   * @param address
749   */
750 #define SM_EVENT_IDENTITY_RESOLVING_FAILED                       0xD7
751 
752  /**
753   * @format H1B2
754   * @param handle
755   * @param addr_type
756   * @param address
757   * @param le_device_db_index
758   */
759 #define SM_EVENT_IDENTITY_RESOLVING_SUCCEEDED                    0xD8
760 
761  /**
762   * @format H1B
763   * @param handle
764   * @param addr_type
765   * @param address
766   */
767 #define SM_EVENT_AUTHORIZATION_REQUEST                           0xD9
768 
769  /**
770   * @format H1B1
771   * @param handle
772   * @param addr_type
773   * @param address
774   * @param authorization_result
775   */
776 #define SM_EVENT_AUTHORIZATION_RESULT                            0xDA
777 
778 // GAP
779 
780 // data: event(8), len(8), hci_handle (16), security_level (8)
781 #define GAP_EVENT_SECURITY_LEVEL                                 0xE0
782 
783 // data: event(8), len(8), status (8), bd_addr(48)
784 #define GAP_EVENT_DEDICATED_BONDING_COMPLETED                    0xE1
785 
786 /**
787  * @format 11B1JV
788  * @param advertising_event_type
789  * @param address_type
790  * @param address
791  * @param rssi
792  * @param data_length
793  * @param data
794  */
795 #define GAP_EVENT_ADVERTISING_REPORT                          0xE2
796 
797 
798 // Meta Events, see below for sub events
799 #define HCI_EVENT_HSP_META                                 0xE8
800 #define HCI_EVENT_HFP_META                                 0xE9
801 #define HCI_EVENT_ANCS_META                                0xEA
802 
803 // Potential other meta groups
804  // #define HCI_EVENT_BNEP_META                                0xxx
805 // #define HCI_EVENT_GAP_META                                 0xxx
806 // #define HCI_EVENT_GATT_META                                0xxx
807 // #define HCI_EVENT_PAN_META                                 0xxx
808 // #define HCI_EVENT_SDP_META                                 0xxx
809 // #define HCI_EVENT_SM_META                                  0xxx
810 
811 
812 /** HSP Subevent */
813 
814 /**
815  * @format 11
816  * @param subevent_code
817  * @param status 0 == OK
818  */
819 #define HSP_SUBEVENT_RFCOMM_CONNECTION_COMPLETE             0x01
820 
821 /**
822  * @format 11
823  * @param subevent_code
824  * @param status 0 == OK
825  */
826 #define HSP_SUBEVENT_RFCOMM_DISCONNECTION_COMPLETE           0x02
827 
828 
829 /**
830  * @format 11H
831  * @param subevent_code
832  * @param status 0 == OK
833  * @param handle
834  */
835 #define HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE             0x03
836 
837 /**
838  * @format 11
839  * @param subevent_code
840  * @param status 0 == OK
841  */
842 #define HSP_SUBEVENT_AUDIO_DISCONNECTION_COMPLETE          0x04
843 
844 /**
845  * @format 1
846  * @param subevent_code
847  */
848 #define HSP_SUBEVENT_RING                                  0x05
849 
850 /**
851  * @format 11
852  * @param subevent_code
853  * @param gain Valid range: [0,15]
854  */
855 #define HSP_SUBEVENT_MICROPHONE_GAIN_CHANGED               0x06
856 
857 /**
858  * @format 11
859  * @param subevent_code
860  * @param gain Valid range: [0,15]
861  */
862 #define HSP_SUBEVENT_SPEAKER_GAIN_CHANGED                  0x07
863 
864 /**
865  * @format 1JV
866  * @param subevent_code
867  * @param value_length
868  * @param value
869  */
870 #define HSP_SUBEVENT_HS_COMMAND                            0x08
871 
872 /**
873  * @format 1JV
874  * @param subevent_code
875  * @param value_length
876  * @param value
877  */
878 #define HSP_SUBEVENT_AG_INDICATION                         0x09
879 
880 
881 /** HFP Subevent */
882 
883 /**
884  * @format 11
885  * @param subevent_code
886  * @param status 0 == OK
887  */
888 #define HFP_SUBEVENT_SERVICE_LEVEL_CONNECTION_ESTABLISHED  0x01
889 
890 /**
891  * @format 1
892  * @param subevent_code
893  */
894 #define HFP_SUBEVENT_SERVICE_LEVEL_CONNECTION_RELEASED     0x02
895 
896 /**
897  * @format 11
898  * @param subevent_code
899  * @param status 0 == OK
900  */
901 #define HFP_SUBEVENT_AUDIO_CONNECTION_ESTABLISHED          0x03
902 
903 /**
904  * @format 1
905  * @param subevent_code
906  */
907 #define HFP_SUBEVENT_AUDIO_CONNECTION_RELEASED             0x04
908 
909 /**
910  * @format 11
911  * @param subevent_code
912  * @param status 0 == OK
913  */
914 #define HFP_SUBEVENT_COMPLETE                              0x05
915 
916 /**
917  * @format 111T
918  * @param subevent_code
919  * @param indicator_index
920  * @param indicator_status
921  * @param indicator_name
922  */
923 #define HFP_SUBEVENT_AG_INDICATOR_STATUS_CHANGED           0x06
924 
925 /**
926  * @format 1111T
927  * @param subevent_code
928  * @param network_operator_mode
929  * @param network_operator_format
930  * @param network_operator_name
931  */
932 #define HFP_SUBEVENT_NETWORK_OPERATOR_CHANGED              0x07
933 
934 /**
935  * @format 11
936  * @param subevent_code
937  * @param error
938  */
939 #define HFP_SUBEVENT_EXTENDED_AUDIO_GATEWAY_ERROR             0x08
940 
941 /**
942  * @format 11
943  * @param subevent_code
944  * @param status
945  */
946 #define HFP_SUBEVENT_CODECS_CONNECTION_COMPLETE               0x09
947 
948 /**
949  * @format 1
950  * @param subevent_code
951  */
952 #define HFP_SUBEVENT_START_RINGINIG                           0x0A
953 
954 /**
955  * @format 1
956  * @param subevent_code
957  */
958 #define HFP_SUBEVENT_STOP_RINGINIG                            0x0B
959 
960 /**
961  * @format 1
962  * @param subevent_code
963  */
964 #define HFP_SUBEVENT_CALL_TERMINATED                          0x0C
965 
966 /**
967  * @format 1T
968  * @param subevent_code
969  * @param number
970  */
971 #define HFP_SUBEVENT_PLACE_CALL_WITH_NUMBER                   0x0D
972 
973 /**
974  * @format 1
975  * @param subevent_code
976  */
977 #define HFP_SUBEVENT_ATTACH_NUMBER_TO_VOICE_TAG               0x0E
978 
979 /**
980  * @format 1T
981  * @param subevent_code
982  * @param number
983  */
984 #define HFP_SUBEVENT_NUMBER_FOR_VOICE_TAG                     0x0F
985 
986 /**
987  * @format 1T
988  * @param subevent_code
989  * @param dtmf code
990  */
991 #define HFP_SUBEVENT_TRANSMIT_DTMF_CODES                      0x10
992 
993 /**
994  * @format 1
995  * @param subevent_code
996  */
997  #define HFP_SUBEVENT_CALL_ANSWERED                            0x11
998 
999 /**
1000  * @format 1
1001  * @param subevent_code
1002  */
1003 #define HFP_SUBEVENT_CONFERENCE_CALL                          0x12
1004 
1005 /**
1006  * @format 1
1007  * @param subevent_code
1008  */
1009 #define HFP_SUBEVENT_RING                                     0x13
1010 
1011 /**
1012  * @format 111
1013  * @param subevent_code
1014  * @param status
1015  * @param gain
1016  */
1017  #define HFP_SUBEVENT_SPEAKER_VOLUME                           0x14
1018 
1019 /**
1020  * @format 111
1021  * @param subevent_code
1022  * @param status
1023  * @param gain
1024  */
1025 #define HFP_SUBEVENT_MICROPHONE_VOLUME                        0x15
1026 
1027 /**
1028  * @format 11T
1029  * @param subevent_code
1030  * @param type
1031  * @param number
1032  */
1033 #define HFP_SUBEVENT_CALL_WAITING_NOTIFICATION                0x16
1034 
1035 /**
1036  * @format 11T
1037  * @param subevent_code
1038  * @param type
1039  * @param number
1040  */
1041 #define HFP_SUBEVENT_CALLING_LINE_INDETIFICATION_NOTIFICATION 0x17
1042 
1043 /**
1044  * @format 111111T
1045  * @param subevent_code
1046  * @param clcc_idx
1047  * @param clcc_dir
1048  * @param clcc_status
1049  * @param clcc_mpty
1050  * @param bnip_type
1051  * @param bnip_number
1052  */
1053 #define HFP_SUBEVENT_ENHANCED_CALL_STATUS                     0x18
1054 
1055 /**
1056  * @format 111T
1057  * @param subevent_code
1058  * @param status
1059  * @param bnip_type
1060  * @param bnip_number
1061  */
1062  #define HFP_SUBEVENT_SUBSCRIBER_NUMBER_INFORMATION            0x19
1063 
1064 /**
1065  * @format 1T
1066  * @param subevent_code
1067  * @param value
1068  */
1069 #define HFP_SUBEVENT_RESPONSE_AND_HOLD_STATUS                 0x1A
1070 
1071 // ANCS Client
1072 
1073 /**
1074  * @format 1H
1075  * @param subevent_code
1076  * @param handle
1077  */
1078 #define ANCS_SUBEVENT_CLIENT_CONNECTED                              0xF0
1079 
1080 /**
1081  * @format 1H2T
1082  * @param subevent_code
1083  * @param handle
1084  * @param attribute_id
1085  * @param text
1086  */
1087 #define ANCS_SUBEVENT_CLIENT_NOTIFICATION                           0xF1
1088 
1089 /**
1090  * @format 1H
1091  * @param subevent_code
1092  * @param handle
1093  */
1094 #define ANCS_SUBEVENT_CLIENT_DISCONNECTED                           0xF2
1095 
1096 #endif
1097