summaryrefslogtreecommitdiff
path: root/monitor/msft.h
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2021-10-12 15:48:11 -0700
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2021-10-18 13:03:31 -0700
commit7d49b158ba24668151940c993ed4f99b9ba91f7f (patch)
treeda749eb6c3de09e4155516c9db42010d147cfd3c /monitor/msft.h
parent8ac79215ffdc3df8ecd294425fbdfd94df57c27b (diff)
downloadbluez-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.h151
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;