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 #define UNUSED(x) (void)(sizeof(x)) 52 53 // TYPES 54 55 // packet handler 56 typedef void (*btstack_packet_handler_t) (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size); 57 58 // packet callback supporting multiple registrations 59 typedef struct { 60 btstack_linked_item_t item; 61 btstack_packet_handler_t callback; 62 } btstack_packet_callback_registration_t; 63 64 // context callback supporting multiple registrations 65 typedef struct { 66 btstack_linked_item_t * item; 67 void (*callback)(void * context); 68 void * context; 69 } btstack_context_callback_registration_t; 70 71 /** 72 * @brief 128 bit key used with AES128 in Security Manager 73 */ 74 typedef uint8_t sm_key_t[16]; 75 76 // DEFINES 77 78 #define DAEMON_EVENT_PACKET 0x05 79 80 // L2CAP data 81 #define L2CAP_DATA_PACKET 0x06 82 83 // RFCOMM data 84 #define RFCOMM_DATA_PACKET 0x07 85 86 // Attribute protocol data 87 #define ATT_DATA_PACKET 0x08 88 89 // Security Manager protocol data 90 #define SM_DATA_PACKET 0x09 91 92 // SDP query result - only used by daemon 93 // format: type (8), record_id (16), attribute_id (16), attribute_length (16), attribute_value (max 1k) 94 #define SDP_CLIENT_PACKET 0x0a 95 96 // BNEP data 97 #define BNEP_DATA_PACKET 0x0b 98 99 // Unicast Connectionless Data 100 #define UCD_DATA_PACKET 0x0c 101 102 // GOEP data 103 #define GOEP_DATA_PACKET 0x0d 104 105 // PBAP data 106 #define PBAP_DATA_PACKET 0x0e 107 108 // debug log messages 109 #define LOG_MESSAGE_PACKET 0xfc 110 111 112 // ERRORS 113 114 // last error code in 2.1 is 0x38 - we start with 0x50 for BTstack errors 115 #define BTSTACK_CONNECTION_TO_BTDAEMON_FAILED 0x50 116 #define BTSTACK_ACTIVATION_FAILED_SYSTEM_BLUETOOTH 0x51 117 #define BTSTACK_ACTIVATION_POWERON_FAILED 0x52 118 #define BTSTACK_ACTIVATION_FAILED_UNKNOWN 0x53 119 #define BTSTACK_NOT_ACTIVATED 0x54 120 #define BTSTACK_BUSY 0x55 121 #define BTSTACK_MEMORY_ALLOC_FAILED 0x56 122 #define BTSTACK_ACL_BUFFERS_FULL 0x57 123 124 // l2cap errors - enumeration by the command that created them 125 #define L2CAP_COMMAND_REJECT_REASON_COMMAND_NOT_UNDERSTOOD 0x60 126 #define L2CAP_COMMAND_REJECT_REASON_SIGNALING_MTU_EXCEEDED 0x61 127 #define L2CAP_COMMAND_REJECT_REASON_INVALID_CID_IN_REQUEST 0x62 128 129 #define L2CAP_CONNECTION_RESPONSE_RESULT_SUCCESSFUL 0x63 130 #define L2CAP_CONNECTION_RESPONSE_RESULT_PENDING 0x64 131 #define L2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_PSM 0x65 132 #define L2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_SECURITY 0x66 133 #define L2CAP_CONNECTION_RESPONSE_RESULT_REFUSED_RESOURCES 0x67 134 #define L2CAP_CONNECTION_RESPONSE_RESULT_RTX_TIMEOUT 0x68 135 136 #define L2CAP_SERVICE_ALREADY_REGISTERED 0x69 137 #define L2CAP_DATA_LEN_EXCEEDS_REMOTE_MTU 0x6A 138 #define L2CAP_SERVICE_DOES_NOT_EXIST 0x6B 139 #define L2CAP_LOCAL_CID_DOES_NOT_EXIST 0x6C 140 141 #define RFCOMM_MULTIPLEXER_STOPPED 0x70 142 #define RFCOMM_CHANNEL_ALREADY_REGISTERED 0x71 143 #define RFCOMM_NO_OUTGOING_CREDITS 0x72 144 #define RFCOMM_AGGREGATE_FLOW_OFF 0x73 145 #define RFCOMM_DATA_LEN_EXCEEDS_MTU 0x74 146 147 #define SDP_HANDLE_ALREADY_REGISTERED 0x80 148 #define SDP_QUERY_INCOMPLETE 0x81 149 #define SDP_SERVICE_NOT_FOUND 0x82 150 #define SDP_HANDLE_INVALID 0x83 151 #define SDP_QUERY_BUSY 0x84 152 153 #define ATT_HANDLE_VALUE_INDICATION_IN_PORGRESS 0x90 154 #define ATT_HANDLE_VALUE_INDICATION_TIMEOUT 0x91 155 156 #define GATT_CLIENT_NOT_CONNECTED 0x93 157 #define GATT_CLIENT_BUSY 0x94 158 #define GATT_CLIENT_IN_WRONG_STATE 0x95 159 #define GATT_CLIENT_DIFFERENT_CONTEXT_FOR_ADDRESS_ALREADY_EXISTS 0x96 160 #define GATT_CLIENT_VALUE_TOO_LONG 0x97 161 #define GATT_CLIENT_CHARACTERISTIC_NOTIFICATION_NOT_SUPPORTED 0x98 162 #define GATT_CLIENT_CHARACTERISTIC_INDICATION_NOT_SUPPORTED 0x99 163 164 #define BNEP_SERVICE_ALREADY_REGISTERED 0xA0 165 #define BNEP_CHANNEL_NOT_CONNECTED 0xA1 166 #define BNEP_DATA_LEN_EXCEEDS_MTU 0xA2 167 168 // DAEMON COMMANDS 169 170 #define OGF_BTSTACK 0x3d 171 172 // cmds for BTstack 173 // get state: @returns HCI_STATE 174 #define BTSTACK_GET_STATE 0x01 175 176 // set power mode: param HCI_POWER_MODE 177 #define BTSTACK_SET_POWER_MODE 0x02 178 179 // set capture mode: param on 180 #define BTSTACK_SET_ACL_CAPTURE_MODE 0x03 181 182 // get BTstack version 183 #define BTSTACK_GET_VERSION 0x04 184 185 // get system Bluetooth state 186 #define BTSTACK_GET_SYSTEM_BLUETOOTH_ENABLED 0x05 187 188 // set system Bluetooth state 189 #define BTSTACK_SET_SYSTEM_BLUETOOTH_ENABLED 0x06 190 191 // enable inquiry scan for this client 192 #define BTSTACK_SET_DISCOVERABLE 0x07 193 194 // set global Bluetooth state 195 #define BTSTACK_SET_BLUETOOTH_ENABLED 0x08 196 197 // create l2cap channel: param bd_addr(48), psm (16) 198 #define L2CAP_CREATE_CHANNEL 0x20 199 200 // disconnect l2cap disconnect, param channel(16), reason(8) 201 #define L2CAP_DISCONNECT 0x21 202 203 // register l2cap service: param psm(16), mtu (16) 204 #define L2CAP_REGISTER_SERVICE 0x22 205 206 // unregister l2cap disconnect, param psm(16) 207 #define L2CAP_UNREGISTER_SERVICE 0x23 208 209 // accept connection param bd_addr(48), dest cid (16) 210 #define L2CAP_ACCEPT_CONNECTION 0x24 211 212 // decline l2cap disconnect,param bd_addr(48), dest cid (16), reason(8) 213 #define L2CAP_DECLINE_CONNECTION 0x25 214 215 // create l2cap channel: param bd_addr(48), psm (16), mtu (16) 216 #define L2CAP_CREATE_CHANNEL_MTU 0x26 217 218 // register SDP Service Record: service record (size) 219 #define SDP_REGISTER_SERVICE_RECORD 0x30 220 221 // unregister SDP Service Record 222 #define SDP_UNREGISTER_SERVICE_RECORD 0x31 223 224 // Get remote RFCOMM services 225 #define SDP_CLIENT_QUERY_RFCOMM_SERVICES 0x32 226 227 // Get remote SDP services 228 #define SDP_CLIENT_QUERY_SERVICES 0x33 229 230 // RFCOMM "HCI" Commands 231 #define RFCOMM_CREATE_CHANNEL 0x40 232 #define RFCOMM_DISCONNECT 0x41 233 #define RFCOMM_REGISTER_SERVICE 0x42 234 #define RFCOMM_UNREGISTER_SERVICE 0x43 235 #define RFCOMM_ACCEPT_CONNECTION 0x44 236 #define RFCOMM_DECLINE_CONNECTION 0x45 237 #define RFCOMM_PERSISTENT_CHANNEL 0x46 238 #define RFCOMM_CREATE_CHANNEL_WITH_CREDITS 0x47 239 #define RFCOMM_REGISTER_SERVICE_WITH_CREDITS 0x48 240 #define RFCOMM_GRANT_CREDITS 0x49 241 242 // GAP Classic 0x50 243 #define GAP_DISCONNECT 0x50 244 245 // GAP LE 0x60 246 #define GAP_LE_SCAN_START 0x60 247 #define GAP_LE_SCAN_STOP 0x61 248 #define GAP_LE_CONNECT 0x62 249 #define GAP_LE_CONNECT_CANCEL 0x63 250 #define GAP_LE_SET_SCAN_PARAMETERS 0x64 251 252 // GATT (Client) 0x70 253 #define GATT_DISCOVER_ALL_PRIMARY_SERVICES 0x70 254 #define GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID16 0x71 255 #define GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID128 0x72 256 #define GATT_FIND_INCLUDED_SERVICES_FOR_SERVICE 0x73 257 #define GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE 0x74 258 #define GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE_BY_UUID128 0x75 259 #define GATT_DISCOVER_CHARACTERISTIC_DESCRIPTORS 0x76 260 #define GATT_READ_VALUE_OF_CHARACTERISTIC 0x77 261 #define GATT_READ_LONG_VALUE_OF_CHARACTERISTIC 0x78 262 #define GATT_WRITE_VALUE_OF_CHARACTERISTIC_WITHOUT_RESPONSE 0x79 263 #define GATT_WRITE_VALUE_OF_CHARACTERISTIC 0x7A 264 #define GATT_WRITE_LONG_VALUE_OF_CHARACTERISTIC 0x7B 265 #define GATT_RELIABLE_WRITE_LONG_VALUE_OF_CHARACTERISTIC 0x7C 266 #define GATT_READ_CHARACTERISTIC_DESCRIPTOR 0X7D 267 #define GATT_READ_LONG_CHARACTERISTIC_DESCRIPTOR 0X7E 268 #define GATT_WRITE_CHARACTERISTIC_DESCRIPTOR 0X7F 269 #define GATT_WRITE_LONG_CHARACTERISTIC_DESCRIPTOR 0X80 270 #define GATT_WRITE_CLIENT_CHARACTERISTIC_CONFIGURATION 0X81 271 #define GATT_GET_MTU 0x82 272 273 // OBEX ERRORS 274 #define OBEX_UNKNOWN_ERROR 0x90 275 #define OBEX_CONNECT_FAILED 0x91 276 #define OBEX_DISCONNECTED 0x92 277 #define OBEX_NOT_FOUND 0x93 278 279 // EVENTS 280 281 /** 282 * @format 1 283 * @param state 284 */ 285 #define BTSTACK_EVENT_STATE 0x60 286 287 /** 288 * @format 1 289 * @param number_connections 290 */ 291 #define BTSTACK_EVENT_NR_CONNECTIONS_CHANGED 0x61 292 293 /** 294 * @format 295 */ 296 #define BTSTACK_EVENT_POWERON_FAILED 0x62 297 298 /** 299 * @format 1 300 * @param discoverable 301 */ 302 #define BTSTACK_EVENT_DISCOVERABLE_ENABLED 0x66 303 304 // Daemon Events 305 306 /** 307 * @format 112 308 * @param major 309 * @param minor 310 @ @param revision 311 */ 312 #define DAEMON_EVENT_VERSION 0x63 313 314 // data: system bluetooth on/off (bool) 315 /** 316 * @format 1 317 * param system_bluetooth_enabled 318 */ 319 #define DAEMON_EVENT_SYSTEM_BLUETOOTH_ENABLED 0x64 320 321 // data: event (8), len(8), status (8) == 0, address (48), name (1984 bits = 248 bytes) 322 323 /* 324 * @format 1BT 325 * @param status == 0 to match read_remote_name_request 326 * @param address 327 * @param name 328 */ 329 #define DAEMON_EVENT_REMOTE_NAME_CACHED 0x65 330 331 // internal - data: event(8) 332 #define DAEMON_EVENT_CONNECTION_OPENED 0x67 333 334 // internal - data: event(8) 335 #define DAEMON_EVENT_CONNECTION_CLOSED 0x68 336 337 // data: event(8), len(8), local_cid(16), credits(8) 338 #define DAEMON_EVENT_L2CAP_CREDITS 0x74 339 340 /** 341 * @format 12 342 * @param status 343 * @param psm 344 */ 345 #define DAEMON_EVENT_L2CAP_SERVICE_REGISTERED 0x75 346 347 /** 348 * @format 21 349 * @param rfcomm_cid 350 * @param credits 351 */ 352 #define DAEMON_EVENT_RFCOMM_CREDITS 0x84 353 354 /** 355 * @format 11 356 * @param status 357 * @param channel_id 358 */ 359 #define DAEMON_EVENT_RFCOMM_SERVICE_REGISTERED 0x85 360 361 /** 362 * @format 11 363 * @param status 364 * @param server_channel_id 365 */ 366 #define DAEMON_EVENT_RFCOMM_PERSISTENT_CHANNEL 0x86 367 368 /** 369 * @format 14 370 * @param status 371 * @param service_record_handle 372 */ 373 #define DAEMON_EVENT_SDP_SERVICE_REGISTERED 0x90 374 375 376 377 // additional HCI events 378 379 /** 380 * @brief Indicates HCI transport enters/exits Sleep mode 381 * @format 1 382 * @param active 383 */ 384 #define HCI_EVENT_TRANSPORT_SLEEP_MODE 0x69 385 386 /** 387 * @brief Outgoing packet 388 */ 389 #define HCI_EVENT_TRANSPORT_PACKET_SENT 0x6E 390 391 /** 392 * @format B 393 * @param handle 394 */ 395 #define HCI_EVENT_SCO_CAN_SEND_NOW 0x6F 396 397 398 // L2CAP EVENTS 399 400 /** 401 * @format 1BH2222221 402 * @param status 403 * @param address 404 * @param handle 405 * @param psm 406 * @param local_cid 407 * @param remote_cid 408 * @param local_mtu 409 * @param remote_mtu 410 * @param flush_timeout 411 * @param incoming 412 */ 413 #define L2CAP_EVENT_CHANNEL_OPENED 0x70 414 415 /* 416 * @format 2 417 * @param local_cid 418 */ 419 #define L2CAP_EVENT_CHANNEL_CLOSED 0x71 420 421 /** 422 * @format BH222 423 * @param address 424 * @param handle 425 * @param psm 426 * @param local_cid 427 * @param remote_cid 428 */ 429 #define L2CAP_EVENT_INCOMING_CONNECTION 0x72 430 431 // ?? 432 // data: event(8), len(8), handle(16) 433 #define L2CAP_EVENT_TIMEOUT_CHECK 0x73 434 435 /** 436 * @format H2222 437 * @param handle 438 * @param interval_min 439 * @param interval_max 440 * @param latencey 441 * @param timeout_multiplier 442 */ 443 #define L2CAP_EVENT_CONNECTION_PARAMETER_UPDATE_REQUEST 0x76 444 445 // data: event(8), len(8), handle(16), result (16) (0 == ok, 1 == fail) 446 /** 447 * @format H2 448 * @param handle 449 * @param result 450 */ 451 #define L2CAP_EVENT_CONNECTION_PARAMETER_UPDATE_RESPONSE 0x77 452 453 /** 454 * @format 2 455 * @param local_cid 456 */ 457 #define L2CAP_EVENT_CAN_SEND_NOW 0x78 458 459 // LE Data Channels 460 461 /** 462 * @format 1BH2222 463 * @param address_type 464 * @param address 465 * @param handle 466 * @param psm 467 * @param local_cid 468 * @param remote_cid 469 * @param remote_mtu 470 */ 471 #define L2CAP_EVENT_LE_INCOMING_CONNECTION 0x79 472 473 /** 474 * @format 11BH122222 475 * @param status 476 * @param address_type 477 * @param address 478 * @param handle 479 * @param incoming 480 * @param psm 481 * @param local_cid 482 * @param remote_cid 483 * @param local_mtu 484 * @param remote_mtu 485 */ 486 #define L2CAP_EVENT_LE_CHANNEL_OPENED 0x7a 487 488 /* 489 * @format 2 490 * @param local_cid 491 */ 492 #define L2CAP_EVENT_LE_CHANNEL_CLOSED 0x7b 493 494 /* 495 * @format 2 496 * @param local_cid 497 */ 498 #define L2CAP_EVENT_LE_CAN_SEND_NOW 0x7c 499 500 /* 501 * @format 2 502 * @param local_cid 503 */ 504 #define L2CAP_EVENT_LE_PACKET_SENT 0x7d 505 506 507 // RFCOMM EVENTS 508 509 /** 510 * @format 1B21221 511 * @param status 512 * @param bd_addr 513 * @param con_handle 514 * @param server_channel 515 * @param rfcomm_cid 516 * @param max_frame_size 517 * @param incoming 518 */ 519 #define RFCOMM_EVENT_CHANNEL_OPENED 0x80 520 521 /** 522 * @format 2 523 * @param rfcomm_cid 524 */ 525 #define RFCOMM_EVENT_CHANNEL_CLOSED 0x81 526 527 /** 528 * @format B12 529 * @param bd_addr 530 * @param server_channel 531 * @param rfcomm_cid 532 */ 533 #define RFCOMM_EVENT_INCOMING_CONNECTION 0x82 534 535 /** 536 * @format 21 537 * @param rfcomm_cid 538 * @param line_status 539 */ 540 #define RFCOMM_EVENT_REMOTE_LINE_STATUS 0x83 541 542 /** 543 * @format 21 544 * @param rfcomm_cid 545 * @param modem_status 546 */ 547 #define RFCOMM_EVENT_REMOTE_MODEM_STATUS 0x87 548 549 /** 550 * TODO: format for variable data 2? 551 * param rfcomm_cid 552 * param rpn_data 553 */ 554 #define RFCOMM_EVENT_PORT_CONFIGURATION 0x88 555 556 /** 557 * @format 2 558 * @param rfcomm_cid 559 */ 560 #define RFCOMM_EVENT_CAN_SEND_NOW 0x89 561 562 563 /** 564 * @format 1 565 * @param status 566 */ 567 #define SDP_EVENT_QUERY_COMPLETE 0x91 568 569 /** 570 * @format 1T 571 * @param rfcomm_channel 572 * @param name 573 */ 574 #define SDP_EVENT_QUERY_RFCOMM_SERVICE 0x92 575 576 /** 577 * @format 22221 578 * @param record_id 579 * @param attribute_id 580 * @param attribute_length 581 * @param data_offset 582 * @param data 583 */ 584 #define SDP_EVENT_QUERY_ATTRIBUTE_BYTE 0x93 585 586 /** 587 * @format 22LV 588 * @param record_id 589 * @param attribute_id 590 * @param attribute_length 591 * @param attribute_value 592 */ 593 #define SDP_EVENT_QUERY_ATTRIBUTE_VALUE 0x94 594 595 /** 596 * @format 224 597 * @param total_count 598 * @param record_index 599 * @param record_handle 600 * @note Not provided by daemon, only used for internal testing 601 */ 602 #define SDP_EVENT_QUERY_SERVICE_RECORD_HANDLE 0x95 603 604 /** 605 * @format H1 606 * @param handle 607 * @param status 608 */ 609 #define GATT_EVENT_QUERY_COMPLETE 0xA0 610 611 /** 612 * @format HX 613 * @param handle 614 * @param service 615 */ 616 #define GATT_EVENT_SERVICE_QUERY_RESULT 0xA1 617 618 /** 619 * @format HY 620 * @param handle 621 * @param characteristic 622 */ 623 #define GATT_EVENT_CHARACTERISTIC_QUERY_RESULT 0xA2 624 625 /** 626 * @format H2X 627 * @param handle 628 * @param include_handle 629 * @param service 630 */ 631 #define GATT_EVENT_INCLUDED_SERVICE_QUERY_RESULT 0xA3 632 633 /** 634 * @format HZ 635 * @param handle 636 * @param characteristic_descriptor 637 */ 638 #define GATT_EVENT_ALL_CHARACTERISTIC_DESCRIPTORS_QUERY_RESULT 0xA4 639 640 /** 641 * @format H2LV 642 * @param handle 643 * @param value_handle 644 * @param value_length 645 * @param value 646 */ 647 #define GATT_EVENT_CHARACTERISTIC_VALUE_QUERY_RESULT 0xA5 648 649 /** 650 * @format H22LV 651 * @param handle 652 * @param value_handle 653 * @param value_offset 654 * @param value_length 655 * @param value 656 */ 657 #define GATT_EVENT_LONG_CHARACTERISTIC_VALUE_QUERY_RESULT 0xA6 658 659 /** 660 * @format H2LV 661 * @param handle 662 * @param value_handle 663 * @param value_length 664 * @param value 665 */ 666 #define GATT_EVENT_NOTIFICATION 0xA7 667 668 /** 669 * @format H2LV 670 * @param handle 671 * @param value_handle 672 * @param value_length 673 * @param value 674 */ 675 #define GATT_EVENT_INDICATION 0xA8 676 677 /** 678 * @format H2LV 679 * @param handle 680 * @param descriptor_handle 681 * @param descriptor_length 682 * @param descriptor 683 */ 684 #define GATT_EVENT_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT 0xA9 685 686 /** 687 * @format H2LV 688 * @param handle 689 * @param descriptor_offset 690 * @param descriptor_length 691 * @param descriptor 692 */ 693 #define GATT_EVENT_LONG_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT 0xAA 694 695 /** 696 * @format H2 697 * @param handle 698 * @param MTU 699 */ 700 #define GATT_EVENT_MTU 0xAB 701 702 /** 703 * @format H2 704 * @param handle 705 * @param MTU 706 */ 707 #define ATT_EVENT_MTU_EXCHANGE_COMPLETE 0xB5 708 709 /** 710 * @format 1H2 711 * @param status 712 * @param conn_handle 713 * @param attribute_handle 714 */ 715 #define ATT_EVENT_HANDLE_VALUE_INDICATION_COMPLETE 0xB6 716 717 /** 718 * @format 719 */ 720 #define ATT_EVENT_CAN_SEND_NOW 0xB7 721 722 // TODO: daemon only event 723 724 /** 725 * @format 12 726 * @param status 727 * @param service_uuid 728 */ 729 #define BNEP_EVENT_SERVICE_REGISTERED 0xC0 730 731 /** 732 * @format 12222B 733 * @param status 734 * @param bnep_cid 735 * @param source_uuid 736 * @param destination_uuid 737 * @param mtu 738 * @param remote_address 739 */ 740 #define BNEP_EVENT_CHANNEL_OPENED 0xC1 741 742 /** 743 * @format 222B 744 * @param bnep_cid 745 * @param source_uuid 746 * @param destination_uuid 747 * @param remote_address 748 */ 749 #define BNEP_EVENT_CHANNEL_CLOSED 0xC2 750 751 /** 752 * @format 222B1 753 * @param bnep_cid 754 * @param source_uuid 755 * @param destination_uuid 756 * @param remote_address 757 * @param channel_state 758 */ 759 #define BNEP_EVENT_CHANNEL_TIMEOUT 0xC3 760 761 /** 762 * @format 222B 763 * @param bnep_cid 764 * @param source_uuid 765 * @param destination_uuid 766 * @param remote_address 767 */ 768 #define BNEP_EVENT_CAN_SEND_NOW 0xC4 769 770 /** 771 * @format H1B 772 * @param handle 773 * @param addr_type 774 * @param address 775 */ 776 #define SM_EVENT_JUST_WORKS_REQUEST 0xD0 777 778 /** 779 * @format H1B 780 * @param handle 781 * @param addr_type 782 * @param address 783 */ 784 #define SM_EVENT_JUST_WORKS_CANCEL 0xD1 785 786 /** 787 * @format H1B4 788 * @param handle 789 * @param addr_type 790 * @param address 791 * @param passkey 792 */ 793 #define SM_EVENT_PASSKEY_DISPLAY_NUMBER 0xD2 794 795 /** 796 * @format H1B 797 * @param handle 798 * @param addr_type 799 * @param address 800 */ 801 #define SM_EVENT_PASSKEY_DISPLAY_CANCEL 0xD3 802 803 /** 804 * @format H1B 805 * @param handle 806 * @param addr_type 807 * @param address 808 */ 809 #define SM_EVENT_PASSKEY_INPUT_NUMBER 0xD4 810 811 /** 812 * @format H1B 813 * @param handle 814 * @param addr_type 815 * @param address 816 */ 817 #define SM_EVENT_PASSKEY_INPUT_CANCEL 0xD5 818 819 /** 820 * @format H1B4 821 * @param handle 822 * @param addr_type 823 * @param address 824 * @param passkey 825 */ 826 #define SM_EVENT_NUMERIC_COMPARISON_REQUEST 0xD6 827 828 /** 829 * @format H1B 830 * @param handle 831 * @param addr_type 832 * @param address 833 */ 834 #define SM_EVENT_NUMERIC_COMPARISON_CANCEL 0xD7 835 836 /** 837 * @format H1B 838 * @param handle 839 * @param addr_type 840 * @param address 841 */ 842 #define SM_EVENT_IDENTITY_RESOLVING_STARTED 0xD8 843 844 /** 845 * @format H1B 846 * @param handle 847 * @param addr_type 848 * @param address 849 */ 850 #define SM_EVENT_IDENTITY_RESOLVING_FAILED 0xD9 851 852 /** 853 * @brief Identify resolving succeeded 854 * 855 * @format H1B1B2 856 * @param handle 857 * @param addr_type 858 * @param address 859 * @param identity_addr_type 860 * @param identity_address 861 * @param index_internal 862 * 863 */ 864 #define SM_EVENT_IDENTITY_RESOLVING_SUCCEEDED 0xDA 865 866 /** 867 * @format H1B 868 * @param handle 869 * @param addr_type 870 * @param address 871 */ 872 #define SM_EVENT_AUTHORIZATION_REQUEST 0xDB 873 874 /** 875 * @format H1B1 876 * @param handle 877 * @param addr_type 878 * @param address 879 * @param authorization_result 880 */ 881 #define SM_EVENT_AUTHORIZATION_RESULT 0xDC 882 883 /** 884 * @format H1 885 * @param handle 886 * @param action see SM_KEYPRESS_* 887 */ 888 #define SM_EVENT_KEYPRESS_NOTIFICATION 0xDD 889 890 /** 891 * @brief Emitted during pairing to inform app about address used as identity 892 * 893 * @format H1B1B 894 * @param handle 895 * @param addr_type 896 * @param address 897 * @param identity_addr_type 898 * @param identity_address 899 */ 900 #define SM_EVENT_IDENTITY_CREATED 0xDE 901 902 // GAP 903 904 /** 905 * @format H1 906 * @param handle 907 * @param security_level 908 */ 909 #define GAP_EVENT_SECURITY_LEVEL 0xE0 910 911 /** 912 * @format 1B 913 * @param status 914 * @param address 915 */ 916 #define GAP_EVENT_DEDICATED_BONDING_COMPLETED 0xE1 917 918 /** 919 * @format 11B1JV 920 * @param advertising_event_type 921 * @param address_type 922 * @param address 923 * @param rssi 924 * @param data_length 925 * @param data 926 */ 927 #define GAP_EVENT_ADVERTISING_REPORT 0xE2 928 929 930 // Meta Events, see below for sub events 931 #define HCI_EVENT_HSP_META 0xE8 932 #define HCI_EVENT_HFP_META 0xE9 933 #define HCI_EVENT_ANCS_META 0xEA 934 #define HCI_EVENT_AVDTP_META 0xEB 935 #define HCI_EVENT_AVRCP_META 0xEC 936 #define HCI_EVENT_GOEP_META 0xED 937 #define HCI_EVENT_PBAP_META 0xEE 938 939 // Potential other meta groups 940 // #define HCI_EVENT_BNEP_META 0xxx 941 // #define HCI_EVENT_GAP_META 0xxx 942 // #define HCI_EVENT_GATT_META 0xxx 943 // #define HCI_EVENT_PAN_META 0xxx 944 // #define HCI_EVENT_SDP_META 0xxx 945 // #define HCI_EVENT_SM_META 0xxx 946 947 948 /** HSP Subevent */ 949 950 /** 951 * @format 11 952 * @param subevent_code 953 * @param status 0 == OK 954 */ 955 #define HSP_SUBEVENT_RFCOMM_CONNECTION_COMPLETE 0x01 956 957 /** 958 * @format 11 959 * @param subevent_code 960 * @param status 0 == OK 961 */ 962 #define HSP_SUBEVENT_RFCOMM_DISCONNECTION_COMPLETE 0x02 963 964 965 /** 966 * @format 11H 967 * @param subevent_code 968 * @param status 0 == OK 969 * @param handle 970 */ 971 #define HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE 0x03 972 973 /** 974 * @format 11 975 * @param subevent_code 976 * @param status 0 == OK 977 */ 978 #define HSP_SUBEVENT_AUDIO_DISCONNECTION_COMPLETE 0x04 979 980 /** 981 * @format 1 982 * @param subevent_code 983 */ 984 #define HSP_SUBEVENT_RING 0x05 985 986 /** 987 * @format 11 988 * @param subevent_code 989 * @param gain Valid range: [0,15] 990 */ 991 #define HSP_SUBEVENT_MICROPHONE_GAIN_CHANGED 0x06 992 993 /** 994 * @format 11 995 * @param subevent_code 996 * @param gain Valid range: [0,15] 997 */ 998 #define HSP_SUBEVENT_SPEAKER_GAIN_CHANGED 0x07 999 1000 /** 1001 * @format 1JV 1002 * @param subevent_code 1003 * @param value_length 1004 * @param value 1005 */ 1006 #define HSP_SUBEVENT_HS_COMMAND 0x08 1007 1008 /** 1009 * @format 1JV 1010 * @param subevent_code 1011 * @param value_length 1012 * @param value 1013 */ 1014 #define HSP_SUBEVENT_AG_INDICATION 0x09 1015 1016 1017 /** HFP Subevent */ 1018 1019 /** 1020 * @format 11HB 1021 * @param subevent_code 1022 * @param status 0 == OK 1023 * @param con_handle 1024 * @param bd_addr 1025 */ 1026 #define HFP_SUBEVENT_SERVICE_LEVEL_CONNECTION_ESTABLISHED 0x01 1027 1028 /** 1029 * @format 1 1030 * @param subevent_code 1031 */ 1032 #define HFP_SUBEVENT_SERVICE_LEVEL_CONNECTION_RELEASED 0x02 1033 1034 /** 1035 * @format 11HB1 1036 * @param subevent_code 1037 * @param status 0 == OK 1038 * @param handle 1039 * @param bd_addr 1040 * @param negotiated_codec 1041 */ 1042 #define HFP_SUBEVENT_AUDIO_CONNECTION_ESTABLISHED 0x03 1043 1044 /** 1045 * @format 1 1046 * @param subevent_code 1047 */ 1048 #define HFP_SUBEVENT_AUDIO_CONNECTION_RELEASED 0x04 1049 1050 /** 1051 * @format 11 1052 * @param subevent_code 1053 * @param status 0 == OK 1054 */ 1055 #define HFP_SUBEVENT_COMPLETE 0x05 1056 1057 /** 1058 * @format 111T 1059 * @param subevent_code 1060 * @param indicator_index 1061 * @param indicator_status 1062 * @param indicator_name 1063 */ 1064 #define HFP_SUBEVENT_AG_INDICATOR_STATUS_CHANGED 0x06 1065 1066 /** 1067 * @format 111T 1068 * @param subevent_code 1069 * @param network_operator_mode 1070 * @param network_operator_format 1071 * @param network_operator_name 1072 */ 1073 #define HFP_SUBEVENT_NETWORK_OPERATOR_CHANGED 0x07 1074 1075 /** 1076 * @format 11 1077 * @param subevent_code 1078 * @param error 1079 */ 1080 #define HFP_SUBEVENT_EXTENDED_AUDIO_GATEWAY_ERROR 0x08 1081 1082 /** 1083 * @format 1 1084 * @param subevent_code 1085 */ 1086 #define HFP_SUBEVENT_START_RINGINIG 0x0A 1087 1088 /** 1089 * @format 1 1090 * @param subevent_code 1091 */ 1092 #define HFP_SUBEVENT_STOP_RINGINIG 0x0B 1093 1094 /** 1095 * @format 1 1096 * @param subevent_code 1097 */ 1098 #define HFP_SUBEVENT_CALL_TERMINATED 0x0C 1099 1100 /** 1101 * @format 1T 1102 * @param subevent_code 1103 * @param number 1104 */ 1105 #define HFP_SUBEVENT_PLACE_CALL_WITH_NUMBER 0x0D 1106 1107 /** 1108 * @format 1 1109 * @param subevent_code 1110 */ 1111 #define HFP_SUBEVENT_ATTACH_NUMBER_TO_VOICE_TAG 0x0E 1112 1113 /** 1114 * @format 1T 1115 * @param subevent_code 1116 * @param number 1117 */ 1118 #define HFP_SUBEVENT_NUMBER_FOR_VOICE_TAG 0x0F 1119 1120 /** 1121 * @format 1T 1122 * @param subevent_code 1123 * @param dtmf code 1124 */ 1125 #define HFP_SUBEVENT_TRANSMIT_DTMF_CODES 0x10 1126 1127 /** 1128 * @format 1 1129 * @param subevent_code 1130 */ 1131 #define HFP_SUBEVENT_CALL_ANSWERED 0x11 1132 1133 /** 1134 * @format 1 1135 * @param subevent_code 1136 */ 1137 #define HFP_SUBEVENT_CONFERENCE_CALL 0x12 1138 1139 /** 1140 * @format 1 1141 * @param subevent_code 1142 */ 1143 #define HFP_SUBEVENT_RING 0x13 1144 1145 /** 1146 * @format 111 1147 * @param subevent_code 1148 * @param status 1149 * @param gain 1150 */ 1151 #define HFP_SUBEVENT_SPEAKER_VOLUME 0x14 1152 1153 /** 1154 * @format 111 1155 * @param subevent_code 1156 * @param status 1157 * @param gain 1158 */ 1159 #define HFP_SUBEVENT_MICROPHONE_VOLUME 0x15 1160 1161 /** 1162 * @format 11T 1163 * @param subevent_code 1164 * @param type 1165 * @param number 1166 */ 1167 #define HFP_SUBEVENT_CALL_WAITING_NOTIFICATION 0x16 1168 1169 /** 1170 * @format 11T 1171 * @param subevent_code 1172 * @param type 1173 * @param number 1174 */ 1175 #define HFP_SUBEVENT_CALLING_LINE_INDETIFICATION_NOTIFICATION 0x17 1176 1177 /** 1178 * @format 111111T 1179 * @param subevent_code 1180 * @param clcc_idx 1181 * @param clcc_dir 1182 * @param clcc_status 1183 * @param clcc_mpty 1184 * @param bnip_type 1185 * @param bnip_number 1186 */ 1187 #define HFP_SUBEVENT_ENHANCED_CALL_STATUS 0x18 1188 1189 /** 1190 * @format 111T 1191 * @param subevent_code 1192 * @param status 1193 * @param bnip_type 1194 * @param bnip_number 1195 */ 1196 #define HFP_SUBEVENT_SUBSCRIBER_NUMBER_INFORMATION 0x19 1197 1198 /** 1199 * @format 1T 1200 * @param subevent_code 1201 * @param value 1202 */ 1203 #define HFP_SUBEVENT_RESPONSE_AND_HOLD_STATUS 0x1A 1204 1205 // ANCS Client 1206 1207 /** 1208 * @format 1H 1209 * @param subevent_code 1210 * @param handle 1211 */ 1212 #define ANCS_SUBEVENT_CLIENT_CONNECTED 0xF0 1213 1214 /** 1215 * @format 1H2T 1216 * @param subevent_code 1217 * @param handle 1218 * @param attribute_id 1219 * @param text 1220 */ 1221 #define ANCS_SUBEVENT_CLIENT_NOTIFICATION 0xF1 1222 1223 /** 1224 * @format 1H 1225 * @param subevent_code 1226 * @param handle 1227 */ 1228 #define ANCS_SUBEVENT_CLIENT_DISCONNECTED 0xF2 1229 1230 1231 /** AVDTP Subevent */ 1232 1233 /** 1234 * @format 1H11 1235 * @param subevent_code 1236 * @param con_handle 1237 * @param signal_identifier 1238 * @param status 0 == OK 1239 */ 1240 #define AVDTP_SUBEVENT_SIGNALING_ACCEPT 0x01 1241 1242 /** 1243 * @format 1H1 1244 * @param subevent_code 1245 * @param con_handle 1246 * @param signal_identifier 1247 */ 1248 #define AVDTP_SUBEVENT_SIGNALING_REJECT 0x02 1249 1250 /** 1251 * @format 1H1 1252 * @param subevent_code 1253 * @param con_handle 1254 * @param signal_identifier 1255 */ 1256 #define AVDTP_SUBEVENT_SIGNALING_GENERAL_REJECT 0x03 1257 1258 /** 1259 * @format 1HB1 1260 * @param subevent_code 1261 * @param con_handle 1262 * @param bd_addr 1263 * @param status 0 == OK 1264 */ 1265 #define AVDTP_SUBEVENT_SIGNALING_CONNECTION_ESTABLISHED 0x04 1266 1267 /** 1268 * @format 1H 1269 * @param subevent_code 1270 * @param con_handle 1271 */ 1272 #define AVDTP_SUBEVENT_SIGNALING_CONNECTION_RELEASED 0x05 1273 1274 /** 1275 * @format 1H1111 1276 * @param subevent_code 1277 * @param handle 1278 * @param seid 0x01 – 0x3E 1279 * @param in_use 0-not in use, 1-in use 1280 * @param media_type 0-audio, 1-video, 2-multimedia 1281 * @param sep_type 0-source, 1-sink 1282 */ 1283 #define AVDTP_SUBEVENT_SIGNALING_SEP_FOUND 0x06 1284 1285 /** 1286 * @format 1H11111111 1287 * @param subevent_code 1288 * @param con_handle 1289 * @param media_type 1290 * @param sampling_frequency_bitmap 1291 * @param channel_mode_bitmap 1292 * @param block_length_bitmap 1293 * @param subbands_bitmap 1294 * @param allocation_method_bitmap 1295 * @param min_bitpool_value 1296 * @param max_bitpool_value 1297 */ 1298 #define AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_SBC_CAPABILITY 0x07 1299 1300 /** 1301 * @format 1H12LV 1302 * @param subevent_code 1303 * @param con_handle 1304 * @param media_type 1305 * @param media_codec_type 1306 * @param media_codec_information_len 1307 * @param media_codec_information 1308 */ 1309 #define AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_OTHER_CAPABILITY 0x08 1310 1311 /** 1312 * @format 1H1121111111 1313 * @param subevent_code 1314 * @param con_handle 1315 * @param reconfigure 1316 * @param media_type 1317 * @param sampling_frequency 1318 * @param channel_mode 1319 * @param num_channels 1320 * @param block_length 1321 * @param subbands 1322 * @param allocation_method 1323 * @param min_bitpool_value 1324 * @param max_bitpool_value 1325 */ 1326 #define AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_SBC_CONFIGURATION 0x09 1327 1328 /** 1329 * @format 1H112LV 1330 * @param subevent_code 1331 * @param con_handle 1332 * @param reconfigure 1333 * @param media_type 1334 * @param media_codec_type 1335 * @param media_codec_information_len 1336 * @param media_codec_information 1337 */ 1338 #define AVDTP_SUBEVENT_SIGNALING_MEDIA_CODEC_OTHER_CONFIGURATION 0x0A 1339 1340 /** 1341 * @format 1H1 1342 * @param subevent_code 1343 * @param con_handle 1344 * @param status 0 == OK 1345 */ 1346 #define AVDTP_SUBEVENT_STREAMING_CONNECTION_ESTABLISHED 0x0B 1347 1348 /** 1349 * @format 1H 1350 * @param subevent_code 1351 * @param con_handle 1352 */ 1353 #define AVDTP_SUBEVENT_STREAMING_CONNECTION_RELEASED 0x0C 1354 1355 1356 1357 /** AVRCP Subevent */ 1358 1359 /** 1360 * @format 1H12B 1361 * @param subevent_code 1362 * @param con_handle 1363 * @param status 0 == OK 1364 * @param local_cid 1365 * @param bd_addr 1366 */ 1367 #define AVRCP_SUBEVENT_CONNECTION_ESTABLISHED 0x01 1368 1369 /** 1370 * @format 1H 1371 * @param subevent_code 1372 * @param con_handle 1373 */ 1374 #define AVRCP_SUBEVENT_CONNECTION_RELEASED 0x02 1375 1376 /** 1377 * @format 1H1114JVJVJVJV 1378 * @param subevent_code 1379 * @param con_handle 1380 * @param status 1381 * @param track 1382 * @param total_tracks 1383 * @param song_length in ms 1384 * @param title_len 1385 * @param title 1386 * @param artist_len 1387 * @param artist 1388 * @param album_len 1389 * @param album 1390 * @param genre_len 1391 * @param genre 1392 */ 1393 #define AVRCP_SUBEVENT_NOW_PLAYING_INFO 0x03 1394 1395 /** 1396 * @format 1H111 1397 * @param subevent_code 1398 * @param con_handle 1399 * @param status 1400 * @param repeat_mode 1401 * @param shuffle_mode 1402 */ 1403 #define AVRCP_SUBEVENT_SHUFFLE_AND_REPEAT_MODE 0x04 1404 1405 /** 1406 * @format 1H1441 1407 * @param subevent_code 1408 * @param con_handle 1409 * @param status 1410 * @param song_length 1411 * @param song_position 1412 * @param play_status 1413 */ 1414 #define AVRCP_SUBEVENT_PLAY_STATUS 0x05 1415 1416 /** 1417 * @format 1H11 1418 * @param subevent_code 1419 * @param con_handle 1420 * @param status 1421 * @param playback_status 1422 */ 1423 #define AVRCP_SUBEVENT_NOTIFICATION_PLAYBACK_STATUS_CHANGED 0x06 1424 1425 /** 1426 * @format 1H11 1427 * @param subevent_code 1428 * @param con_handle 1429 * @param status 1430 * @param track_status 1431 */ 1432 #define AVRCP_SUBEVENT_NOTIFICATION_TRACK_CHANGED 0x07 1433 1434 /** 1435 * @format 1H1 1436 * @param subevent_code 1437 * @param con_handle 1438 * @param status 1439 */ 1440 #define AVRCP_SUBEVENT_NOTIFICATION_NOW_PLAYING_CONTENT_CHANGED 0x08 1441 1442 /** 1443 * @format 1H1 1444 * @param subevent_code 1445 * @param con_handle 1446 * @param status 1447 */ 1448 #define AVRCP_SUBEVENT_NOTIFICATION_AVAILABLE_PLAYERS_CHANGED 0x09 1449 1450 /** 1451 * @format 1H11 1452 * @param subevent_code 1453 * @param con_handle 1454 * @param status 1455 * @param absolute_volume 1456 */ 1457 #define AVRCP_SUBEVENT_NOTIFICATION_VOLUME_CHANGED 0x0A 1458 1459 /** 1460 * @format 1H11 1461 * @param subevent_code 1462 * @param con_handle 1463 * @param status 1464 * @param absolute_volume 1465 */ 1466 #define AVRCP_SUBEVENT_SET_ABSOLUTE_VOLUME_RESPONSE 0x0B 1467 1468 /** 1469 * @format 1H11 1470 * @param subevent_code 1471 * @param con_handle 1472 * @param status 1473 * @param notification_id 1474 */ 1475 #define AVRCP_SUBEVENT_ENABLE_NOTIFICATION_COMPLETE 0x0C 1476 1477 /** 1478 * @format 1H11 1479 * @param subevent_code 1480 * @param con_handle 1481 * @param status 1482 * @param operation_id 1483 */ 1484 #define AVRCP_SUBEVENT_OPERATION_START 0x0D 1485 1486 /** 1487 * @format 1H11 1488 * @param subevent_code 1489 * @param con_handle 1490 * @param status 1491 * @param operation_id 1492 */ 1493 #define AVRCP_SUBEVENT_OPERATION_COMPLETE 0x0E 1494 1495 /** 1496 * @format 1H1 1497 * @param subevent_code 1498 * @param con_handle 1499 * @param status 1500 */ 1501 #define AVRCP_SUBEVENT_PLAYER_APPLICATION_VALUE_RESPONSE 0x0F 1502 1503 /** 1504 * @format 121BH1 1505 * @param subevent_code 1506 * @param goep_cid 1507 * @param status 1508 * @param bd_addr 1509 * @param con_handle 1510 * @param incoming 1511 */ 1512 #define GOEP_SUBEVENT_CONNECTION_OPENED 0x01 1513 1514 /** 1515 * @format 12 1516 * @param subevent_code 1517 * @param goep_cid 1518 */ 1519 #define GOEP_SUBEVENT_CONNECTION_CLOSED 0x02 1520 1521 /** 1522 * @format 12 1523 * @param subevent_code 1524 * @param goep_cid 1525 */ 1526 #define GOEP_SUBEVENT_CAN_SEND_NOW 0x03 1527 1528 /** 1529 * @format 121BH1 1530 * @param subevent_code 1531 * @param pbap_cid 1532 * @param status 1533 * @param bd_addr 1534 * @param con_handle 1535 * @param incoming 1536 */ 1537 #define PBAP_SUBEVENT_CONNECTION_OPENED 0x01 1538 1539 /** 1540 * @format 12 1541 * @param subevent_code 1542 * @param goep_cid 1543 */ 1544 #define PBAP_SUBEVENT_CONNECTION_CLOSED 0x02 1545 1546 /** 1547 * @format 121 1548 * @param subevent_code 1549 * @param goep_cid 1550 * @param status 1551 */ 1552 #define PBAP_SUBEVENT_OPERATION_COMPLETED 0x03 1553 1554 #endif 1555