Bluetooth: Enable erroneous data reporting if WBS is supported

This change introduces a wide band speech setting which allows higher
level clients to query the local controller support for wide band speech
as well as set the setting state when the radio is powered off.
Internally, this setting controls if erroneous data reporting is enabled
on the controller.

Signed-off-by: Alain Michaud <alainm@chromium.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
Alain Michaud
2020-03-05 16:14:59 +00:00
committed by Marcel Holtmann
parent 55cee73e2a
commit 00bce3fb06
7 changed files with 145 additions and 5 deletions

View File

@@ -213,7 +213,7 @@ enum {
*
* This quirk must be set before hci_register_dev is called.
*/
HCI_QUIRK_WIDE_BAND_SPEECH_SUPPORTED,
HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED,
};
/* HCI device flags */
@@ -286,6 +286,7 @@ enum {
HCI_FAST_CONNECTABLE,
HCI_BREDR_ENABLED,
HCI_LE_SCAN_INTERRUPTED,
HCI_WIDEBAND_SPEECH_ENABLED,
HCI_DUT_MODE,
HCI_VENDOR_DIAG,
@@ -1095,6 +1096,19 @@ struct hci_rp_read_inq_rsp_tx_power {
__s8 tx_power;
} __packed;
#define HCI_OP_READ_DEF_ERR_DATA_REPORTING 0x0c5a
#define ERR_DATA_REPORTING_DISABLED 0x00
#define ERR_DATA_REPORTING_ENABLED 0x01
struct hci_rp_read_def_err_data_reporting {
__u8 status;
__u8 err_data_reporting;
} __packed;
#define HCI_OP_WRITE_DEF_ERR_DATA_REPORTING 0x0c5b
struct hci_cp_write_def_err_data_reporting {
__u8 err_data_reporting;
} __packed;
#define HCI_OP_SET_EVENT_MASK_PAGE_2 0x0c63
#define HCI_OP_READ_LOCATION_DATA 0x0c64

View File

@@ -260,6 +260,7 @@ struct hci_dev {
__u8 stored_num_keys;
__u8 io_capability;
__s8 inq_tx_power;
__u8 err_data_reporting;
__u16 page_scan_interval;
__u16 page_scan_window;
__u8 page_scan_type;

View File

@@ -102,7 +102,7 @@ struct mgmt_rp_read_index_list {
#define MGMT_SETTING_CONFIGURATION 0x00004000
#define MGMT_SETTING_STATIC_ADDRESS 0x00008000
#define MGMT_SETTING_PHY_CONFIGURATION 0x00010000
#define MGMT_SETTING_WIDE_BAND_SPEECH 0x00020000
#define MGMT_SETTING_WIDEBAND_SPEECH 0x00020000
#define MGMT_OP_READ_INFO 0x0004
#define MGMT_READ_INFO_SIZE 0
@@ -672,6 +672,8 @@ struct mgmt_cp_set_blocked_keys {
} __packed;
#define MGMT_OP_SET_BLOCKED_KEYS_SIZE 2
#define MGMT_OP_SET_WIDEBAND_SPEECH 0x0047
#define MGMT_EV_CMD_COMPLETE 0x0001
struct mgmt_ev_cmd_complete {
__le16 opcode;