12531c97eSMatthias Ringwald /* 22531c97eSMatthias Ringwald * Copyright (C) 2014 BlueKitchen GmbH 32531c97eSMatthias Ringwald * 42531c97eSMatthias Ringwald * Redistribution and use in source and binary forms, with or without 52531c97eSMatthias Ringwald * modification, are permitted provided that the following conditions 62531c97eSMatthias Ringwald * are met: 72531c97eSMatthias Ringwald * 82531c97eSMatthias Ringwald * 1. Redistributions of source code must retain the above copyright 92531c97eSMatthias Ringwald * notice, this list of conditions and the following disclaimer. 102531c97eSMatthias Ringwald * 2. Redistributions in binary form must reproduce the above copyright 112531c97eSMatthias Ringwald * notice, this list of conditions and the following disclaimer in the 122531c97eSMatthias Ringwald * documentation and/or other materials provided with the distribution. 132531c97eSMatthias Ringwald * 3. Neither the name of the copyright holders nor the names of 142531c97eSMatthias Ringwald * contributors may be used to endorse or promote products derived 152531c97eSMatthias Ringwald * from this software without specific prior written permission. 162531c97eSMatthias Ringwald * 4. Any redistribution, use, or modification is done solely for 172531c97eSMatthias Ringwald * personal benefit and not for any commercial purpose or for 182531c97eSMatthias Ringwald * monetary gain. 192531c97eSMatthias Ringwald * 202531c97eSMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS 212531c97eSMatthias Ringwald * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 222531c97eSMatthias Ringwald * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 232fca4dadSMilanka Ringwald * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN 242fca4dadSMilanka Ringwald * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 252531c97eSMatthias Ringwald * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 262531c97eSMatthias Ringwald * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 272531c97eSMatthias Ringwald * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 282531c97eSMatthias Ringwald * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 292531c97eSMatthias Ringwald * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 302531c97eSMatthias Ringwald * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 312531c97eSMatthias Ringwald * SUCH DAMAGE. 322531c97eSMatthias Ringwald * 332531c97eSMatthias Ringwald * Please inquire about commercial licensing options at 342531c97eSMatthias Ringwald * [email protected] 352531c97eSMatthias Ringwald * 362531c97eSMatthias Ringwald */ 372531c97eSMatthias Ringwald 38e501bae0SMatthias Ringwald #define BTSTACK_FILE__ "daemon_cmds.c" 39ab2c6ae4SMatthias Ringwald 402531c97eSMatthias Ringwald /* 412531c97eSMatthias Ringwald * hci_cmd.c 422531c97eSMatthias Ringwald * 432531c97eSMatthias Ringwald * Created by Matthias Ringwald on 7/23/09. 442531c97eSMatthias Ringwald */ 452531c97eSMatthias Ringwald 462531c97eSMatthias Ringwald #include "daemon_cmds.h" 472531c97eSMatthias Ringwald #include "hci.h" 482531c97eSMatthias Ringwald 492531c97eSMatthias Ringwald // calculate combined ogf/ocf value 502531c97eSMatthias Ringwald #define OPCODE(ogf, ocf) (ocf | ogf << 10) 512531c97eSMatthias Ringwald 522531c97eSMatthias Ringwald // BTstack commands 532531c97eSMatthias Ringwald const hci_cmd_t btstack_get_state = { 54ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_BTSTACK_GET_STATE, "" 552531c97eSMatthias Ringwald }; 562531c97eSMatthias Ringwald 572531c97eSMatthias Ringwald /** 582531c97eSMatthias Ringwald * @param power_mode (0 = off, 1 = on) 592531c97eSMatthias Ringwald */ 602531c97eSMatthias Ringwald const hci_cmd_t btstack_set_power_mode = { 61ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_BTSTACK_SET_POWER_MODE, "1" 622531c97eSMatthias Ringwald }; 632531c97eSMatthias Ringwald 642531c97eSMatthias Ringwald /** 652531c97eSMatthias Ringwald * @param acl_capture_mode (0 = off, 1 = on) 662531c97eSMatthias Ringwald */ 672531c97eSMatthias Ringwald const hci_cmd_t btstack_set_acl_capture_mode = { 68ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_BTSTACK_SET_ACL_CAPTURE_MODE, "1" 692531c97eSMatthias Ringwald }; 702531c97eSMatthias Ringwald 712531c97eSMatthias Ringwald const hci_cmd_t btstack_get_version = { 72ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_BTSTACK_GET_VERSION, "" 732531c97eSMatthias Ringwald }; 742531c97eSMatthias Ringwald 752531c97eSMatthias Ringwald const hci_cmd_t btstack_get_system_bluetooth_enabled = { 76ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_BTSTACK_GET_SYSTEM_BLUETOOTH_ENABLED, "" 772531c97eSMatthias Ringwald }; 782531c97eSMatthias Ringwald 792531c97eSMatthias Ringwald /** 802531c97eSMatthias Ringwald * @param bluetooth_enabled_flag (0 = off, 1 = on, only used by btstack config) 812531c97eSMatthias Ringwald */ 822531c97eSMatthias Ringwald const hci_cmd_t btstack_set_system_bluetooth_enabled = { 83ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_BTSTACK_SET_SYSTEM_BLUETOOTH_ENABLED, "1" 842531c97eSMatthias Ringwald }; 852531c97eSMatthias Ringwald 862531c97eSMatthias Ringwald /** 872531c97eSMatthias Ringwald * @param discoverable_flag (0 = off, 1 = on) 882531c97eSMatthias Ringwald */ 892531c97eSMatthias Ringwald const hci_cmd_t btstack_set_discoverable = { 90ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_BTSTACK_SET_DISCOVERABLE, "1" 912531c97eSMatthias Ringwald }; 922531c97eSMatthias Ringwald 932531c97eSMatthias Ringwald /** 942531c97eSMatthias Ringwald * @param bluetooth_enabled_flag (0 = off, 1 = on, only used by btstack config) 952531c97eSMatthias Ringwald */ 962531c97eSMatthias Ringwald const hci_cmd_t btstack_set_bluetooth_enabled = { 97ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_BTSTACK_SET_BLUETOOTH_ENABLED, "1" 982531c97eSMatthias Ringwald }; 992531c97eSMatthias Ringwald 1002531c97eSMatthias Ringwald /** 1012531c97eSMatthias Ringwald * @param bd_addr (48) 1022531c97eSMatthias Ringwald * @param psm (16) 1032531c97eSMatthias Ringwald */ 1042531c97eSMatthias Ringwald const hci_cmd_t l2cap_create_channel_cmd = { 105ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_L2CAP_CREATE_CHANNEL, "B2" 1062531c97eSMatthias Ringwald }; 1072531c97eSMatthias Ringwald 1082531c97eSMatthias Ringwald /** 1092531c97eSMatthias Ringwald * @param bd_addr (48) 1102531c97eSMatthias Ringwald * @param psm (16) 1112531c97eSMatthias Ringwald * @param mtu (16) 1122531c97eSMatthias Ringwald */ 1132531c97eSMatthias Ringwald const hci_cmd_t l2cap_create_channel_mtu_cmd = { 114ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_L2CAP_CREATE_CHANNEL_MTU, "B22" 1152531c97eSMatthias Ringwald // @param bd_addr(48), psm (16), mtu (16) 1162531c97eSMatthias Ringwald }; 1172531c97eSMatthias Ringwald 1182531c97eSMatthias Ringwald /** 1192531c97eSMatthias Ringwald * @param channel (16) 1202531c97eSMatthias Ringwald */ 1212531c97eSMatthias Ringwald const hci_cmd_t l2cap_disconnect_cmd = { 122b93f8966SMatthias Ringwald DAEMON_OPCODE_L2CAP_DISCONNECT, "2" 1232531c97eSMatthias Ringwald }; 1242531c97eSMatthias Ringwald 1252531c97eSMatthias Ringwald /** 1262531c97eSMatthias Ringwald * @param psm (16) 1272531c97eSMatthias Ringwald * @param mtu (16) 1282531c97eSMatthias Ringwald */ 1292531c97eSMatthias Ringwald const hci_cmd_t l2cap_register_service_cmd = { 130ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_L2CAP_REGISTER_SERVICE, "22" 1312531c97eSMatthias Ringwald }; 1322531c97eSMatthias Ringwald 1332531c97eSMatthias Ringwald /** 1342531c97eSMatthias Ringwald * @param psm (16) 1352531c97eSMatthias Ringwald */ 1362531c97eSMatthias Ringwald const hci_cmd_t l2cap_unregister_service_cmd = { 137ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_L2CAP_UNREGISTER_SERVICE, "2" 1382531c97eSMatthias Ringwald }; 1392531c97eSMatthias Ringwald 1402531c97eSMatthias Ringwald /** 1412531c97eSMatthias Ringwald * @param source_cid (16) 1422531c97eSMatthias Ringwald */ 1432531c97eSMatthias Ringwald const hci_cmd_t l2cap_accept_connection_cmd = { 144ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_L2CAP_ACCEPT_CONNECTION, "2" 1452531c97eSMatthias Ringwald }; 1462531c97eSMatthias Ringwald 1472531c97eSMatthias Ringwald /** 1482531c97eSMatthias Ringwald * @param source_cid (16) 1497ef6a7bbSMatthias Ringwald * @param reason (deprecated) 1502531c97eSMatthias Ringwald */ 1512531c97eSMatthias Ringwald const hci_cmd_t l2cap_decline_connection_cmd = { 152ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_L2CAP_DECLINE_CONNECTION, "21" 1532531c97eSMatthias Ringwald }; 1542531c97eSMatthias Ringwald 155*6e753354SMatthias Ringwald /** 156*6e753354SMatthias Ringwald * @param l2cap_cid 157*6e753354SMatthias Ringwald */ 158*6e753354SMatthias Ringwald const hci_cmd_t l2cap_request_can_send_now_cmd = { 159*6e753354SMatthias Ringwald DAEMON_OPCODE_L2CAP_REQUEST_CAN_SEND_NOW, "2" 160*6e753354SMatthias Ringwald }; 1612531c97eSMatthias Ringwald 1622531c97eSMatthias Ringwald /** 1632531c97eSMatthias Ringwald * @param service_record 1642531c97eSMatthias Ringwald */ 1652531c97eSMatthias Ringwald const hci_cmd_t sdp_register_service_record_cmd = { 166ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_SDP_REGISTER_SERVICE_RECORD, "S" 1672531c97eSMatthias Ringwald }; 1682531c97eSMatthias Ringwald 1692531c97eSMatthias Ringwald /** 1702531c97eSMatthias Ringwald * @param service_record_handle 1712531c97eSMatthias Ringwald */ 1722531c97eSMatthias Ringwald const hci_cmd_t sdp_unregister_service_record_cmd = { 173ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_SDP_UNREGISTER_SERVICE_RECORD, "4" 1742531c97eSMatthias Ringwald }; 1752531c97eSMatthias Ringwald 1762531c97eSMatthias Ringwald /** 1772531c97eSMatthias Ringwald * @param bd_addr 1782531c97eSMatthias Ringwald * @param service_search_pattern 1792531c97eSMatthias Ringwald */ 1802531c97eSMatthias Ringwald const hci_cmd_t sdp_client_query_rfcomm_services_cmd = { 181ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_SDP_CLIENT_QUERY_RFCOMM_SERVICES, "BS" 1822531c97eSMatthias Ringwald }; 1832531c97eSMatthias Ringwald 1842531c97eSMatthias Ringwald /** 1852531c97eSMatthias Ringwald * @param bd_addr 1862531c97eSMatthias Ringwald * @param service_search_pattern 1872531c97eSMatthias Ringwald * @param attribute_ID_list 1882531c97eSMatthias Ringwald */ 1892531c97eSMatthias Ringwald const hci_cmd_t sdp_client_query_services_cmd = { 190ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_SDP_CLIENT_QUERY_SERVICES, "BSS" 1912531c97eSMatthias Ringwald }; 1922531c97eSMatthias Ringwald 1932531c97eSMatthias Ringwald /** 1942531c97eSMatthias Ringwald * @param bd_addr 1952531c97eSMatthias Ringwald * @param server_channel 1962531c97eSMatthias Ringwald */ 1972531c97eSMatthias Ringwald const hci_cmd_t rfcomm_create_channel_cmd = { 198ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_RFCOMM_CREATE_CHANNEL, "B1" 1992531c97eSMatthias Ringwald }; 2002531c97eSMatthias Ringwald 2012531c97eSMatthias Ringwald /** 2022531c97eSMatthias Ringwald * @param bd_addr 2032531c97eSMatthias Ringwald * @param server_channel 2042531c97eSMatthias Ringwald * @param mtu 2052531c97eSMatthias Ringwald * @param credits 2062531c97eSMatthias Ringwald */ 2072531c97eSMatthias Ringwald const hci_cmd_t rfcomm_create_channel_with_initial_credits_cmd = { 208ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_RFCOMM_CREATE_CHANNEL_WITH_INITIAL_CREDITS, "B121" 2092531c97eSMatthias Ringwald }; 2102531c97eSMatthias Ringwald 2112531c97eSMatthias Ringwald /** 2122531c97eSMatthias Ringwald * @param rfcomm_cid 2132531c97eSMatthias Ringwald * @param credits 2142531c97eSMatthias Ringwald */ 2152531c97eSMatthias Ringwald const hci_cmd_t rfcomm_grants_credits_cmd = { 216ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_RFCOMM_GRANTS_CREDITS, "21" 2172531c97eSMatthias Ringwald }; 2182531c97eSMatthias Ringwald 2192531c97eSMatthias Ringwald /** 2202531c97eSMatthias Ringwald * @param rfcomm_cid 2212531c97eSMatthias Ringwald * @param reason 2222531c97eSMatthias Ringwald */ 2232531c97eSMatthias Ringwald const hci_cmd_t rfcomm_disconnect_cmd = { 224ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_RFCOMM_DISCONNECT, "21" 2252531c97eSMatthias Ringwald }; 2262531c97eSMatthias Ringwald 2272531c97eSMatthias Ringwald /** 2282531c97eSMatthias Ringwald * @param server_channel 2292531c97eSMatthias Ringwald * @param mtu 2302531c97eSMatthias Ringwald */ 2312531c97eSMatthias Ringwald const hci_cmd_t rfcomm_register_service_cmd = { 232ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_RFCOMM_REGISTER_SERVICE, "12" 2332531c97eSMatthias Ringwald }; 2342531c97eSMatthias Ringwald 2352531c97eSMatthias Ringwald /** 2362531c97eSMatthias Ringwald * @param server_channel 2372531c97eSMatthias Ringwald * @param mtu 2382531c97eSMatthias Ringwald * @param initial_credits 2392531c97eSMatthias Ringwald */ 2402531c97eSMatthias Ringwald const hci_cmd_t rfcomm_register_service_with_initial_credits_cmd = { 241ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_RFCOMM_REGISTER_SERVICE_WITH_INITIAL_CREDITS, "121" 2422531c97eSMatthias Ringwald }; 2432531c97eSMatthias Ringwald 2442531c97eSMatthias Ringwald /** 2452531c97eSMatthias Ringwald * @param service_channel 2462531c97eSMatthias Ringwald */ 2472531c97eSMatthias Ringwald const hci_cmd_t rfcomm_unregister_service_cmd = { 248ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_RFCOMM_UNREGISTER_SERVICE, "2" 2492531c97eSMatthias Ringwald }; 2502531c97eSMatthias Ringwald 2512531c97eSMatthias Ringwald /** 2522531c97eSMatthias Ringwald * @param source_cid 2532531c97eSMatthias Ringwald */ 2542531c97eSMatthias Ringwald const hci_cmd_t rfcomm_accept_connection_cmd = { 255ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_RFCOMM_ACCEPT_CONNECTION, "2" 2562531c97eSMatthias Ringwald }; 2572531c97eSMatthias Ringwald 2582531c97eSMatthias Ringwald 2592531c97eSMatthias Ringwald /** 2602531c97eSMatthias Ringwald * @param source_cid 2612531c97eSMatthias Ringwald * @param reason 2622531c97eSMatthias Ringwald */ 2632531c97eSMatthias Ringwald const hci_cmd_t rfcomm_decline_connection_cmd = { 264ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_RFCOMM_DECLINE_CONNECTION, "21" 2652531c97eSMatthias Ringwald }; 2662531c97eSMatthias Ringwald 2672531c97eSMatthias Ringwald // request persistent rfcomm channel number for named service 2682531c97eSMatthias Ringwald /** 2692531c97eSMatthias Ringwald * @param named_service 2702531c97eSMatthias Ringwald */ 2712531c97eSMatthias Ringwald const hci_cmd_t rfcomm_persistent_channel_for_service_cmd = { 272ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_RFCOMM_PERSISTENT_CHANNEL_FOR_SERVICE, "N" 2732531c97eSMatthias Ringwald }; 2742531c97eSMatthias Ringwald 2752531c97eSMatthias Ringwald /** 276*6e753354SMatthias Ringwald * @param rfcomm_cid 277*6e753354SMatthias Ringwald */ 278*6e753354SMatthias Ringwald const hci_cmd_t rfcomm_request_can_send_now_cmd = { 279*6e753354SMatthias Ringwald DAEMON_OPCODE_RFCOMM_REQUEST_CAN_SEND_NOW, "2" 280*6e753354SMatthias Ringwald }; 281*6e753354SMatthias Ringwald 282*6e753354SMatthias Ringwald /** 2832531c97eSMatthias Ringwald * @param handle 2842531c97eSMatthias Ringwald */ 2852531c97eSMatthias Ringwald const hci_cmd_t gap_disconnect_cmd = { 286ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GAP_DISCONNECT, "H" 2872531c97eSMatthias Ringwald }; 2882531c97eSMatthias Ringwald 2892531c97eSMatthias Ringwald /** 290a512b228SMatthias Ringwald * @param duration in 1.28s units 291a512b228SMatthias Ringwald */ 292a512b228SMatthias Ringwald const hci_cmd_t gap_inquiry_start_cmd = { 293a512b228SMatthias Ringwald DAEMON_OPCODE_GAP_INQUIRY_START, "1" 294a512b228SMatthias Ringwald }; 295a512b228SMatthias Ringwald 296a512b228SMatthias Ringwald /** 297a512b228SMatthias Ringwald */ 298a512b228SMatthias Ringwald const hci_cmd_t gap_inquiry_stop_cmd = { 299a512b228SMatthias Ringwald DAEMON_OPCODE_GAP_INQUIRY_STOP, "" 300a512b228SMatthias Ringwald }; 301a512b228SMatthias Ringwald 302a512b228SMatthias Ringwald /** 303a512b228SMatthias Ringwald * @param addr 304a512b228SMatthias Ringwald * @param page_scan_repetition_mode 305a512b228SMatthias Ringwald * @param clock_offset only used when bit 15 is set - pass 0 if not known 306a512b228SMatthias Ringwald */ 307a512b228SMatthias Ringwald const hci_cmd_t gap_remote_name_request_cmd = { 308a512b228SMatthias Ringwald DAEMON_OPCODE_GAP_REMOTE_NAME_REQUEST, "B12" 309a512b228SMatthias Ringwald }; 310a512b228SMatthias Ringwald 311a512b228SMatthias Ringwald /** 312a512b228SMatthias Ringwald * @param addr 313a512b228SMatthias Ringwald */ 314a512b228SMatthias Ringwald const hci_cmd_t gap_drop_link_key_cmd = { 315a512b228SMatthias Ringwald DAEMON_OPCODE_GAP_DROP_LINK_KEY_FOR_BD_ADDR, "B" 316a512b228SMatthias Ringwald }; 317a512b228SMatthias Ringwald 318a512b228SMatthias Ringwald /** 319a512b228SMatthias Ringwald */ 320a512b228SMatthias Ringwald const hci_cmd_t gap_delete_all_link_keys_cmd = { 321a512b228SMatthias Ringwald DAEMON_OPCODE_GAP_DELETE_ALL_LINK_KEYS, "" 322a512b228SMatthias Ringwald }; 323bb2a499aSMatthias Ringwald 324bb2a499aSMatthias Ringwald /** 325bb2a499aSMatthias Ringwald * @param bd_addr 326bb2a499aSMatthias Ringwald * @param pin_length 327bb2a499aSMatthias Ringwald * @param pin (c-string) 328bb2a499aSMatthias Ringwald */ 329bb2a499aSMatthias Ringwald const hci_cmd_t gap_pin_code_response_cmd = { 330bb2a499aSMatthias Ringwald DAEMON_OPCODE_GAP_PIN_CODE_RESPONSE, "B1P" 331bb2a499aSMatthias Ringwald }; 332bb2a499aSMatthias Ringwald 333bb2a499aSMatthias Ringwald /** 334bb2a499aSMatthias Ringwald * @param bd_addr 335bb2a499aSMatthias Ringwald */ 336bb2a499aSMatthias Ringwald const hci_cmd_t gap_pin_code_negative_cmd = { 337bb2a499aSMatthias Ringwald DAEMON_OPCODE_GAP_PIN_CODE_NEGATIVE, "B" 338bb2a499aSMatthias Ringwald }; 339bb2a499aSMatthias Ringwald 340a512b228SMatthias Ringwald 341a512b228SMatthias Ringwald /** 3422531c97eSMatthias Ringwald */ 3432531c97eSMatthias Ringwald const hci_cmd_t gap_le_scan_start = { 344ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GAP_LE_SCAN_START, "" 3452531c97eSMatthias Ringwald }; 3462531c97eSMatthias Ringwald 3472531c97eSMatthias Ringwald /** 3482531c97eSMatthias Ringwald */ 3492531c97eSMatthias Ringwald const hci_cmd_t gap_le_scan_stop = { 350ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GAP_LE_SCAN_STOP, "" 3512531c97eSMatthias Ringwald }; 3522531c97eSMatthias Ringwald 3532531c97eSMatthias Ringwald /** 3542531c97eSMatthias Ringwald * @param scan_type 3552531c97eSMatthias Ringwald * @param scan_interval 3562531c97eSMatthias Ringwald * @param scan_window 3572531c97eSMatthias Ringwald */ 3582531c97eSMatthias Ringwald const hci_cmd_t gap_le_set_scan_parameters = { 359ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GAP_LE_SET_SCAN_PARAMETERS, "122" 3602531c97eSMatthias Ringwald }; 3612531c97eSMatthias Ringwald 3622531c97eSMatthias Ringwald /** 3632531c97eSMatthias Ringwald * @param peer_address_type 3642531c97eSMatthias Ringwald * @param peer_address 3652531c97eSMatthias Ringwald */ 3662531c97eSMatthias Ringwald const hci_cmd_t gap_le_connect_cmd = { 367ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GAP_LE_CONNECT, "1B" 3682531c97eSMatthias Ringwald }; 3692531c97eSMatthias Ringwald 3702531c97eSMatthias Ringwald /** 3712531c97eSMatthias Ringwald * @param peer_address_type 3722531c97eSMatthias Ringwald * @param peer_address 3732531c97eSMatthias Ringwald */ 3742531c97eSMatthias Ringwald const hci_cmd_t gap_le_connect_cancel_cmd = { 375ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GAP_LE_CONNECT_CANCEL, "" 3762531c97eSMatthias Ringwald }; 3772531c97eSMatthias Ringwald 3782531c97eSMatthias Ringwald /** 3792531c97eSMatthias Ringwald * @param handle 3802531c97eSMatthias Ringwald */ 3812531c97eSMatthias Ringwald const hci_cmd_t gatt_discover_primary_services_cmd = { 382ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_DISCOVER_PRIMARY_SERVICES, "H" 3832531c97eSMatthias Ringwald }; 3842531c97eSMatthias Ringwald 3852531c97eSMatthias Ringwald /** 3862531c97eSMatthias Ringwald * @param handle 3872531c97eSMatthias Ringwald * @param uuid16 3882531c97eSMatthias Ringwald */ 3892531c97eSMatthias Ringwald const hci_cmd_t gatt_discover_primary_services_by_uuid16_cmd = { 390ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID16, "H2" 3912531c97eSMatthias Ringwald }; 3922531c97eSMatthias Ringwald 3932531c97eSMatthias Ringwald /** 3942531c97eSMatthias Ringwald * @param handle 3952531c97eSMatthias Ringwald * @param uuid128 3962531c97eSMatthias Ringwald */ 3972531c97eSMatthias Ringwald const hci_cmd_t gatt_discover_primary_services_by_uuid128_cmd = { 398ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID128, "HU" 3992531c97eSMatthias Ringwald }; 4002531c97eSMatthias Ringwald 4012531c97eSMatthias Ringwald /** 4022531c97eSMatthias Ringwald * @param handle 4032531c97eSMatthias Ringwald * @param service 4042531c97eSMatthias Ringwald */ 4052531c97eSMatthias Ringwald const hci_cmd_t gatt_find_included_services_for_service_cmd = { 406ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_FIND_INCLUDED_SERVICES_FOR_SERVICE, "HX" 4072531c97eSMatthias Ringwald }; 4082531c97eSMatthias Ringwald 4092531c97eSMatthias Ringwald /** 4102531c97eSMatthias Ringwald * @param handle 4112531c97eSMatthias Ringwald * @param service 4122531c97eSMatthias Ringwald */ 4132531c97eSMatthias Ringwald const hci_cmd_t gatt_discover_characteristics_for_service_cmd = { 414ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE, "HX" 4152531c97eSMatthias Ringwald }; 4162531c97eSMatthias Ringwald 4172531c97eSMatthias Ringwald /** 4182531c97eSMatthias Ringwald * @param handle 4192531c97eSMatthias Ringwald * @param service 4202531c97eSMatthias Ringwald * @param uuid128 4212531c97eSMatthias Ringwald */ 4222531c97eSMatthias Ringwald const hci_cmd_t gatt_discover_characteristics_for_service_by_uuid128_cmd = { 423ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE_BY_UUID128, "HXU" 4242531c97eSMatthias Ringwald }; 4252531c97eSMatthias Ringwald 4262531c97eSMatthias Ringwald /** 4272531c97eSMatthias Ringwald * @param handle 4282531c97eSMatthias Ringwald * @param characteristic 4292531c97eSMatthias Ringwald */ 4302531c97eSMatthias Ringwald const hci_cmd_t gatt_discover_characteristic_descriptors_cmd = { 431ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_DISCOVER_CHARACTERISTIC_DESCRIPTORS, "HY" 4322531c97eSMatthias Ringwald }; 4332531c97eSMatthias Ringwald 4342531c97eSMatthias Ringwald /** 4352531c97eSMatthias Ringwald * @param handle 4362531c97eSMatthias Ringwald * @param characteristic 4372531c97eSMatthias Ringwald */ 4382531c97eSMatthias Ringwald const hci_cmd_t gatt_read_value_of_characteristic_cmd = { 439ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_READ_VALUE_OF_CHARACTERISTIC, "HY" 4402531c97eSMatthias Ringwald }; 4412531c97eSMatthias Ringwald 4422531c97eSMatthias Ringwald /** 4432531c97eSMatthias Ringwald * @param handle 4442531c97eSMatthias Ringwald * @param characteristic 4452531c97eSMatthias Ringwald */ 4462531c97eSMatthias Ringwald const hci_cmd_t gatt_read_long_value_of_characteristic_cmd = { 447ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_READ_LONG_VALUE_OF_CHARACTERISTIC, "HY" 4482531c97eSMatthias Ringwald }; 4492531c97eSMatthias Ringwald 4502531c97eSMatthias Ringwald /** 4512531c97eSMatthias Ringwald * @param handle 4522531c97eSMatthias Ringwald * @param characteristic 4532531c97eSMatthias Ringwald * @param data_length 4542531c97eSMatthias Ringwald * @param data 4552531c97eSMatthias Ringwald */ 4562531c97eSMatthias Ringwald const hci_cmd_t gatt_write_value_of_characteristic_without_response_cmd = { 457ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_WRITE_VALUE_OF_CHARACTERISTIC_WITHOUT_RESPONSE, "HYLV" 4582531c97eSMatthias Ringwald }; 4592531c97eSMatthias Ringwald 4602531c97eSMatthias Ringwald /** 4612531c97eSMatthias Ringwald * @param handle 4622531c97eSMatthias Ringwald * @param characteristic 4632531c97eSMatthias Ringwald * @param data_length 4642531c97eSMatthias Ringwald * @param data 4652531c97eSMatthias Ringwald */ 4662531c97eSMatthias Ringwald const hci_cmd_t gatt_write_value_of_characteristic_cmd = { 467ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_WRITE_VALUE_OF_CHARACTERISTIC, "HYLV" 4682531c97eSMatthias Ringwald }; 4692531c97eSMatthias Ringwald 4702531c97eSMatthias Ringwald /** 4712531c97eSMatthias Ringwald * @param handle 4722531c97eSMatthias Ringwald * @param characteristic 4732531c97eSMatthias Ringwald * @param data_length 4742531c97eSMatthias Ringwald * @param data 4752531c97eSMatthias Ringwald */ 4762531c97eSMatthias Ringwald const hci_cmd_t gatt_write_long_value_of_characteristic_cmd = { 477ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_WRITE_LONG_VALUE_OF_CHARACTERISTIC, "HYLV" 4782531c97eSMatthias Ringwald }; 4792531c97eSMatthias Ringwald 4802531c97eSMatthias Ringwald /** 4812531c97eSMatthias Ringwald * @param handle 4822531c97eSMatthias Ringwald * @param characteristic 4832531c97eSMatthias Ringwald * @param data_length 4842531c97eSMatthias Ringwald * @param data 4852531c97eSMatthias Ringwald */ 4862531c97eSMatthias Ringwald const hci_cmd_t gatt_reliable_write_long_value_of_characteristic_cmd = { 487ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_RELIABLE_WRITE_LONG_VALUE_OF_CHARACTERISTIC, "HYLV" 4882531c97eSMatthias Ringwald }; 4892531c97eSMatthias Ringwald 4902531c97eSMatthias Ringwald /** 4912531c97eSMatthias Ringwald * @param handle 4922531c97eSMatthias Ringwald * @param descriptor 4932531c97eSMatthias Ringwald */ 4942531c97eSMatthias Ringwald const hci_cmd_t gatt_read_characteristic_descriptor_cmd = { 495ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_READ_CHARACTERISTIC_DESCRIPTOR, "HZ" 4962531c97eSMatthias Ringwald }; 4972531c97eSMatthias Ringwald 4982531c97eSMatthias Ringwald /** 4992531c97eSMatthias Ringwald * @param handle 5002531c97eSMatthias Ringwald * @param descriptor 5012531c97eSMatthias Ringwald */ 5022531c97eSMatthias Ringwald const hci_cmd_t gatt_read_long_characteristic_descriptor_cmd = { 503ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_READ_LONG_CHARACTERISTIC_DESCRIPTOR, "HZ" 5042531c97eSMatthias Ringwald }; 5052531c97eSMatthias Ringwald 5062531c97eSMatthias Ringwald /** 5072531c97eSMatthias Ringwald * @param handle 5082531c97eSMatthias Ringwald * @param descriptor 5092531c97eSMatthias Ringwald * @param data_length 5102531c97eSMatthias Ringwald * @param data 5112531c97eSMatthias Ringwald */ 5122531c97eSMatthias Ringwald const hci_cmd_t gatt_write_characteristic_descriptor_cmd = { 513ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_WRITE_CHARACTERISTIC_DESCRIPTOR, "HZLV" 5142531c97eSMatthias Ringwald }; 5152531c97eSMatthias Ringwald 5162531c97eSMatthias Ringwald /** 5172531c97eSMatthias Ringwald * @param handle 5182531c97eSMatthias Ringwald * @param descriptor 5192531c97eSMatthias Ringwald * @param data_length 5202531c97eSMatthias Ringwald * @param data 5212531c97eSMatthias Ringwald */ 5222531c97eSMatthias Ringwald const hci_cmd_t gatt_write_long_characteristic_descriptor_cmd = { 523ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_WRITE_LONG_CHARACTERISTIC_DESCRIPTOR, "HZLV" 5242531c97eSMatthias Ringwald }; 5252531c97eSMatthias Ringwald 5262531c97eSMatthias Ringwald /** 5272531c97eSMatthias Ringwald * @param handle 5282531c97eSMatthias Ringwald * @param characteristic 5292531c97eSMatthias Ringwald * @param configuration 5302531c97eSMatthias Ringwald */ 5312531c97eSMatthias Ringwald const hci_cmd_t gatt_write_client_characteristic_configuration_cmd = { 532ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_WRITE_CLIENT_CHARACTERISTIC_CONFIGURATION, "HY2" 5332531c97eSMatthias Ringwald }; 5342531c97eSMatthias Ringwald 5352531c97eSMatthias Ringwald /** 5362531c97eSMatthias Ringwald * @param handle 5372531c97eSMatthias Ringwald */ 5382531c97eSMatthias Ringwald const hci_cmd_t gatt_get_mtu = { 539ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_GATT_GET_MTU, "H" 5402531c97eSMatthias Ringwald }; 5411edc4fc7SMatthias Ringwald 5421edc4fc7SMatthias Ringwald /** 5431edc4fc7SMatthias Ringwald * @brief Sets the requested authentication requirements, bonding yes/no, MITM yes/no, SC yes/no, keypress yes/no 5441edc4fc7SMatthias Ringwald * @param auth_req OR combination of SM_AUTHREQ_ flags 5451edc4fc7SMatthias Ringwald */ 5461edc4fc7SMatthias Ringwald const hci_cmd_t sm_set_authentication_requirements_cmd = { 547ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_SM_SET_AUTHENTICATION_REQUIREMENTS, "1" 5481edc4fc7SMatthias Ringwald }; 5491edc4fc7SMatthias Ringwald 5501edc4fc7SMatthias Ringwald /** 5511edc4fc7SMatthias Ringwald * @brief Sets the available IO Capabilities 5521edc4fc7SMatthias Ringwald * @param io_capabilities 5531edc4fc7SMatthias Ringwald */ 5541edc4fc7SMatthias Ringwald const hci_cmd_t sm_set_io_capabilities_cmd = { 555ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_SM_SET_IO_CAPABILITIES, "1" 5561edc4fc7SMatthias Ringwald }; 5571edc4fc7SMatthias Ringwald 5581edc4fc7SMatthias Ringwald /** 5591edc4fc7SMatthias Ringwald * @brief Decline bonding triggered by event before 5601edc4fc7SMatthias Ringwald * @param con_handle 5611edc4fc7SMatthias Ringwald */ 5621edc4fc7SMatthias Ringwald const hci_cmd_t sm_bonding_decline_cmd = { 563ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_SM_BONDING_DECLINE, "H" 5641edc4fc7SMatthias Ringwald }; 5651edc4fc7SMatthias Ringwald 5661edc4fc7SMatthias Ringwald /** 5671edc4fc7SMatthias Ringwald * @brief Confirm Just Works bonding 5681edc4fc7SMatthias Ringwald * @param con_handle 5691edc4fc7SMatthias Ringwald */ 5701edc4fc7SMatthias Ringwald const hci_cmd_t sm_just_works_confirm_cmd = { 571ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_SM_JUST_WORKS_CONFIRM, "H" 5721edc4fc7SMatthias Ringwald }; 5731edc4fc7SMatthias Ringwald 5741edc4fc7SMatthias Ringwald /** 5751edc4fc7SMatthias Ringwald * @brief Confirm value from SM_EVENT_NUMERIC_COMPARISON_REQUEST for Numeric Comparison bonding 5761edc4fc7SMatthias Ringwald * @param con_handle 5771edc4fc7SMatthias Ringwald */ 5781edc4fc7SMatthias Ringwald const hci_cmd_t sm_numeric_comparison_confirm_cmd = { 579ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_SM_NUMERIC_COMPARISON_CONFIRM, "H" 5801edc4fc7SMatthias Ringwald }; 5811edc4fc7SMatthias Ringwald 5821edc4fc7SMatthias Ringwald /** 5831edc4fc7SMatthias Ringwald * @brief Reports passkey input by user 5841edc4fc7SMatthias Ringwald * @param con_handle 5851edc4fc7SMatthias Ringwald * @param passkey in [0..999999] 5861edc4fc7SMatthias Ringwald */ 5871edc4fc7SMatthias Ringwald const hci_cmd_t sm_passkey_input_cmd = { 588ea5cc3a8SMatthias Ringwald DAEMON_OPCODE_SM_PASSKEY_INPUT, "H4" 5891edc4fc7SMatthias Ringwald }; 590