xref: /btstack/src/btstack_defines.h (revision c1ab6cc1beb14b16b46e74a3723644016d8c3cc7)
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 
50 // UNUSED macro
51 #ifndef UNUSED
52 #define UNUSED(x) (void)(sizeof(x))
53 #endif
54 
55 
56 #if !defined(__cplusplus)
57 
58 //
59 // Check for C99
60 // see: https://sourceforge.net/p/predef/wiki/Standards/
61 //
62 #if defined(__STDC__)
63 #   if defined(__STDC_VERSION__)
64 #     if (__STDC_VERSION__ >= 199901L)
65 #       define PREDEF_STANDARD_C_1999
66 #     endif
67 #  endif
68 #endif
69 
70 // define boolean type - required for MISRA-C 2012 Essential Type System
71 #ifdef PREDEF_STANDARD_C_1999
72 // use <stdbool.h> if C99 or higher
73 #include <stdbool.h>
74 #else
75 // backport for pre-c99 compilers
76 #define bool unsigned char
77 #define false 0
78 #define true 1
79 #endif
80 
81 #endif
82 
83 // TYPES
84 
85 // packet handler
86 typedef void (*btstack_packet_handler_t) (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
87 
88 // packet callback supporting multiple registrations
89 typedef struct {
90     btstack_linked_item_t    item;
91     btstack_packet_handler_t callback;
92 } btstack_packet_callback_registration_t;
93 
94 // context callback supporting multiple registrations
95 typedef struct {
96   btstack_linked_item_t * item;
97   void (*callback)(void * context);
98   void * context;
99 } btstack_context_callback_registration_t;
100 
101 /**
102  * @brief 128 bit key used with AES128 in Security Manager
103  */
104 typedef uint8_t sm_key_t[16];
105 
106 // DEFINES
107 
108 // hci con handles (12 bit): 0x0000..0x0fff
109 #define HCI_CON_HANDLE_INVALID 0xffff
110 
111 
112 #define DAEMON_EVENT_PACKET     0x05
113 
114 // L2CAP data
115 #define L2CAP_DATA_PACKET       0x06
116 
117 // RFCOMM data
118 #define RFCOMM_DATA_PACKET      0x07
119 
120 // Attribute protocol data
121 #define ATT_DATA_PACKET         0x08
122 
123 // Security Manager protocol data
124 #define SM_DATA_PACKET          0x09
125 
126 // SDP query result - only used by daemon
127 // format: type (8), record_id (16), attribute_id (16), attribute_length (16), attribute_value (max 1k)
128 #define SDP_CLIENT_PACKET       0x0a
129 
130 // BNEP data
131 #define BNEP_DATA_PACKET        0x0b
132 
133 // Unicast Connectionless Data
134 #define UCD_DATA_PACKET         0x0c
135 
136 // GOEP data
137 #define GOEP_DATA_PACKET        0x0d
138 
139 // PBAP data
140 #define PBAP_DATA_PACKET        0x0e
141 
142 // AVRCP browsing data
143 #define AVRCP_BROWSING_DATA_PACKET     0x0f
144 
145 // MAP data
146 #define MAP_DATA_PACKET        0x10
147 
148 // Mesh Provisioning PDU
149 #define PROVISIONING_DATA_PACKET 0x11
150 
151 // Mesh Proxy PDU
152 #define MESH_PROXY_DATA_PACKET   0x11
153 
154 // Mesh Network PDU
155 #define MESH_NETWORK_PACKET      0x12
156 
157 // Mesh Network PDU
158 #define MESH_BEACON_PACKET       0x13
159 
160 // debug log messages
161 #define LOG_MESSAGE_PACKET      0xfc
162 
163 
164 // DAEMON COMMANDS
165 
166 #define OGF_BTSTACK 0x3d
167 
168 // cmds for BTstack
169 // get state: @returns HCI_STATE
170 #define BTSTACK_GET_STATE                                  0x01
171 
172 // set power mode: param HCI_POWER_MODE
173 #define BTSTACK_SET_POWER_MODE                             0x02
174 
175 // set capture mode: param on
176 #define BTSTACK_SET_ACL_CAPTURE_MODE                       0x03
177 
178 // get BTstack version
179 #define BTSTACK_GET_VERSION                                0x04
180 
181 // get system Bluetooth state
182 #define BTSTACK_GET_SYSTEM_BLUETOOTH_ENABLED               0x05
183 
184 // set system Bluetooth state
185 #define BTSTACK_SET_SYSTEM_BLUETOOTH_ENABLED               0x06
186 
187 // enable inquiry scan for this client
188 #define BTSTACK_SET_DISCOVERABLE                           0x07
189 
190 // set global Bluetooth state
191 #define BTSTACK_SET_BLUETOOTH_ENABLED                      0x08
192 
193 // create l2cap channel: param bd_addr(48), psm (16)
194 #define L2CAP_CREATE_CHANNEL                               0x20
195 
196 // disconnect l2cap disconnect, param channel(16), reason(8)
197 #define L2CAP_DISCONNECT                                   0x21
198 
199 // register l2cap service: param psm(16), mtu (16)
200 #define L2CAP_REGISTER_SERVICE                             0x22
201 
202 // unregister l2cap disconnect, param psm(16)
203 #define L2CAP_UNREGISTER_SERVICE                           0x23
204 
205 // accept connection param bd_addr(48), dest cid (16)
206 #define L2CAP_ACCEPT_CONNECTION                            0x24
207 
208 // decline l2cap disconnect,param bd_addr(48), dest cid (16), reason(8)
209 #define L2CAP_DECLINE_CONNECTION                           0x25
210 
211 // create l2cap channel: param bd_addr(48), psm (16), mtu (16)
212 #define L2CAP_CREATE_CHANNEL_MTU                           0x26
213 
214 // register SDP Service Record: service record (size)
215 #define SDP_REGISTER_SERVICE_RECORD                        0x30
216 
217 // unregister SDP Service Record
218 #define SDP_UNREGISTER_SERVICE_RECORD                      0x31
219 
220 // Get remote RFCOMM services
221 #define SDP_CLIENT_QUERY_RFCOMM_SERVICES                   0x32
222 
223 // Get remote SDP services
224 #define SDP_CLIENT_QUERY_SERVICES                          0x33
225 
226 // RFCOMM "HCI" Commands
227 #define RFCOMM_CREATE_CHANNEL       0x40
228 #define RFCOMM_DISCONNECT     0x41
229 #define RFCOMM_REGISTER_SERVICE     0x42
230 #define RFCOMM_UNREGISTER_SERVICE   0x43
231 #define RFCOMM_ACCEPT_CONNECTION    0x44
232 #define RFCOMM_DECLINE_CONNECTION   0x45
233 #define RFCOMM_PERSISTENT_CHANNEL   0x46
234 #define RFCOMM_CREATE_CHANNEL_WITH_CREDITS   0x47
235 #define RFCOMM_REGISTER_SERVICE_WITH_CREDITS 0x48
236 #define RFCOMM_GRANT_CREDITS                 0x49
237 
238 // GAP Classic 0x50
239 #define GAP_DISCONNECT              0x50
240 
241 // GAP LE      0x60
242 #define GAP_LE_SCAN_START           0x60
243 #define GAP_LE_SCAN_STOP            0x61
244 #define GAP_LE_CONNECT              0x62
245 #define GAP_LE_CONNECT_CANCEL       0x63
246 #define GAP_LE_SET_SCAN_PARAMETERS  0x64
247 
248 // GATT (Client) 0x70
249 #define GATT_DISCOVER_ALL_PRIMARY_SERVICES                       0x70
250 #define GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID16                 0x71
251 #define GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID128                0x72
252 #define GATT_FIND_INCLUDED_SERVICES_FOR_SERVICE                  0x73
253 #define GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE                0x74
254 #define GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE_BY_UUID128     0x75
255 #define GATT_DISCOVER_CHARACTERISTIC_DESCRIPTORS                 0x76
256 #define GATT_READ_VALUE_OF_CHARACTERISTIC                        0x77
257 #define GATT_READ_LONG_VALUE_OF_CHARACTERISTIC                   0x78
258 #define GATT_WRITE_VALUE_OF_CHARACTERISTIC_WITHOUT_RESPONSE      0x79
259 #define GATT_WRITE_VALUE_OF_CHARACTERISTIC                       0x7A
260 #define GATT_WRITE_LONG_VALUE_OF_CHARACTERISTIC                  0x7B
261 #define GATT_RELIABLE_WRITE_LONG_VALUE_OF_CHARACTERISTIC         0x7C
262 #define GATT_READ_CHARACTERISTIC_DESCRIPTOR                      0X7D
263 #define GATT_READ_LONG_CHARACTERISTIC_DESCRIPTOR                 0X7E
264 #define GATT_WRITE_CHARACTERISTIC_DESCRIPTOR                     0X7F
265 #define GATT_WRITE_LONG_CHARACTERISTIC_DESCRIPTOR                0X80
266 #define GATT_WRITE_CLIENT_CHARACTERISTIC_CONFIGURATION           0X81
267 #define GATT_GET_MTU                                             0x82
268 
269 // SM 0x90
270 #define SM_SET_AUTHENTICATION_REQUIREMENTS 0x90
271 #define SM_SET_IO_CAPABILITIES             0x92
272 #define SM_BONDING_DECLINE                 0x93
273 #define SM_JUST_WORKS_CONFIRM              0x94
274 #define SM_NUMERIC_COMPARISON_CONFIRM      0x95
275 #define SM_PASSKEY_INPUT                   0x96
276 
277 // ATT
278 
279 // ..
280 // Internal properties reuse some GATT Characteristic Properties fields
281 #define ATT_DB_VERSION                                     0x01
282 
283 // EVENTS
284 
285 // Events from host controller to host
286 
287 /**
288  * @format 1
289  * @param status
290  */
291 #define HCI_EVENT_INQUIRY_COMPLETE                         0x01
292 
293 /**
294  * @format 1B11132
295  * @param num_responses
296  * @param bd_addr
297  * @param page_scan_repetition_mode
298  * @param reserved1
299  * @param reserved2
300  * @param class_of_device
301  * @param clock_offset
302  */
303 #define HCI_EVENT_INQUIRY_RESULT                           0x02
304 
305 /**
306  * @format 12B11
307  * @param status
308  * @param connection_handle
309  * @param bd_addr
310  * @param link_type
311  * @param encryption_enabled
312  */
313 #define HCI_EVENT_CONNECTION_COMPLETE                      0x03
314 /**
315  * @format B31
316  * @param bd_addr
317  * @param class_of_device
318  * @param link_type
319  */
320 #define HCI_EVENT_CONNECTION_REQUEST                       0x04
321 /**
322  * @format 121
323  * @param status
324  * @param connection_handle
325  * @param reason
326  */
327 #define HCI_EVENT_DISCONNECTION_COMPLETE                   0x05
328 /**
329  * @format 12
330  * @param status
331  * @param connection_handle
332  */
333 #define HCI_EVENT_AUTHENTICATION_COMPLETE                 0x06
334 
335 // HCI_EVENT_AUTHENTICATION_COMPLETE_EVENT is deprecated, use HCI_EVENT_AUTHENTICATION_COMPLETE instead
336 #define HCI_EVENT_AUTHENTICATION_COMPLETE_EVENT HCI_EVENT_AUTHENTICATION_COMPLETE
337 
338 /**
339  * @format 1BN
340  * @param status
341  * @param bd_addr
342  * @param remote_name
343  */
344 #define HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE             0x07
345 /**
346  * @format 121
347  * @param status
348  * @param connection_handle
349  * @param encryption_enabled
350  */
351 #define HCI_EVENT_ENCRYPTION_CHANGE                        0x08
352 /**
353  * @format 12
354  * @param status
355  * @param connection_handle
356  */
357 #define HCI_EVENT_CHANGE_CONNECTION_LINK_KEY_COMPLETE      0x09
358 /**
359  * @format 121
360  * @param status
361  * @param connection_handle
362  * @param key_flag
363  */
364 #define HCI_EVENT_MASTER_LINK_KEY_COMPLETE                 0x0A
365 
366 #define HCI_EVENT_READ_REMOTE_SUPPORTED_FEATURES_COMPLETE  0x0B
367 
368 /**
369  * @format 12122
370  * @param status
371  * @param connection_handle
372  * @param version
373  * @param manufacturer_name
374  * @param subversion
375  */
376 #define HCI_EVENT_READ_REMOTE_VERSION_INFORMATION_COMPLETE 0x0C
377 
378 #define HCI_EVENT_QOS_SETUP_COMPLETE                       0x0D
379 
380 /**
381  * @format 12R
382  * @param num_hci_command_packets
383  * @param command_opcode
384  * @param return_parameters
385  */
386 #define HCI_EVENT_COMMAND_COMPLETE                         0x0E
387 /**
388  * @format 112
389  * @param status
390  * @param num_hci_command_packets
391  * @param command_opcode
392  */
393 #define HCI_EVENT_COMMAND_STATUS                           0x0F
394 
395 /**
396  * @format 1
397  * @param hardware_code
398  */
399 #define HCI_EVENT_HARDWARE_ERROR                           0x10
400 
401 #define HCI_EVENT_FLUSH_OCCURRED                           0x11
402 
403 /**
404  * @format 1B1
405  * @param status
406  * @param bd_addr
407  * @param role
408  */
409 #define HCI_EVENT_ROLE_CHANGE                              0x12
410 
411 // TODO: number_of_handles 1, connection_handle[H*i], hc_num_of_completed_packets[2*i]
412 #define HCI_EVENT_NUMBER_OF_COMPLETED_PACKETS              0x13
413 
414 /**
415  * @format 1H12
416  * @param status
417  * @param handle
418  * @param mode
419  * @param interval
420  */
421 #define HCI_EVENT_MODE_CHANGE                              0x14
422 
423 // TODO: num_keys, bd_addr[B*i], link_key[16 octets * i]
424 #define HCI_EVENT_RETURN_LINK_KEYS                         0x15
425 
426 /**
427  * @format B
428  * @param bd_addr
429  */
430 #define HCI_EVENT_PIN_CODE_REQUEST                         0x16
431 
432 /**
433  * @format B
434  * @param bd_addr
435  */
436 #define HCI_EVENT_LINK_KEY_REQUEST                         0x17
437 
438 // TODO: bd_addr B, link_key 16octets, key_type 1
439 #define HCI_EVENT_LINK_KEY_NOTIFICATION                    0x18
440 
441 /**
442  * @format 1
443  * @param link_type
444  */
445 #define HCI_EVENT_DATA_BUFFER_OVERFLOW                     0x1A
446 
447 /**
448  * @format H1
449  * @param handle
450  * @param lmp_max_slots
451  */
452 #define HCI_EVENT_MAX_SLOTS_CHANGED                        0x1B
453 
454 /**
455  * @format 1H2
456  * @param status
457  * @param handle
458  * @param clock_offset
459  */
460 #define HCI_EVENT_READ_CLOCK_OFFSET_COMPLETE               0x1C
461 
462 /**
463  * @format 1H2
464  * @param status
465  * @param handle
466  * @param packet_types
467  * @pnote packet_type is in plural to avoid clash with Java binding Packet.getPacketType()
468  */
469 #define HCI_EVENT_CONNECTION_PACKET_TYPE_CHANGED           0x1D
470 
471 /**
472  * @format 1B11321
473  * @param num_responses
474  * @param bd_addr
475  * @param page_scan_repetition_mode
476  * @param reserved
477  * @param class_of_device
478  * @param clock_offset
479  * @param rssi
480  */
481 #define HCI_EVENT_INQUIRY_RESULT_WITH_RSSI                 0x22
482 
483 /**
484  * @format 1HB111221
485  * @param status
486  * @param handle
487  * @param bd_addr
488  * @param link_type
489  * @param transmission_interval
490  * @param retransmission_interval
491  * @param rx_packet_length
492  * @param tx_packet_length
493  * @param air_mode
494  */
495 #define HCI_EVENT_SYNCHRONOUS_CONNECTION_COMPLETE          0x2C
496 
497 // TODO: serialize extended_inquiry_response and provide parser
498 /**
499  * @format 1B11321
500  * @param num_responses
501  * @param bd_addr
502  * @param page_scan_repetition_mode
503  * @param reserved
504  * @param class_of_device
505  * @param clock_offset
506  * @param rssi
507  */
508 #define HCI_EVENT_EXTENDED_INQUIRY_RESPONSE                0x2F
509 
510  /**
511   * @format 1H
512   * @param status
513   * @param handle
514   */
515 #define HCI_EVENT_ENCRYPTION_KEY_REFRESH_COMPLETE          0x30
516 
517 #define HCI_EVENT_IO_CAPABILITY_REQUEST                    0x31
518 #define HCI_EVENT_IO_CAPABILITY_RESPONSE                   0x32
519 
520 /**
521  * @format B4
522  * @param bd_addr
523  * @param numeric_value
524  */
525 #define HCI_EVENT_USER_CONFIRMATION_REQUEST                0x33
526 
527 /**
528  * @format B
529  * @param bd_addr
530  */
531 #define HCI_EVENT_USER_PASSKEY_REQUEST                     0x34
532 
533 /**
534  * @format B
535  * @param bd_addr
536  */
537 #define HCI_EVENT_REMOTE_OOB_DATA_REQUEST                  0x35
538 
539 /**
540  * @format 1B
541  * @param status
542  * @param bd_addr
543  */
544 #define HCI_EVENT_SIMPLE_PAIRING_COMPLETE                  0x36
545 
546 #define HCI_EVENT_LE_META                                  0x3E
547 
548 // last used HCI_EVENT in 2.1 is 0x3d
549 // last used HCI_EVENT in 4.1 is 0x57
550 
551 #define HCI_EVENT_VENDOR_SPECIFIC                          0xFF
552 
553 /**
554  * @format 11H11B2221
555  * @param subevent_code
556  * @param status
557  * @param connection_handle
558  * @param role
559  * @param peer_address_type
560  * @param peer_address
561  * @param conn_interval
562  * @param conn_latency
563  * @param supervision_timeout
564  * @param master_clock_accuracy
565  */
566 #define HCI_SUBEVENT_LE_CONNECTION_COMPLETE                0x01
567 
568 // array of advertisements, not handled by event accessor generator
569 #define HCI_SUBEVENT_LE_ADVERTISING_REPORT                 0x02
570 
571 /**
572  * @format 11H222
573  * @param subevent_code
574  * @param status
575  * @param connection_handle
576  * @param conn_interval
577  * @param conn_latency
578  * @param supervision_timeout
579  */
580  #define HCI_SUBEVENT_LE_CONNECTION_UPDATE_COMPLETE         0x03
581 
582 /**
583  * @format 1HD2
584  * @param subevent_code
585  * @param connection_handle
586  * @param random_number
587  * @param encryption_diversifier
588  */
589 #define HCI_SUBEVENT_LE_READ_REMOTE_USED_FEATURES_COMPLETE 0x04
590 
591 /**
592  * @format 1HD2
593  * @param subevent_code
594  * @param connection_handle
595  * @param random_number
596  * @param encryption_diversifier
597  */
598 #define HCI_SUBEVENT_LE_LONG_TERM_KEY_REQUEST              0x05
599 
600 /**
601  * @format 1H2222
602  * @param subevent_code
603  * @param connection_handle
604  * @param interval_min
605  * @param interval_max
606  * @param latency
607  * @param timeout
608  */
609 #define HCI_SUBEVENT_LE_REMOTE_CONNECTION_PARAMETER_REQUEST 0x06
610 
611 /**
612  * @format 1H2222
613  * @param subevent_code
614  * @param connection_handle
615  * @param max_tx_octets
616  * @param max_tx_time
617  * @param max_rx_octets
618  * @param max_rx_time
619  */
620 #define HCI_SUBEVENT_LE_DATA_LENGTH_CHANGE 0x07
621 
622 /**
623  * @format 11QQ
624  * @param subevent_code
625  * @param status
626  * @param dhkey_x x coordinate of P256 public key
627  * @param dhkey_y y coordinate of P256 public key
628  */
629 #define HCI_SUBEVENT_LE_READ_LOCAL_P256_PUBLIC_KEY_COMPLETE 0x08
630  /**
631  * @format 11Q
632  * @param subevent_code
633  * @param status
634  * @param dhkey Diffie-Hellman key
635  */
636 #define HCI_SUBEVENT_LE_GENERATE_DHKEY_COMPLETE            0x09
637 
638 /**
639  * @format 11H11BBB2221
640  * @param subevent_code
641  * @param status
642  * @param connection_handle
643  * @param role
644  * @param peer_address_type
645  * @param perr_addresss
646  * @param local_resolvable_private_addres
647  * @param peer_resolvable_private_addres
648  * @param conn_interval
649  * @param conn_latency
650  * @param supervision_timeout
651  * @param master_clock_accuracy
652  */
653 #define HCI_SUBEVENT_LE_ENHANCED_CONNECTION_COMPLETE       0x0A
654 
655 // array of advertisements, not handled by event accessor generator
656 #define HCI_SUBEVENT_LE_DIRECT_ADVERTISING_REPORT          0x0B
657 
658 
659 /**
660  * @format 1
661  * @param state
662  */
663 #define BTSTACK_EVENT_STATE                                0x60
664 
665 /**
666  * @format 1
667  * @param number_connections
668  */
669 #define BTSTACK_EVENT_NR_CONNECTIONS_CHANGED               0x61
670 
671 /**
672  * @format
673  */
674 #define BTSTACK_EVENT_POWERON_FAILED                       0x62
675 
676 /**
677  * @format 1
678  * @param discoverable
679  */
680 #define BTSTACK_EVENT_DISCOVERABLE_ENABLED                 0x66
681 
682 // Daemon Events
683 
684 /**
685  * @format 112
686  * @param major
687  * @param minor
688  @ @param revision
689  */
690 #define DAEMON_EVENT_VERSION                               0x63
691 
692 // data: system bluetooth on/off (bool)
693 /**
694  * @format 1
695  * param system_bluetooth_enabled
696  */
697 #define DAEMON_EVENT_SYSTEM_BLUETOOTH_ENABLED              0x64
698 
699 // data: event (8), len(8), status (8) == 0, address (48), name (1984 bits = 248 bytes)
700 
701 /*
702  * @format 1BT
703  * @param status == 0 to match read_remote_name_request
704  * @param address
705  * @param name
706  */
707 #define DAEMON_EVENT_REMOTE_NAME_CACHED                    0x65
708 
709 // internal - data: event(8)
710 #define DAEMON_EVENT_CONNECTION_OPENED                     0x67
711 
712 // internal - data: event(8)
713 #define DAEMON_EVENT_CONNECTION_CLOSED                     0x68
714 
715 // data: event(8), len(8), local_cid(16), credits(8)
716 #define DAEMON_EVENT_L2CAP_CREDITS                         0x74
717 
718 /**
719  * @format 12
720  * @param status
721  * @param psm
722  */
723 #define DAEMON_EVENT_L2CAP_SERVICE_REGISTERED              0x75
724 
725 /**
726  * @format 21
727  * @param rfcomm_cid
728  * @param credits
729  */
730 #define DAEMON_EVENT_RFCOMM_CREDITS                        0x84
731 
732 /**
733  * @format 11
734  * @param status
735  * @param channel_id
736  */
737 #define DAEMON_EVENT_RFCOMM_SERVICE_REGISTERED             0x85
738 
739 /**
740  * @format 11
741  * @param status
742  * @param server_channel_id
743  */
744 #define DAEMON_EVENT_RFCOMM_PERSISTENT_CHANNEL             0x86
745 
746 /**
747   * @format 14
748   * @param status
749   * @param service_record_handle
750   */
751 #define DAEMON_EVENT_SDP_SERVICE_REGISTERED                0x90
752 
753 
754 
755 // additional HCI events
756 
757 /**
758  * @brief Indicates HCI transport enters/exits Sleep mode
759  * @format 1
760  * @param active
761  */
762 #define HCI_EVENT_TRANSPORT_SLEEP_MODE                     0x69
763 
764 /**
765  * @brief Outgoing packet
766  */
767 #define HCI_EVENT_TRANSPORT_PACKET_SENT                    0x6E
768 
769 /**
770  * @format B
771  * @param handle
772  */
773 #define HCI_EVENT_SCO_CAN_SEND_NOW                         0x6F
774 
775 
776 // L2CAP EVENTS
777 
778 /**
779  * @format 1BH222222111
780  * @param status
781  * @param address
782  * @param handle
783  * @param psm
784  * @param local_cid
785  * @param remote_cid
786  * @param local_mtu
787  * @param remote_mtu
788  * @param flush_timeout
789  * @param incoming
790  * @param mode
791  * @param fcs
792  */
793 #define L2CAP_EVENT_CHANNEL_OPENED                         0x70
794 
795 /*
796  * @format 2
797  * @param local_cid
798  */
799 #define L2CAP_EVENT_CHANNEL_CLOSED                         0x71
800 
801 /**
802  * @format BH222
803  * @param address
804  * @param handle
805  * @param psm
806  * @param local_cid
807  * @param remote_cid
808  */
809 #define L2CAP_EVENT_INCOMING_CONNECTION                    0x72
810 
811 // ??
812 // data: event(8), len(8), handle(16)
813 #define L2CAP_EVENT_TIMEOUT_CHECK                          0x73
814 
815 /**
816  * @format H2222
817  * @param handle
818  * @param interval_min
819  * @param interval_max
820  * @param latencey
821  * @param timeout_multiplier
822  */
823 #define L2CAP_EVENT_CONNECTION_PARAMETER_UPDATE_REQUEST    0x76
824 
825 // data: event(8), len(8), handle(16), result (16) (0 == ok, 1 == fail)
826  /**
827   * @format H2
828   * @param handle
829   * @param result
830   */
831 #define L2CAP_EVENT_CONNECTION_PARAMETER_UPDATE_RESPONSE   0x77
832 
833 /**
834  * @format 2
835  * @param local_cid
836  */
837 #define L2CAP_EVENT_CAN_SEND_NOW                           0x78
838 
839 // LE Data Channels
840 
841 /**
842  * @format 1BH2222
843  * @param address_type
844  * @param address
845  * @param handle
846  * @param psm
847  * @param local_cid
848  * @param remote_cid
849  * @param remote_mtu
850  */
851 #define L2CAP_EVENT_LE_INCOMING_CONNECTION                 0x79
852 
853 /**
854  * @format 11BH122222
855  * @param status
856  * @param address_type
857  * @param address
858  * @param handle
859  * @param incoming
860  * @param psm
861  * @param local_cid
862  * @param remote_cid
863  * @param local_mtu
864  * @param remote_mtu
865  */
866 #define L2CAP_EVENT_LE_CHANNEL_OPENED                      0x7a
867 
868 /*
869  * @format 2
870  * @param local_cid
871  */
872 #define L2CAP_EVENT_LE_CHANNEL_CLOSED                      0x7b
873 
874 /*
875  * @format 2
876  * @param local_cid
877  */
878 #define L2CAP_EVENT_LE_CAN_SEND_NOW                        0x7c
879 
880 /*
881  * @format 2
882  * @param local_cid
883  */
884 #define L2CAP_EVENT_LE_PACKET_SENT                         0x7d
885 
886 /*
887  * @format 2
888  * @param local_cid
889  */
890 #define L2CAP_EVENT_ERTM_BUFFER_RELEASED                   0x7e
891 
892 
893 // RFCOMM EVENTS
894 
895 /**
896  * @format 1B21221
897  * @param status
898  * @param bd_addr
899  * @param con_handle
900  * @param server_channel
901  * @param rfcomm_cid
902  * @param max_frame_size
903  * @param incoming
904  */
905 #define RFCOMM_EVENT_CHANNEL_OPENED                        0x80
906 
907 /**
908  * @format 2
909  * @param rfcomm_cid
910  */
911 #define RFCOMM_EVENT_CHANNEL_CLOSED                        0x81
912 
913 /**
914  * @format B12
915  * @param bd_addr
916  * @param server_channel
917  * @param rfcomm_cid
918  */
919 #define RFCOMM_EVENT_INCOMING_CONNECTION                   0x82
920 
921 /**
922  * @format 21
923  * @param rfcomm_cid
924  * @param line_status
925  */
926 #define RFCOMM_EVENT_REMOTE_LINE_STATUS                    0x83
927 
928 /**
929  * @format 21
930  * @param rfcomm_cid
931  * @param modem_status
932  */
933 #define RFCOMM_EVENT_REMOTE_MODEM_STATUS                   0x87
934 
935  /**
936   * TODO: format for variable data 2?
937   * param rfcomm_cid
938   * param rpn_data
939   */
940 #define RFCOMM_EVENT_PORT_CONFIGURATION                    0x88
941 
942 /**
943  * @format 2
944  * @param rfcomm_cid
945  */
946 #define RFCOMM_EVENT_CAN_SEND_NOW                          0x89
947 
948 
949 /**
950  * @format 1
951  * @param status
952  */
953 #define SDP_EVENT_QUERY_COMPLETE                                 0x91
954 
955 /**
956  * @format 1T
957  * @param rfcomm_channel
958  * @param name
959  */
960 #define SDP_EVENT_QUERY_RFCOMM_SERVICE                           0x92
961 
962 /**
963  * @format 22221
964  * @param record_id
965  * @param attribute_id
966  * @param attribute_length
967  * @param data_offset
968  * @param data
969  */
970 #define SDP_EVENT_QUERY_ATTRIBUTE_BYTE                           0x93
971 
972 /**
973  * @format 22LV
974  * @param record_id
975  * @param attribute_id
976  * @param attribute_length
977  * @param attribute_value
978  */
979 #define SDP_EVENT_QUERY_ATTRIBUTE_VALUE                          0x94
980 
981 /**
982  * @format 224
983  * @param total_count
984  * @param record_index
985  * @param record_handle
986  * @note Not provided by daemon, only used for internal testing
987  */
988 #define SDP_EVENT_QUERY_SERVICE_RECORD_HANDLE                    0x95
989 
990 /**
991  * @format H1
992  * @param handle
993  * @param att_status  see ATT errors in bluetooth.h
994  */
995 #define GATT_EVENT_QUERY_COMPLETE                                0xA0
996 
997 /**
998  * @format HX
999  * @param handle
1000  * @param service
1001  */
1002 #define GATT_EVENT_SERVICE_QUERY_RESULT                          0xA1
1003 
1004 /**
1005  * @format HY
1006  * @param handle
1007  * @param characteristic
1008  */
1009 #define GATT_EVENT_CHARACTERISTIC_QUERY_RESULT                   0xA2
1010 
1011 /**
1012  * @format H2X
1013  * @param handle
1014  * @param include_handle
1015  * @param service
1016  */
1017 #define GATT_EVENT_INCLUDED_SERVICE_QUERY_RESULT                 0xA3
1018 
1019 /**
1020  * @format HZ
1021  * @param handle
1022  * @param characteristic_descriptor
1023  */
1024 #define GATT_EVENT_ALL_CHARACTERISTIC_DESCRIPTORS_QUERY_RESULT   0xA4
1025 
1026 /**
1027  * @format H2LV
1028  * @param handle
1029  * @param value_handle
1030  * @param value_length
1031  * @param value
1032  */
1033 #define GATT_EVENT_CHARACTERISTIC_VALUE_QUERY_RESULT             0xA5
1034 
1035 /**
1036  * @format H22LV
1037  * @param handle
1038  * @param value_handle
1039  * @param value_offset
1040  * @param value_length
1041  * @param value
1042  */
1043 #define GATT_EVENT_LONG_CHARACTERISTIC_VALUE_QUERY_RESULT        0xA6
1044 
1045 /**
1046  * @format H2LV
1047  * @param handle
1048  * @param value_handle
1049  * @param value_length
1050  * @param value
1051  */
1052 #define GATT_EVENT_NOTIFICATION                                  0xA7
1053 
1054 /**
1055  * @format H2LV
1056  * @param handle
1057  * @param value_handle
1058  * @param value_length
1059  * @param value
1060  */
1061 #define GATT_EVENT_INDICATION                                    0xA8
1062 
1063 /**
1064  * @format H2LV
1065  * @param handle
1066  * @param descriptor_handle
1067  * @param descriptor_length
1068  * @param descriptor
1069  */
1070 #define GATT_EVENT_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT        0xA9
1071 
1072 /**
1073  * @format H2LV
1074  * @param handle
1075  * @param descriptor_offset
1076  * @param descriptor_length
1077  * @param descriptor
1078  */
1079 #define GATT_EVENT_LONG_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT   0xAA
1080 
1081 /**
1082  * @format H2
1083  * @param handle
1084  * @param MTU
1085  */
1086 #define GATT_EVENT_MTU                                           0xAB
1087 
1088 /**
1089  * @format H
1090  * @param handle
1091  */
1092 #define GATT_EVENT_CAN_WRITE_WITHOUT_RESPONSE                    0xAC
1093 
1094 /**
1095  * @format 1BH
1096  * @param address_type
1097  * @param address
1098  * @param handle
1099  */
1100 #define ATT_EVENT_CONNECTED                                      0xB3
1101 
1102 /**
1103  * @format H
1104  * @param handle
1105  */
1106 #define ATT_EVENT_DISCONNECTED                                   0xB4
1107 
1108 /**
1109  * @format H2
1110  * @param handle
1111  * @param MTU
1112  */
1113 #define ATT_EVENT_MTU_EXCHANGE_COMPLETE                          0xB5
1114 
1115  /**
1116   * @format 1H2
1117   * @param status
1118   * @param conn_handle
1119   * @param attribute_handle
1120   */
1121 #define ATT_EVENT_HANDLE_VALUE_INDICATION_COMPLETE               0xB6
1122 
1123 /**
1124  * @format
1125  */
1126 #define ATT_EVENT_CAN_SEND_NOW                                   0xB7
1127 
1128 // TODO: daemon only event
1129 
1130 /**
1131  * @format 12
1132  * @param status
1133  * @param service_uuid
1134  */
1135  #define BNEP_EVENT_SERVICE_REGISTERED                      0xC0
1136 
1137 /**
1138  * @format 12222BH
1139  * @param status
1140  * @param bnep_cid
1141  * @param source_uuid
1142  * @param destination_uuid
1143  * @param mtu
1144  * @param remote_address
1145  * @param con_handle
1146  */
1147  #define BNEP_EVENT_CHANNEL_OPENED                   0xC1
1148 
1149 /**
1150  * @format 222B
1151  * @param bnep_cid
1152  * @param source_uuid
1153  * @param destination_uuid
1154  * @param remote_address
1155  */
1156  #define BNEP_EVENT_CHANNEL_CLOSED                          0xC2
1157 
1158 /**
1159  * @format 222B1
1160  * @param bnep_cid
1161  * @param source_uuid
1162  * @param destination_uuid
1163  * @param remote_address
1164  * @param channel_state
1165  */
1166 #define BNEP_EVENT_CHANNEL_TIMEOUT                         0xC3
1167 
1168 /**
1169  * @format 222B
1170  * @param bnep_cid
1171  * @param source_uuid
1172  * @param destination_uuid
1173  * @param remote_address
1174  */
1175  #define BNEP_EVENT_CAN_SEND_NOW                           0xC4
1176 
1177  /**
1178   * @format H1B
1179   * @param handle
1180   * @param addr_type
1181   * @param address
1182   */
1183 #define SM_EVENT_JUST_WORKS_REQUEST                              0xD0
1184 
1185  /**
1186   * @format H1B
1187   * @param handle
1188   * @param addr_type
1189   * @param address
1190   */
1191 #define SM_EVENT_JUST_WORKS_CANCEL                               0xD1
1192 
1193  /**
1194   * @format H1B4
1195   * @param handle
1196   * @param addr_type
1197   * @param address
1198   * @param passkey
1199   */
1200 #define SM_EVENT_PASSKEY_DISPLAY_NUMBER                          0xD2
1201 
1202  /**
1203   * @format H1B
1204   * @param handle
1205   * @param addr_type
1206   * @param address
1207   */
1208 #define SM_EVENT_PASSKEY_DISPLAY_CANCEL                          0xD3
1209 
1210  /**
1211   * @format H1B
1212   * @param handle
1213   * @param addr_type
1214   * @param address
1215   */
1216 #define SM_EVENT_PASSKEY_INPUT_NUMBER                            0xD4
1217 
1218  /**
1219   * @format H1B
1220   * @param handle
1221   * @param addr_type
1222   * @param address
1223   */
1224 #define SM_EVENT_PASSKEY_INPUT_CANCEL                            0xD5
1225 
1226  /**
1227   * @format H1B4
1228   * @param handle
1229   * @param addr_type
1230   * @param address
1231   * @param passkey
1232   */
1233 #define SM_EVENT_NUMERIC_COMPARISON_REQUEST                      0xD6
1234 
1235  /**
1236   * @format H1B
1237   * @param handle
1238   * @param addr_type
1239   * @param address
1240   */
1241 #define SM_EVENT_NUMERIC_COMPARISON_CANCEL                       0xD7
1242 
1243  /**
1244   * @format H1B
1245   * @param handle
1246   * @param addr_type
1247   * @param address
1248   */
1249 #define SM_EVENT_IDENTITY_RESOLVING_STARTED                      0xD8
1250 
1251  /**
1252   * @format H1B
1253   * @param handle
1254   * @param addr_type
1255   * @param address
1256   */
1257 #define SM_EVENT_IDENTITY_RESOLVING_FAILED                       0xD9
1258 
1259  /**
1260   * @brief Identify resolving succeeded
1261   *
1262   * @format H1B1B2
1263   * @param handle
1264   * @param addr_type
1265   * @param address
1266   * @param identity_addr_type
1267   * @param identity_address
1268   * @param index
1269   *
1270   */
1271 #define SM_EVENT_IDENTITY_RESOLVING_SUCCEEDED                    0xDA
1272 
1273  /**
1274   * @format H1B
1275   * @param handle
1276   * @param addr_type
1277   * @param address
1278   */
1279 #define SM_EVENT_AUTHORIZATION_REQUEST                           0xDB
1280 
1281  /**
1282   * @format H1B1
1283   * @param handle
1284   * @param addr_type
1285   * @param address
1286   * @param authorization_result
1287   */
1288 #define SM_EVENT_AUTHORIZATION_RESULT                            0xDC
1289 
1290  /**
1291   * @format H1
1292   * @param handle
1293   * @param action see SM_KEYPRESS_*
1294   */
1295 #define SM_EVENT_KEYPRESS_NOTIFICATION                           0xDD
1296 
1297  /**
1298   * @brief Emitted during pairing to inform app about address used as identity
1299   *
1300   * @format H1B1B2
1301   * @param handle
1302   * @param addr_type
1303   * @param address
1304   * @param identity_addr_type
1305   * @param identity_address
1306   * @param index
1307   */
1308 #define SM_EVENT_IDENTITY_CREATED                                0xDE
1309 
1310  /**
1311   * @brief Emitted to inform app that pairing is complete. Possible status values:
1312   *        ERROR_CODE_SUCCESS                            -> pairing success
1313   *        ERROR_CODE_CONNECTION_TIMEOUT                 -> timeout
1314   *        ERROR_CODE_REMOTE_USER_TERMINATED_CONNECTION  -> disconnect
1315   *        ERROR_CODE_AUTHENTICATION_FAILURE             -> SM protocol error, see reason field with SM_REASON_* from bluetooth.h
1316   *
1317   * @format H1B11
1318   * @param handle
1319   * @param addr_type
1320   * @param address
1321   * @param status
1322   * @param reason if status == ERROR_CODE_AUTHENTICATION_FAILURE
1323   */
1324 #define SM_EVENT_PAIRING_COMPLETE                                0xDF
1325 
1326 
1327 // GAP
1328 
1329 /**
1330  * @format H1
1331  * @param handle
1332  * @param security_level
1333  */
1334 #define GAP_EVENT_SECURITY_LEVEL                                 0xE0
1335 
1336 /**
1337  * @format 1B
1338  * @param status
1339  * @param address
1340  */
1341 #define GAP_EVENT_DEDICATED_BONDING_COMPLETED                    0xE1
1342 
1343 /**
1344  * @format 11B1JV
1345  * @param advertising_event_type
1346  * @param address_type
1347  * @param address
1348  * @param rssi
1349  * @param data_length
1350  * @param data
1351  */
1352 #define GAP_EVENT_ADVERTISING_REPORT                          0xE2
1353 
1354  /**
1355  * @format B132111JV
1356  * @param bd_addr
1357  * @param page_scan_repetition_mode
1358  * @param class_of_device
1359  * @param clock_offset
1360  * @param rssi_available
1361  * @param rssi
1362  * @param name_available
1363  * @param name_len
1364  * @param name
1365  */
1366 #define GAP_EVENT_INQUIRY_RESULT                              0xE3
1367 
1368 /**
1369  * @format 1
1370  * @param status
1371  */
1372 #define GAP_EVENT_INQUIRY_COMPLETE                            0xE4
1373 
1374 /**
1375  * @format H1
1376  * @param con_handle
1377  * @param rssi (signed integer -127..127)
1378  * @note Classic: rssi is in dB relative to Golden Receive Power Range
1379  * @note LE: rssi is absolute dBm
1380  */
1381 #define GAP_EVENT_RSSI_MEASUREMENT                            0xE5
1382 
1383 // Meta Events, see below for sub events
1384 #define HCI_EVENT_HSP_META                                 0xE8
1385 #define HCI_EVENT_HFP_META                                 0xE9
1386 #define HCI_EVENT_ANCS_META                                0xEA
1387 #define HCI_EVENT_AVDTP_META                               0xEB
1388 #define HCI_EVENT_AVRCP_META                               0xEC
1389 #define HCI_EVENT_GOEP_META                                0xED
1390 #define HCI_EVENT_PBAP_META                                0xEE
1391 #define HCI_EVENT_HID_META                                 0xEF
1392 #define HCI_EVENT_A2DP_META                                0xF0
1393 #define HCI_EVENT_HIDS_META                                0xF1
1394 #define HCI_EVENT_GATTSERVICE_META                         0xF2
1395 #define HCI_EVENT_BIP_META                                 0xF3
1396 #define HCI_EVENT_MAP_META                                 0xF4
1397 #define HCI_EVENT_MESH_META                                0xF5
1398 
1399 // Potential other meta groups
1400 // #define HCI_EVENT_BNEP_META                                0xxx
1401 // #define HCI_EVENT_GAP_META                                 0xxx
1402 // #define HCI_EVENT_GATT_META                                0xxx
1403 // #define HCI_EVENT_PAN_META                                 0xxx
1404 // #define HCI_EVENT_SDP_META                                 0xxx
1405 // #define HCI_EVENT_SM_META                                  0xxx
1406 
1407 
1408 /** HSP Subevent */
1409 
1410 /**
1411  * @format 11
1412  * @param subevent_code
1413  * @param status 0 == OK
1414  */
1415 #define HSP_SUBEVENT_RFCOMM_CONNECTION_COMPLETE             0x01
1416 
1417 /**
1418  * @format 11
1419  * @param subevent_code
1420  * @param status 0 == OK
1421  */
1422 #define HSP_SUBEVENT_RFCOMM_DISCONNECTION_COMPLETE           0x02
1423 
1424 
1425 /**
1426  * @format 11H
1427  * @param subevent_code
1428  * @param status 0 == OK
1429  * @param handle
1430  */
1431 #define HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE             0x03
1432 
1433 /**
1434  * @format 11
1435  * @param subevent_code
1436  * @param status 0 == OK
1437  */
1438 #define HSP_SUBEVENT_AUDIO_DISCONNECTION_COMPLETE          0x04
1439 
1440 /**
1441  * @format 1
1442  * @param subevent_code
1443  */
1444 #define HSP_SUBEVENT_RING                                  0x05
1445 
1446 /**
1447  * @format 11
1448  * @param subevent_code
1449  * @param gain Valid range: [0,15]
1450  */
1451 #define HSP_SUBEVENT_MICROPHONE_GAIN_CHANGED               0x06
1452 
1453 /**
1454  * @format 11
1455  * @param subevent_code
1456  * @param gain Valid range: [0,15]
1457  */
1458 #define HSP_SUBEVENT_SPEAKER_GAIN_CHANGED                  0x07
1459 
1460 /**
1461  * @format 1JV
1462  * @param subevent_code
1463  * @param value_length
1464  * @param value
1465  */
1466 #define HSP_SUBEVENT_HS_COMMAND                            0x08
1467 
1468 /**
1469  * @format 1JV
1470  * @param subevent_code
1471  * @param value_length
1472  * @param value
1473  */
1474 #define HSP_SUBEVENT_AG_INDICATION                         0x09
1475 
1476 
1477 /** HFP Subevent */
1478 
1479 /**
1480  * @format 11HB
1481  * @param subevent_code
1482  * @param status 0 == OK
1483  * @param con_handle
1484  * @param bd_addr
1485  */
1486 #define HFP_SUBEVENT_SERVICE_LEVEL_CONNECTION_ESTABLISHED  0x01
1487 
1488 /**
1489  * @format 1
1490  * @param subevent_code
1491  */
1492 #define HFP_SUBEVENT_SERVICE_LEVEL_CONNECTION_RELEASED     0x02
1493 
1494 /**
1495  * @format 11HB1
1496  * @param subevent_code
1497  * @param status 0 == OK
1498  * @param handle
1499  * @param bd_addr
1500  * @param negotiated_codec
1501  */
1502 #define HFP_SUBEVENT_AUDIO_CONNECTION_ESTABLISHED          0x03
1503 
1504 /**
1505  * @format 1
1506  * @param subevent_code
1507  */
1508 #define HFP_SUBEVENT_AUDIO_CONNECTION_RELEASED             0x04
1509 
1510 /**
1511  * @format 11
1512  * @param subevent_code
1513  * @param status 0 == OK
1514  */
1515 #define HFP_SUBEVENT_COMPLETE                              0x05
1516 
1517 /**
1518  * @format 11111111T
1519  * @param subevent_code
1520  * @param indicator_index
1521  * @param indicator_status
1522  * @param indicator_min_range
1523  * @param indicator_max_range
1524  * @param indicator_mandatory
1525  * @param indicator_enabled
1526  * @param indicator_status_changed
1527  * @param indicator_name
1528  */
1529 #define HFP_SUBEVENT_AG_INDICATOR_STATUS_CHANGED           0x06
1530 
1531 /**
1532  * @format 111T
1533  * @param subevent_code
1534  * @param network_operator_mode
1535  * @param network_operator_format
1536  * @param network_operator_name
1537  */
1538 #define HFP_SUBEVENT_NETWORK_OPERATOR_CHANGED              0x07
1539 
1540 /**
1541  * @format 11
1542  * @param subevent_code
1543  * @param error
1544  */
1545 #define HFP_SUBEVENT_EXTENDED_AUDIO_GATEWAY_ERROR             0x08
1546 
1547 /**
1548  * @format 1
1549  * @param subevent_code
1550  */
1551 #define HFP_SUBEVENT_START_RINGINIG                           0x0A
1552 
1553 /**
1554  * @format 1
1555  * @param subevent_code
1556  */
1557 #define HFP_SUBEVENT_STOP_RINGINIG                            0x0B
1558 
1559 /**
1560  * @format 1
1561  * @param subevent_code
1562  */
1563 #define HFP_SUBEVENT_CALL_TERMINATED                          0x0C
1564 
1565 /**
1566  * @format 1T
1567  * @param subevent_code
1568  * @param number
1569  */
1570 #define HFP_SUBEVENT_PLACE_CALL_WITH_NUMBER                   0x0D
1571 
1572 /**
1573  * @format 1
1574  * @param subevent_code
1575  */
1576 #define HFP_SUBEVENT_ATTACH_NUMBER_TO_VOICE_TAG               0x0E
1577 
1578 /**
1579  * @format 1T
1580  * @param subevent_code
1581  * @param number
1582  */
1583 #define HFP_SUBEVENT_NUMBER_FOR_VOICE_TAG                     0x0F
1584 
1585 /**
1586  * @format 1T
1587  * @param subevent_code
1588  * @param dtmf code
1589  */
1590 #define HFP_SUBEVENT_TRANSMIT_DTMF_CODES                      0x10
1591 
1592 /**
1593  * @format 1
1594  * @param subevent_code
1595  */
1596  #define HFP_SUBEVENT_CALL_ANSWERED                            0x11
1597 
1598 /**
1599  * @format 1
1600  * @param subevent_code
1601  */
1602 #define HFP_SUBEVENT_CONFERENCE_CALL                          0x12
1603 
1604 /**
1605  * @format 1
1606  * @param subevent_code
1607  */
1608 #define HFP_SUBEVENT_RING                                     0x13
1609 
1610 /**
1611  * @format 111
1612  * @param subevent_code
1613  * @param status
1614  * @param gain
1615  */
1616  #define HFP_SUBEVENT_SPEAKER_VOLUME                           0x14
1617 
1618 /**
1619  * @format 111
1620  * @param subevent_code
1621  * @param status
1622  * @param gain
1623  */
1624 #define HFP_SUBEVENT_MICROPHONE_VOLUME                        0x15
1625 
1626 /**
1627  * @format 11T
1628  * @param subevent_code
1629  * @param type
1630  * @param number
1631  */
1632 #define HFP_SUBEVENT_CALL_WAITING_NOTIFICATION                0x16
1633 
1634 /**
1635  * @format 11T
1636  * @param subevent_code
1637  * @param type
1638  * @param number
1639  */
1640 #define HFP_SUBEVENT_CALLING_LINE_IDENTIFICATION_NOTIFICATION 0x17
1641 
1642 /**
1643  * @format 1111111T
1644  * @param subevent_code
1645  * @param clcc_idx
1646  * @param clcc_dir
1647  * @param clcc_status
1648  * @param clcc_mode
1649  * @param clcc_mpty
1650  * @param bnip_type
1651  * @param bnip_number
1652  */
1653 #define HFP_SUBEVENT_ENHANCED_CALL_STATUS                     0x18
1654 
1655 /**
1656  * @format 111T
1657  * @param subevent_code
1658  * @param status
1659  * @param bnip_type
1660  * @param bnip_number
1661  */
1662  #define HFP_SUBEVENT_SUBSCRIBER_NUMBER_INFORMATION            0x19
1663 
1664 /**
1665  * @format 1T
1666  * @param subevent_code
1667  * @param value
1668  */
1669 #define HFP_SUBEVENT_RESPONSE_AND_HOLD_STATUS                 0x1A
1670 
1671 // ANCS Client
1672 
1673 /**
1674  * @format 1H
1675  * @param subevent_code
1676  * @param handle
1677  */
1678 #define ANCS_SUBEVENT_CLIENT_CONNECTED                              0xF0
1679 
1680 /**
1681  * @format 1H2T
1682  * @param subevent_code
1683  * @param handle
1684  * @param attribute_id
1685  * @param text
1686  */
1687 #define ANCS_SUBEVENT_CLIENT_NOTIFICATION                           0xF1
1688 
1689 /**
1690  * @format 1H
1691  * @param subevent_code
1692  * @param handle
1693  */
1694 #define ANCS_SUBEVENT_CLIENT_DISCONNECTED                           0xF2
1695 
1696 
1697 /** AVDTP Subevent */
1698 
1699 /**
1700  * @format 1211
1701  * @param subevent_code
1702  * @param avdtp_cid
1703  * @param local_seid
1704  * @param signal_identifier
1705  */
1706 #define AVDTP_SUBEVENT_SIGNALING_ACCEPT                     0x01
1707 
1708 /**
1709  * @format 1211
1710  * @param subevent_code
1711  * @param avdtp_cid
1712  * @param local_seid
1713  * @param signal_identifier
1714  */
1715 #define AVDTP_SUBEVENT_SIGNALING_REJECT                     0x02
1716 
1717 /**
1718  * @format 1211
1719  * @param subevent_code
1720  * @param avdtp_cid
1721  * @param local_seid
1722  * @param signal_identifier
1723  */
1724 #define AVDTP_SUBEVENT_SIGNALING_GENERAL_REJECT             0x03
1725 
1726 /**
1727  * @format 12B1
1728  * @param subevent_code
1729  * @param avdtp_cid
1730  * @param bd_addr
1731  * @param status 0 == OK
1732  */
1733 #define AVDTP_SUBEVENT_SIGNALING_CONNECTION_ESTABLISHED     0x04
1734 
1735 /**
1736  * @format 12
1737  * @param subevent_code
1738  * @param avdtp_cid
1739  */
1740 #define AVDTP_SUBEVENT_SIGNALING_CONNECTION_RELEASED        0x05
1741 
1742 /**
1743  * @format 121111
1744  * @param subevent_code
1745  * @param avdtp_cid
1746  * @param remote_seid        0x01 – 0x3E
1747  * @param in_use      0-not in use, 1-in use
1748  * @param media_type  0-audio, 1-video, 2-multimedia
1749  * @param sep_type    0-source, 1-sink
1750  */
1751 #define AVDTP_SUBEVENT_SIGNALING_SEP_FOUND                  0x06
1752 
1753 /**
1754  * @format 121111111111
1755  * @param subevent_code
1756  * @param avdtp_cid
1757  * @param local_seid
1758  * @param remote_seid
1759  * @param media_type
1760  * @param sampling_frequency_bitmap
1761  * @param channel_mode_bitmap
1762  * @param block_length_bitmap
1763  * @param subbands_bitmap
1764  * @param allocation_method_bitmap
1765  * @param min_bitpool_value
1766  * @param max_bitpool_value
1767  */
1768 #define AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_SBC_CAPABILITY          0x07
1769 
1770 /**
1771  * @format 121112LV
1772  * @param subevent_code
1773  * @param avdtp_cid
1774  * @param local_seid
1775  * @param remote_seid
1776  * @param media_type
1777  * @param media_codec_type
1778  * @param media_codec_information_len
1779  * @param media_codec_information
1780  */
1781 #define AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_OTHER_CAPABILITY        0x08
1782 
1783 
1784 /**
1785  * @format 1211
1786  * @param subevent_code
1787  * @param avdtp_cid
1788  * @param local_seid
1789  * @param remote_seid
1790  */
1791 #define AVDTP_SUBEVENT_SIGNALING_MEDIA_TRANSPORT_CAPABILITY        0x09
1792 
1793 
1794 /**
1795  * @format 1211
1796  * @param subevent_code
1797  * @param avdtp_cid
1798  * @param local_seid
1799  * @param remote_seid
1800  */
1801 #define AVDTP_SUBEVENT_SIGNALING_REPORTING_CAPABILITY        0x0A
1802 
1803 
1804 /**
1805  * @format 1211111
1806  * @param subevent_code
1807  * @param avdtp_cid
1808  * @param local_seid
1809  * @param remote_seid
1810  * @param recovery_type
1811  * @param maximum_recovery_window_size
1812  * @param maximum_number_media_packets
1813  */
1814 #define AVDTP_SUBEVENT_SIGNALING_RECOVERY_CAPABILITY        0x0B
1815 
1816 
1817 /**
1818  * @format 12112LV
1819  * @param subevent_code
1820  * @param avdtp_cid
1821  * @param local_seid
1822  * @param remote_seid
1823  * @param cp_type
1824  * @param cp_type_value_len
1825  * @param cp_type_value
1826  */
1827 #define AVDTP_SUBEVENT_SIGNALING_CONTENT_PROTECTION_CAPABILITY        0x0C
1828 
1829 
1830 /**
1831  * @format 121111111111
1832  * @param subevent_code
1833  * @param avdtp_cid
1834  * @param local_seid
1835  * @param remote_seid
1836  * @param fragmentation
1837  * @param transport_identifiers_num
1838  * @param transport_session_identifier_1
1839  * @param transport_session_identifier_2
1840  * @param transport_session_identifier_3
1841  * @param tcid_1
1842  * @param tcid_2
1843  * @param tcid_3
1844  */
1845 #define AVDTP_SUBEVENT_SIGNALING_MULTIPLEXING_CAPABILITY        0x0D
1846 
1847 
1848 /**
1849  * @format 1211
1850  * @param subevent_code
1851  * @param avdtp_cid
1852  * @param local_seid
1853  * @param remote_seid
1854  */
1855 #define AVDTP_SUBEVENT_SIGNALING_DELAY_REPORTING_CAPABILITY        0x0E
1856 
1857 
1858 /**
1859  * @format 1211111
1860  * @param subevent_code
1861  * @param avdtp_cid
1862  * @param local_seid
1863  * @param remote_seid
1864  * @param back_ch
1865  * @param media
1866  * @param recovery
1867  */
1868 #define AVDTP_SUBEVENT_SIGNALING_HEADER_COMPRESSION_CAPABILITY        0x0F
1869 
1870 
1871 /**
1872  * @format 12111121111111
1873  * @param subevent_code
1874  * @param avdtp_cid
1875  * @param local_seid
1876  * @param remote_seid
1877  * @param reconfigure
1878  * @param media_type
1879  * @param sampling_frequency
1880  * @param channel_mode
1881  * @param num_channels
1882  * @param block_length
1883  * @param subbands
1884  * @param allocation_method
1885  * @param min_bitpool_value
1886  * @param max_bitpool_value
1887  */
1888 #define AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_SBC_CONFIGURATION        0x10
1889 
1890 /**
1891  * @format 1211112LV
1892  * @param subevent_code
1893  * @param avdtp_cid
1894  * @param local_seid
1895  * @param remote_seid
1896  * @param reconfigure
1897  * @param media_type
1898  * @param media_codec_type
1899  * @param media_codec_information_len
1900  * @param media_codec_information
1901  */
1902 #define AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_OTHER_CONFIGURATION        0x11
1903 
1904 /**
1905  * @format 12B111
1906  * @param subevent_code
1907  * @param avdtp_cid
1908  * @param bd_addr
1909  * @param local_seid
1910  * @param remote_seid
1911  * @param status 0 == OK
1912  */
1913 #define AVDTP_SUBEVENT_STREAMING_CONNECTION_ESTABLISHED     0x12
1914 
1915 /**
1916  * @format 121
1917  * @param subevent_code
1918  * @param avdtp_cid
1919  * @param local_seid
1920  */
1921 #define AVDTP_SUBEVENT_STREAMING_CONNECTION_RELEASED        0x13
1922 
1923 /**
1924  * @format 1212
1925  * @param subevent_code
1926  * @param avdtp_cid
1927  * @param local_seid
1928  * @param sequence_number
1929  */
1930 #define AVDTP_SUBEVENT_STREAMING_CAN_SEND_MEDIA_PACKET_NOW   0x14
1931 
1932 /**
1933  * @format 1211
1934  * @param subevent_code
1935  * @param avdtp_cid
1936  * @param local_seid
1937  * @param remote_seid
1938  */
1939 #define AVDTP_SUBEVENT_SIGNALING_CAPABILITIES_DONE           0x15
1940 
1941 
1942 /**
1943  * @format 12
1944  * @param subevent_code
1945  * @param avdtp_cid
1946  */
1947 #define AVDTP_SUBEVENT_SIGNALING_SEP_DICOVERY_DONE           0x16
1948 
1949 /**
1950  * @format 1212
1951  * @param subevent_code
1952  * @param avdtp_cid
1953  * @param local_seid
1954  * @param delay_100us
1955  */
1956 #define AVDTP_SUBEVENT_SIGNALING_DELAY_REPORT               0x17
1957 
1958 /** A2DP Subevent */
1959 /* Stream goes through following states:
1960  * - OPEN         - indicated with A2DP_SUBEVENT_STREAM_ESTABLISHED event
1961  * - START        - indicated with A2DP_SUBEVENT_STREAM_STARTED event
1962  * - SUSPEND      - indicated with A2DP_SUBEVENT_STREAM_SUSPENDED event
1963  * - ABORT/STOP   - indicated with A2DP_SUBEVENT_STREAM_RELEASED event
1964 
1965  OPEN state will be followed by ABORT/STOP. Stream is ready but media transfer is not started.
1966  START can come only after the stream is OPENED, and indicates that media transfer is started.
1967  SUSPEND is optional, it pauses the stream.
1968  */
1969 
1970 /**
1971  * @format 121            Sent only by A2DP source.
1972  * @param subevent_code
1973  * @param a2dp_cid
1974  * @param local_seid
1975  */
1976 #define A2DP_SUBEVENT_STREAMING_CAN_SEND_MEDIA_PACKET_NOW         0x01
1977 
1978 /**
1979  * @format 12111121111111
1980  * @param subevent_code
1981  * @param a2dp_cid
1982  * @param int_seid
1983  * @param acp_seid
1984  * @param reconfigure
1985  * @param media_type
1986  * @param sampling_frequency
1987  * @param channel_mode
1988  * @param num_channels
1989  * @param block_length
1990  * @param subbands
1991  * @param allocation_method
1992  * @param min_bitpool_value
1993  * @param max_bitpool_value
1994  */
1995 #define A2DP_SUBEVENT_SIGNALING_MEDIA_CODEC_SBC_CONFIGURATION      0x02
1996 
1997 /**
1998  * @format 1211112LV
1999  * @param subevent_code
2000  * @param a2dp_cid
2001  * @param int_seid
2002  * @param acp_seid
2003  * @param reconfigure
2004  * @param media_type
2005  * @param media_codec_type
2006  * @param media_codec_information_len
2007  * @param media_codec_information
2008  */
2009 #define A2DP_SUBEVENT_SIGNALING_MEDIA_CODEC_OTHER_CONFIGURATION    0x03
2010 
2011 /**
2012  * @format 12B111          Stream is opened byt not started.
2013  * @param subevent_code
2014  * @param a2dp_cid
2015  * @param bd_addr
2016  * @param local_seid
2017  * @param remote_seid
2018  * @param status
2019  */
2020 #define A2DP_SUBEVENT_STREAM_ESTABLISHED                           0x04
2021 
2022 /**
2023  * @format 121            Indicates that media transfer is started.
2024  * @param subevent_code
2025  * @param a2dp_cid
2026  * @param local_seid
2027  */
2028 #define A2DP_SUBEVENT_STREAM_STARTED                               0x05
2029 
2030 /**
2031  * @format 121           Stream is paused.
2032  * @param subevent_code
2033  * @param a2dp_cid
2034  * @param local_seid
2035  */
2036 #define A2DP_SUBEVENT_STREAM_SUSPENDED                              0x06
2037 
2038 /**
2039  * @format 121           Stream is stoped or aborted.
2040  * @param subevent_code
2041  * @param a2dp_cid
2042  * @param local_seid
2043  */
2044 #define A2DP_SUBEVENT_STREAM_STOPPED                                0x07
2045 
2046 /**
2047  * @format 121            Stream is released.
2048  * @param subevent_code
2049  * @param a2dp_cid
2050  * @param local_seid
2051  */
2052 #define A2DP_SUBEVENT_STREAM_RELEASED                               0x08
2053 
2054 /**
2055  * @format 1211
2056  * @param subevent_code
2057  * @param a2dp_cid
2058  * @param local_seid
2059  * @param signal_identifier
2060  */
2061 #define A2DP_SUBEVENT_COMMAND_ACCEPTED                              0x09
2062 
2063 /**
2064  * @format 1211
2065  * @param subevent_code
2066  * @param a2dp_cid
2067  * @param local_seid
2068  * @param signal_identifier
2069  */
2070 #define A2DP_SUBEVENT_COMMAND_REJECTED                              0x0A
2071 
2072 /**
2073  * @format 12B1
2074  * @param subevent_code
2075  * @param a2dp_cid
2076  * @param bd_addr
2077  * @param status 0 == OK
2078  */
2079 #define A2DP_SUBEVENT_SIGNALING_CONNECTION_ESTABLISHED              0x0B
2080 
2081 /**
2082  * @format 12            Signaling channel is released.
2083  * @param subevent_code
2084  * @param a2dp_cid
2085  */
2086 #define A2DP_SUBEVENT_SIGNALING_CONNECTION_RELEASED                  0x0C
2087 
2088 /**
2089  * @format 1211          Stream was reconfigured
2090  * @param subevent_code
2091  * @param a2dp_cid
2092  * @param local_seid
2093  * @param status
2094  */
2095 #define A2DP_SUBEVENT_STREAM_RECONFIGURED                            0x0D
2096 
2097 /**
2098  * @format 1211
2099  * @param subevent_code
2100  * @param avdtp_cid
2101  * @param local_seid
2102  * @param remote_seid
2103  */
2104 #define A2DP_SUBEVENT_SIGNALING_DELAY_REPORTING_CAPABILITY           0x0E
2105 
2106 
2107 /**
2108  * @format 1212
2109  * @param subevent_code
2110  * @param avdtp_cid
2111  * @param local_seid
2112  * @param delay_100us
2113  */
2114 #define A2DP_SUBEVENT_SIGNALING_DELAY_REPORT                         0x0F
2115 
2116 /**
2117  * @format 1211
2118  * @param subevent_code
2119  * @param avdtp_cid
2120  * @param local_seid
2121  * @param remote_seid
2122  */
2123 #define A2DP_SUBEVENT_SIGNALING_CAPABILITIES_DONE                    0x10
2124 
2125 /** AVRCP Subevent */
2126 
2127 /**
2128  * @format 11B2
2129  * @param subevent_code
2130  * @param status 0 == OK
2131  * @param bd_addr
2132  * @param avrcp_cid
2133  */
2134 #define AVRCP_SUBEVENT_CONNECTION_ESTABLISHED                           0x01
2135 
2136 /**
2137  * @format 12
2138  * @param subevent_code
2139  * @param avrcp_cid
2140  */
2141 #define AVRCP_SUBEVENT_CONNECTION_RELEASED                              0x02
2142 
2143 /**
2144  * @format 12111
2145  * @param subevent_code
2146  * @param avrcp_cid
2147  * @param command_type
2148  * @param repeat_mode
2149  * @param shuffle_mode
2150  */
2151 #define AVRCP_SUBEVENT_SHUFFLE_AND_REPEAT_MODE                          0x03
2152 
2153 /**
2154  * @format 121441
2155  * @param subevent_code
2156  * @param avrcp_cid
2157  * @param command_type
2158  * @param song_length
2159  * @param song_position
2160  * @param play_status
2161  */
2162  #define AVRCP_SUBEVENT_PLAY_STATUS                                     0x04
2163 
2164 /**
2165  * @format 1211
2166  * @param subevent_code
2167  * @param avrcp_cid
2168  * @param command_type
2169  * @param play_status
2170  */
2171 #define AVRCP_SUBEVENT_NOTIFICATION_PLAYBACK_STATUS_CHANGED             0x05
2172 
2173 /**
2174  * @format 121
2175  * @param subevent_code
2176  * @param avrcp_cid
2177  * @param command_type
2178  */
2179 #define AVRCP_SUBEVENT_NOTIFICATION_TRACK_CHANGED                       0x06
2180 
2181 /**
2182  * @format 121
2183  * @param subevent_code
2184  * @param avrcp_cid
2185  * @param command_type
2186  */
2187 #define AVRCP_SUBEVENT_NOTIFICATION_NOW_PLAYING_CONTENT_CHANGED          0x07
2188 
2189 /**
2190  * @format 121
2191  * @param subevent_code
2192  * @param avrcp_cid
2193  * @param command_type
2194  */
2195 #define AVRCP_SUBEVENT_NOTIFICATION_AVAILABLE_PLAYERS_CHANGED            0x08
2196 
2197 /**
2198  * @format 1211
2199  * @param subevent_code
2200  * @param avrcp_cid
2201  * @param command_type
2202  * @param absolute_volume
2203  */
2204 #define AVRCP_SUBEVENT_NOTIFICATION_VOLUME_CHANGED                       0x09
2205 
2206 /**
2207  * @format 1211
2208  * @param subevent_code
2209  * @param avrcp_cid
2210  * @param command_type
2211  * @param absolute_volume
2212  */
2213 #define AVRCP_SUBEVENT_SET_ABSOLUTE_VOLUME_RESPONSE                      0x0A
2214 
2215 /**
2216  * @format 1211
2217  * @param subevent_code
2218  * @param avrcp_cid
2219  * @param command_type
2220  * @param notification_id
2221  */
2222 #define AVRCP_SUBEVENT_ENABLE_NOTIFICATION_COMPLETE                       0x0B
2223 
2224 /**
2225  * @format 1211
2226  * @param subevent_code
2227  * @param avrcp_cid
2228  * @param command_type
2229  * @param operation_id
2230  */
2231 #define AVRCP_SUBEVENT_OPERATION_START                                    0x0C
2232 
2233 /**
2234  * @format 1211
2235  * @param subevent_code
2236  * @param avrcp_cid
2237  * @param command_type
2238  * @param operation_id
2239  */
2240 #define AVRCP_SUBEVENT_OPERATION_COMPLETE                                 0x0D
2241 
2242 /**
2243  * @format 121
2244  * @param subevent_code
2245  * @param avrcp_cid
2246  * @param command_type
2247  */
2248 #define AVRCP_SUBEVENT_PLAYER_APPLICATION_VALUE_RESPONSE                   0x0E
2249 
2250 /**
2251  * @format 12
2252  * @param subevent_code
2253  * @param avrcp_cid
2254  */
2255 #define AVRCP_SUBEVENT_COMPANY_IDS_QUERY                                    0x0F
2256 
2257 /**
2258  * @format 12
2259  * @param subevent_code
2260  * @param avrcp_cid
2261  */
2262 #define AVRCP_SUBEVENT_EVENT_IDS_QUERY                                      0x10
2263 
2264 /**
2265  * @format 12
2266  * @param subevent_code
2267  * @param avrcp_cid
2268  */
2269 #define AVRCP_SUBEVENT_PLAY_STATUS_QUERY                                    0x11
2270 
2271 /**
2272  * @format 12111
2273  * @param subevent_code
2274  * @param avrcp_cid
2275  * @param operation_id
2276  * @param operands_length
2277  * @param operand
2278  */
2279 #define AVRCP_SUBEVENT_OPERATION                                            0x12
2280 
2281 /**
2282  * @format 1211
2283  * @param subevent_code
2284  * @param avrcp_cid
2285  * @param command_type
2286  * @param track
2287  */
2288 #define AVRCP_SUBEVENT_NOW_PLAYING_TRACK_INFO                                 0x13
2289 
2290 /**
2291  * @format 1211
2292  * @param subevent_code
2293  * @param avrcp_cid
2294  * @param command_type
2295  * @param total_tracks
2296  */
2297 #define AVRCP_SUBEVENT_NOW_PLAYING_TOTAL_TRACKS_INFO                          0x14
2298 
2299 /**
2300  * @format 1214
2301  * @param subevent_code
2302  * @param avrcp_cid
2303  * @param command_type
2304  * @param song_length in ms
2305  */
2306 #define AVRCP_SUBEVENT_NOW_PLAYING_SONG_LENGTH_MS_INFO                        0x15
2307 
2308 /**
2309  * @format 121JV
2310  * @param subevent_code
2311  * @param avrcp_cid
2312  * @param command_type
2313  * @param value_len
2314  * @param value
2315  */
2316 #define AVRCP_SUBEVENT_NOW_PLAYING_TITLE_INFO                                 0x16
2317 
2318  /*
2319  * @format 121JV
2320  * @param subevent_code
2321  * @param avrcp_cid
2322  * @param command_type
2323  * @param value_len
2324  * @param value
2325  */
2326 #define AVRCP_SUBEVENT_NOW_PLAYING_ARTIST_INFO                                0x17
2327 
2328  /*
2329  * @format 121JV
2330  * @param subevent_code
2331  * @param avrcp_cid
2332  * @param command_type
2333  * @param value_len
2334  * @param value
2335  */
2336 #define AVRCP_SUBEVENT_NOW_PLAYING_ALBUM_INFO                                 0x18
2337 
2338  /*
2339  * @format 121JV
2340  * @param subevent_code
2341  * @param avrcp_cid
2342  * @param command_type
2343  * @param value_len
2344  * @param value
2345  */
2346 #define AVRCP_SUBEVENT_NOW_PLAYING_GENRE_INFO                                 0x19
2347 
2348 /*
2349  * @format 1211
2350  * @param subevent_code
2351  * @param avrcp_cid
2352  * @param command_type
2353  * @param status
2354  */
2355 #define AVRCP_SUBEVENT_NOW_PLAYING_INFO_DONE                                  0x1A
2356 
2357 /**
2358  * @format 1B2
2359  * @param subevent_code
2360  * @param bd_addr
2361  * @param browsing_cid
2362  */
2363 #define AVRCP_SUBEVENT_INCOMING_BROWSING_CONNECTION                          0x1B
2364 
2365 /**
2366  * @format 11B2
2367  * @param subevent_code
2368  * @param status 0 == OK
2369  * @param bd_addr
2370  * @param browsing_cid
2371  */
2372 #define AVRCP_SUBEVENT_BROWSING_CONNECTION_ESTABLISHED                        0x1C
2373 
2374 /**
2375  * @format 12
2376  * @param subevent_code
2377  * @param browsing_cid
2378  */
2379 #define AVRCP_SUBEVENT_BROWSING_CONNECTION_RELEASED                           0x1D
2380 
2381 /**
2382  * @format 12211
2383  * @param subevent_code
2384  * @param browsing_cid
2385  * @param uid_counter
2386  * @param browsing_status
2387  * @param bluetooth_status
2388  */
2389 #define AVRCP_SUBEVENT_BROWSING_DONE                                          0x1E
2390 
2391 /**
2392  * @format 1214
2393  * @param subevent_code
2394  * @param browsing_cid
2395  * @param scope
2396  * @param attr_bitmap
2397  */
2398 #define AVRCP_SUBEVENT_BROWSING_GET_FOLDER_ITEMS                              0x1F
2399 
2400 /**
2401  * @format 121
2402  * @param subevent_code
2403  * @param browsing_cid
2404  * @param scope
2405  */
2406 #define AVRCP_SUBEVENT_BROWSING_GET_TOTAL_NUM_ITEMS                           0x20
2407 
2408 /**
2409  * @format 1214
2410  * @param subevent_code
2411  * @param avrcp_cid
2412  * @param command_type
2413  * @param playback_position_ms
2414  */
2415 #define AVRCP_SUBEVENT_NOTIFICATION_PLAYBACK_POS_CHANGED                      0x21
2416 
2417 
2418 /**
2419  * @format 121BH1
2420  * @param subevent_code
2421  * @param goep_cid
2422  * @param status
2423  * @param bd_addr
2424  * @param con_handle
2425  * @param incoming
2426  */
2427 #define GOEP_SUBEVENT_CONNECTION_OPENED                                    0x01
2428 
2429 /**
2430  * @format 12
2431  * @param subevent_code
2432  * @param goep_cid
2433 */
2434 #define GOEP_SUBEVENT_CONNECTION_CLOSED                                    0x02
2435 
2436 /**
2437  * @format 12
2438  * @param subevent_code
2439  * @param goep_cid
2440 */
2441 #define GOEP_SUBEVENT_CAN_SEND_NOW                                         0x03
2442 
2443 /**
2444  * @format 121BH1
2445  * @param subevent_code
2446  * @param pbap_cid
2447  * @param status
2448  * @param bd_addr
2449  * @param con_handle
2450  * @param incoming
2451  */
2452 #define PBAP_SUBEVENT_CONNECTION_OPENED                                    0x01
2453 
2454 /**
2455  * @format 12
2456  * @param subevent_code
2457  * @param goep_cid
2458 */
2459 #define PBAP_SUBEVENT_CONNECTION_CLOSED                                    0x02
2460 
2461 /**
2462  * @format 121
2463  * @param subevent_code
2464  * @param goep_cid
2465  * @param status
2466  */
2467 #define PBAP_SUBEVENT_OPERATION_COMPLETED                                  0x03
2468 
2469 /**
2470  * @format 1212
2471  * @param subevent_code
2472  * @param goep_cid
2473  * @param status
2474  * @param phoneboook_size
2475  */
2476 #define PBAP_SUBEVENT_PHONEBOOK_SIZE                                       0x04
2477 
2478 /**
2479  * @format 1211
2480  * @param subevent_code
2481  * @param goep_cid
2482  * @param user_id_required
2483  * @param full_access
2484  */
2485 #define PBAP_SUBEVENT_AUTHENTICATION_REQUEST                               0x05
2486 
2487 /**
2488  * @format 12JVJV
2489  * @param subevent_code
2490  * @param goep_cid
2491  * @param name_len
2492  * @param name
2493  * @param handle_len
2494  * @param handle
2495  */
2496 #define PBAP_SUBEVENT_CARD_RESULT                                          0x06
2497 
2498 
2499 // HID Meta Event Group
2500 
2501 /**
2502  * @format 121BH1
2503  * @param subevent_code
2504  * @param hid_cid
2505  * @param status
2506  * @param bd_addr
2507  * @param con_handle
2508  * @param incoming
2509  */
2510 #define HID_SUBEVENT_CONNECTION_OPENED                                     0x01
2511 
2512 /**
2513  * @format 12
2514  * @param subevent_code
2515  * @param hid_cid
2516 */
2517 #define HID_SUBEVENT_CONNECTION_CLOSED                                     0x02
2518 
2519 /**
2520  * @format 12
2521  * @param subevent_code
2522  * @param hid_cid
2523 */
2524 #define HID_SUBEVENT_CAN_SEND_NOW                                          0x03
2525 
2526 /**
2527  * @format 12
2528  * @param subevent_code
2529  * @param con_handle
2530 */
2531 #define HID_SUBEVENT_SUSPEND                                               0x04
2532 
2533 /**
2534  * @format 12
2535  * @param subevent_code
2536  * @param con_handle
2537 */
2538 #define HID_SUBEVENT_EXIT_SUSPEND                                          0x05
2539 
2540 
2541 // HIDS Meta Event Group
2542 
2543 /**
2544  * @format 12
2545  * @param subevent_code
2546  * @param con_handle
2547 */
2548 #define HIDS_SUBEVENT_CAN_SEND_NOW                                          0x01
2549 
2550 /**
2551  * @format 121
2552  * @param subevent_code
2553  * @param con_handle
2554  * @param protocol_mode
2555 */
2556 #define HIDS_SUBEVENT_PROTOCOL_MODE                                         0x02
2557 
2558 /**
2559  * @format 121
2560  * @param subevent_code
2561  * @param con_handle
2562  * @param enable
2563 */
2564 #define HIDS_SUBEVENT_BOOT_MOUSE_INPUT_REPORT_ENABLE                        0x03
2565 
2566 /**
2567  * @format 121
2568  * @param subevent_code
2569  * @param con_handle
2570  * @param enable
2571 */
2572 #define HIDS_SUBEVENT_BOOT_KEYBOARD_INPUT_REPORT_ENABLE                     0x04
2573 
2574 /**
2575  * @format 121
2576  * @param subevent_code
2577  * @param con_handle
2578  * @param enable
2579 */
2580 #define HIDS_SUBEVENT_INPUT_REPORT_ENABLE                                   0x05
2581 
2582 /**
2583  * @format 121
2584  * @param subevent_code
2585  * @param con_handle
2586  * @param enable
2587 */
2588 #define HIDS_SUBEVENT_OUTPUT_REPORT_ENABLE                                  0x06
2589 
2590 /**
2591  * @format 121
2592  * @param subevent_code
2593  * @param con_handle
2594  * @param enable
2595 */
2596 #define HIDS_SUBEVENT_FEATURE_REPORT_ENABLE                                 0x07
2597 
2598 /**
2599  * @format 12
2600  * @param subevent_code
2601  * @param con_handle
2602 */
2603 #define HIDS_SUBEVENT_SUSPEND                                               0x08
2604 
2605 /**
2606  * @format 12
2607  * @param subevent_code
2608  * @param con_handle
2609 */
2610 #define HIDS_SUBEVENT_EXIT_SUSPEND                                          0x09
2611 
2612 /**
2613  * @format 1211
2614  * @param subevent_code
2615  * @param con_handle
2616  * @param measurement_type  // 0 - force magnitude, 1 - torque magnitude, see cycling_power_sensor_measurement_context_t
2617  * @param is_enhanced
2618 */
2619 #define GATTSERVICE_SUBEVENT_CYCLING_POWER_START_CALIBRATION               0x01
2620 
2621 /**
2622  * @format 12
2623  * @param subevent_code
2624  * @param con_handle
2625 */
2626 #define GATTSERVICE_SUBEVENT_CYCLING_POWER_BROADCAST_START                 0x02
2627 
2628 /**
2629  * @format 12
2630  * @param subevent_code
2631  * @param con_handle
2632 */
2633 #define GATTSERVICE_SUBEVENT_CYCLING_POWER_BROADCAST_STOP                  0x03
2634 
2635 
2636 // MAP Meta Event Group
2637 
2638 /**
2639  * @format 121BH1
2640  * @param subevent_code
2641  * @param map_cid
2642  * @param status
2643  * @param bd_addr
2644  * @param con_handle
2645  * @param incoming
2646  */
2647 #define MAP_SUBEVENT_CONNECTION_OPENED                                    0x01
2648 
2649 /**
2650  * @format 12
2651  * @param subevent_code
2652  * @param map_cid
2653 */
2654 #define MAP_SUBEVENT_CONNECTION_CLOSED                                    0x02
2655 
2656 /**
2657  * @format 121
2658  * @param subevent_code
2659  * @param map_cid
2660  * @param status
2661  */
2662 #define MAP_SUBEVENT_OPERATION_COMPLETED                                  0x03
2663 
2664 
2665 /**
2666  * @format 12LV
2667  * @param subevent_code
2668  * @param map_cid
2669  * @param name_len
2670  * @param name
2671  */
2672 #define MAP_SUBEVENT_FOLDER_LISTING_ITEM                                  0x04
2673 
2674 /**
2675  * @format 12D
2676  * @param subevent_code
2677  * @param map_cid
2678  * @param handle
2679 
2680  */
2681 #define MAP_SUBEVENT_MESSAGE_LISTING_ITEM                                 0x05
2682 
2683 /**
2684  * @format 12
2685  * @param subevent_code
2686  * @param map_cid
2687  */
2688 #define MAP_SUBEVENT_PARSING_DONE                                         0x06
2689 
2690 
2691 // MESH Meta Event Group
2692 
2693 /**
2694  * @format 1
2695  * @param subevent_code
2696  */
2697 #define MESH_SUBEVENT_CAN_SEND_NOW                                          0x01
2698 
2699 /**
2700  * @format 11
2701  * @param subevent_code
2702  * @param status
2703  */
2704 #define MESH_SUBEVENT_PB_TRANSPORT_PDU_SENT                                          0x02
2705 
2706 /**
2707  * @format 1121
2708  * @param subevent_code
2709  * @param status
2710  * @param pb_transport_cid
2711  * @param pb_type
2712  */
2713 #define MESH_SUBEVENT_PB_TRANSPORT_LINK_OPEN                                         0x03
2714 
2715 /**
2716  * @format 112
2717  * @param subevent_code
2718  * @param pb_transport_cid
2719  * @param reason
2720  */
2721 #define MESH_SUBEVENT_PB_TRANSPORT_LINK_CLOSED                                       0x04
2722 
2723 /**
2724  * @format 121
2725  * @param subevent_code
2726  * @param pb_transport_cid
2727  * @param attention_time in seconds
2728  */
2729 #define MESH_SUBEVENT_PB_PROV_ATTENTION_TIMER                                        0x10
2730 
2731 /**
2732  * Device Role
2733  * @format 12
2734  * @param subevent_code
2735  * @param pb_transport_cid
2736  */
2737 #define MESH_SUBEVENT_PB_PROV_START_EMIT_PUBLIC_KEY_OOB                              0x11
2738 
2739 /**
2740  * Device Role
2741  * @format 12
2742  * @param subevent_code
2743  * @param pb_transport_cid
2744  */
2745 #define MESH_SUBEVENT_PB_PROV_STOP_EMIT_PUBLIC_KEY_OOB                               0x12
2746 
2747 /**
2748  * Device Role
2749  * @format 12
2750  * @param subevent_code
2751  * @param pb_transport_cid
2752  */
2753 #define MESH_SUBEVENT_PB_PROV_INPUT_OOB_REQUEST                                      0x13
2754 
2755 /**
2756  * Device Role
2757  * @format 124
2758  * @param subevent_code
2759  * @param pb_transport_cid
2760  * @param output_oob number
2761  */
2762 #define MESH_SUBEVENT_PB_PROV_START_EMIT_OUTPUT_OOB                                  0x15
2763 
2764 /**
2765  * Device Role
2766  * @format 12
2767  * @param subevent_code
2768  * @param pb_transport_cid
2769  */
2770 #define MESH_SUBEVENT_PB_PROV_STOP_EMIT_OUTPUT_OOB                                   0x16
2771 
2772 /**
2773  * Provisioner Role
2774  * @format 12
2775  * @param subevent_code
2776  * @param pb_transport_cid
2777  */
2778 #define MESH_SUBEVENT_PB_PROV_START_RECEIVE_PUBLIC_KEY_OOB                           0x17
2779 
2780 /**
2781  * Provisioner Role
2782  * @format 12
2783  * @param subevent_code
2784  * @param pb_transport_cid
2785  */
2786 #define MESH_SUBEVENT_PB_PROV_STOP_RECEIVE_PUBLIC_KEY_OOB                            0x18
2787 
2788 /**
2789  * Provisioner Role
2790  * @format 12
2791  * @param subevent_code
2792  * @param pb_transport_cid
2793  */
2794 #define MESH_SUBEVENT_PB_PROV_OUTPUT_OOB_REQUEST                                     0x19
2795 
2796 /**
2797  * Provisioner Role
2798  * @format 124
2799  * @param subevent_code
2800  * @param pb_transport_cid
2801  * @param output_oob number
2802  */
2803 #define MESH_SUBEVENT_PB_PROV_START_EMIT_INPUT_OOB                                   0x1a
2804 
2805 /**
2806  * Provisioner Role
2807  * @format 12
2808  * @param subevent_code
2809  * @param pb_transport_cid
2810  */
2811 #define MESH_SUBEVENT_PB_PROV_STOP_EMIT_INPUT_OOB                                    0x1b
2812 
2813 /**
2814  * Provisioner Role
2815  * @format 1212111212
2816  * @param subevent_code
2817  * @param pb_transport_cid
2818  * @param num_elements
2819  * @param algorithms
2820  * @param public_key
2821  * @param static_oob_type
2822  * @param output_oob_size
2823  * @param output_oob_action
2824  * @param input_oob_size
2825  * @param input_oob_action
2826  */
2827 #define MESH_SUBEVENT_PB_PROV_CAPABILITIES                                           0x1c
2828 
2829 /**
2830  * @format 12
2831  * @param subevent_code
2832  * @param pb_transport_cid
2833  */
2834 #define MESH_SUBEVENT_PB_PROV_COMPLETE                                               0x1d
2835 
2836 /**
2837  * @format 11
2838  * @param subevent_code
2839  * @param attention_time in seconds
2840  */
2841 #define MESH_SUBEVENT_ATTENTION_TIMER                                                0x1e
2842 
2843 /**
2844  * @format 11H
2845  * @param subevent_code
2846  * @param status
2847  * @param con_handle
2848  */
2849 #define MESH_SUBEVENT_PROXY_CONNECTED                                                0x20
2850 
2851 /**
2852  * @format 1H
2853  * @param subevent_code
2854  * @param con_handle
2855  */
2856 #define MESH_SUBEVENT_PROXY_PDU_SENT                                                 0x21
2857 
2858 /**
2859  * @format 1H
2860  * @param subevent_code
2861  * @param con_handle
2862  */
2863 #define MESH_SUBEVENT_PROXY_DISCONNECTED                                             0x22
2864 
2865 /**
2866  * @format 1H
2867  * @param subevent_code
2868  * @param con_handle
2869  */
2870 #define MESH_SUBEVENT_MESSAGE_SENT                                                   0x23
2871 
2872 /**
2873  * @format 114411
2874  * @param subevent_code
2875  * @param element_index
2876  * @param model_identifier
2877  * @param state_identifier
2878  * @param reason
2879  * @param value
2880  */
2881 #define MESH_SUBEVENT_STATE_UPDATE_BOOL                                              0x24
2882 
2883 /**
2884  * @format 114412
2885  * @param subevent_code
2886  * @param element_index
2887  * @param model_identifier
2888  * @param state_identifier
2889  * @param reason
2890  * @param value
2891  */
2892 #define MESH_SUBEVENT_STATE_UPDATE_INT16                                              0x25
2893 
2894 // Mesh Client Events
2895 /**
2896  * @format 11442
2897  * @param subevent_code
2898  * @param element_index
2899  * @param model_identifier
2900  * @param opcode
2901  * @param dest
2902  */
2903 #define MESH_SUBEVENT_MESSAGE_NOT_ACKNOWLEDGED                                        0x30
2904 
2905 /**
2906  * @format 114114
2907  * @param subevent_code
2908  * @param element_index
2909  * @param model_identifier
2910  * @param present_value
2911  * @param target_value       // optinal, if value > 0, than remaining_time_ms must be read
2912  * @param remaining_time_ms
2913  */
2914 #define MESH_SUBEVENT_GENERIC_ON_OFF_STATUS                                           0x31
2915 
2916 /**
2917  * @format 114224
2918  * @param subevent_code
2919  * @param element_index
2920  * @param model_identifier
2921  * @param present_value
2922  * @param target_value       // optinal, if value > 0, than remaining_time_ms must be read
2923  * @param remaining_time_ms
2924  */
2925 #define MESH_SUBEVENT_GENERIC_LEVEL_STATUS                                           0x32
2926 
2927 /**
2928  * @format 1222211
2929  * @param subevent_code
2930  * @param dest
2931  * @param netkey_index
2932  * @param appkey_index
2933  * @param company_id
2934  * @param test_id
2935  * @param acknowledged
2936  */
2937 #define MESH_SUBEVENT_HEALTH_PERFORM_TEST                                            0x33
2938 
2939 /**
2940  * @format 11
2941  * @param subevent_code
2942  * @param element_index
2943  */
2944 #define MESH_SUBEVENT_HEALTH_ATTENTION_TIMER_CHANGED                                 0x34
2945 
2946 #endif
2947