112d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg/* 212d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * BlueZ - Bluetooth protocol stack for Linux 312d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * 412d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * Copyright (C) 2010 Nokia Corporation 512d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * Copyright (C) 2010 Marcel Holtmann <marcel@holtmann.org> 612d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * 712d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * 812d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * This program is free software; you can redistribute it and/or modify 912d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * it under the terms of the GNU General Public License as published by 1012d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * the Free Software Foundation; either version 2 of the License, or 1112d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * (at your option) any later version. 1212d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * 1312d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * This program is distributed in the hope that it will be useful, 1412d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * but WITHOUT ANY WARRANTY; without even the implied warranty of 1512d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1612d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * GNU General Public License for more details. 1712d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * 1812d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * You should have received a copy of the GNU General Public License 1912d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * along with this program; if not, write to the Free Software 2012d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 2112d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg * 2212d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg */ 2312d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg 24b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg#ifndef __packed 25b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg#define __packed __attribute__((packed)) 26b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg#endif 27b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg 28da4ffa720909af4e07d80963c1444b29be7a9927Szymon Janc#define MGMT_INDEX_NONE 0xFFFF 29da4ffa720909af4e07d80963c1444b29be7a9927Szymon Janc 30fb91c88916485512033b8437686a5f2405d19a92Johan Hedbergstruct mgmt_hdr { 3112d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg uint16_t opcode; 32da4ffa720909af4e07d80963c1444b29be7a9927Szymon Janc uint16_t index; 3312d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg uint16_t len; 3412d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg} __packed; 35da4ffa720909af4e07d80963c1444b29be7a9927Szymon Janc#define MGMT_HDR_SIZE 6 3612d02e7f2283d0b1511fc7be08579b3037f5c9a9Johan Hedberg 37fb91c88916485512033b8437686a5f2405d19a92Johan Hedberg#define MGMT_OP_READ_VERSION 0x0001 389a404a4e6bc03afcd78f02ef5cd77e50f77cd012Johan Hedbergstruct mgmt_rp_read_version { 39b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg uint8_t version; 40b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg uint16_t revision; 41b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg} __packed; 42b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg 43fb91c88916485512033b8437686a5f2405d19a92Johan Hedberg#define MGMT_OP_READ_FEATURES 0x0002 449a404a4e6bc03afcd78f02ef5cd77e50f77cd012Johan Hedbergstruct mgmt_rp_read_features { 4558e6c539e644ab0d85890a0369dcc0c3d06a99b1Johan Hedberg uint8_t features[8]; 4658e6c539e644ab0d85890a0369dcc0c3d06a99b1Johan Hedberg} __packed; 47c0882114c2f9008762f2b298dd511d349627b490Johan Hedberg 48fb91c88916485512033b8437686a5f2405d19a92Johan Hedberg#define MGMT_OP_READ_INDEX_LIST 0x0003 499a404a4e6bc03afcd78f02ef5cd77e50f77cd012Johan Hedbergstruct mgmt_rp_read_index_list { 50c0882114c2f9008762f2b298dd511d349627b490Johan Hedberg uint16_t num_controllers; 51c0882114c2f9008762f2b298dd511d349627b490Johan Hedberg uint16_t index[0]; 52c0882114c2f9008762f2b298dd511d349627b490Johan Hedberg} __packed; 53c0882114c2f9008762f2b298dd511d349627b490Johan Hedberg 54c76086fd596ac11a890cec157abcd4ce32b523a2Johan Hedberg/* Reserve one extra byte for names in management messages so that they 55c76086fd596ac11a890cec157abcd4ce32b523a2Johan Hedberg * are always guaranteed to be nul-terminated */ 56c76086fd596ac11a890cec157abcd4ce32b523a2Johan Hedberg#define MGMT_MAX_NAME_LENGTH (HCI_MAX_NAME_LENGTH + 1) 57c76086fd596ac11a890cec157abcd4ce32b523a2Johan Hedberg 58fb91c88916485512033b8437686a5f2405d19a92Johan Hedberg#define MGMT_OP_READ_INFO 0x0004 599a404a4e6bc03afcd78f02ef5cd77e50f77cd012Johan Hedbergstruct mgmt_rp_read_info { 6058e6c539e644ab0d85890a0369dcc0c3d06a99b1Johan Hedberg uint8_t type; 6124a34a8b1f8615ad79199efdb6fea479509464b4Johan Hedberg uint8_t powered; 6214655825c95fd065afc41bfc1c810987bfb1a2c6Johan Hedberg uint8_t connectable; 6324a34a8b1f8615ad79199efdb6fea479509464b4Johan Hedberg uint8_t discoverable; 6424a34a8b1f8615ad79199efdb6fea479509464b4Johan Hedberg uint8_t pairable; 6524a34a8b1f8615ad79199efdb6fea479509464b4Johan Hedberg uint8_t sec_mode; 66b67a8a42e6ea9c2d2b0877ac3832de75ec4e00e5Johan Hedberg bdaddr_t bdaddr; 6724a34a8b1f8615ad79199efdb6fea479509464b4Johan Hedberg uint8_t dev_class[3]; 6858e6c539e644ab0d85890a0369dcc0c3d06a99b1Johan Hedberg uint8_t features[8]; 698c442fd677490441b64b3509c1264460668d9367Johan Hedberg uint16_t manufacturer; 708c442fd677490441b64b3509c1264460668d9367Johan Hedberg uint8_t hci_ver; 718c442fd677490441b64b3509c1264460668d9367Johan Hedberg uint16_t hci_rev; 72c76086fd596ac11a890cec157abcd4ce32b523a2Johan Hedberg uint8_t name[MGMT_MAX_NAME_LENGTH]; 7358e6c539e644ab0d85890a0369dcc0c3d06a99b1Johan Hedberg} __packed; 7458e6c539e644ab0d85890a0369dcc0c3d06a99b1Johan Hedberg 75fb88bd2992dc0e3d90a9aabacaefcfcfc3f9aba9Johan Hedbergstruct mgmt_mode { 76fb88bd2992dc0e3d90a9aabacaefcfcfc3f9aba9Johan Hedberg uint8_t val; 7707481cab563a0db441075f7e786d442e0c576c32Johan Hedberg} __packed; 78fdd43acc2a2a151e380de5f02c291d804ec05419Johan Hedberg 79fb88bd2992dc0e3d90a9aabacaefcfcfc3f9aba9Johan Hedberg#define MGMT_OP_SET_POWERED 0x0005 80fb88bd2992dc0e3d90a9aabacaefcfcfc3f9aba9Johan Hedberg 81528432cc7aad7601c3d98157c9472e6a089232f8Johan Hedberg#define MGMT_OP_SET_DISCOVERABLE 0x0006 82528432cc7aad7601c3d98157c9472e6a089232f8Johan Hedberg 8314655825c95fd065afc41bfc1c810987bfb1a2c6Johan Hedberg#define MGMT_OP_SET_CONNECTABLE 0x0007 8414655825c95fd065afc41bfc1c810987bfb1a2c6Johan Hedberg 856964bd2dd54d5cce7ce2588b0dcd0a3530e6fba9Johan Hedberg#define MGMT_OP_SET_PAIRABLE 0x0008 866964bd2dd54d5cce7ce2588b0dcd0a3530e6fba9Johan Hedberg 87006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg#define MGMT_OP_ADD_UUID 0x0009 88006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedbergstruct mgmt_cp_add_uuid { 89a31b2bfb5f0880030844eaf27b8f95e04b107f9fJohan Hedberg uint8_t uuid[16]; 90006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg uint8_t svc_hint; 91a31b2bfb5f0880030844eaf27b8f95e04b107f9fJohan Hedberg} __packed; 92a31b2bfb5f0880030844eaf27b8f95e04b107f9fJohan Hedberg 93a31b2bfb5f0880030844eaf27b8f95e04b107f9fJohan Hedberg#define MGMT_OP_REMOVE_UUID 0x000A 94006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedbergstruct mgmt_cp_remove_uuid { 95006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg uint8_t uuid[16]; 96006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg} __packed; 97006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg 98006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg#define MGMT_OP_SET_DEV_CLASS 0x000B 99006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedbergstruct mgmt_cp_set_dev_class { 100006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg uint8_t major; 101006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg uint8_t minor; 102006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg} __packed; 103006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg 104006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg#define MGMT_OP_SET_SERVICE_CACHE 0x000C 105006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedbergstruct mgmt_cp_set_service_cache { 106006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg uint8_t enable; 107006301ab40fc71da92f593ddfb2dba70202bd061Johan Hedberg} __packed; 108a31b2bfb5f0880030844eaf27b8f95e04b107f9fJohan Hedberg 109b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedbergstruct mgmt_key_info { 110b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg bdaddr_t bdaddr; 111b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg uint8_t type; 112b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg uint8_t val[16]; 113b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg uint8_t pin_len; 114b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg} __packed; 115b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg 116b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg#define MGMT_OP_LOAD_KEYS 0x000D 117b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedbergstruct mgmt_cp_load_keys { 118b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg uint8_t debug_keys; 119b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg uint16_t key_count; 120b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg struct mgmt_key_info keys[0]; 121b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg} __packed; 122b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg 123b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg#define MGMT_OP_REMOVE_KEY 0x000E 124b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedbergstruct mgmt_cp_remove_key { 125b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg bdaddr_t bdaddr; 126b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg uint8_t disconnect; 127b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg} __packed; 128b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg 129cc8588d684373cfbca2282e6ec761c2194fb0aedJohan Hedberg#define MGMT_OP_DISCONNECT 0x000F 130cc8588d684373cfbca2282e6ec761c2194fb0aedJohan Hedbergstruct mgmt_cp_disconnect { 131cc8588d684373cfbca2282e6ec761c2194fb0aedJohan Hedberg bdaddr_t bdaddr; 132cc8588d684373cfbca2282e6ec761c2194fb0aedJohan Hedberg} __packed; 133cc8588d684373cfbca2282e6ec761c2194fb0aedJohan Hedbergstruct mgmt_rp_disconnect { 134cc8588d684373cfbca2282e6ec761c2194fb0aedJohan Hedberg bdaddr_t bdaddr; 135cc8588d684373cfbca2282e6ec761c2194fb0aedJohan Hedberg} __packed; 136cc8588d684373cfbca2282e6ec761c2194fb0aedJohan Hedberg 1371e862b561c65fb0d6096cd93d2c9cfe11f0356bbJohan Hedberg#define MGMT_OP_GET_CONNECTIONS 0x0010 1381e862b561c65fb0d6096cd93d2c9cfe11f0356bbJohan Hedbergstruct mgmt_rp_get_connections { 1391e862b561c65fb0d6096cd93d2c9cfe11f0356bbJohan Hedberg uint16_t conn_count; 1401e862b561c65fb0d6096cd93d2c9cfe11f0356bbJohan Hedberg bdaddr_t conn[0]; 1411e862b561c65fb0d6096cd93d2c9cfe11f0356bbJohan Hedberg} __packed; 1421e862b561c65fb0d6096cd93d2c9cfe11f0356bbJohan Hedberg 1438b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg#define MGMT_OP_PIN_CODE_REPLY 0x0011 1448b77225e7b850a0524703be5439023cfff23b16cJohan Hedbergstruct mgmt_cp_pin_code_reply { 1458b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg bdaddr_t bdaddr; 1468b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg uint8_t pin_len; 1478b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg uint8_t pin_code[16]; 1488b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg} __packed; 1498b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg 1508b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg#define MGMT_OP_PIN_CODE_NEG_REPLY 0x0012 1518b77225e7b850a0524703be5439023cfff23b16cJohan Hedbergstruct mgmt_cp_pin_code_neg_reply { 1528b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg bdaddr_t bdaddr; 1538b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg} __packed; 1548b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg 1559634f5c410e761219037129f71c591459a854391Johan Hedberg#define MGMT_OP_SET_IO_CAPABILITY 0x0013 1569634f5c410e761219037129f71c591459a854391Johan Hedbergstruct mgmt_cp_set_io_capability { 1579634f5c410e761219037129f71c591459a854391Johan Hedberg uint8_t io_capability; 1589634f5c410e761219037129f71c591459a854391Johan Hedberg} __packed; 1599634f5c410e761219037129f71c591459a854391Johan Hedberg 1601c93c6fa88016166faf1a3d4b0d72531393834f9Johan Hedberg#define MGMT_OP_PAIR_DEVICE 0x0014 1611c93c6fa88016166faf1a3d4b0d72531393834f9Johan Hedbergstruct mgmt_cp_pair_device { 1621c93c6fa88016166faf1a3d4b0d72531393834f9Johan Hedberg bdaddr_t bdaddr; 1631c93c6fa88016166faf1a3d4b0d72531393834f9Johan Hedberg uint8_t io_cap; 1641c93c6fa88016166faf1a3d4b0d72531393834f9Johan Hedberg} __packed; 1651c93c6fa88016166faf1a3d4b0d72531393834f9Johan Hedbergstruct mgmt_rp_pair_device { 1661c93c6fa88016166faf1a3d4b0d72531393834f9Johan Hedberg bdaddr_t bdaddr; 1671c93c6fa88016166faf1a3d4b0d72531393834f9Johan Hedberg uint8_t status; 1681c93c6fa88016166faf1a3d4b0d72531393834f9Johan Hedberg} __packed; 1691c93c6fa88016166faf1a3d4b0d72531393834f9Johan Hedberg 17050102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg#define MGMT_OP_USER_CONFIRM_REPLY 0x0015 17150102905d99a29d47377103c752f0dbe0ac71d03Johan Hedbergstruct mgmt_cp_user_confirm_reply { 17250102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg bdaddr_t bdaddr; 17350102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg} __packed; 17450102905d99a29d47377103c752f0dbe0ac71d03Johan Hedbergstruct mgmt_rp_user_confirm_reply { 17550102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg bdaddr_t bdaddr; 17650102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg uint8_t status; 17750102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg} __packed; 17850102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg 17950102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg#define MGMT_OP_USER_CONFIRM_NEG_REPLY 0x0016 18050102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg 1813011a312a70317aafad3def09cc0754dc550f229Johan Hedberg#define MGMT_OP_SET_LOCAL_NAME 0x0017 1823011a312a70317aafad3def09cc0754dc550f229Johan Hedbergstruct mgmt_cp_set_local_name { 183c76086fd596ac11a890cec157abcd4ce32b523a2Johan Hedberg uint8_t name[MGMT_MAX_NAME_LENGTH]; 1843011a312a70317aafad3def09cc0754dc550f229Johan Hedberg} __packed; 1853011a312a70317aafad3def09cc0754dc550f229Johan Hedberg 186ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc#define MGMT_OP_READ_LOCAL_OOB_DATA 0x0018 187ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Jancstruct mgmt_rp_read_local_oob_data { 188ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc uint8_t hash[16]; 189ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc uint8_t randomizer[16]; 190ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc} __packed; 191ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc 192ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc#define MGMT_OP_ADD_REMOTE_OOB_DATA 0x0019 193ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Jancstruct mgmt_cp_add_remote_oob_data { 194ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc bdaddr_t bdaddr; 195ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc uint8_t hash[16]; 196ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc uint8_t randomizer[16]; 197ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc} __packed; 198ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc 199ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc#define MGMT_OP_REMOVE_REMOTE_OOB_DATA 0x001A 200ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Jancstruct mgmt_cp_remove_remote_oob_data { 201ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc bdaddr_t bdaddr; 202ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc} __packed; 203ca8ea935e97f51a5754163b57770631bd1731c3aSzymon Janc 204421efd407e93464d86e6c77ebf3e237001a30bfeJohan Hedberg#define MGMT_OP_START_DISCOVERY 0x001B 205421efd407e93464d86e6c77ebf3e237001a30bfeJohan Hedberg 206421efd407e93464d86e6c77ebf3e237001a30bfeJohan Hedberg#define MGMT_OP_STOP_DISCOVERY 0x001C 207421efd407e93464d86e6c77ebf3e237001a30bfeJohan Hedberg 208fb91c88916485512033b8437686a5f2405d19a92Johan Hedberg#define MGMT_EV_CMD_COMPLETE 0x0001 2099a404a4e6bc03afcd78f02ef5cd77e50f77cd012Johan Hedbergstruct mgmt_ev_cmd_complete { 210b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg uint16_t opcode; 211b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg uint8_t data[0]; 212b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg} __packed; 213b02a68367321b323db81823f43d7332e35ce96faJohan Hedberg 214fb91c88916485512033b8437686a5f2405d19a92Johan Hedberg#define MGMT_EV_CMD_STATUS 0x0002 2159a404a4e6bc03afcd78f02ef5cd77e50f77cd012Johan Hedbergstruct mgmt_ev_cmd_status { 216ff489b4fe36d7de4f438df38cb446c7b3477ebdeJohan Hedberg uint8_t status; 217ff489b4fe36d7de4f438df38cb446c7b3477ebdeJohan Hedberg uint16_t opcode; 218ff489b4fe36d7de4f438df38cb446c7b3477ebdeJohan Hedberg} __packed; 219ff489b4fe36d7de4f438df38cb446c7b3477ebdeJohan Hedberg 220fb91c88916485512033b8437686a5f2405d19a92Johan Hedberg#define MGMT_EV_CONTROLLER_ERROR 0x0003 2219a404a4e6bc03afcd78f02ef5cd77e50f77cd012Johan Hedbergstruct mgmt_ev_controller_error { 222ff489b4fe36d7de4f438df38cb446c7b3477ebdeJohan Hedberg uint8_t error_code; 223ff489b4fe36d7de4f438df38cb446c7b3477ebdeJohan Hedberg} __packed; 22449bedc0b8c58cac7a8198a7247fb6dfb37e29c42Johan Hedberg 22549bedc0b8c58cac7a8198a7247fb6dfb37e29c42Johan Hedberg#define MGMT_EV_INDEX_ADDED 0x0004 22649bedc0b8c58cac7a8198a7247fb6dfb37e29c42Johan Hedberg 22749bedc0b8c58cac7a8198a7247fb6dfb37e29c42Johan Hedberg#define MGMT_EV_INDEX_REMOVED 0x0005 2288582b8e4cdf85425a40696c2839c44417c798687Johan Hedberg 2298582b8e4cdf85425a40696c2839c44417c798687Johan Hedberg#define MGMT_EV_POWERED 0x0006 230528432cc7aad7601c3d98157c9472e6a089232f8Johan Hedberg 231528432cc7aad7601c3d98157c9472e6a089232f8Johan Hedberg#define MGMT_EV_DISCOVERABLE 0x0007 23214655825c95fd065afc41bfc1c810987bfb1a2c6Johan Hedberg 23314655825c95fd065afc41bfc1c810987bfb1a2c6Johan Hedberg#define MGMT_EV_CONNECTABLE 0x0008 2346964bd2dd54d5cce7ce2588b0dcd0a3530e6fba9Johan Hedberg 2356964bd2dd54d5cce7ce2588b0dcd0a3530e6fba9Johan Hedberg#define MGMT_EV_PAIRABLE 0x0009 236b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg 237b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg#define MGMT_EV_NEW_KEY 0x000A 238b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedbergstruct mgmt_ev_new_key { 2393caf142f55ddda127621779335d574e89788576dJohan Hedberg uint8_t store_hint; 240b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg struct mgmt_key_info key; 241b115f344441c31c642f360fa5ce7d2fc73c1cfb2Johan Hedberg} __packed; 24248908574c4853023dfe402a120b58a7a7d1f56deJohan Hedberg 24348908574c4853023dfe402a120b58a7a7d1f56deJohan Hedberg#define MGMT_EV_DEVICE_CONNECTED 0x000B 24448908574c4853023dfe402a120b58a7a7d1f56deJohan Hedbergstruct mgmt_ev_device_connected { 24548908574c4853023dfe402a120b58a7a7d1f56deJohan Hedberg bdaddr_t bdaddr; 24648908574c4853023dfe402a120b58a7a7d1f56deJohan Hedberg} __packed; 24748908574c4853023dfe402a120b58a7a7d1f56deJohan Hedberg 24848908574c4853023dfe402a120b58a7a7d1f56deJohan Hedberg#define MGMT_EV_DEVICE_DISCONNECTED 0x000C 24948908574c4853023dfe402a120b58a7a7d1f56deJohan Hedbergstruct mgmt_ev_device_disconnected { 25048908574c4853023dfe402a120b58a7a7d1f56deJohan Hedberg bdaddr_t bdaddr; 25148908574c4853023dfe402a120b58a7a7d1f56deJohan Hedberg} __packed; 252d6fda82e31fa3b6fbf74f695201ac0da3aff2757Johan Hedberg 253d6fda82e31fa3b6fbf74f695201ac0da3aff2757Johan Hedberg#define MGMT_EV_CONNECT_FAILED 0x000D 254d6fda82e31fa3b6fbf74f695201ac0da3aff2757Johan Hedbergstruct mgmt_ev_connect_failed { 255d6fda82e31fa3b6fbf74f695201ac0da3aff2757Johan Hedberg bdaddr_t bdaddr; 256d6fda82e31fa3b6fbf74f695201ac0da3aff2757Johan Hedberg uint8_t status; 257d6fda82e31fa3b6fbf74f695201ac0da3aff2757Johan Hedberg} __packed; 2588b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg 2598b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg#define MGMT_EV_PIN_CODE_REQUEST 0x000E 2608b77225e7b850a0524703be5439023cfff23b16cJohan Hedbergstruct mgmt_ev_pin_code_request { 2618b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg bdaddr_t bdaddr; 262e6c56d4e712a70c40139e2e9e3b91fde858a482cWaldemar Rymarkiewicz uint8_t secure; 2638b77225e7b850a0524703be5439023cfff23b16cJohan Hedberg} __packed; 26450102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg 26550102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg#define MGMT_EV_USER_CONFIRM_REQUEST 0x000F 26650102905d99a29d47377103c752f0dbe0ac71d03Johan Hedbergstruct mgmt_ev_user_confirm_request { 26750102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg bdaddr_t bdaddr; 2682ad1015a1660a0e87e04adb7b7f5ef0d62e8fc23Johan Hedberg uint8_t confirm_hint; 26950102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg uint32_t value; 27050102905d99a29d47377103c752f0dbe0ac71d03Johan Hedberg} __packed; 271a20bb21f47db02155498d71c0bdd2095a56bdc2aJohan Hedberg 272a20bb21f47db02155498d71c0bdd2095a56bdc2aJohan Hedberg#define MGMT_EV_AUTH_FAILED 0x0010 273a20bb21f47db02155498d71c0bdd2095a56bdc2aJohan Hedbergstruct mgmt_ev_auth_failed { 274a20bb21f47db02155498d71c0bdd2095a56bdc2aJohan Hedberg bdaddr_t bdaddr; 275a20bb21f47db02155498d71c0bdd2095a56bdc2aJohan Hedberg uint8_t status; 276a20bb21f47db02155498d71c0bdd2095a56bdc2aJohan Hedberg} __packed; 2773011a312a70317aafad3def09cc0754dc550f229Johan Hedberg 2783011a312a70317aafad3def09cc0754dc550f229Johan Hedberg#define MGMT_EV_LOCAL_NAME_CHANGED 0x0011 2793011a312a70317aafad3def09cc0754dc550f229Johan Hedbergstruct mgmt_ev_local_name_changed { 280c76086fd596ac11a890cec157abcd4ce32b523a2Johan Hedberg uint8_t name[MGMT_MAX_NAME_LENGTH]; 2813011a312a70317aafad3def09cc0754dc550f229Johan Hedberg} __packed; 282cb6dd1222d84e3dd7d9c60afa9e7b5721ed03c02Johan Hedberg 283cb6dd1222d84e3dd7d9c60afa9e7b5721ed03c02Johan Hedberg#define MGMT_EV_DEVICE_FOUND 0x0012 284cb6dd1222d84e3dd7d9c60afa9e7b5721ed03c02Johan Hedbergstruct mgmt_ev_device_found { 285cb6dd1222d84e3dd7d9c60afa9e7b5721ed03c02Johan Hedberg bdaddr_t bdaddr; 286cb6dd1222d84e3dd7d9c60afa9e7b5721ed03c02Johan Hedberg uint8_t dev_class[3]; 287cb6dd1222d84e3dd7d9c60afa9e7b5721ed03c02Johan Hedberg int8_t rssi; 288cb6dd1222d84e3dd7d9c60afa9e7b5721ed03c02Johan Hedberg uint8_t eir[HCI_MAX_EIR_LENGTH]; 289cb6dd1222d84e3dd7d9c60afa9e7b5721ed03c02Johan Hedberg} __packed; 29056fe0673840b9f599bd0127b77c45124c37c5890Johan Hedberg 29156fe0673840b9f599bd0127b77c45124c37c5890Johan Hedberg#define MGMT_EV_REMOTE_NAME 0x0013 29256fe0673840b9f599bd0127b77c45124c37c5890Johan Hedbergstruct mgmt_ev_remote_name { 29356fe0673840b9f599bd0127b77c45124c37c5890Johan Hedberg bdaddr_t bdaddr; 29456fe0673840b9f599bd0127b77c45124c37c5890Johan Hedberg uint8_t name[MGMT_MAX_NAME_LENGTH]; 29556fe0673840b9f599bd0127b77c45124c37c5890Johan Hedberg} __packed; 2966f7add54356eb162223d1a096dd1945bf32366f3Johan Hedberg 2976f7add54356eb162223d1a096dd1945bf32366f3Johan Hedberg#define MGMT_EV_DISCOVERING 0x0014 298