Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    2)    BlueZ - Bluetooth protocol stack for Linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    3)    Copyright (C) 2000-2001 Qualcomm Incorporated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    5)    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    7)    This program is free software; you can redistribute it and/or modify
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    8)    it under the terms of the GNU General Public License version 2 as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    9)    published by the Free Software Foundation;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   11)    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   12)    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   13)    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   14)    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   15)    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   16)    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   17)    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   18)    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   20)    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   21)    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   22)    SOFTWARE IS DISCLAIMED.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   23) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   25) #ifndef __HCI_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   26) #define __HCI_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   28) #define HCI_MAX_ACL_SIZE	1024
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   29) #define HCI_MAX_SCO_SIZE	255
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   30) #define HCI_MAX_ISO_SIZE	251
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   31) #define HCI_MAX_EVENT_SIZE	260
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   32) #define HCI_MAX_FRAME_SIZE	(HCI_MAX_ACL_SIZE + 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   34) #define HCI_LINK_KEY_SIZE	16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   35) #define HCI_AMP_LINK_KEY_SIZE	(2 * HCI_LINK_KEY_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   37) #define HCI_MAX_AMP_ASSOC_SIZE	672
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   39) #define HCI_MAX_CSB_DATA_SIZE	252
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   41) /* HCI dev events */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   42) #define HCI_DEV_REG			1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   43) #define HCI_DEV_UNREG			2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   44) #define HCI_DEV_UP			3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   45) #define HCI_DEV_DOWN			4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   46) #define HCI_DEV_SUSPEND			5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   47) #define HCI_DEV_RESUME			6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   48) #define HCI_DEV_OPEN			7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   49) #define HCI_DEV_CLOSE			8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   50) #define HCI_DEV_SETUP			9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   52) /* HCI notify events */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   53) #define HCI_NOTIFY_CONN_ADD		1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   54) #define HCI_NOTIFY_CONN_DEL		2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   55) #define HCI_NOTIFY_VOICE_SETTING	3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   56) #define HCI_NOTIFY_ENABLE_SCO_CVSD	4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   57) #define HCI_NOTIFY_ENABLE_SCO_TRANSP	5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   58) #define HCI_NOTIFY_DISABLE_SCO		6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   60) /* HCI bus types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   61) #define HCI_VIRTUAL	0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   62) #define HCI_USB		1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   63) #define HCI_PCCARD	2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   64) #define HCI_UART	3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   65) #define HCI_RS232	4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   66) #define HCI_PCI		5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   67) #define HCI_SDIO	6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   68) #define HCI_SPI		7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   69) #define HCI_I2C		8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   70) #define HCI_SMD		9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   71) #define HCI_VIRTIO	10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   73) /* HCI controller types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   74) #define HCI_PRIMARY	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   75) #define HCI_AMP		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   77) /* First BR/EDR Controller shall have ID = 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   78) #define AMP_ID_BREDR	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   79) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   80) /* AMP controller types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   81) #define AMP_TYPE_BREDR	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   82) #define AMP_TYPE_80211	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   83) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   84) /* AMP controller status */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   85) #define AMP_STATUS_POWERED_DOWN			0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   86) #define AMP_STATUS_BLUETOOTH_ONLY		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   87) #define AMP_STATUS_NO_CAPACITY			0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   88) #define AMP_STATUS_LOW_CAPACITY			0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   89) #define AMP_STATUS_MEDIUM_CAPACITY		0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   90) #define AMP_STATUS_HIGH_CAPACITY		0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   91) #define AMP_STATUS_FULL_CAPACITY		0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   92) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   93) /* HCI device quirks */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   94) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   95) 	/* When this quirk is set, the HCI Reset command is send when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   96) 	 * closing the transport instead of when opening it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   97) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   98) 	 * This quirk must be set before hci_register_dev is called.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   99) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  100) 	HCI_QUIRK_RESET_ON_CLOSE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  102) 	/* When this quirk is set, the device is turned into a raw-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  103) 	 * device and it will stay in unconfigured state.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  104) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  105) 	 * This quirk must be set before hci_register_dev is called.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  106) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  107) 	HCI_QUIRK_RAW_DEVICE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  109) 	/* When this quirk is set, the buffer sizes reported by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  110) 	 * HCI Read Buffer Size command are corrected if invalid.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  111) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  112) 	 * This quirk must be set before hci_register_dev is called.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  113) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  114) 	HCI_QUIRK_FIXUP_BUFFER_SIZE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  116) 	/* When this quirk is set, then a controller that does not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  117) 	 * indicate support for Inquiry Result with RSSI is assumed to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  118) 	 * support it anyway. Some early Bluetooth 1.2 controllers had
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  119) 	 * wrongly configured local features that will require forcing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  120) 	 * them to enable this mode. Getting RSSI information with the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  121) 	 * inquiry responses is preferred since it allows for a better
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  122) 	 * user experience.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  123) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  124) 	 * This quirk must be set before hci_register_dev is called.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  125) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  126) 	HCI_QUIRK_FIXUP_INQUIRY_MODE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  127) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  128) 	/* When this quirk is set, then the HCI Read Local Supported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  129) 	 * Commands command is not supported. In general Bluetooth 1.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  130) 	 * and later controllers should support this command. However
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  131) 	 * some controllers indicate Bluetooth 1.2 support, but do
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  132) 	 * not support this command.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  133) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  134) 	 * This quirk must be set before hci_register_dev is called.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  135) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  136) 	HCI_QUIRK_BROKEN_LOCAL_COMMANDS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  137) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  138) 	/* When this quirk is set, then no stored link key handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  139) 	 * is performed. This is mainly due to the fact that the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  140) 	 * HCI Delete Stored Link Key command is advertised, but
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  141) 	 * not supported.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  142) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  143) 	 * This quirk must be set before hci_register_dev is called.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  144) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  145) 	HCI_QUIRK_BROKEN_STORED_LINK_KEY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  146) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  147) 	/* When this quirk is set, an external configuration step
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  148) 	 * is required and will be indicated with the controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  149) 	 * configuration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  150) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  151) 	 * This quirk can be set before hci_register_dev is called or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  152) 	 * during the hdev->setup vendor callback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  153) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  154) 	HCI_QUIRK_EXTERNAL_CONFIG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  155) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  156) 	/* When this quirk is set, the public Bluetooth address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  157) 	 * initially reported by HCI Read BD Address command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  158) 	 * is considered invalid. Controller configuration is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  159) 	 * required before this device can be used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  160) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  161) 	 * This quirk can be set before hci_register_dev is called or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  162) 	 * during the hdev->setup vendor callback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  163) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  164) 	HCI_QUIRK_INVALID_BDADDR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  165) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  166) 	/* When this quirk is set, the public Bluetooth address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  167) 	 * initially reported by HCI Read BD Address command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  168) 	 * is considered invalid. The public BD Address can be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  169) 	 * specified in the fwnode property 'local-bd-address'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  170) 	 * If this property does not exist or is invalid controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  171) 	 * configuration is required before this device can be used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  172) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  173) 	 * This quirk can be set before hci_register_dev is called or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  174) 	 * during the hdev->setup vendor callback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  175) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  176) 	HCI_QUIRK_USE_BDADDR_PROPERTY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  177) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  178) 	/* When this quirk is set, the duplicate filtering during
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  179) 	 * scanning is based on Bluetooth devices addresses. To allow
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  180) 	 * RSSI based updates, restart scanning if needed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  181) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  182) 	 * This quirk can be set before hci_register_dev is called or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  183) 	 * during the hdev->setup vendor callback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  184) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  185) 	HCI_QUIRK_STRICT_DUPLICATE_FILTER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  187) 	/* When this quirk is set, LE scan and BR/EDR inquiry is done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  188) 	 * simultaneously, otherwise it's interleaved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  189) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  190) 	 * This quirk can be set before hci_register_dev is called or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  191) 	 * during the hdev->setup vendor callback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  192) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  193) 	HCI_QUIRK_SIMULTANEOUS_DISCOVERY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  194) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  195) 	/* When this quirk is set, the enabling of diagnostic mode is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  196) 	 * not persistent over HCI Reset. Every time the controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  197) 	 * is brought up it needs to be reprogrammed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  198) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  199) 	 * This quirk can be set before hci_register_dev is called or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  200) 	 * during the hdev->setup vendor callback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  201) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  202) 	HCI_QUIRK_NON_PERSISTENT_DIAG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  203) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  204) 	/* When this quirk is set, setup() would be run after every
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  205) 	 * open() and not just after the first open().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  206) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  207) 	 * This quirk can be set before hci_register_dev is called or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  208) 	 * during the hdev->setup vendor callback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  209) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  210) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  211) 	HCI_QUIRK_NON_PERSISTENT_SETUP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  212) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  213) 	/* When this quirk is set, wide band speech is supported by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  214) 	 * the driver since no reliable mechanism exist to report
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  215) 	 * this from the hardware, a driver flag is use to convey
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  216) 	 * this support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  217) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  218) 	 * This quirk must be set before hci_register_dev is called.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  219) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  220) 	HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  221) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  222) 	/* When this quirk is set, the controller has validated that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  223) 	 * LE states reported through the HCI_LE_READ_SUPPORTED_STATES are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  224) 	 * valid.  This mechanism is necessary as many controllers have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  225) 	 * been seen has having trouble initiating a connectable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  226) 	 * advertisement despite the state combination being reported as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  227) 	 * supported.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  228) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  229) 	HCI_QUIRK_VALID_LE_STATES,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  230) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  231) 	/* When this quirk is set, then erroneous data reporting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  232) 	 * is ignored. This is mainly due to the fact that the HCI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  233) 	 * Read Default Erroneous Data Reporting command is advertised,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  234) 	 * but not supported; these controllers often reply with unknown
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  235) 	 * command and tend to lock up randomly. Needing a hard reset.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  236) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  237) 	 * This quirk can be set before hci_register_dev is called or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  238) 	 * during the hdev->setup vendor callback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  239) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  240) 	HCI_QUIRK_BROKEN_ERR_DATA_REPORTING,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  241) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  242) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  243) 	 * When this quirk is set, then the hci_suspend_notifier is not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  244) 	 * registered. This is intended for devices which drop completely
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  245) 	 * from the bus on system-suspend and which will show up as a new
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  246) 	 * HCI after resume.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  247) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  248) 	HCI_QUIRK_NO_SUSPEND_NOTIFIER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  249) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  250) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  251) /* HCI device flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  252) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  253) 	HCI_UP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  254) 	HCI_INIT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  255) 	HCI_RUNNING,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  256) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  257) 	HCI_PSCAN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  258) 	HCI_ISCAN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  259) 	HCI_AUTH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  260) 	HCI_ENCRYPT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  261) 	HCI_INQUIRY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  262) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  263) 	HCI_RAW,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  264) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  265) 	HCI_RESET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  266) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  267) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  268) /* HCI socket flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  269) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  270) 	HCI_SOCK_TRUSTED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  271) 	HCI_MGMT_INDEX_EVENTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  272) 	HCI_MGMT_UNCONF_INDEX_EVENTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  273) 	HCI_MGMT_EXT_INDEX_EVENTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  274) 	HCI_MGMT_EXT_INFO_EVENTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  275) 	HCI_MGMT_OPTION_EVENTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  276) 	HCI_MGMT_SETTING_EVENTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  277) 	HCI_MGMT_DEV_CLASS_EVENTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  278) 	HCI_MGMT_LOCAL_NAME_EVENTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  279) 	HCI_MGMT_OOB_DATA_EVENTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  280) 	HCI_MGMT_EXP_FEATURE_EVENTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  281) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  282) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  283) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  284)  * BR/EDR and/or LE controller flags: the flags defined here should represent
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  285)  * states from the controller.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  286)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  287) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  288) 	HCI_SETUP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  289) 	HCI_CONFIG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  290) 	HCI_AUTO_OFF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  291) 	HCI_RFKILLED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  292) 	HCI_MGMT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  293) 	HCI_BONDABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  294) 	HCI_SERVICE_CACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  295) 	HCI_KEEP_DEBUG_KEYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  296) 	HCI_USE_DEBUG_KEYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  297) 	HCI_UNREGISTER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  298) 	HCI_UNCONFIGURED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  299) 	HCI_USER_CHANNEL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  300) 	HCI_EXT_CONFIGURED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  301) 	HCI_LE_ADV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  302) 	HCI_LE_SCAN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  303) 	HCI_SSP_ENABLED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  304) 	HCI_SC_ENABLED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  305) 	HCI_SC_ONLY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  306) 	HCI_PRIVACY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  307) 	HCI_LIMITED_PRIVACY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  308) 	HCI_RPA_EXPIRED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  309) 	HCI_RPA_RESOLVING,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  310) 	HCI_HS_ENABLED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  311) 	HCI_LE_ENABLED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  312) 	HCI_ADVERTISING,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  313) 	HCI_ADVERTISING_CONNECTABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  314) 	HCI_CONNECTABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  315) 	HCI_DISCOVERABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  316) 	HCI_LIMITED_DISCOVERABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  317) 	HCI_LINK_SECURITY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  318) 	HCI_PERIODIC_INQ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  319) 	HCI_FAST_CONNECTABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  320) 	HCI_BREDR_ENABLED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  321) 	HCI_LE_SCAN_INTERRUPTED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  322) 	HCI_WIDEBAND_SPEECH_ENABLED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  323) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  324) 	HCI_DUT_MODE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  325) 	HCI_VENDOR_DIAG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  326) 	HCI_FORCE_BREDR_SMP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  327) 	HCI_FORCE_STATIC_ADDR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  328) 	HCI_LL_RPA_RESOLUTION,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  329) 	HCI_ENABLE_LL_PRIVACY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  330) 	HCI_CMD_PENDING,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  331) 	HCI_FORCE_NO_MITM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  332) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  333) 	__HCI_NUM_FLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  334) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  335) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  336) /* HCI timeouts */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  337) #define HCI_DISCONN_TIMEOUT	msecs_to_jiffies(2000)	/* 2 seconds */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  338) #define HCI_PAIRING_TIMEOUT	msecs_to_jiffies(60000)	/* 60 seconds */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  339) #define HCI_INIT_TIMEOUT	msecs_to_jiffies(10000)	/* 10 seconds */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  340) #define HCI_CMD_TIMEOUT		msecs_to_jiffies(2000)	/* 2 seconds */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  341) #define HCI_ACL_TX_TIMEOUT	msecs_to_jiffies(45000)	/* 45 seconds */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  342) #define HCI_AUTO_OFF_TIMEOUT	msecs_to_jiffies(2000)	/* 2 seconds */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  343) #define HCI_POWER_OFF_TIMEOUT	msecs_to_jiffies(5000)	/* 5 seconds */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  344) #define HCI_LE_CONN_TIMEOUT	msecs_to_jiffies(20000)	/* 20 seconds */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  345) #define HCI_LE_AUTOCONN_TIMEOUT	msecs_to_jiffies(4000)	/* 4 seconds */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  346) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  347) /* HCI data types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  348) #define HCI_COMMAND_PKT		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  349) #define HCI_ACLDATA_PKT		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  350) #define HCI_SCODATA_PKT		0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  351) #define HCI_EVENT_PKT		0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  352) #define HCI_ISODATA_PKT		0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  353) #define HCI_DIAG_PKT		0xf0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  354) #define HCI_VENDOR_PKT		0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  355) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  356) /* HCI packet types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  357) #define HCI_DM1		0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  358) #define HCI_DM3		0x0400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  359) #define HCI_DM5		0x4000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  360) #define HCI_DH1		0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  361) #define HCI_DH3		0x0800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  362) #define HCI_DH5		0x8000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  363) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  364) /* HCI packet types inverted masks */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  365) #define HCI_2DH1	0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  366) #define HCI_3DH1	0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  367) #define HCI_2DH3	0x0100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  368) #define HCI_3DH3	0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  369) #define HCI_2DH5	0x1000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  370) #define HCI_3DH5	0x2000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  371) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  372) #define HCI_HV1		0x0020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  373) #define HCI_HV2		0x0040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  374) #define HCI_HV3		0x0080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  375) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  376) #define SCO_PTYPE_MASK	(HCI_HV1 | HCI_HV2 | HCI_HV3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  377) #define ACL_PTYPE_MASK	(~SCO_PTYPE_MASK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  378) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  379) /* eSCO packet types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  380) #define ESCO_HV1	0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  381) #define ESCO_HV2	0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  382) #define ESCO_HV3	0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  383) #define ESCO_EV3	0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  384) #define ESCO_EV4	0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  385) #define ESCO_EV5	0x0020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  386) #define ESCO_2EV3	0x0040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  387) #define ESCO_3EV3	0x0080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  388) #define ESCO_2EV5	0x0100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  389) #define ESCO_3EV5	0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  390) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  391) #define SCO_ESCO_MASK  (ESCO_HV1 | ESCO_HV2 | ESCO_HV3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  392) #define EDR_ESCO_MASK  (ESCO_2EV3 | ESCO_3EV3 | ESCO_2EV5 | ESCO_3EV5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  393) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  394) /* ACL flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  395) #define ACL_START_NO_FLUSH	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  396) #define ACL_CONT		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  397) #define ACL_START		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  398) #define ACL_COMPLETE		0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  399) #define ACL_ACTIVE_BCAST	0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  400) #define ACL_PICO_BCAST		0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  401) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  402) /* ISO PB flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  403) #define ISO_START		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  404) #define ISO_CONT		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  405) #define ISO_SINGLE		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  406) #define ISO_END			0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  407) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  408) /* ISO TS flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  409) #define ISO_TS			0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  410) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  411) /* Baseband links */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  412) #define SCO_LINK	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  413) #define ACL_LINK	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  414) #define ESCO_LINK	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  415) /* Low Energy links do not have defined link type. Use invented one */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  416) #define LE_LINK		0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  417) #define AMP_LINK	0x81
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  418) #define ISO_LINK	0x82
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  419) #define INVALID_LINK	0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  420) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  421) /* LMP features */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  422) #define LMP_3SLOT	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  423) #define LMP_5SLOT	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  424) #define LMP_ENCRYPT	0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  425) #define LMP_SOFFSET	0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  426) #define LMP_TACCURACY	0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  427) #define LMP_RSWITCH	0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  428) #define LMP_HOLD	0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  429) #define LMP_SNIFF	0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  430) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  431) #define LMP_PARK	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  432) #define LMP_RSSI	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  433) #define LMP_QUALITY	0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  434) #define LMP_SCO		0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  435) #define LMP_HV2		0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  436) #define LMP_HV3		0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  437) #define LMP_ULAW	0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  438) #define LMP_ALAW	0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  439) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  440) #define LMP_CVSD	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  441) #define LMP_PSCHEME	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  442) #define LMP_PCONTROL	0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  443) #define LMP_TRANSPARENT	0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  444) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  445) #define LMP_EDR_2M		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  446) #define LMP_EDR_3M		0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  447) #define LMP_RSSI_INQ	0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  448) #define LMP_ESCO	0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  449) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  450) #define LMP_EV4		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  451) #define LMP_EV5		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  452) #define LMP_NO_BREDR	0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  453) #define LMP_LE		0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  454) #define LMP_EDR_3SLOT	0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  455) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  456) #define LMP_EDR_5SLOT	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  457) #define LMP_SNIFF_SUBR	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  458) #define LMP_PAUSE_ENC	0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  459) #define LMP_EDR_ESCO_2M	0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  460) #define LMP_EDR_ESCO_3M	0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  461) #define LMP_EDR_3S_ESCO	0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  462) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  463) #define LMP_EXT_INQ	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  464) #define LMP_SIMUL_LE_BR	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  465) #define LMP_SIMPLE_PAIR	0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  466) #define LMP_NO_FLUSH	0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  467) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  468) #define LMP_LSTO	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  469) #define LMP_INQ_TX_PWR	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  470) #define LMP_EXTFEATURES	0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  471) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  472) /* Extended LMP features */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  473) #define LMP_CSB_MASTER	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  474) #define LMP_CSB_SLAVE	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  475) #define LMP_SYNC_TRAIN	0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  476) #define LMP_SYNC_SCAN	0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  477) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  478) #define LMP_SC		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  479) #define LMP_PING	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  480) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  481) /* Host features */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  482) #define LMP_HOST_SSP		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  483) #define LMP_HOST_LE		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  484) #define LMP_HOST_LE_BREDR	0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  485) #define LMP_HOST_SC		0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  486) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  487) /* LE features */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  488) #define HCI_LE_ENCRYPTION		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  489) #define HCI_LE_CONN_PARAM_REQ_PROC	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  490) #define HCI_LE_SLAVE_FEATURES		0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  491) #define HCI_LE_PING			0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  492) #define HCI_LE_DATA_LEN_EXT		0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  493) #define HCI_LE_LL_PRIVACY		0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  494) #define HCI_LE_EXT_SCAN_POLICY		0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  495) #define HCI_LE_PHY_2M			0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  496) #define HCI_LE_PHY_CODED		0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  497) #define HCI_LE_EXT_ADV			0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  498) #define HCI_LE_CHAN_SEL_ALG2		0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  499) #define HCI_LE_CIS_MASTER		0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  500) #define HCI_LE_CIS_SLAVE		0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  501) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  502) /* Connection modes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  503) #define HCI_CM_ACTIVE	0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  504) #define HCI_CM_HOLD	0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  505) #define HCI_CM_SNIFF	0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  506) #define HCI_CM_PARK	0x0003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  507) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  508) /* Link policies */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  509) #define HCI_LP_RSWITCH	0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  510) #define HCI_LP_HOLD	0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  511) #define HCI_LP_SNIFF	0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  512) #define HCI_LP_PARK	0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  513) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  514) /* Link modes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  515) #define HCI_LM_ACCEPT	0x8000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  516) #define HCI_LM_MASTER	0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  517) #define HCI_LM_AUTH	0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  518) #define HCI_LM_ENCRYPT	0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  519) #define HCI_LM_TRUSTED	0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  520) #define HCI_LM_RELIABLE	0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  521) #define HCI_LM_SECURE	0x0020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  522) #define HCI_LM_FIPS	0x0040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  523) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  524) /* Authentication types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  525) #define HCI_AT_NO_BONDING		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  526) #define HCI_AT_NO_BONDING_MITM		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  527) #define HCI_AT_DEDICATED_BONDING	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  528) #define HCI_AT_DEDICATED_BONDING_MITM	0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  529) #define HCI_AT_GENERAL_BONDING		0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  530) #define HCI_AT_GENERAL_BONDING_MITM	0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  531) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  532) /* I/O capabilities */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  533) #define HCI_IO_DISPLAY_ONLY	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  534) #define HCI_IO_DISPLAY_YESNO	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  535) #define HCI_IO_KEYBOARD_ONLY	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  536) #define HCI_IO_NO_INPUT_OUTPUT	0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  537) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  538) /* Link Key types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  539) #define HCI_LK_COMBINATION		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  540) #define HCI_LK_LOCAL_UNIT		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  541) #define HCI_LK_REMOTE_UNIT		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  542) #define HCI_LK_DEBUG_COMBINATION	0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  543) #define HCI_LK_UNAUTH_COMBINATION_P192	0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  544) #define HCI_LK_AUTH_COMBINATION_P192	0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  545) #define HCI_LK_CHANGED_COMBINATION	0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  546) #define HCI_LK_UNAUTH_COMBINATION_P256	0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  547) #define HCI_LK_AUTH_COMBINATION_P256	0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  548) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  549) /* ---- HCI Error Codes ---- */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  550) #define HCI_ERROR_UNKNOWN_CONN_ID	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  551) #define HCI_ERROR_AUTH_FAILURE		0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  552) #define HCI_ERROR_PIN_OR_KEY_MISSING	0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  553) #define HCI_ERROR_MEMORY_EXCEEDED	0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  554) #define HCI_ERROR_CONNECTION_TIMEOUT	0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  555) #define HCI_ERROR_REJ_LIMITED_RESOURCES	0x0d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  556) #define HCI_ERROR_REJ_BAD_ADDR		0x0f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  557) #define HCI_ERROR_REMOTE_USER_TERM	0x13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  558) #define HCI_ERROR_REMOTE_LOW_RESOURCES	0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  559) #define HCI_ERROR_REMOTE_POWER_OFF	0x15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  560) #define HCI_ERROR_LOCAL_HOST_TERM	0x16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  561) #define HCI_ERROR_PAIRING_NOT_ALLOWED	0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  562) #define HCI_ERROR_INVALID_LL_PARAMS	0x1e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  563) #define HCI_ERROR_UNSPECIFIED		0x1f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  564) #define HCI_ERROR_ADVERTISING_TIMEOUT	0x3c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  565) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  566) /* Flow control modes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  567) #define HCI_FLOW_CTL_MODE_PACKET_BASED	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  568) #define HCI_FLOW_CTL_MODE_BLOCK_BASED	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  569) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  570) /* The core spec defines 127 as the "not available" value */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  571) #define HCI_TX_POWER_INVALID	127
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  572) #define HCI_RSSI_INVALID	127
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  573) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  574) #define HCI_ROLE_MASTER		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  575) #define HCI_ROLE_SLAVE		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  576) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  577) /* Extended Inquiry Response field types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  578) #define EIR_FLAGS		0x01 /* flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  579) #define EIR_UUID16_SOME		0x02 /* 16-bit UUID, more available */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  580) #define EIR_UUID16_ALL		0x03 /* 16-bit UUID, all listed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  581) #define EIR_UUID32_SOME		0x04 /* 32-bit UUID, more available */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  582) #define EIR_UUID32_ALL		0x05 /* 32-bit UUID, all listed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  583) #define EIR_UUID128_SOME	0x06 /* 128-bit UUID, more available */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  584) #define EIR_UUID128_ALL		0x07 /* 128-bit UUID, all listed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  585) #define EIR_NAME_SHORT		0x08 /* shortened local name */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  586) #define EIR_NAME_COMPLETE	0x09 /* complete local name */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  587) #define EIR_TX_POWER		0x0A /* transmit power level */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  588) #define EIR_CLASS_OF_DEV	0x0D /* Class of Device */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  589) #define EIR_SSP_HASH_C192	0x0E /* Simple Pairing Hash C-192 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  590) #define EIR_SSP_RAND_R192	0x0F /* Simple Pairing Randomizer R-192 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  591) #define EIR_DEVICE_ID		0x10 /* device ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  592) #define EIR_APPEARANCE		0x19 /* Device appearance */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  593) #define EIR_LE_BDADDR		0x1B /* LE Bluetooth device address */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  594) #define EIR_LE_ROLE		0x1C /* LE role */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  595) #define EIR_SSP_HASH_C256	0x1D /* Simple Pairing Hash C-256 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  596) #define EIR_SSP_RAND_R256	0x1E /* Simple Pairing Rand R-256 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  597) #define EIR_LE_SC_CONFIRM	0x22 /* LE SC Confirmation Value */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  598) #define EIR_LE_SC_RANDOM	0x23 /* LE SC Random Value */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  599) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  600) /* Low Energy Advertising Flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  601) #define LE_AD_LIMITED		0x01 /* Limited Discoverable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  602) #define LE_AD_GENERAL		0x02 /* General Discoverable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  603) #define LE_AD_NO_BREDR		0x04 /* BR/EDR not supported */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  604) #define LE_AD_SIM_LE_BREDR_CTRL	0x08 /* Simultaneous LE & BR/EDR Controller */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  605) #define LE_AD_SIM_LE_BREDR_HOST	0x10 /* Simultaneous LE & BR/EDR Host */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  606) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  607) /* -----  HCI Commands ---- */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  608) #define HCI_OP_NOP			0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  609) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  610) #define HCI_OP_INQUIRY			0x0401
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  611) struct hci_cp_inquiry {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  612) 	__u8     lap[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  613) 	__u8     length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  614) 	__u8     num_rsp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  615) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  616) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  617) #define HCI_OP_INQUIRY_CANCEL		0x0402
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  618) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  619) #define HCI_OP_PERIODIC_INQ		0x0403
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  620) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  621) #define HCI_OP_EXIT_PERIODIC_INQ	0x0404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  622) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  623) #define HCI_OP_CREATE_CONN		0x0405
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  624) struct hci_cp_create_conn {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  625) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  626) 	__le16   pkt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  627) 	__u8     pscan_rep_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  628) 	__u8     pscan_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  629) 	__le16   clock_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  630) 	__u8     role_switch;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  631) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  632) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  633) #define HCI_OP_DISCONNECT		0x0406
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  634) struct hci_cp_disconnect {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  635) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  636) 	__u8     reason;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  637) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  638) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  639) #define HCI_OP_ADD_SCO			0x0407
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  640) struct hci_cp_add_sco {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  641) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  642) 	__le16   pkt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  643) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  644) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  645) #define HCI_OP_CREATE_CONN_CANCEL	0x0408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  646) struct hci_cp_create_conn_cancel {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  647) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  648) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  649) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  650) #define HCI_OP_ACCEPT_CONN_REQ		0x0409
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  651) struct hci_cp_accept_conn_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  652) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  653) 	__u8     role;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  654) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  655) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  656) #define HCI_OP_REJECT_CONN_REQ		0x040a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  657) struct hci_cp_reject_conn_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  658) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  659) 	__u8     reason;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  660) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  661) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  662) #define HCI_OP_LINK_KEY_REPLY		0x040b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  663) struct hci_cp_link_key_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  664) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  665) 	__u8     link_key[HCI_LINK_KEY_SIZE];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  666) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  667) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  668) #define HCI_OP_LINK_KEY_NEG_REPLY	0x040c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  669) struct hci_cp_link_key_neg_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  670) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  671) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  672) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  673) #define HCI_OP_PIN_CODE_REPLY		0x040d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  674) struct hci_cp_pin_code_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  675) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  676) 	__u8     pin_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  677) 	__u8     pin_code[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  678) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  679) struct hci_rp_pin_code_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  680) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  681) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  682) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  683) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  684) #define HCI_OP_PIN_CODE_NEG_REPLY	0x040e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  685) struct hci_cp_pin_code_neg_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  686) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  687) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  688) struct hci_rp_pin_code_neg_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  689) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  690) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  691) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  692) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  693) #define HCI_OP_CHANGE_CONN_PTYPE	0x040f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  694) struct hci_cp_change_conn_ptype {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  695) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  696) 	__le16   pkt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  697) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  698) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  699) #define HCI_OP_AUTH_REQUESTED		0x0411
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  700) struct hci_cp_auth_requested {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  701) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  702) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  703) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  704) #define HCI_OP_SET_CONN_ENCRYPT		0x0413
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  705) struct hci_cp_set_conn_encrypt {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  706) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  707) 	__u8     encrypt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  708) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  709) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  710) #define HCI_OP_CHANGE_CONN_LINK_KEY	0x0415
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  711) struct hci_cp_change_conn_link_key {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  712) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  713) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  714) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  715) #define HCI_OP_REMOTE_NAME_REQ		0x0419
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  716) struct hci_cp_remote_name_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  717) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  718) 	__u8     pscan_rep_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  719) 	__u8     pscan_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  720) 	__le16   clock_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  721) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  722) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  723) #define HCI_OP_REMOTE_NAME_REQ_CANCEL	0x041a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  724) struct hci_cp_remote_name_req_cancel {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  725) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  726) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  727) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  728) #define HCI_OP_READ_REMOTE_FEATURES	0x041b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  729) struct hci_cp_read_remote_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  730) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  731) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  732) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  733) #define HCI_OP_READ_REMOTE_EXT_FEATURES	0x041c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  734) struct hci_cp_read_remote_ext_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  735) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  736) 	__u8     page;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  737) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  738) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  739) #define HCI_OP_READ_REMOTE_VERSION	0x041d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  740) struct hci_cp_read_remote_version {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  741) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  742) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  743) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  744) #define HCI_OP_READ_CLOCK_OFFSET	0x041f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  745) struct hci_cp_read_clock_offset {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  746) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  747) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  748) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  749) #define HCI_OP_SETUP_SYNC_CONN		0x0428
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  750) struct hci_cp_setup_sync_conn {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  751) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  752) 	__le32   tx_bandwidth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  753) 	__le32   rx_bandwidth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  754) 	__le16   max_latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  755) 	__le16   voice_setting;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  756) 	__u8     retrans_effort;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  757) 	__le16   pkt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  758) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  759) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  760) #define HCI_OP_ACCEPT_SYNC_CONN_REQ	0x0429
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  761) struct hci_cp_accept_sync_conn_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  762) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  763) 	__le32   tx_bandwidth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  764) 	__le32   rx_bandwidth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  765) 	__le16   max_latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  766) 	__le16   content_format;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  767) 	__u8     retrans_effort;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  768) 	__le16   pkt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  769) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  770) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  771) #define HCI_OP_REJECT_SYNC_CONN_REQ	0x042a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  772) struct hci_cp_reject_sync_conn_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  773) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  774) 	__u8     reason;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  775) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  776) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  777) #define HCI_OP_IO_CAPABILITY_REPLY	0x042b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  778) struct hci_cp_io_capability_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  779) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  780) 	__u8     capability;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  781) 	__u8     oob_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  782) 	__u8     authentication;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  783) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  784) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  785) #define HCI_OP_USER_CONFIRM_REPLY		0x042c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  786) struct hci_cp_user_confirm_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  787) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  788) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  789) struct hci_rp_user_confirm_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  790) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  791) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  792) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  793) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  794) #define HCI_OP_USER_CONFIRM_NEG_REPLY	0x042d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  795) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  796) #define HCI_OP_USER_PASSKEY_REPLY		0x042e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  797) struct hci_cp_user_passkey_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  798) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  799) 	__le32	passkey;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  800) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  801) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  802) #define HCI_OP_USER_PASSKEY_NEG_REPLY	0x042f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  803) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  804) #define HCI_OP_REMOTE_OOB_DATA_REPLY	0x0430
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  805) struct hci_cp_remote_oob_data_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  806) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  807) 	__u8     hash[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  808) 	__u8     rand[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  809) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  810) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  811) #define HCI_OP_REMOTE_OOB_DATA_NEG_REPLY	0x0433
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  812) struct hci_cp_remote_oob_data_neg_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  813) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  814) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  815) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  816) #define HCI_OP_IO_CAPABILITY_NEG_REPLY	0x0434
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  817) struct hci_cp_io_capability_neg_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  818) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  819) 	__u8     reason;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  820) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  821) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  822) #define HCI_OP_CREATE_PHY_LINK		0x0435
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  823) struct hci_cp_create_phy_link {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  824) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  825) 	__u8     key_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  826) 	__u8     key_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  827) 	__u8     key[HCI_AMP_LINK_KEY_SIZE];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  828) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  829) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  830) #define HCI_OP_ACCEPT_PHY_LINK		0x0436
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  831) struct hci_cp_accept_phy_link {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  832) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  833) 	__u8     key_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  834) 	__u8     key_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  835) 	__u8     key[HCI_AMP_LINK_KEY_SIZE];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  836) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  837) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  838) #define HCI_OP_DISCONN_PHY_LINK		0x0437
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  839) struct hci_cp_disconn_phy_link {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  840) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  841) 	__u8     reason;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  842) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  843) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  844) struct ext_flow_spec {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  845) 	__u8       id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  846) 	__u8       stype;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  847) 	__le16     msdu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  848) 	__le32     sdu_itime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  849) 	__le32     acc_lat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  850) 	__le32     flush_to;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  851) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  852) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  853) #define HCI_OP_CREATE_LOGICAL_LINK	0x0438
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  854) #define HCI_OP_ACCEPT_LOGICAL_LINK	0x0439
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  855) struct hci_cp_create_accept_logical_link {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  856) 	__u8                  phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  857) 	struct ext_flow_spec  tx_flow_spec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  858) 	struct ext_flow_spec  rx_flow_spec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  859) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  860) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  861) #define HCI_OP_DISCONN_LOGICAL_LINK	0x043a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  862) struct hci_cp_disconn_logical_link {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  863) 	__le16   log_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  864) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  865) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  866) #define HCI_OP_LOGICAL_LINK_CANCEL	0x043b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  867) struct hci_cp_logical_link_cancel {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  868) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  869) 	__u8     flow_spec_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  870) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  871) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  872) struct hci_rp_logical_link_cancel {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  873) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  874) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  875) 	__u8     flow_spec_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  876) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  877) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  878) #define HCI_OP_SET_CSB			0x0441
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  879) struct hci_cp_set_csb {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  880) 	__u8	enable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  881) 	__u8	lt_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  882) 	__u8	lpo_allowed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  883) 	__le16	packet_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  884) 	__le16	interval_min;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  885) 	__le16	interval_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  886) 	__le16	csb_sv_tout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  887) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  888) struct hci_rp_set_csb {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  889) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  890) 	__u8	lt_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  891) 	__le16	interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  892) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  893) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  894) #define HCI_OP_START_SYNC_TRAIN		0x0443
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  895) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  896) #define HCI_OP_REMOTE_OOB_EXT_DATA_REPLY	0x0445
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  897) struct hci_cp_remote_oob_ext_data_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  898) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  899) 	__u8     hash192[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  900) 	__u8     rand192[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  901) 	__u8     hash256[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  902) 	__u8     rand256[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  903) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  904) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  905) #define HCI_OP_SNIFF_MODE		0x0803
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  906) struct hci_cp_sniff_mode {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  907) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  908) 	__le16   max_interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  909) 	__le16   min_interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  910) 	__le16   attempt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  911) 	__le16   timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  912) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  913) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  914) #define HCI_OP_EXIT_SNIFF_MODE		0x0804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  915) struct hci_cp_exit_sniff_mode {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  916) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  917) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  918) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  919) #define HCI_OP_ROLE_DISCOVERY		0x0809
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  920) struct hci_cp_role_discovery {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  921) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  922) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  923) struct hci_rp_role_discovery {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  924) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  925) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  926) 	__u8     role;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  927) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  928) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  929) #define HCI_OP_SWITCH_ROLE		0x080b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  930) struct hci_cp_switch_role {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  931) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  932) 	__u8     role;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  933) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  934) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  935) #define HCI_OP_READ_LINK_POLICY		0x080c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  936) struct hci_cp_read_link_policy {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  937) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  938) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  939) struct hci_rp_read_link_policy {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  940) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  941) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  942) 	__le16   policy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  943) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  944) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  945) #define HCI_OP_WRITE_LINK_POLICY	0x080d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  946) struct hci_cp_write_link_policy {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  947) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  948) 	__le16   policy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  949) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  950) struct hci_rp_write_link_policy {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  951) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  952) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  953) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  954) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  955) #define HCI_OP_READ_DEF_LINK_POLICY	0x080e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  956) struct hci_rp_read_def_link_policy {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  957) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  958) 	__le16   policy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  959) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  960) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  961) #define HCI_OP_WRITE_DEF_LINK_POLICY	0x080f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  962) struct hci_cp_write_def_link_policy {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  963) 	__le16   policy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  964) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  965) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  966) #define HCI_OP_SNIFF_SUBRATE		0x0811
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  967) struct hci_cp_sniff_subrate {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  968) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  969) 	__le16   max_latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  970) 	__le16   min_remote_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  971) 	__le16   min_local_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  972) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  973) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  974) #define HCI_OP_SET_EVENT_MASK		0x0c01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  975) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  976) #define HCI_OP_RESET			0x0c03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  977) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  978) #define HCI_OP_SET_EVENT_FLT		0x0c05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  979) #define HCI_SET_EVENT_FLT_SIZE		9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  980) struct hci_cp_set_event_filter {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  981) 	__u8		flt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  982) 	__u8		cond_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  983) 	struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  984) 		bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  985) 		__u8 auto_accept;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  986) 	} __packed	addr_conn_flt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  987) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  988) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  989) /* Filter types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  990) #define HCI_FLT_CLEAR_ALL	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  991) #define HCI_FLT_INQ_RESULT	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  992) #define HCI_FLT_CONN_SETUP	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  993) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  994) /* CONN_SETUP Condition types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  995) #define HCI_CONN_SETUP_ALLOW_ALL	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  996) #define HCI_CONN_SETUP_ALLOW_CLASS	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  997) #define HCI_CONN_SETUP_ALLOW_BDADDR	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  998) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  999) /* CONN_SETUP Conditions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) #define HCI_CONN_SETUP_AUTO_OFF		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) #define HCI_CONN_SETUP_AUTO_ON		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) #define HCI_CONN_SETUP_AUTO_ON_WITH_RS	0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) #define HCI_OP_READ_STORED_LINK_KEY	0x0c0d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) struct hci_cp_read_stored_link_key {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) 	__u8     read_all;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) struct hci_rp_read_stored_link_key {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) 	__u8     max_keys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) 	__u8     num_keys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) #define HCI_OP_DELETE_STORED_LINK_KEY	0x0c12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) struct hci_cp_delete_stored_link_key {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) 	__u8     delete_all;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) struct hci_rp_delete_stored_link_key {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) 	__u8     num_keys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) #define HCI_MAX_NAME_LENGTH		248
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) #define HCI_OP_WRITE_LOCAL_NAME		0x0c13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) struct hci_cp_write_local_name {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) 	__u8     name[HCI_MAX_NAME_LENGTH];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) #define HCI_OP_READ_LOCAL_NAME		0x0c14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) struct hci_rp_read_local_name {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) 	__u8     name[HCI_MAX_NAME_LENGTH];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) #define HCI_OP_WRITE_CA_TIMEOUT		0x0c16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) #define HCI_OP_WRITE_PG_TIMEOUT		0x0c18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) #define HCI_OP_WRITE_SCAN_ENABLE	0x0c1a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) 	#define SCAN_DISABLED		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) 	#define SCAN_INQUIRY		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) 	#define SCAN_PAGE		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) #define HCI_OP_READ_AUTH_ENABLE		0x0c1f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) #define HCI_OP_WRITE_AUTH_ENABLE	0x0c20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) 	#define AUTH_DISABLED		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) 	#define AUTH_ENABLED		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) #define HCI_OP_READ_ENCRYPT_MODE	0x0c21
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) #define HCI_OP_WRITE_ENCRYPT_MODE	0x0c22
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) 	#define ENCRYPT_DISABLED	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) 	#define ENCRYPT_P2P		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) 	#define ENCRYPT_BOTH		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) #define HCI_OP_READ_CLASS_OF_DEV	0x0c23
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) struct hci_rp_read_class_of_dev {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) 	__u8     dev_class[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) #define HCI_OP_WRITE_CLASS_OF_DEV	0x0c24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) struct hci_cp_write_class_of_dev {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) 	__u8     dev_class[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) #define HCI_OP_READ_VOICE_SETTING	0x0c25
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) struct hci_rp_read_voice_setting {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) 	__le16   voice_setting;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) #define HCI_OP_WRITE_VOICE_SETTING	0x0c26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) struct hci_cp_write_voice_setting {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) 	__le16   voice_setting;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) #define HCI_OP_HOST_BUFFER_SIZE		0x0c33
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) struct hci_cp_host_buffer_size {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) 	__le16   acl_mtu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) 	__u8     sco_mtu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) 	__le16   acl_max_pkt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) 	__le16   sco_max_pkt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) #define HCI_OP_READ_NUM_SUPPORTED_IAC	0x0c38
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) struct hci_rp_read_num_supported_iac {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) 	__u8	num_iac;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) #define HCI_OP_READ_CURRENT_IAC_LAP	0x0c39
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) #define HCI_OP_WRITE_CURRENT_IAC_LAP	0x0c3a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) struct hci_cp_write_current_iac_lap {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) 	__u8	num_iac;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) 	__u8	iac_lap[6];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) #define HCI_OP_WRITE_INQUIRY_MODE	0x0c45
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) #define HCI_MAX_EIR_LENGTH		240
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) #define HCI_OP_WRITE_EIR		0x0c52
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) struct hci_cp_write_eir {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) 	__u8	fec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) 	__u8	data[HCI_MAX_EIR_LENGTH];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) #define HCI_OP_READ_SSP_MODE		0x0c55
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) struct hci_rp_read_ssp_mode {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) 	__u8     mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) #define HCI_OP_WRITE_SSP_MODE		0x0c56
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) struct hci_cp_write_ssp_mode {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) 	__u8     mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) #define HCI_OP_READ_LOCAL_OOB_DATA		0x0c57
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) struct hci_rp_read_local_oob_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) 	__u8     hash[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) 	__u8     rand[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) #define HCI_OP_READ_INQ_RSP_TX_POWER	0x0c58
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) struct hci_rp_read_inq_rsp_tx_power {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) 	__s8     tx_power;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) #define HCI_OP_READ_DEF_ERR_DATA_REPORTING	0x0c5a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) 	#define ERR_DATA_REPORTING_DISABLED	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) 	#define ERR_DATA_REPORTING_ENABLED	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) struct hci_rp_read_def_err_data_reporting {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) 	__u8     err_data_reporting;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) #define HCI_OP_WRITE_DEF_ERR_DATA_REPORTING	0x0c5b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) struct hci_cp_write_def_err_data_reporting {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) 	__u8     err_data_reporting;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) #define HCI_OP_SET_EVENT_MASK_PAGE_2	0x0c63
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) #define HCI_OP_READ_LOCATION_DATA	0x0c64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) #define HCI_OP_READ_FLOW_CONTROL_MODE	0x0c66
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) struct hci_rp_read_flow_control_mode {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) 	__u8     mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) #define HCI_OP_WRITE_LE_HOST_SUPPORTED	0x0c6d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) struct hci_cp_write_le_host_supported {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) 	__u8	le;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) 	__u8	simul;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) #define HCI_OP_SET_RESERVED_LT_ADDR	0x0c74
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) struct hci_cp_set_reserved_lt_addr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) 	__u8	lt_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) struct hci_rp_set_reserved_lt_addr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) 	__u8	lt_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) #define HCI_OP_DELETE_RESERVED_LT_ADDR	0x0c75
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) struct hci_cp_delete_reserved_lt_addr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) 	__u8	lt_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) struct hci_rp_delete_reserved_lt_addr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) 	__u8	lt_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) #define HCI_OP_SET_CSB_DATA		0x0c76
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) struct hci_cp_set_csb_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) 	__u8	lt_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) 	__u8	fragment;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) 	__u8	data_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) 	__u8	data[HCI_MAX_CSB_DATA_SIZE];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) struct hci_rp_set_csb_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) 	__u8	lt_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) #define HCI_OP_READ_SYNC_TRAIN_PARAMS	0x0c77
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) #define HCI_OP_WRITE_SYNC_TRAIN_PARAMS	0x0c78
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) struct hci_cp_write_sync_train_params {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) 	__le16	interval_min;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) 	__le16	interval_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) 	__le32	sync_train_tout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) 	__u8	service_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) struct hci_rp_write_sync_train_params {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) 	__le16	sync_train_int;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) #define HCI_OP_READ_SC_SUPPORT		0x0c79
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) struct hci_rp_read_sc_support {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) 	__u8	support;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) #define HCI_OP_WRITE_SC_SUPPORT		0x0c7a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) struct hci_cp_write_sc_support {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) 	__u8	support;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) #define HCI_OP_READ_AUTH_PAYLOAD_TO    0x0c7b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) struct hci_cp_read_auth_payload_to {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) 	__le16  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) struct hci_rp_read_auth_payload_to {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) 	__u8    status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) 	__le16  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) 	__le16  timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) #define HCI_OP_WRITE_AUTH_PAYLOAD_TO    0x0c7c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) struct hci_cp_write_auth_payload_to {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) 	__le16  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) 	__le16  timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) struct hci_rp_write_auth_payload_to {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) 	__u8    status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) 	__le16  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) #define HCI_OP_READ_LOCAL_OOB_EXT_DATA	0x0c7d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) struct hci_rp_read_local_oob_ext_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) 	__u8     hash192[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) 	__u8     rand192[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) 	__u8     hash256[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) 	__u8     rand256[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) #define HCI_OP_READ_LOCAL_VERSION	0x1001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) struct hci_rp_read_local_version {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) 	__u8     hci_ver;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) 	__le16   hci_rev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) 	__u8     lmp_ver;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) 	__le16   manufacturer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) 	__le16   lmp_subver;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) #define HCI_OP_READ_LOCAL_COMMANDS	0x1002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) struct hci_rp_read_local_commands {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) 	__u8     commands[64];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) #define HCI_OP_READ_LOCAL_FEATURES	0x1003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) struct hci_rp_read_local_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) 	__u8     features[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) #define HCI_OP_READ_LOCAL_EXT_FEATURES	0x1004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) struct hci_cp_read_local_ext_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) 	__u8     page;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) struct hci_rp_read_local_ext_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) 	__u8     page;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) 	__u8     max_page;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) 	__u8     features[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) #define HCI_OP_READ_BUFFER_SIZE		0x1005
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) struct hci_rp_read_buffer_size {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) 	__le16   acl_mtu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) 	__u8     sco_mtu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) 	__le16   acl_max_pkt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) 	__le16   sco_max_pkt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) #define HCI_OP_READ_BD_ADDR		0x1009
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) struct hci_rp_read_bd_addr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) #define HCI_OP_READ_DATA_BLOCK_SIZE	0x100a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) struct hci_rp_read_data_block_size {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) 	__le16   max_acl_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) 	__le16   block_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) 	__le16   num_blocks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) #define HCI_OP_READ_LOCAL_CODECS	0x100b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) #define HCI_OP_READ_LOCAL_PAIRING_OPTS	0x100c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) struct hci_rp_read_local_pairing_opts {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) 	__u8     pairing_opts;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) 	__u8     max_key_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) #define HCI_OP_READ_PAGE_SCAN_ACTIVITY	0x0c1b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) struct hci_rp_read_page_scan_activity {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) 	__le16   interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) 	__le16   window;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) #define HCI_OP_WRITE_PAGE_SCAN_ACTIVITY	0x0c1c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) struct hci_cp_write_page_scan_activity {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) 	__le16   interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) 	__le16   window;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) #define HCI_OP_READ_TX_POWER		0x0c2d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) struct hci_cp_read_tx_power {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) 	__u8     type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) struct hci_rp_read_tx_power {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) 	__s8     tx_power;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) #define HCI_OP_READ_PAGE_SCAN_TYPE	0x0c46
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) struct hci_rp_read_page_scan_type {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) 	__u8     type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) #define HCI_OP_WRITE_PAGE_SCAN_TYPE	0x0c47
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) 	#define PAGE_SCAN_TYPE_STANDARD		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) 	#define PAGE_SCAN_TYPE_INTERLACED	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) #define HCI_OP_READ_RSSI		0x1405
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) struct hci_cp_read_rssi {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) struct hci_rp_read_rssi {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) 	__s8     rssi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) #define HCI_OP_READ_CLOCK		0x1407
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) struct hci_cp_read_clock {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) 	__u8     which;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) struct hci_rp_read_clock {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) 	__le32   clock;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) 	__le16   accuracy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) #define HCI_OP_READ_ENC_KEY_SIZE	0x1408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) struct hci_cp_read_enc_key_size {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) struct hci_rp_read_enc_key_size {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) 	__u8     key_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) #define HCI_OP_READ_LOCAL_AMP_INFO	0x1409
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) struct hci_rp_read_local_amp_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) 	__u8     amp_status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) 	__le32   total_bw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) 	__le32   max_bw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) 	__le32   min_latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) 	__le32   max_pdu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) 	__u8     amp_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) 	__le16   pal_cap;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) 	__le16   max_assoc_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) 	__le32   max_flush_to;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) 	__le32   be_flush_to;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) #define HCI_OP_READ_LOCAL_AMP_ASSOC	0x140a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) struct hci_cp_read_local_amp_assoc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400) 	__le16   len_so_far;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) 	__le16   max_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) struct hci_rp_read_local_amp_assoc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) 	__le16   rem_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) 	__u8     frag[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) #define HCI_OP_WRITE_REMOTE_AMP_ASSOC	0x140b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) struct hci_cp_write_remote_amp_assoc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) 	__le16   len_so_far;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) 	__le16   rem_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) 	__u8     frag[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) struct hci_rp_write_remote_amp_assoc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) #define HCI_OP_GET_MWS_TRANSPORT_CONFIG	0x140c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424) #define HCI_OP_ENABLE_DUT_MODE		0x1803
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) #define HCI_OP_WRITE_SSP_DEBUG_MODE	0x1804
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) #define HCI_OP_LE_SET_EVENT_MASK	0x2001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) struct hci_cp_le_set_event_mask {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) 	__u8     mask[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) #define HCI_OP_LE_READ_BUFFER_SIZE	0x2002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) struct hci_rp_le_read_buffer_size {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) 	__le16   le_mtu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) 	__u8     le_max_pkt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) #define HCI_OP_LE_READ_LOCAL_FEATURES	0x2003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) struct hci_rp_le_read_local_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) 	__u8     features[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) #define HCI_OP_LE_SET_RANDOM_ADDR	0x2005
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448) #define HCI_OP_LE_SET_ADV_PARAM		0x2006
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449) struct hci_cp_le_set_adv_param {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450) 	__le16   min_interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451) 	__le16   max_interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452) 	__u8     type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453) 	__u8     own_address_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454) 	__u8     direct_addr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) 	bdaddr_t direct_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456) 	__u8     channel_map;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457) 	__u8     filter_policy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460) #define HCI_OP_LE_READ_ADV_TX_POWER	0x2007
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461) struct hci_rp_le_read_adv_tx_power {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) 	__s8	tx_power;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466) #define HCI_MAX_AD_LENGTH		31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468) #define HCI_OP_LE_SET_ADV_DATA		0x2008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469) struct hci_cp_le_set_adv_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470) 	__u8	length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) 	__u8	data[HCI_MAX_AD_LENGTH];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474) #define HCI_OP_LE_SET_SCAN_RSP_DATA	0x2009
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475) struct hci_cp_le_set_scan_rsp_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) 	__u8	length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477) 	__u8	data[HCI_MAX_AD_LENGTH];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480) #define HCI_OP_LE_SET_ADV_ENABLE	0x200a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482) #define LE_SCAN_PASSIVE			0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483) #define LE_SCAN_ACTIVE			0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) #define HCI_OP_LE_SET_SCAN_PARAM	0x200b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486) struct hci_cp_le_set_scan_param {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487) 	__u8    type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488) 	__le16  interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489) 	__le16  window;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490) 	__u8    own_address_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491) 	__u8    filter_policy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494) #define LE_SCAN_DISABLE			0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495) #define LE_SCAN_ENABLE			0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) #define LE_SCAN_FILTER_DUP_DISABLE	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) #define LE_SCAN_FILTER_DUP_ENABLE	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499) #define HCI_OP_LE_SET_SCAN_ENABLE	0x200c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500) struct hci_cp_le_set_scan_enable {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501) 	__u8     enable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502) 	__u8     filter_dup;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505) #define HCI_LE_USE_PEER_ADDR		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506) #define HCI_LE_USE_WHITELIST		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) #define HCI_OP_LE_CREATE_CONN		0x200d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509) struct hci_cp_le_create_conn {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510) 	__le16   scan_interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511) 	__le16   scan_window;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) 	__u8     filter_policy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513) 	__u8     peer_addr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) 	bdaddr_t peer_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515) 	__u8     own_address_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516) 	__le16   conn_interval_min;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517) 	__le16   conn_interval_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) 	__le16   conn_latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) 	__le16   supervision_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520) 	__le16   min_ce_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521) 	__le16   max_ce_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524) #define HCI_OP_LE_CREATE_CONN_CANCEL	0x200e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526) #define HCI_OP_LE_READ_WHITE_LIST_SIZE	0x200f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) struct hci_rp_le_read_white_list_size {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) 	__u8	size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532) #define HCI_OP_LE_CLEAR_WHITE_LIST	0x2010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534) #define HCI_OP_LE_ADD_TO_WHITE_LIST	0x2011
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535) struct hci_cp_le_add_to_white_list {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536) 	__u8     bdaddr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540) #define HCI_OP_LE_DEL_FROM_WHITE_LIST	0x2012
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) struct hci_cp_le_del_from_white_list {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542) 	__u8     bdaddr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) #define HCI_OP_LE_CONN_UPDATE		0x2013
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) struct hci_cp_le_conn_update {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549) 	__le16   conn_interval_min;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) 	__le16   conn_interval_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551) 	__le16   conn_latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552) 	__le16   supervision_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553) 	__le16   min_ce_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) 	__le16   max_ce_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557) #define HCI_OP_LE_READ_REMOTE_FEATURES	0x2016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558) struct hci_cp_le_read_remote_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) 	__le16	 handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) #define HCI_OP_LE_START_ENC		0x2019
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) struct hci_cp_le_start_enc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565) 	__le64	rand;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) 	__le16	ediv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567) 	__u8	ltk[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570) #define HCI_OP_LE_LTK_REPLY		0x201a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571) struct hci_cp_le_ltk_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573) 	__u8	ltk[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575) struct hci_rp_le_ltk_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580) #define HCI_OP_LE_LTK_NEG_REPLY		0x201b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) struct hci_cp_le_ltk_neg_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) struct hci_rp_le_ltk_neg_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589) #define HCI_OP_LE_READ_SUPPORTED_STATES	0x201c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1590) struct hci_rp_le_read_supported_states {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1591) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1592) 	__u8	le_states[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1593) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1594) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1595) #define HCI_OP_LE_CONN_PARAM_REQ_REPLY	0x2020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1596) struct hci_cp_le_conn_param_req_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1597) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1598) 	__le16	interval_min;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1599) 	__le16	interval_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1600) 	__le16	latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1601) 	__le16	timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1602) 	__le16	min_ce_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1603) 	__le16	max_ce_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1604) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1605) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1606) #define HCI_OP_LE_CONN_PARAM_REQ_NEG_REPLY	0x2021
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1607) struct hci_cp_le_conn_param_req_neg_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1608) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1609) 	__u8	reason;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1610) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1611) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1612) #define HCI_OP_LE_SET_DATA_LEN		0x2022
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1613) struct hci_cp_le_set_data_len {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1614) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1615) 	__le16	tx_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1616) 	__le16	tx_time;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1617) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1618) struct hci_rp_le_set_data_len {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1619) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1620) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1621) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1622) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1623) #define HCI_OP_LE_READ_DEF_DATA_LEN	0x2023
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1624) struct hci_rp_le_read_def_data_len {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1625) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1626) 	__le16	tx_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1627) 	__le16	tx_time;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1628) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1629) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1630) #define HCI_OP_LE_WRITE_DEF_DATA_LEN	0x2024
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1631) struct hci_cp_le_write_def_data_len {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1632) 	__le16	tx_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1633) 	__le16	tx_time;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1634) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1635) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1636) #define HCI_OP_LE_ADD_TO_RESOLV_LIST	0x2027
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1637) struct hci_cp_le_add_to_resolv_list {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1638) 	__u8	 bdaddr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1639) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1640) 	__u8	 peer_irk[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1641) 	__u8	 local_irk[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1642) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1643) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1644) #define HCI_OP_LE_DEL_FROM_RESOLV_LIST	0x2028
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1645) struct hci_cp_le_del_from_resolv_list {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1646) 	__u8	 bdaddr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1647) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1648) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1649) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1650) #define HCI_OP_LE_CLEAR_RESOLV_LIST	0x2029
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1651) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1652) #define HCI_OP_LE_READ_RESOLV_LIST_SIZE	0x202a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1653) struct hci_rp_le_read_resolv_list_size {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1654) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1655) 	__u8	size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1656) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1657) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1658) #define HCI_OP_LE_SET_ADDR_RESOLV_ENABLE 0x202d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1659) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1660) #define HCI_OP_LE_SET_RPA_TIMEOUT	0x202e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1661) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1662) #define HCI_OP_LE_READ_MAX_DATA_LEN	0x202f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1663) struct hci_rp_le_read_max_data_len {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1664) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1665) 	__le16	tx_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1666) 	__le16	tx_time;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1667) 	__le16	rx_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1668) 	__le16	rx_time;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1669) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1670) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1671) #define HCI_OP_LE_SET_DEFAULT_PHY	0x2031
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1672) struct hci_cp_le_set_default_phy {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1673) 	__u8    all_phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1674) 	__u8    tx_phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1675) 	__u8    rx_phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1676) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1677) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1678) #define HCI_LE_SET_PHY_1M		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1679) #define HCI_LE_SET_PHY_2M		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1680) #define HCI_LE_SET_PHY_CODED		0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1681) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1682) #define HCI_OP_LE_SET_EXT_SCAN_PARAMS   0x2041
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1683) struct hci_cp_le_set_ext_scan_params {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1684) 	__u8    own_addr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1685) 	__u8    filter_policy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1686) 	__u8    scanning_phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1687) 	__u8    data[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1688) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1689) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1690) #define LE_SCAN_PHY_1M		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1691) #define LE_SCAN_PHY_2M		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1692) #define LE_SCAN_PHY_CODED	0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1693) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1694) struct hci_cp_le_scan_phy_params {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1695) 	__u8    type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1696) 	__le16  interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1697) 	__le16  window;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1698) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1699) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1700) #define HCI_OP_LE_SET_EXT_SCAN_ENABLE   0x2042
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1701) struct hci_cp_le_set_ext_scan_enable {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1702) 	__u8    enable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1703) 	__u8    filter_dup;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1704) 	__le16  duration;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1705) 	__le16  period;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1706) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1707) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1708) #define HCI_OP_LE_EXT_CREATE_CONN    0x2043
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1709) struct hci_cp_le_ext_create_conn {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1710) 	__u8      filter_policy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1711) 	__u8      own_addr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1712) 	__u8      peer_addr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1713) 	bdaddr_t  peer_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1714) 	__u8      phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1715) 	__u8      data[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1716) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1717) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1718) struct hci_cp_le_ext_conn_param {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1719) 	__le16 scan_interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1720) 	__le16 scan_window;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1721) 	__le16 conn_interval_min;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1722) 	__le16 conn_interval_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1723) 	__le16 conn_latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1724) 	__le16 supervision_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1725) 	__le16 min_ce_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1726) 	__le16 max_ce_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1727) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1728) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1729) #define HCI_OP_LE_READ_NUM_SUPPORTED_ADV_SETS	0x203b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1730) struct hci_rp_le_read_num_supported_adv_sets {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1731) 	__u8  status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1732) 	__u8  num_of_sets;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1733) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1734) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1735) #define HCI_OP_LE_SET_EXT_ADV_PARAMS		0x2036
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1736) struct hci_cp_le_set_ext_adv_params {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1737) 	__u8      handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1738) 	__le16    evt_properties;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1739) 	__u8      min_interval[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1740) 	__u8      max_interval[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1741) 	__u8      channel_map;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1742) 	__u8      own_addr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1743) 	__u8      peer_addr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1744) 	bdaddr_t  peer_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1745) 	__u8      filter_policy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1746) 	__u8      tx_power;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1747) 	__u8      primary_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1748) 	__u8      secondary_max_skip;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1749) 	__u8      secondary_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1750) 	__u8      sid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1751) 	__u8      notif_enable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1752) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1753) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1754) #define HCI_ADV_PHY_1M		0X01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1755) #define HCI_ADV_PHY_2M		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1756) #define HCI_ADV_PHY_CODED	0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1757) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1758) struct hci_rp_le_set_ext_adv_params {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1759) 	__u8  status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1760) 	__u8  tx_power;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1761) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1762) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1763) #define HCI_OP_LE_SET_EXT_ADV_ENABLE		0x2039
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1764) struct hci_cp_le_set_ext_adv_enable {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1765) 	__u8  enable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1766) 	__u8  num_of_sets;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1767) 	__u8  data[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1768) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1769) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1770) struct hci_cp_ext_adv_set {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1771) 	__u8  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1772) 	__le16 duration;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1773) 	__u8  max_events;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1774) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1775) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1776) #define HCI_OP_LE_SET_EXT_ADV_DATA		0x2037
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1777) struct hci_cp_le_set_ext_adv_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1778) 	__u8  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1779) 	__u8  operation;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1780) 	__u8  frag_pref;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1781) 	__u8  length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1782) 	__u8  data[HCI_MAX_AD_LENGTH];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1783) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1784) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1785) #define HCI_OP_LE_SET_EXT_SCAN_RSP_DATA		0x2038
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1786) struct hci_cp_le_set_ext_scan_rsp_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1787) 	__u8  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1788) 	__u8  operation;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1789) 	__u8  frag_pref;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1790) 	__u8  length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1791) 	__u8  data[HCI_MAX_AD_LENGTH];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1792) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1793) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1794) #define LE_SET_ADV_DATA_OP_COMPLETE	0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1795) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1796) #define LE_SET_ADV_DATA_NO_FRAG		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1797) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1798) #define HCI_OP_LE_REMOVE_ADV_SET	0x203c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1799) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1800) #define HCI_OP_LE_CLEAR_ADV_SETS	0x203d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1801) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1802) #define HCI_OP_LE_SET_ADV_SET_RAND_ADDR	0x2035
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1803) struct hci_cp_le_set_adv_set_rand_addr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1804) 	__u8  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1805) 	bdaddr_t  bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1806) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1807) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1808) #define HCI_OP_LE_READ_BUFFER_SIZE_V2	0x2060
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1809) struct hci_rp_le_read_buffer_size_v2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1810) 	__u8    status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1811) 	__le16  acl_mtu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1812) 	__u8    acl_max_pkt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1813) 	__le16  iso_mtu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1814) 	__u8    iso_max_pkt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1815) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1816) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1817) #define HCI_OP_LE_READ_ISO_TX_SYNC		0x2061
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1818) struct hci_cp_le_read_iso_tx_sync {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1819) 	__le16  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1820) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1821) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1822) struct hci_rp_le_read_iso_tx_sync {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1823) 	__u8    status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1824) 	__le16  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1825) 	__le16  seq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1826) 	__le32  imestamp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1827) 	__u8    offset[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1828) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1829) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1830) #define HCI_OP_LE_SET_CIG_PARAMS		0x2062
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1831) struct hci_cis_params {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1832) 	__u8    cis_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1833) 	__le16  m_sdu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1834) 	__le16  s_sdu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1835) 	__u8    m_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1836) 	__u8    s_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1837) 	__u8    m_rtn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1838) 	__u8    s_rtn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1839) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1840) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1841) struct hci_cp_le_set_cig_params {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1842) 	__u8    cig_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1843) 	__u8    m_interval[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1844) 	__u8    s_interval[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1845) 	__u8    sca;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1846) 	__u8    packing;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1847) 	__u8    framing;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1848) 	__le16  m_latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1849) 	__le16  s_latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1850) 	__u8    num_cis;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1851) 	struct hci_cis_params cis[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1852) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1853) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1854) struct hci_rp_le_set_cig_params {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1855) 	__u8    status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1856) 	__u8    cig_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1857) 	__u8    num_handles;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1858) 	__le16  handle[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1859) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1860) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1861) #define HCI_OP_LE_CREATE_CIS			0x2064
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1862) struct hci_cis {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1863) 	__le16  cis_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1864) 	__le16  acl_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1865) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1866) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1867) struct hci_cp_le_create_cis {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1868) 	__u8    num_cis;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1869) 	struct hci_cis cis[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1870) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1871) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1872) #define HCI_OP_LE_REMOVE_CIG			0x2065
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1873) struct hci_cp_le_remove_cig {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1874) 	__u8    cig_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1875) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1876) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1877) #define HCI_OP_LE_ACCEPT_CIS			0x2066
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1878) struct hci_cp_le_accept_cis {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1879) 	__le16  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1880) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1881) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1882) #define HCI_OP_LE_REJECT_CIS			0x2067
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1883) struct hci_cp_le_reject_cis {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1884) 	__le16  handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1885) 	__u8    reason;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1886) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1887) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1888) /* ---- HCI Events ---- */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1889) #define HCI_EV_INQUIRY_COMPLETE		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1890) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1891) #define HCI_EV_INQUIRY_RESULT		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1892) struct inquiry_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1893) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1894) 	__u8     pscan_rep_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1895) 	__u8     pscan_period_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1896) 	__u8     pscan_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1897) 	__u8     dev_class[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1898) 	__le16   clock_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1899) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1900) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1901) #define HCI_EV_CONN_COMPLETE		0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1902) struct hci_ev_conn_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1903) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1904) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1905) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1906) 	__u8     link_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1907) 	__u8     encr_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1908) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1909) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1910) #define HCI_EV_CONN_REQUEST		0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1911) struct hci_ev_conn_request {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1912) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1913) 	__u8     dev_class[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1914) 	__u8     link_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1915) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1916) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1917) #define HCI_EV_DISCONN_COMPLETE		0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1918) struct hci_ev_disconn_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1919) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1920) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1921) 	__u8     reason;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1922) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1923) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1924) #define HCI_EV_AUTH_COMPLETE		0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1925) struct hci_ev_auth_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1926) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1927) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1928) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1929) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1930) #define HCI_EV_REMOTE_NAME		0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1931) struct hci_ev_remote_name {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1932) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1933) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1934) 	__u8     name[HCI_MAX_NAME_LENGTH];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1935) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1936) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1937) #define HCI_EV_ENCRYPT_CHANGE		0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1938) struct hci_ev_encrypt_change {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1939) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1940) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1941) 	__u8     encrypt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1942) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1943) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1944) #define HCI_EV_CHANGE_LINK_KEY_COMPLETE	0x09
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1945) struct hci_ev_change_link_key_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1946) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1947) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1948) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1949) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1950) #define HCI_EV_REMOTE_FEATURES		0x0b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1951) struct hci_ev_remote_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1952) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1953) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1954) 	__u8     features[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1955) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1956) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1957) #define HCI_EV_REMOTE_VERSION		0x0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1958) struct hci_ev_remote_version {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1959) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1960) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1961) 	__u8     lmp_ver;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1962) 	__le16   manufacturer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1963) 	__le16   lmp_subver;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1964) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1965) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1966) #define HCI_EV_QOS_SETUP_COMPLETE	0x0d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1967) struct hci_qos {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1968) 	__u8     service_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1969) 	__u32    token_rate;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1970) 	__u32    peak_bandwidth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1971) 	__u32    latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1972) 	__u32    delay_variation;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1973) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1974) struct hci_ev_qos_setup_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1975) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1976) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1977) 	struct   hci_qos qos;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1978) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1979) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1980) #define HCI_EV_CMD_COMPLETE		0x0e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1981) struct hci_ev_cmd_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1982) 	__u8     ncmd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1983) 	__le16   opcode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1984) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1985) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1986) #define HCI_EV_CMD_STATUS		0x0f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1987) struct hci_ev_cmd_status {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1988) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1989) 	__u8     ncmd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1990) 	__le16   opcode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1991) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1992) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1993) #define HCI_EV_HARDWARE_ERROR		0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1994) struct hci_ev_hardware_error {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1995) 	__u8     code;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1996) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1997) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1998) #define HCI_EV_ROLE_CHANGE		0x12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1999) struct hci_ev_role_change {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2000) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2001) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2002) 	__u8     role;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2003) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2004) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2005) #define HCI_EV_NUM_COMP_PKTS		0x13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2006) struct hci_comp_pkts_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2007) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2008) 	__le16   count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2009) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2010) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2011) struct hci_ev_num_comp_pkts {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2012) 	__u8     num_hndl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2013) 	struct hci_comp_pkts_info handles[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2014) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2015) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2016) #define HCI_EV_MODE_CHANGE		0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2017) struct hci_ev_mode_change {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2018) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2019) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2020) 	__u8     mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2021) 	__le16   interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2022) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2023) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2024) #define HCI_EV_PIN_CODE_REQ		0x16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2025) struct hci_ev_pin_code_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2026) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2027) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2028) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2029) #define HCI_EV_LINK_KEY_REQ		0x17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2030) struct hci_ev_link_key_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2031) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2032) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2033) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2034) #define HCI_EV_LINK_KEY_NOTIFY		0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2035) struct hci_ev_link_key_notify {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2036) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2037) 	__u8     link_key[HCI_LINK_KEY_SIZE];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2038) 	__u8     key_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2039) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2040) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2041) #define HCI_EV_CLOCK_OFFSET		0x1c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2042) struct hci_ev_clock_offset {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2043) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2044) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2045) 	__le16   clock_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2046) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2047) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2048) #define HCI_EV_PKT_TYPE_CHANGE		0x1d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2049) struct hci_ev_pkt_type_change {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2050) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2051) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2052) 	__le16   pkt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2053) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2054) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2055) #define HCI_EV_PSCAN_REP_MODE		0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2056) struct hci_ev_pscan_rep_mode {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2057) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2058) 	__u8     pscan_rep_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2059) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2060) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2061) #define HCI_EV_INQUIRY_RESULT_WITH_RSSI	0x22
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2062) struct inquiry_info_with_rssi {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2063) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2064) 	__u8     pscan_rep_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2065) 	__u8     pscan_period_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2066) 	__u8     dev_class[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2067) 	__le16   clock_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2068) 	__s8     rssi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2069) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2070) struct inquiry_info_with_rssi_and_pscan_mode {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2071) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2072) 	__u8     pscan_rep_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2073) 	__u8     pscan_period_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2074) 	__u8     pscan_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2075) 	__u8     dev_class[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2076) 	__le16   clock_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2077) 	__s8     rssi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2078) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2079) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2080) #define HCI_EV_REMOTE_EXT_FEATURES	0x23
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2081) struct hci_ev_remote_ext_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2082) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2083) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2084) 	__u8     page;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2085) 	__u8     max_page;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2086) 	__u8     features[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2087) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2088) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2089) #define HCI_EV_SYNC_CONN_COMPLETE	0x2c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2090) struct hci_ev_sync_conn_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2091) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2092) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2093) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2094) 	__u8     link_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2095) 	__u8     tx_interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2096) 	__u8     retrans_window;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2097) 	__le16   rx_pkt_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2098) 	__le16   tx_pkt_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2099) 	__u8     air_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2100) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2102) #define HCI_EV_SYNC_CONN_CHANGED	0x2d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2103) struct hci_ev_sync_conn_changed {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2104) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2105) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2106) 	__u8     tx_interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2107) 	__u8     retrans_window;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2108) 	__le16   rx_pkt_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2109) 	__le16   tx_pkt_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2110) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2112) #define HCI_EV_SNIFF_SUBRATE		0x2e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2113) struct hci_ev_sniff_subrate {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2114) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2115) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2116) 	__le16   max_tx_latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2117) 	__le16   max_rx_latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2118) 	__le16   max_remote_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2119) 	__le16   max_local_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2120) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2121) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2122) #define HCI_EV_EXTENDED_INQUIRY_RESULT	0x2f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2123) struct extended_inquiry_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2124) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2125) 	__u8     pscan_rep_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2126) 	__u8     pscan_period_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2127) 	__u8     dev_class[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2128) 	__le16   clock_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2129) 	__s8     rssi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2130) 	__u8     data[240];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2131) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2132) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2133) #define HCI_EV_KEY_REFRESH_COMPLETE	0x30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2134) struct hci_ev_key_refresh_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2135) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2136) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2137) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2138) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2139) #define HCI_EV_IO_CAPA_REQUEST		0x31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2140) struct hci_ev_io_capa_request {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2141) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2142) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2143) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2144) #define HCI_EV_IO_CAPA_REPLY		0x32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2145) struct hci_ev_io_capa_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2146) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2147) 	__u8     capability;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2148) 	__u8     oob_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2149) 	__u8     authentication;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2150) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2152) #define HCI_EV_USER_CONFIRM_REQUEST	0x33
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2153) struct hci_ev_user_confirm_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2154) 	bdaddr_t	bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2155) 	__le32		passkey;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2156) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2157) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2158) #define HCI_EV_USER_PASSKEY_REQUEST	0x34
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2159) struct hci_ev_user_passkey_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2160) 	bdaddr_t	bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2161) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2162) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2163) #define HCI_EV_REMOTE_OOB_DATA_REQUEST	0x35
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2164) struct hci_ev_remote_oob_data_request {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2165) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2166) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2167) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2168) #define HCI_EV_SIMPLE_PAIR_COMPLETE	0x36
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2169) struct hci_ev_simple_pair_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2170) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2171) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2172) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2173) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2174) #define HCI_EV_USER_PASSKEY_NOTIFY	0x3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2175) struct hci_ev_user_passkey_notify {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2176) 	bdaddr_t	bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2177) 	__le32		passkey;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2178) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2179) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2180) #define HCI_KEYPRESS_STARTED		0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2181) #define HCI_KEYPRESS_ENTERED		1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2182) #define HCI_KEYPRESS_ERASED		2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2183) #define HCI_KEYPRESS_CLEARED		3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2184) #define HCI_KEYPRESS_COMPLETED		4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2185) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2186) #define HCI_EV_KEYPRESS_NOTIFY		0x3c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2187) struct hci_ev_keypress_notify {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2188) 	bdaddr_t	bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2189) 	__u8		type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2190) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2191) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2192) #define HCI_EV_REMOTE_HOST_FEATURES	0x3d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2193) struct hci_ev_remote_host_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2194) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2195) 	__u8     features[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2196) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2198) #define HCI_EV_LE_META			0x3e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2199) struct hci_ev_le_meta {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2200) 	__u8     subevent;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2201) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2202) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2203) #define HCI_EV_PHY_LINK_COMPLETE	0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2204) struct hci_ev_phy_link_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2205) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2206) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2207) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2208) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2209) #define HCI_EV_CHANNEL_SELECTED		0x41
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2210) struct hci_ev_channel_selected {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2211) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2212) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2213) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2214) #define HCI_EV_DISCONN_PHY_LINK_COMPLETE	0x42
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2215) struct hci_ev_disconn_phy_link_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2216) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2217) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2218) 	__u8     reason;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2219) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2220) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2221) #define HCI_EV_LOGICAL_LINK_COMPLETE		0x45
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2222) struct hci_ev_logical_link_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2223) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2224) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2225) 	__u8     phy_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2226) 	__u8     flow_spec_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2227) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2228) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2229) #define HCI_EV_DISCONN_LOGICAL_LINK_COMPLETE	0x46
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2230) struct hci_ev_disconn_logical_link_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2231) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2232) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2233) 	__u8     reason;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2234) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2235) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2236) #define HCI_EV_NUM_COMP_BLOCKS		0x48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2237) struct hci_comp_blocks_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2238) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2239) 	__le16   pkts;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2240) 	__le16   blocks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2241) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2242) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2243) struct hci_ev_num_comp_blocks {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2244) 	__le16   num_blocks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2245) 	__u8     num_hndl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2246) 	struct hci_comp_blocks_info handles[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2247) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2248) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2249) #define HCI_EV_SYNC_TRAIN_COMPLETE	0x4F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2250) struct hci_ev_sync_train_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2251) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2252) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2253) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2254) #define HCI_EV_SLAVE_PAGE_RESP_TIMEOUT	0x54
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2255) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2256) #define HCI_EV_LE_CONN_COMPLETE		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2257) struct hci_ev_le_conn_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2258) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2259) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2260) 	__u8     role;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2261) 	__u8     bdaddr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2262) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2263) 	__le16   interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2264) 	__le16   latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2265) 	__le16   supervision_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2266) 	__u8     clk_accurancy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2267) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2268) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2269) /* Advertising report event types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2270) #define LE_ADV_IND		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2271) #define LE_ADV_DIRECT_IND	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2272) #define LE_ADV_SCAN_IND		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2273) #define LE_ADV_NONCONN_IND	0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2274) #define LE_ADV_SCAN_RSP		0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2275) #define LE_ADV_INVALID		0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2276) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2277) /* Legacy event types in extended adv report */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2278) #define LE_LEGACY_ADV_IND		0x0013
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2279) #define LE_LEGACY_ADV_DIRECT_IND 	0x0015
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2280) #define LE_LEGACY_ADV_SCAN_IND		0x0012
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2281) #define LE_LEGACY_NONCONN_IND		0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2282) #define LE_LEGACY_SCAN_RSP_ADV		0x001b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2283) #define LE_LEGACY_SCAN_RSP_ADV_SCAN	0x001a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2284) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2285) /* Extended Advertising event types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2286) #define LE_EXT_ADV_NON_CONN_IND		0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2287) #define LE_EXT_ADV_CONN_IND		0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2288) #define LE_EXT_ADV_SCAN_IND		0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2289) #define LE_EXT_ADV_DIRECT_IND		0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2290) #define LE_EXT_ADV_SCAN_RSP		0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2291) #define LE_EXT_ADV_LEGACY_PDU		0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2292) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2293) #define ADDR_LE_DEV_PUBLIC		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2294) #define ADDR_LE_DEV_RANDOM		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2295) #define ADDR_LE_DEV_PUBLIC_RESOLVED	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2296) #define ADDR_LE_DEV_RANDOM_RESOLVED	0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2297) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2298) #define HCI_EV_LE_ADVERTISING_REPORT	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2299) struct hci_ev_le_advertising_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2300) 	__u8	 evt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2301) 	__u8	 bdaddr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2302) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2303) 	__u8	 length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2304) 	__u8	 data[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2305) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2306) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2307) #define HCI_EV_LE_CONN_UPDATE_COMPLETE	0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2308) struct hci_ev_le_conn_update_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2309) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2310) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2311) 	__le16   interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2312) 	__le16   latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2313) 	__le16   supervision_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2314) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2315) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2316) #define HCI_EV_LE_REMOTE_FEAT_COMPLETE	0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2317) struct hci_ev_le_remote_feat_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2318) 	__u8     status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2319) 	__le16   handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2320) 	__u8     features[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2321) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2322) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2323) #define HCI_EV_LE_LTK_REQ		0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2324) struct hci_ev_le_ltk_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2325) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2326) 	__le64	rand;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2327) 	__le16	ediv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2328) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2329) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2330) #define HCI_EV_LE_REMOTE_CONN_PARAM_REQ	0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2331) struct hci_ev_le_remote_conn_param_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2332) 	__le16 handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2333) 	__le16 interval_min;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2334) 	__le16 interval_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2335) 	__le16 latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2336) 	__le16 timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2337) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2338) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2339) #define HCI_EV_LE_DATA_LEN_CHANGE	0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2340) struct hci_ev_le_data_len_change {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2341) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2342) 	__le16	tx_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2343) 	__le16	tx_time;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2344) 	__le16	rx_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2345) 	__le16	rx_time;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2346) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2347) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2348) #define HCI_EV_LE_DIRECT_ADV_REPORT	0x0B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2349) struct hci_ev_le_direct_adv_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2350) 	__u8	 evt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2351) 	__u8	 bdaddr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2352) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2353) 	__u8	 direct_addr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2354) 	bdaddr_t direct_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2355) 	__s8	 rssi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2356) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2357) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2358) #define HCI_EV_LE_PHY_UPDATE_COMPLETE	0x0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2359) struct hci_ev_le_phy_update_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2360) 	__u8  status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2361) 	__le16 handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2362) 	__u8  tx_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2363) 	__u8  rx_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2364) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2365) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2366) #define HCI_EV_LE_EXT_ADV_REPORT    0x0d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2367) struct hci_ev_le_ext_adv_report {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2368) 	__le16 	 evt_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2369) 	__u8	 bdaddr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2370) 	bdaddr_t bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2371) 	__u8	 primary_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2372) 	__u8	 secondary_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2373) 	__u8	 sid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2374) 	__u8	 tx_power;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2375) 	__s8	 rssi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2376) 	__le16 	 interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2377) 	__u8  	 direct_addr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2378) 	bdaddr_t direct_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2379) 	__u8  	 length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2380) 	__u8	 data[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2381) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2382) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2383) #define HCI_EV_LE_ENHANCED_CONN_COMPLETE    0x0a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2384) struct hci_ev_le_enh_conn_complete {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2385) 	__u8      status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2386) 	__le16    handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2387) 	__u8      role;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2388) 	__u8      bdaddr_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2389) 	bdaddr_t  bdaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2390) 	bdaddr_t  local_rpa;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2391) 	bdaddr_t  peer_rpa;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2392) 	__le16    interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2393) 	__le16    latency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2394) 	__le16    supervision_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2395) 	__u8      clk_accurancy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2396) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2397) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2398) #define HCI_EV_LE_EXT_ADV_SET_TERM	0x12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2399) struct hci_evt_le_ext_adv_set_term {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2400) 	__u8	status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2401) 	__u8	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2402) 	__le16	conn_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2403) 	__u8	num_evts;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2404) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2405) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2406) #define HCI_EVT_LE_CIS_ESTABLISHED	0x19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2407) struct hci_evt_le_cis_established {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2408) 	__u8  status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2409) 	__le16 handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2410) 	__u8  cig_sync_delay[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2411) 	__u8  cis_sync_delay[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2412) 	__u8  m_latency[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2413) 	__u8  s_latency[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2414) 	__u8  m_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2415) 	__u8  s_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2416) 	__u8  nse;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2417) 	__u8  m_bn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2418) 	__u8  s_bn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2419) 	__u8  m_ft;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2420) 	__u8  s_ft;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2421) 	__le16 m_mtu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2422) 	__le16 s_mtu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2423) 	__le16 interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2424) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2425) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2426) #define HCI_EVT_LE_CIS_REQ		0x1a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2427) struct hci_evt_le_cis_req {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2428) 	__le16 acl_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2429) 	__le16 cis_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2430) 	__u8  cig_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2431) 	__u8  cis_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2432) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2433) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2434) #define HCI_EV_VENDOR			0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2435) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2436) /* Internal events generated by Bluetooth stack */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2437) #define HCI_EV_STACK_INTERNAL	0xfd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2438) struct hci_ev_stack_internal {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2439) 	__u16    type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2440) 	__u8     data[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2441) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2442) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2443) #define HCI_EV_SI_DEVICE	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2444) struct hci_ev_si_device {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2445) 	__u16    event;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2446) 	__u16    dev_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2447) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2448) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2449) #define HCI_EV_SI_SECURITY	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2450) struct hci_ev_si_security {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2451) 	__u16    event;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2452) 	__u16    proto;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2453) 	__u16    subproto;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2454) 	__u8     incoming;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2455) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2456) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2457) /* ---- HCI Packet structures ---- */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2458) #define HCI_COMMAND_HDR_SIZE 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2459) #define HCI_EVENT_HDR_SIZE   2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2460) #define HCI_ACL_HDR_SIZE     4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2461) #define HCI_SCO_HDR_SIZE     3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2462) #define HCI_ISO_HDR_SIZE     4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2463) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2464) struct hci_command_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2465) 	__le16	opcode;		/* OCF & OGF */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2466) 	__u8	plen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2467) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2468) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2469) struct hci_event_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2470) 	__u8	evt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2471) 	__u8	plen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2472) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2473) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2474) struct hci_acl_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2475) 	__le16	handle;		/* Handle & Flags(PB, BC) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2476) 	__le16	dlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2477) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2478) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2479) struct hci_sco_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2480) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2481) 	__u8	dlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2482) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2483) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2484) struct hci_iso_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2485) 	__le16	handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2486) 	__le16	dlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2487) 	__u8	data[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2488) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2489) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2490) /* ISO data packet status flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2491) #define HCI_ISO_STATUS_VALID	0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2492) #define HCI_ISO_STATUS_INVALID	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2493) #define HCI_ISO_STATUS_NOP	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2494) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2495) #define HCI_ISO_DATA_HDR_SIZE	4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2496) struct hci_iso_data_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2497) 	__le16	sn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2498) 	__le16	slen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2499) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2500) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2501) #define HCI_ISO_TS_DATA_HDR_SIZE 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2502) struct hci_iso_ts_data_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2503) 	__le32	ts;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2504) 	__le16	sn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2505) 	__le16	slen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2506) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2507) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2508) static inline struct hci_event_hdr *hci_event_hdr(const struct sk_buff *skb)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2509) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2510) 	return (struct hci_event_hdr *) skb->data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2511) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2512) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2513) static inline struct hci_acl_hdr *hci_acl_hdr(const struct sk_buff *skb)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2514) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2515) 	return (struct hci_acl_hdr *) skb->data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2516) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2517) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2518) static inline struct hci_sco_hdr *hci_sco_hdr(const struct sk_buff *skb)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2519) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2520) 	return (struct hci_sco_hdr *) skb->data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2521) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2522) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2523) /* Command opcode pack/unpack */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2524) #define hci_opcode_pack(ogf, ocf)	((__u16) ((ocf & 0x03ff)|(ogf << 10)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2525) #define hci_opcode_ogf(op)		(op >> 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2526) #define hci_opcode_ocf(op)		(op & 0x03ff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2527) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2528) /* ACL handle and flags pack/unpack */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2529) #define hci_handle_pack(h, f)	((__u16) ((h & 0x0fff)|(f << 12)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2530) #define hci_handle(h)		(h & 0x0fff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2531) #define hci_flags(h)		(h >> 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2532) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2533) /* ISO handle and flags pack/unpack */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2534) #define hci_iso_flags_pb(f)		(f & 0x0003)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2535) #define hci_iso_flags_ts(f)		((f >> 2) & 0x0001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2536) #define hci_iso_flags_pack(pb, ts)	((pb & 0x03) | ((ts & 0x01) << 2))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2537) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2538) /* ISO data length and flags pack/unpack */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2539) #define hci_iso_data_len_pack(h, f)	((__u16) ((h) | ((f) << 14)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2540) #define hci_iso_data_len(h)		((h) & 0x3fff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2541) #define hci_iso_data_flags(h)		((h) >> 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2542) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2543) /* le24 support */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2544) static inline void hci_cpu_to_le24(__u32 val, __u8 dst[3])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2545) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2546) 	dst[0] = val & 0xff;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2547) 	dst[1] = (val & 0xff00) >> 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2548) 	dst[2] = (val & 0xff0000) >> 16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2549) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2550) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2551) #endif /* __HCI_H */