* [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format
@ 2021-10-20 21:48 Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 2/6] monitor/msft: Add feature bits definition Luiz Augusto von Dentz
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
128 bits are actually 16 octecs not 8.
---
monitor/msft.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/monitor/msft.h b/monitor/msft.h
index 79692537f..d2921f4c8 100644
--- a/monitor/msft.h
+++ b/monitor/msft.h
@@ -87,7 +87,7 @@ struct msft_le_monitor_adv_uuid {
union {
uint16_t u16;
uint32_t u32;
- uint8_t u128[8];
+ uint8_t u128[16];
} value;
} __attribute__((packed));
--
2.31.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH BlueZ 2/6] monitor/msft: Add feature bits definition
2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
@ 2021-10-20 21:48 ` Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 3/6] emulator/vhci: Fix writing msft_opcode using binary format Luiz Augusto von Dentz
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds the feature bits definition used in
HCI_VS_MSFT_Read_Supported_Features.
---
monitor/msft.h | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/monitor/msft.h b/monitor/msft.h
index d2921f4c8..e6e3019be 100644
--- a/monitor/msft.h
+++ b/monitor/msft.h
@@ -30,6 +30,13 @@ struct msft_cmd_read_supported_features {
uint8_t subcmd;
} __attribute__((packed));
+#define MSFT_MONITOR_BREDR_RSSI BIT(0)
+#define MSFT_MONITOR_LE_RSSI BIT(1)
+#define MSFT_MONITOR_LE_LEGACY_RSSI BIT(2)
+#define MSFT_MONITOR_LE_ADV BIT(3)
+#define MSFT_MONITOR_SSP_VALIDATION BIT(4)
+#define MSFT_MONITOR_LE_ADV_CONTINUOS BIT(5)
+
struct msft_rsp_read_supported_features {
uint8_t status;
uint8_t subcmd;
--
2.31.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH BlueZ 3/6] emulator/vhci: Fix writing msft_opcode using binary format
2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 2/6] monitor/msft: Add feature bits definition Luiz Augusto von Dentz
@ 2021-10-20 21:48 ` Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 4/6] btdev: Use Linux Foundation as manufacturer Luiz Augusto von Dentz
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
debugfs expects values in string format not binary format.
---
emulator/vhci.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/emulator/vhci.c b/emulator/vhci.c
index f8560e0c5..59ad1ecb8 100644
--- a/emulator/vhci.c
+++ b/emulator/vhci.c
@@ -230,7 +230,16 @@ int vhci_set_force_wakeup(struct vhci *vhci, bool enable)
int vhci_set_msft_opcode(struct vhci *vhci, uint16_t opcode)
{
- return vhci_debugfs_write(vhci, "msft_opcode", &opcode, sizeof(opcode));
+ int err;
+ char val[7];
+
+ snprintf(val, sizeof(val), "0x%4x", opcode);
+
+ err = vhci_debugfs_write(vhci, "msft_opcode", &val, sizeof(val));
+ if (err)
+ return err;
+
+ return btdev_set_msft_opcode(vhci->btdev, opcode);
}
int vhci_set_aosp_capable(struct vhci *vhci, bool enable)
--
2.31.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH BlueZ 4/6] btdev: Use Linux Foundation as manufacturer
2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 2/6] monitor/msft: Add feature bits definition Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 3/6] emulator/vhci: Fix writing msft_opcode using binary format Luiz Augusto von Dentz
@ 2021-10-20 21:48 ` Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 5/6] monitor: Enable decoding of MSFT extension with emulator Luiz Augusto von Dentz
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This makes the emulator use Linux Foundation manufacturer id which
shall be simpler to distinguish emulator instances since it is unlikely
there will be other vendors using it.
---
emulator/btdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/emulator/btdev.c b/emulator/btdev.c
index d9c55d99d..18aefed11 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -6263,7 +6263,7 @@ struct btdev *btdev_create(enum btdev_type type, uint16_t id)
btdev->type = type;
btdev->id = id;
- btdev->manufacturer = 63;
+ btdev->manufacturer = 1521;
btdev->revision = 0x0000;
switch (btdev->type) {
--
2.31.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH BlueZ 5/6] monitor: Enable decoding of MSFT extension with emulator
2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
` (2 preceding siblings ...)
2021-10-20 21:48 ` [PATCH BlueZ 4/6] btdev: Use Linux Foundation as manufacturer Luiz Augusto von Dentz
@ 2021-10-20 21:48 ` Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 6/6] emulator: Add initial support for MSFT vendor commands Luiz Augusto von Dentz
2021-10-20 22:34 ` [BlueZ,1/6] monitor/msft: Fix uuid.u128 format bluez.test.bot
5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This enables decoding MSFT extension with emulator instances since it
shall be the only one using Linux Foundation as manufacturer.
---
monitor/packet.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/monitor/packet.c b/monitor/packet.c
index 9b81cfc89..9030f2493 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -4021,6 +4021,15 @@ void packet_monitor(struct timeval *tv, struct ucred *cred,
*/
index_list[index].msft_opcode = 0xFCF0;
break;
+ case 1521:
+ /*
+ * Emulator controllers use Linux Foundation as
+ * manufacturer and support the
+ * Microsoft vendor extenions using
+ * 0xFC1E for VsMsftOpCode.
+ */
+ index_list[index].msft_opcode = 0xFC1E;
+ break;
}
}
--
2.31.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH BlueZ 6/6] emulator: Add initial support for MSFT vendor commands
2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
` (3 preceding siblings ...)
2021-10-20 21:48 ` [PATCH BlueZ 5/6] monitor: Enable decoding of MSFT extension with emulator Luiz Augusto von Dentz
@ 2021-10-20 21:48 ` Luiz Augusto von Dentz
2021-10-20 22:34 ` [BlueZ,1/6] monitor/msft: Fix uuid.u128 format bluez.test.bot
5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds the initial support for MSFT vendor commands and enable them
when in btvirt:
< HCI Command: Microsoft Ex.. (0x3f|0x001e) plen 1
Read Supported Features (0x00)
> HCI Event: Command Complete (0x0e) plen 14
Microsoft Extension (0x3f|0x001e) ncmd 1
Read Supported Features (0x00)
Status: Success (0x00)
Features: 0x3f 0x00 0x00 0x00 0x00 0x00 0x00 0x00
RSSI Monitoring feature for BR/EDR
RSSI Monitoring feature for LE connections
RSSI Monitoring of LE advertisements
Advertising Monitoring of LE advertisements
Verifying the validity of P-192 and P-256 keys
Continuous Advertising Monitoring
Event prefix length: 0
Event prefix:
< HCI Command: Microsoft Ex.. (0x3f|0x001e) plen 2
LE Set Advertisement Filter Enable (0x05)
Enable: All filter conditions (0x01)
> HCI Event: Command Complete (0x0e) plen 5
Microsoft Extension (0x3f|0x001e) ncmd 1
LE Set Advertisement Filter Enable (0x05)
Status: Success (0x00)
---
emulator/btdev.c | 245 ++++++++++++++++++++++++++++++++++++++++++-----
emulator/main.c | 2 +
2 files changed, 223 insertions(+), 24 deletions(-)
diff --git a/emulator/btdev.c b/emulator/btdev.c
index 18aefed11..096ba2da4 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -33,6 +33,7 @@
#include "src/shared/ecc.h"
#include "src/shared/queue.h"
#include "monitor/bt.h"
+#include "monitor/msft.h"
#include "btdev.h"
#define AL_SIZE 16
@@ -139,6 +140,7 @@ struct btdev {
uint8_t le_states[8];
const struct btdev_cmd *cmds;
uint16_t msft_opcode;
+ const struct btdev_cmd *msft_cmds;
bool aosp_capable;
uint16_t default_link_policy;
@@ -6440,41 +6442,76 @@ static void num_completed_packets(struct btdev *btdev, uint16_t handle)
}
}
+static const struct btdev_cmd *run_cmd(struct btdev *btdev,
+ const struct btdev_cmd *cmd,
+ const void *data, uint8_t len)
+{
+ uint8_t status = BT_HCI_ERR_UNKNOWN_COMMAND;
+ int err;
+
+ err = cmd->func(btdev, data, len);
+ switch (err) {
+ case 0:
+ return cmd;
+ case -ENOTSUP:
+ status = BT_HCI_ERR_UNKNOWN_COMMAND;
+ break;
+ case -EINVAL:
+ status = BT_HCI_ERR_INVALID_PARAMETERS;
+ break;
+ case -EPERM:
+ status = BT_HCI_ERR_COMMAND_DISALLOWED;
+ break;
+ default:
+ status = BT_HCI_ERR_UNSPECIFIED_ERROR;
+ break;
+ }
+
+ cmd_status(btdev, status, cmd->opcode);
+
+ return NULL;
+}
+
+static const struct btdev_cmd *msft_cmd(struct btdev *btdev, const void *data,
+ uint8_t len)
+{
+ const struct btdev_cmd *cmd;
+
+ for (cmd = btdev->msft_cmds; cmd->func; cmd++) {
+ if (cmd->opcode != ((uint8_t *)data)[0])
+ continue;
+
+ return run_cmd(btdev, cmd, data, len);
+ }
+
+ util_debug(btdev->debug_callback, btdev->debug_data,
+ "Unsupported MSFT subcommand 0x%2.2x\n",
+ ((uint8_t *)data)[0]);
+
+ cmd_status(btdev, BT_HCI_ERR_UNKNOWN_COMMAND, btdev->msft_opcode);
+
+ return NULL;
+}
+
static const struct btdev_cmd *default_cmd(struct btdev *btdev, uint16_t opcode,
const void *data, uint8_t len)
{
const struct btdev_cmd *cmd;
- uint8_t status = BT_HCI_ERR_UNKNOWN_COMMAND;
- int err;
+
+ if (btdev->msft_opcode == opcode)
+ return msft_cmd(btdev, data, len);
for (cmd = btdev->cmds; cmd->func; cmd++) {
if (cmd->opcode != opcode)
continue;
- err = cmd->func(btdev, data, len);
- switch (err) {
- case 0:
- return cmd;
- case -ENOTSUP:
- status = BT_HCI_ERR_UNKNOWN_COMMAND;
- goto failed;
- case -EINVAL:
- status = BT_HCI_ERR_INVALID_PARAMETERS;
- goto failed;
- case -EPERM:
- status = BT_HCI_ERR_COMMAND_DISALLOWED;
- goto failed;
- default:
- status = BT_HCI_ERR_UNSPECIFIED_ERROR;
- goto failed;
- }
+ return run_cmd(btdev, cmd, data, len);
}
util_debug(btdev->debug_callback, btdev->debug_data,
"Unsupported command 0x%4.4x\n", opcode);
-failed:
- cmd_status(btdev, status, opcode);
+ cmd_status(btdev, BT_HCI_ERR_UNKNOWN_COMMAND, opcode);
return NULL;
}
@@ -6719,14 +6756,174 @@ bool btdev_del_hook(struct btdev *btdev, enum btdev_hook_type type,
return false;
}
+static int cmd_msft_read_features(struct btdev *dev, const void *data,
+ uint8_t len)
+{
+ struct msft_rsp_read_supported_features rsp;
+
+ memset(&rsp, 0, sizeof(rsp));
+ rsp.status = BT_HCI_ERR_SUCCESS;
+ rsp.subcmd = MSFT_SUBCMD_READ_SUPPORTED_FEATURES;
+ rsp.features[0] = MSFT_MONITOR_BREDR_RSSI | MSFT_MONITOR_LE_RSSI |
+ MSFT_MONITOR_LE_LEGACY_RSSI |
+ MSFT_MONITOR_LE_ADV |
+ MSFT_MONITOR_SSP_VALIDATION |
+ MSFT_MONITOR_LE_ADV_CONTINUOS;
+
+ cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+ return 0;
+}
+
+static int cmd_msft_monitor_rssi(struct btdev *dev, const void *data,
+ uint8_t len)
+{
+ const struct msft_cmd_monitor_rssi *cmd = data;
+ struct msft_rsp_monitor_rssi rsp;
+ struct btdev_conn *conn;
+
+ memset(&rsp, 0, sizeof(rsp));
+ rsp.status = BT_HCI_ERR_SUCCESS;
+ rsp.subcmd = MSFT_SUBCMD_MONITOR_RSSI;
+
+ conn = queue_find(dev->conns, match_handle,
+ UINT_TO_PTR(le16_to_cpu(cmd->handle)));
+ if (!conn)
+ rsp.status = BT_HCI_ERR_UNKNOWN_CONN_ID;
+
+ cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+ return 0;
+}
+
+static int cmd_msft_cancel_monitor_rssi(struct btdev *dev, const void *data,
+ uint8_t len)
+{
+ const struct msft_cmd_cancel_monitor_rssi *cmd = data;
+ struct msft_rsp_cancel_monitor_rssi rsp;
+ struct btdev_conn *conn;
+
+ memset(&rsp, 0, sizeof(rsp));
+ rsp.status = BT_HCI_ERR_SUCCESS;
+ rsp.subcmd = MSFT_SUBCMD_CANCEL_MONITOR_RSSI;
+
+ conn = queue_find(dev->conns, match_handle,
+ UINT_TO_PTR(le16_to_cpu(cmd->handle)));
+ if (!conn)
+ rsp.status = BT_HCI_ERR_UNKNOWN_CONN_ID;
+
+ cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+ return 0;
+}
+
+static int cmd_msft_le_monitor_adv(struct btdev *dev, const void *data,
+ uint8_t len)
+{
+ const struct msft_cmd_le_monitor_adv *cmd = data;
+ struct msft_rsp_le_monitor_adv rsp;
+ static uint8_t handle;
+
+ memset(&rsp, 0, sizeof(rsp));
+ rsp.status = BT_HCI_ERR_SUCCESS;
+ rsp.subcmd = MSFT_SUBCMD_LE_MONITOR_ADV;
+
+ switch (cmd->type) {
+ case MSFT_LE_MONITOR_ADV_PATTERN:
+ case MSFT_LE_MONITOR_ADV_UUID:
+ case MSFT_LE_MONITOR_ADV_IRK:
+ case MSFT_LE_MONITOR_ADV_ADDR:
+ rsp.handle = handle++;
+ break;
+ default:
+ rsp.status = BT_HCI_ERR_INVALID_PARAMETERS;
+ break;
+ }
+
+ cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+ return 0;
+}
+
+static int cmd_msft_le_cancel_monitor_adv(struct btdev *dev, const void *data,
+ uint8_t len)
+{
+ struct msft_rsp_le_cancel_monitor_adv rsp;
+
+ memset(&rsp, 0, sizeof(rsp));
+ rsp.status = BT_HCI_ERR_SUCCESS;
+ rsp.subcmd = MSFT_SUBCMD_LE_CANCEL_MONITOR_ADV;
+
+ cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+ return 0;
+}
+
+static int cmd_msft_le_monitor_adv_enable(struct btdev *dev, const void *data,
+ uint8_t len)
+{
+ struct msft_rsp_le_cancel_monitor_adv rsp;
+
+ memset(&rsp, 0, sizeof(rsp));
+ rsp.status = BT_HCI_ERR_SUCCESS;
+ rsp.subcmd = MSFT_SUBCMD_LE_MONITOR_ADV_ENABLE;
+
+ cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+ return 0;
+}
+
+static int cmd_msft_read_abs_rssi(struct btdev *dev, const void *data,
+ uint8_t len)
+{
+ struct msft_rsp_read_abs_rssi rsp;
+
+ memset(&rsp, 0, sizeof(rsp));
+ rsp.status = BT_HCI_ERR_SUCCESS;
+ rsp.subcmd = MSFT_SUBCMD_READ_ABS_RSSI;
+
+ cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+ return 0;
+}
+
+#define CMD_MSFT \
+ CMD(MSFT_SUBCMD_READ_SUPPORTED_FEATURES, cmd_msft_read_features, \
+ NULL), \
+ CMD(MSFT_SUBCMD_MONITOR_RSSI, cmd_msft_monitor_rssi, NULL), \
+ CMD(MSFT_SUBCMD_CANCEL_MONITOR_RSSI, cmd_msft_cancel_monitor_rssi, \
+ NULL), \
+ CMD(MSFT_SUBCMD_LE_MONITOR_ADV, cmd_msft_le_monitor_adv, NULL), \
+ CMD(MSFT_SUBCMD_LE_CANCEL_MONITOR_ADV, cmd_msft_le_cancel_monitor_adv, \
+ NULL), \
+ CMD(MSFT_SUBCMD_LE_MONITOR_ADV_ENABLE, cmd_msft_le_monitor_adv_enable, \
+ NULL), \
+ CMD(MSFT_SUBCMD_READ_ABS_RSSI, cmd_msft_read_abs_rssi, NULL)
+
+static const struct btdev_cmd cmd_msft[] = {
+ CMD_MSFT,
+ {}
+};
+
int btdev_set_msft_opcode(struct btdev *btdev, uint16_t opcode)
{
if (!btdev)
return -EINVAL;
- btdev->msft_opcode = opcode;
-
- return 0;
+ switch (btdev->type) {
+ case BTDEV_TYPE_BREDRLE:
+ case BTDEV_TYPE_BREDRLE50:
+ case BTDEV_TYPE_BREDRLE52:
+ btdev->msft_opcode = opcode;
+ btdev->msft_cmds = cmd_msft;
+ return 0;
+ case BTDEV_TYPE_BREDR:
+ case BTDEV_TYPE_LE:
+ case BTDEV_TYPE_AMP:
+ case BTDEV_TYPE_BREDR20:
+ default:
+ return -ENOTSUP;
+ }
}
int btdev_set_aosp_capable(struct btdev *btdev, bool enable)
diff --git a/emulator/main.c b/emulator/main.c
index f64d46a5e..3c215efbc 100644
--- a/emulator/main.c
+++ b/emulator/main.c
@@ -192,6 +192,8 @@ int main(int argc, char *argv[])
if (debug_enabled)
vhci_set_debug(vhci, vhci_debug, UINT_TO_PTR(i), NULL);
+
+ vhci_set_msft_opcode(vhci, 0xfc1e);
}
if (serial_enabled) {
--
2.31.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* RE: [BlueZ,1/6] monitor/msft: Fix uuid.u128 format
2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
` (4 preceding siblings ...)
2021-10-20 21:48 ` [PATCH BlueZ 6/6] emulator: Add initial support for MSFT vendor commands Luiz Augusto von Dentz
@ 2021-10-20 22:34 ` bluez.test.bot
5 siblings, 0 replies; 7+ messages in thread
From: bluez.test.bot @ 2021-10-20 22:34 UTC (permalink / raw)
To: linux-bluetooth, luiz.dentz
[-- Attachment #1: Type: text/plain, Size: 884 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=567367
---Test result---
Test Summary:
CheckPatch PASS 8.45 seconds
GitLint PASS 5.65 seconds
Prep - Setup ELL PASS 39.54 seconds
Build - Prep PASS 0.44 seconds
Build - Configure PASS 7.45 seconds
Build - Make PASS 169.13 seconds
Make Check PASS 9.24 seconds
Make Distcheck PASS 202.33 seconds
Build w/ext ELL - Configure PASS 7.73 seconds
Build w/ext ELL - Make PASS 156.56 seconds
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-10-20 22:35 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 2/6] monitor/msft: Add feature bits definition Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 3/6] emulator/vhci: Fix writing msft_opcode using binary format Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 4/6] btdev: Use Linux Foundation as manufacturer Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 5/6] monitor: Enable decoding of MSFT extension with emulator Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 6/6] emulator: Add initial support for MSFT vendor commands Luiz Augusto von Dentz
2021-10-20 22:34 ` [BlueZ,1/6] monitor/msft: Fix uuid.u128 format bluez.test.bot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.