diff options
author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2021-10-12 15:48:11 -0700 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2021-10-18 13:03:31 -0700 |
commit | 7d49b158ba24668151940c993ed4f99b9ba91f7f (patch) | |
tree | da749eb6c3de09e4155516c9db42010d147cfd3c /monitor/msft.h | |
parent | 8ac79215ffdc3df8ecd294425fbdfd94df57c27b (diff) | |
download | bluez-7d49b158ba24668151940c993ed4f99b9ba91f7f.tar.gz |
monitor: Add packet definitions for MSFT extension
This adds proper packet definitions for command and response of MSFT
extension.
Diffstat (limited to 'monitor/msft.h')
-rw-r--r-- | monitor/msft.h | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/monitor/msft.h b/monitor/msft.h index a268f4bc7..79692537f 100644 --- a/monitor/msft.h +++ b/monitor/msft.h @@ -24,6 +24,157 @@ #include <stdint.h> +#define MSFT_SUBCMD_READ_SUPPORTED_FEATURES 0x00 + +struct msft_cmd_read_supported_features { + uint8_t subcmd; +} __attribute__((packed)); + +struct msft_rsp_read_supported_features { + uint8_t status; + uint8_t subcmd; + uint8_t features[8]; + uint8_t evt_prefix_len; + uint8_t evt_prefix[]; +} __attribute__((packed)); + +#define MSFT_SUBCMD_MONITOR_RSSI 0x01 + +struct msft_cmd_monitor_rssi { + uint8_t subcmd; + uint16_t handle; + int8_t rssi_high; + int8_t rssi_low; + uint8_t rssi_low_interval; + uint8_t rssi_period; +} __attribute__((packed)); + +struct msft_rsp_monitor_rssi { + uint8_t status; + uint8_t subcmd; +} __attribute__((packed)); + +#define MSFT_SUBCMD_CANCEL_MONITOR_RSSI 0x02 + +struct msft_cmd_cancel_monitor_rssi { + uint8_t subcmd; + uint16_t handle; +} __attribute__((packed)); + +struct msft_rsp_cancel_monitor_rssi { + uint8_t status; + uint8_t subcmd; +} __attribute__((packed)); + +#define MSFT_SUBCMD_LE_MONITOR_ADV 0x03 + +#define MSFT_LE_MONITOR_ADV_PATTERN 0x01 +struct msft_le_monitor_pattern { + uint8_t len; + uint8_t type; + uint8_t start; + uint8_t data[]; +} __attribute__((packed)); + +struct msft_le_monitor_adv_patterns { + uint8_t num; + struct msft_le_monitor_pattern data[]; +} __attribute__((packed)); + +#define MSFT_LE_MONITOR_ADV_UUID 0x02 +struct msft_le_monitor_adv_uuid { + uint8_t type; + union { + uint16_t u16; + uint32_t u32; + uint8_t u128[8]; + } value; +} __attribute__((packed)); + +#define MSFT_LE_MONITOR_ADV_IRK 0x03 +struct msft_le_monitor_adv_irk { + uint8_t irk[8]; +} __attribute__((packed)); + +#define MSFT_LE_MONITOR_ADV_ADDR 0x04 +struct msft_le_monitor_adv_addr { + uint8_t type; + uint8_t addr[6]; +} __attribute__((packed)); + +struct msft_cmd_le_monitor_adv { + uint8_t subcmd; + int8_t rssi_high; + int8_t rssi_low; + uint8_t rssi_low_interval; + uint8_t rssi_period; + uint8_t type; + uint8_t data[]; +} __attribute__((packed)); + +struct msft_rsp_le_monitor_adv { + uint8_t status; + uint8_t subcmd; + uint8_t handle; +} __attribute__((packed)); + +#define MSFT_SUBCMD_LE_CANCEL_MONITOR_ADV 0x04 + +struct msft_cmd_le_cancel_monitor_adv { + uint8_t subcmd; + uint8_t handle; +} __attribute__((packed)); + +struct msft_rsp_le_cancel_monitor_adv { + uint8_t status; + uint8_t subcmd; +} __attribute__((packed)); + +#define MSFT_SUBCMD_LE_MONITOR_ADV_ENABLE 0x05 + +struct msft_cmd_le_monitor_adv_enable { + uint8_t subcmd; + uint8_t enable; +} __attribute__((packed)); + +struct msft_rsp_le_monitor_adv_enable { + uint8_t status; + uint8_t subcmd; +} __attribute__((packed)); + +#define MSFT_SUBCMD_READ_ABS_RSSI 0x06 + +struct msft_cmd_read_abs_rssi { + uint8_t subcmd; + uint16_t handle; +} __attribute__((packed)); + +struct msft_rsp_read_abs_rssi { + uint8_t status; + uint8_t subcmd; + uint16_t handle; + int8_t rssi; +} __attribute__((packed)); + +#define MSFT_SUBEVT_RSSI 0x01 + +struct msft_evt_rssi { + uint8_t subevt; + uint8_t status; + uint16_t handle; + int8_t rssi; +} __attribute__((packed)); + +#define MSFT_SUBEVT_MONITOR_DEVICE 0x02 + +struct msft_evt_monitor_device { + uint8_t subevt; + uint8_t addr_type; + uint8_t addr[6]; + uint8_t handle; + uint8_t state; +} __attribute__((packed)); + struct vendor_ocf; struct vendor_evt; |