* [BlueZ PATCH 1/3] emulator/btdev: Enable LE Privacy feature
@ 2021-06-01 20:19 Tedd Ho-Jeong An
2021-06-01 20:19 ` [BlueZ PATCH 2/3] tools/mgmt-tester: Add tests for experimental feature command Tedd Ho-Jeong An
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Tedd Ho-Jeong An @ 2021-06-01 20:19 UTC (permalink / raw)
To: linux-bluetooth
From: Tedd Ho-Jeong An <tedd.an@intel.com>
This patch enables LE Privacy to support LL Privacy feature.
---
emulator/btdev.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/emulator/btdev.c b/emulator/btdev.c
index 692fabd71..13abad577 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -5415,6 +5415,7 @@ static void set_bredrle_features(struct btdev *btdev)
btdev->features[4] |= 0x80; /* 3 slot EDR ACL packets */
btdev->features[5] |= 0x01; /* 5 slot EDR ACL packets */
+ btdev->le_features[0] |= 0x40; /* LE PRIVACY */
btdev->le_features[1] |= 0x01; /* LE 2M PHY */
btdev->le_features[1] |= 0x08; /* LE Coded PHY */
btdev->le_features[1] |= 0x10; /* LE EXT ADV */
--
2.26.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [BlueZ PATCH 2/3] tools/mgmt-tester: Add tests for experimental feature command
2021-06-01 20:19 [BlueZ PATCH 1/3] emulator/btdev: Enable LE Privacy feature Tedd Ho-Jeong An
@ 2021-06-01 20:19 ` Tedd Ho-Jeong An
2021-06-01 20:19 ` [BlueZ PATCH 3/3] tools/mgmt-tester: Add tests for whitelist and resolving list Tedd Ho-Jeong An
2021-06-01 21:11 ` [BlueZ,1/3] emulator/btdev: Enable LE Privacy feature bluez.test.bot
2 siblings, 0 replies; 4+ messages in thread
From: Tedd Ho-Jeong An @ 2021-06-01 20:19 UTC (permalink / raw)
To: linux-bluetooth
From: Tedd Ho-Jeong An <tedd.an@intel.com>
This patch adds test cases for Read/Set Experimenal Feature commands.
---
tools/mgmt-tester.c | 139 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 138 insertions(+), 1 deletion(-)
diff --git a/tools/mgmt-tester.c b/tools/mgmt-tester.c
index 4550d6e9c..0d7c6b9e1 100644
--- a/tools/mgmt-tester.c
+++ b/tools/mgmt-tester.c
@@ -6837,7 +6837,7 @@ static void command_generic_callback(uint8_t status, uint16_t length,
expect_param = test->expect_func(&expect_len);
if (length != expect_len) {
- tester_warn("Invalid cmd response parameter size");
+ tester_warn("Invalid cmd response parameter size: %d", length);
tester_test_failed();
return;
}
@@ -9124,6 +9124,100 @@ static const struct generic_data set_dev_flags_fail_3 = {
.expect_len = sizeof(set_dev_flags_rsp_param_fail_3),
};
+static const uint8_t read_exp_feat_param_success[] = {
+ 0x02, 0x00, /* Feature Count */
+ 0xd6, 0x49, 0xb0, 0xd1, 0x28, 0xeb, /* UUID - Simultaneous */
+ 0x27, 0x92, 0x96, 0x46, 0xc0, 0x42, /* Central Peripheral */
+ 0xb5, 0x10, 0x1b, 0x67,
+ 0x00, 0x00, 0x00, 0x00, /* Flags */
+ 0x04, 0x00, 0x13, 0xac, 0x42, 0x02, /* UUID - LL Privacy */
+ 0xde, 0xb3, 0xea, 0x11, 0x73, 0xc2,
+ 0x48, 0xa1, 0xc0, 0x15,
+ 0x02, 0x00, 0x00, 0x00, /* Flags */
+};
+
+static const struct generic_data read_exp_feat_success = {
+ .send_opcode = MGMT_OP_READ_EXP_FEATURES_INFO,
+ .expect_status = MGMT_STATUS_SUCCESS,
+ .expect_param = read_exp_feat_param_success,
+ .expect_len = sizeof(read_exp_feat_param_success),
+};
+
+static uint16_t settings_powered_le_privacy[] = { MGMT_OP_SET_LE,
+ MGMT_OP_SET_PRIVACY,
+ MGMT_OP_SET_POWERED, 0 };
+
+static const uint8_t set_exp_feat_param_ll_privacy[] = {
+ 0x04, 0x00, 0x13, 0xac, 0x42, 0x02, /* UUID - LL Privacy */
+ 0xde, 0xb3, 0xea, 0x11, 0x73, 0xc2,
+ 0x48, 0xa1, 0xc0, 0x15,
+ 0x01, /* Action - enable */
+};
+
+static const uint8_t set_exp_feat_rsp_param_ll_privacy[] = {
+ 0x04, 0x00, 0x13, 0xac, 0x42, 0x02, /* UUID - LL Privacy */
+ 0xde, 0xb3, 0xea, 0x11, 0x73, 0xc2,
+ 0x48, 0xa1, 0xc0, 0x15,
+ 0x03, 0x00, 0x00, 0x00, /* Action - enable */
+};
+
+static const struct generic_data set_exp_feat_enable_ll_privacy = {
+ .send_opcode = MGMT_OP_SET_EXP_FEATURE,
+ .send_param = set_exp_feat_param_ll_privacy,
+ .send_len = sizeof(set_exp_feat_param_ll_privacy),
+ .expect_status = MGMT_STATUS_SUCCESS,
+ .expect_param = set_exp_feat_rsp_param_ll_privacy,
+ .expect_len = sizeof(set_exp_feat_rsp_param_ll_privacy),
+};
+
+static const uint8_t set_exp_feat_param_disable[17] = { 0x00 };
+static const uint8_t set_exp_feat_rsp_param_disable[20] = { 0x00 };
+
+static const struct generic_data set_exp_feat_disable = {
+ .send_opcode = MGMT_OP_SET_EXP_FEATURE,
+ .send_param = set_exp_feat_param_disable,
+ .send_len = sizeof(set_exp_feat_param_disable),
+ .expect_status = MGMT_STATUS_SUCCESS,
+ .expect_param = set_exp_feat_rsp_param_disable,
+ .expect_len = sizeof(set_exp_feat_rsp_param_disable),
+};
+
+static const struct generic_data set_exp_feat_rejected = {
+ .setup_settings = settings_powered_le_privacy,
+ .send_opcode = MGMT_OP_SET_EXP_FEATURE,
+ .send_param = set_exp_feat_param_ll_privacy,
+ .send_len = sizeof(set_exp_feat_param_ll_privacy),
+ .expect_status = MGMT_STATUS_REJECTED,
+};
+
+static const uint8_t set_exp_feat_param_invalid[] = {
+ 0x04, 0x00, 0x13, 0xac, 0x42, 0x02, /* UUID - LL Privacy */
+ 0xde, 0xb3, 0xea, 0x11, 0x73, 0xc2,
+ 0x48, 0xa1, 0xc0, 0x15,
+ 0xff, /* Action - invalid */
+};
+
+static const struct generic_data set_exp_feat_invalid = {
+ .send_opcode = MGMT_OP_SET_EXP_FEATURE,
+ .send_param = set_exp_feat_param_invalid,
+ .send_len = sizeof(set_exp_feat_param_invalid),
+ .expect_status = MGMT_STATUS_INVALID_PARAMS,
+};
+
+static const uint8_t set_exp_feat_param_unknown[] = {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* UUID - Unknown */
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff,
+ 0x01, /* Action - enable */
+};
+
+static const struct generic_data set_exp_feat_unknown = {
+ .send_opcode = MGMT_OP_SET_EXP_FEATURE,
+ .send_param = set_exp_feat_param_unknown,
+ .send_len = sizeof(set_exp_feat_param_unknown),
+ .expect_status = MGMT_STATUS_NOT_SUPPORTED,
+};
+
static bool power_off(uint16_t index)
{
int sk, err;
@@ -11192,5 +11286,48 @@ int main(int argc, char *argv[])
setup_get_dev_flags,
test_command_generic);
+ /* MGMT_OP_READ_EXP_FEATURE
+ * Read Experimental features - success
+ */
+ test_bredrle50("Read Exp Feature - Success",
+ &read_exp_feat_success,
+ NULL, test_command_generic);
+ /* MGMT_OP_SET_EXP_FEATURE
+ * Enable LL Privacy
+ */
+ test_bredrle50("Set Exp Feature - Enable LL Privacy",
+ &set_exp_feat_enable_ll_privacy,
+ NULL, test_command_generic);
+
+ /* MGMT_OP_SET_EXP_FEATURE
+ * Disable all features by sending zero UUID
+ */
+ test_bredrle50("Set Exp Feature - Disable all",
+ &set_exp_feat_disable,
+ NULL, test_command_generic);
+
+ /* MGMT_OP_SET_EXP_FEATURE
+ * Rejected - If the power is on, the command should be rejected
+ */
+ test_bredrle50("Set Exp Feature - Rejected",
+ &set_exp_feat_rejected,
+ NULL, test_command_generic);
+
+ /* MGMT_OP_SET_EXP_FEATURE
+ * Invalid parameter
+ */
+ test_bredrle50("Set Exp Feature - Invalid params",
+ &set_exp_feat_invalid,
+ NULL, test_command_generic);
+
+
+ /* MGMT_OP_SET_EXP_FEATURE
+ * Not Supported UUID
+ */
+ test_bredrle50("Set Exp Feature - Unknown feature",
+ &set_exp_feat_unknown,
+ NULL, test_command_generic);
+
+
return tester_run();
}
--
2.26.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [BlueZ PATCH 3/3] tools/mgmt-tester: Add tests for whitelist and resolving list
2021-06-01 20:19 [BlueZ PATCH 1/3] emulator/btdev: Enable LE Privacy feature Tedd Ho-Jeong An
2021-06-01 20:19 ` [BlueZ PATCH 2/3] tools/mgmt-tester: Add tests for experimental feature command Tedd Ho-Jeong An
@ 2021-06-01 20:19 ` Tedd Ho-Jeong An
2021-06-01 21:11 ` [BlueZ,1/3] emulator/btdev: Enable LE Privacy feature bluez.test.bot
2 siblings, 0 replies; 4+ messages in thread
From: Tedd Ho-Jeong An @ 2021-06-01 20:19 UTC (permalink / raw)
To: linux-bluetooth
From: Tedd Ho-Jeong An <tedd.an@intel.com>
This patch adds test cases for checking the whitelist and resolving list
HCI commands when the LL Privacy feature is enabled.
---
tools/mgmt-tester.c | 360 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 357 insertions(+), 3 deletions(-)
diff --git a/tools/mgmt-tester.c b/tools/mgmt-tester.c
index 0d7c6b9e1..d250e9600 100644
--- a/tools/mgmt-tester.c
+++ b/tools/mgmt-tester.c
@@ -2066,6 +2066,21 @@ static const struct generic_data start_discovery_valid_param_power_off_1 = {
.expect_len = sizeof(start_discovery_bredrle_param),
};
+static const char set_resolv_off_param[] = { 0x00 };
+static const char set_resolv_on_param[] = { 0x01 };
+
+static const struct generic_data start_discovery_ll_privacy_disable_resolv = {
+ .send_opcode = MGMT_OP_START_DISCOVERY,
+ .send_param = start_discovery_le_param,
+ .send_len = sizeof(start_discovery_le_param),
+ .expect_status = MGMT_STATUS_SUCCESS,
+ .expect_param = start_discovery_le_param,
+ .expect_len = sizeof(start_discovery_le_param),
+ .expect_hci_command = BT_HCI_CMD_LE_SET_RESOLV_ENABLE,
+ .expect_hci_param = set_resolv_off_param,
+ .expect_hci_len = sizeof(set_resolv_off_param),
+};
+
static const char stop_discovery_bredrle_param[] = { 0x07 };
static const char stop_discovery_bredrle_invalid_param[] = { 0x06 };
static const char stop_discovery_valid_hci[] = { 0x00, 0x00 };
@@ -4049,7 +4064,7 @@ static const struct generic_data add_device_success_1 = {
static const uint8_t add_device_success_param_2[] = {
0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc,
0x01,
- 0x00,
+ 0x02,
};
static const uint8_t add_device_rsp_le[] = {
0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc,
@@ -4117,6 +4132,65 @@ static const struct generic_data add_device_success_5 = {
.expect_hci_len = sizeof(le_scan_enable),
};
+static const uint8_t le_add_to_white_list_param[] = {
+ 0x00, /* Type */
+ 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, /* Address */
+};
+static const struct generic_data add_device_success_6 = {
+ .setup_settings = settings_powered_le,
+ .send_opcode = MGMT_OP_ADD_DEVICE,
+ .send_param = add_device_success_param_2,
+ .send_len = sizeof(add_device_success_param_2),
+ .expect_param = add_device_rsp_le,
+ .expect_len = sizeof(add_device_rsp_le),
+ .expect_status = MGMT_STATUS_SUCCESS,
+ .expect_alt_ev = MGMT_EV_DEVICE_ADDED,
+ .expect_alt_ev_param = add_device_success_param_2,
+ .expect_alt_ev_len = sizeof(add_device_success_param_2),
+ .expect_hci_command = BT_HCI_CMD_LE_ADD_TO_WHITE_LIST,
+ .expect_hci_param = le_add_to_white_list_param,
+ .expect_hci_len = sizeof(le_add_to_white_list_param),
+};
+
+static const uint8_t le_add_to_resolv_list_param[] = {
+ 0x00, /* Type */
+ 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, /* Address */
+ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, /* Peer IRK */
+ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, /* Local IRK */
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+};
+
+static const struct generic_data add_device_success_7 = {
+ .send_opcode = MGMT_OP_ADD_DEVICE,
+ .send_param = add_device_success_param_2,
+ .send_len = sizeof(add_device_success_param_2),
+ .expect_param = add_device_rsp_le,
+ .expect_len = sizeof(add_device_rsp_le),
+ .expect_status = MGMT_STATUS_SUCCESS,
+ .expect_alt_ev = MGMT_EV_DEVICE_ADDED,
+ .expect_alt_ev_param = add_device_success_param_2,
+ .expect_alt_ev_len = sizeof(add_device_success_param_2),
+ .expect_hci_command = BT_HCI_CMD_LE_ADD_TO_RESOLV_LIST,
+ .expect_hci_param = le_add_to_resolv_list_param,
+ .expect_hci_len = sizeof(le_add_to_resolv_list_param),
+};
+
+static const struct generic_data add_device_success_8 = {
+ .send_opcode = MGMT_OP_ADD_DEVICE,
+ .send_param = add_device_success_param_2,
+ .send_len = sizeof(add_device_success_param_2),
+ .expect_param = add_device_rsp_le,
+ .expect_len = sizeof(add_device_rsp_le),
+ .expect_status = MGMT_STATUS_SUCCESS,
+ .expect_alt_ev = MGMT_EV_DEVICE_ADDED,
+ .expect_alt_ev_param = add_device_success_param_2,
+ .expect_alt_ev_len = sizeof(add_device_success_param_2),
+ .expect_hci_command = BT_HCI_CMD_LE_SET_RESOLV_ENABLE,
+ .expect_hci_param = set_resolv_on_param,
+ .expect_hci_len = sizeof(set_resolv_on_param),
+};
+
static const uint8_t remove_device_nval_1[] = {
0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc,
0xff,
@@ -4225,6 +4299,47 @@ static const struct generic_data remove_device_success_5 = {
.expect_alt_ev_len = sizeof(remove_device_param_2),
};
+static const uint8_t remove_device_param_all[7] = { 0x00 };
+
+static const struct generic_data remove_device_success_6 = {
+ .send_opcode = MGMT_OP_REMOVE_DEVICE,
+ .send_param = remove_device_param_all,
+ .send_len = sizeof(remove_device_param_all),
+ .expect_param = remove_device_param_all,
+ .expect_len = sizeof(remove_device_param_all),
+ .expect_status = MGMT_STATUS_SUCCESS,
+};
+
+static const struct generic_data remove_device_success_7 = {
+ .send_opcode = MGMT_OP_REMOVE_DEVICE,
+ .send_param = remove_device_param_2,
+ .send_len = sizeof(remove_device_param_2),
+ .expect_param = remove_device_param_2,
+ .expect_len = sizeof(remove_device_param_2),
+ .expect_status = MGMT_STATUS_SUCCESS,
+ .expect_hci_command = BT_HCI_CMD_LE_REMOVE_FROM_WHITE_LIST,
+ .expect_hci_param = le_add_to_white_list_param,
+ .expect_hci_len = sizeof(le_add_to_white_list_param),
+ .expect_alt_ev = MGMT_EV_DEVICE_REMOVED,
+ .expect_alt_ev_param = remove_device_param_2,
+ .expect_alt_ev_len = sizeof(remove_device_param_2),
+};
+
+static const struct generic_data remove_device_success_8 = {
+ .send_opcode = MGMT_OP_REMOVE_DEVICE,
+ .send_param = remove_device_param_2,
+ .send_len = sizeof(remove_device_param_2),
+ .expect_param = remove_device_param_2,
+ .expect_len = sizeof(remove_device_param_2),
+ .expect_status = MGMT_STATUS_SUCCESS,
+ .expect_hci_command = BT_HCI_CMD_LE_REMOVE_FROM_RESOLV_LIST,
+ .expect_hci_param = le_add_to_white_list_param,
+ .expect_hci_len = sizeof(le_add_to_white_list_param),
+ .expect_alt_ev = MGMT_EV_DEVICE_REMOVED,
+ .expect_alt_ev_param = remove_device_param_2,
+ .expect_alt_ev_len = sizeof(remove_device_param_2),
+};
+
static const struct generic_data read_adv_features_invalid_param_test = {
.send_opcode = MGMT_OP_READ_ADV_FEATURES,
.send_param = dummy_data,
@@ -6870,7 +6985,7 @@ static void command_setup_hci_callback(uint16_t opcode, const void *param,
return;
if (length != setup_expect_hci_len) {
- tester_warn("Invalid parameter size for HCI command");
+ tester_warn("Invalid parameter size for HCI command (%d)", length);
tester_test_failed();
return;
}
@@ -6903,7 +7018,7 @@ static void command_hci_callback(uint16_t opcode, const void *param,
expect_hci_param = test->expect_hci_func(&expect_hci_len);
if (length != expect_hci_len) {
- tester_warn("Invalid parameter size for HCI command");
+ tester_warn("Invalid parameter size for HCI command (%d)", length);
tester_test_failed();
return;
}
@@ -9218,6 +9333,201 @@ static const struct generic_data set_exp_feat_unknown = {
.expect_status = MGMT_STATUS_NOT_SUPPORTED,
};
+static const char load_irks_params[] = { 0x01, 0x00,
+ 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0x01,
+ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
+ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88 };
+
+
+static void setup_load_irks_callback(uint8_t status, uint16_t length,
+ const void *param, void *user_data)
+{
+ if (status != MGMT_STATUS_SUCCESS) {
+ tester_setup_failed();
+ return;
+ }
+
+ tester_print("Load IRK completed");
+}
+
+static void setup_exp_feat_callback(uint8_t status, uint16_t length,
+ const void *param, void *user_data)
+{
+ if (status != MGMT_STATUS_SUCCESS) {
+ tester_setup_failed();
+ return;
+ }
+
+ tester_print("LL Privacy Exp feature is enabled");
+}
+
+static void setup_ll_privacy(const void *test_data)
+{
+ struct test_data *data = tester_get_data();
+ unsigned char param[] = { 0x01 };
+ const uint8_t *ext_feat_param;
+ size_t ext_feat_len;
+ const char *irk_param;
+ size_t irk_len;
+ unsigned char privacy_param[] = { 0x01,
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
+
+ tester_print("Enabling LL Privacy feature");
+
+ ext_feat_param = set_exp_feat_param_ll_privacy;
+ ext_feat_len = sizeof(set_exp_feat_param_ll_privacy);
+
+ irk_param = load_irks_params;
+ irk_len = sizeof(load_irks_params);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_LE, data->mgmt_index,
+ sizeof(param), ¶m,
+ NULL, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_PRIVACY, data->mgmt_index,
+ sizeof(privacy_param), privacy_param,
+ NULL, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_LOAD_IRKS, data->mgmt_index,
+ irk_len, irk_param,
+ setup_load_irks_callback, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_EXP_FEATURE , data->mgmt_index,
+ ext_feat_len, ext_feat_param,
+ setup_exp_feat_callback, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_POWERED, data->mgmt_index,
+ sizeof(param), param,
+ setup_powered_callback, NULL, NULL);
+
+}
+
+static void setup_add_device_callback(uint8_t status, uint16_t length,
+ const void *param, void *user_data)
+{
+ if (status != MGMT_STATUS_SUCCESS) {
+ tester_setup_failed();
+ return;
+ }
+
+ tester_print("New Device is Added");
+}
+
+static void setup_ll_privacy_device(const void *test_data)
+{
+ struct test_data *data = tester_get_data();
+ unsigned char param[] = { 0x01 };
+ const uint8_t *ext_feat_param;
+ size_t ext_feat_len;
+ const char *irk_param;
+ size_t irk_len;
+ const uint8_t *dev_param;
+ size_t dev_len;
+ unsigned char privacy_param[] = { 0x01,
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
+
+ tester_print("Enabling LL Privacy feature");
+
+ ext_feat_param = set_exp_feat_param_ll_privacy;
+ ext_feat_len = sizeof(set_exp_feat_param_ll_privacy);
+
+ irk_param = load_irks_params;
+ irk_len = sizeof(load_irks_params);
+
+ dev_param = add_device_success_param_2;
+ dev_len = sizeof(add_device_success_param_2);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_LE, data->mgmt_index,
+ sizeof(param), ¶m,
+ NULL, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_PRIVACY, data->mgmt_index,
+ sizeof(privacy_param), privacy_param,
+ NULL, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_LOAD_IRKS, data->mgmt_index,
+ irk_len, irk_param,
+ setup_load_irks_callback, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_EXP_FEATURE , data->mgmt_index,
+ ext_feat_len, ext_feat_param,
+ setup_exp_feat_callback, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_ADD_DEVICE, data->mgmt_index,
+ dev_len, dev_param,
+ setup_add_device_callback, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_POWERED, data->mgmt_index,
+ sizeof(param), param,
+ setup_powered_callback, NULL, NULL);
+}
+
+static const uint8_t add_device_success_param_4[] = {
+ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,
+ 0x01,
+ 0x02,
+};
+
+/* Enable LL Privacy and Add 2 devices */
+static void setup_ll_privacy_device2(const void *test_data)
+{
+ struct test_data *data = tester_get_data();
+ unsigned char param[] = { 0x01 };
+ const uint8_t *ext_feat_param;
+ size_t ext_feat_len;
+ const char *irk_param;
+ size_t irk_len;
+ const uint8_t *dev_param, *dev2_param;
+ size_t dev_len, dev2_len;
+ unsigned char privacy_param[] = { 0x01,
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
+
+ tester_print("Enabling LL Privacy feature");
+
+ ext_feat_param = set_exp_feat_param_ll_privacy;
+ ext_feat_len = sizeof(set_exp_feat_param_ll_privacy);
+
+ irk_param = load_irks_params;
+ irk_len = sizeof(load_irks_params);
+
+ dev_param = add_device_success_param_2;
+ dev_len = sizeof(add_device_success_param_2);
+
+ dev2_param = add_device_success_param_4;
+ dev2_len = sizeof(add_device_success_param_4);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_LE, data->mgmt_index,
+ sizeof(param), ¶m,
+ NULL, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_PRIVACY, data->mgmt_index,
+ sizeof(privacy_param), privacy_param,
+ NULL, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_LOAD_IRKS, data->mgmt_index,
+ irk_len, irk_param,
+ setup_load_irks_callback, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_EXP_FEATURE , data->mgmt_index,
+ ext_feat_len, ext_feat_param,
+ setup_exp_feat_callback, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_ADD_DEVICE, data->mgmt_index,
+ dev_len, dev_param,
+ setup_add_device_callback, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_ADD_DEVICE, data->mgmt_index,
+ dev2_len, dev2_param,
+ setup_add_device_callback, NULL, NULL);
+
+ mgmt_send(data->mgmt, MGMT_OP_SET_POWERED, data->mgmt_index,
+ sizeof(param), param,
+ setup_powered_callback, NULL, NULL);
+}
+
static bool power_off(uint16_t index)
{
int sk, err;
@@ -10090,6 +10400,13 @@ int main(int argc, char *argv[])
test_bredrle("Start Discovery - Power Off 1",
&start_discovery_valid_param_power_off_1,
NULL, test_command_generic);
+ /* MGMT_OP_START_DISCOVERY
+ * Check if the resolving list is disabled before the scan parameter is
+ * changed.
+ */
+ test_bredrle50("Start Discovery - Disable Resolve List",
+ &start_discovery_ll_privacy_disable_resolv,
+ setup_ll_privacy_device, test_command_generic);
test_bredrle("Stop Discovery - Success 1",
&stop_discovery_success_test_1,
@@ -10489,6 +10806,26 @@ int main(int argc, char *argv[])
test_bredrle("Add Device - Success 5",
&add_device_success_5,
NULL, test_command_generic);
+ /* MGMT_OP_ADD_DEVICE
+ * Add device and check the device is added to the whitelist
+ */
+ test_bredrle50("Add Device - Success 6 - Add to whitelist",
+ &add_device_success_6,
+ NULL, test_command_generic);
+ /* MGMT_OP_ADD_DEVICE
+ * Add device and check the device is added to the resolve list
+ * when the LL Privacy is enabled
+ */
+ test_bredrle50("Add Device - Success 7 - Add to resolv list",
+ &add_device_success_7,
+ setup_ll_privacy, test_command_generic);
+ /* MGMT_OP_ADD_DEVICE
+ * Add device and check the Resolving List is enabled for the device
+ * when the LL Privacy is enabled
+ */
+ test_bredrle50("Add Device - Success 8 - Enable resolv list",
+ &add_device_success_8,
+ setup_ll_privacy, test_command_generic);
test_bredrle("Remove Device - Invalid Params 1",
&remove_device_fail_1,
@@ -10514,6 +10851,23 @@ int main(int argc, char *argv[])
test_le("Remove Device - Success 5",
&remove_device_success_5,
setup_add_device, test_remove_device);
+ test_le("Remove Device - Success 6 - All Devices",
+ &remove_device_success_6,
+ setup_add_device, test_remove_device);
+ /* MGMT_OP_REMOVE_DEVICE
+ * Remove the device and check the device is removed from the whilte
+ * list as well.
+ */
+ test_bredrle50("Remove Device - Success 7 - Remove from whitelist",
+ &remove_device_success_7,
+ setup_ll_privacy_device2, test_command_generic);
+ /* MGMT_OP_REMOVE_DEVICE
+ * Remove the device and check the device is removed from the resolving
+ * list as well when the LL Privacy is enabled.
+ */
+ test_bredrle50("Remove Device - Success 8 - Remove from resolv list",
+ &remove_device_success_8,
+ setup_ll_privacy_device2, test_command_generic);
test_bredrle("Read Advertising Features - Invalid parameters",
&read_adv_features_invalid_param_test,
--
2.26.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* RE: [BlueZ,1/3] emulator/btdev: Enable LE Privacy feature
2021-06-01 20:19 [BlueZ PATCH 1/3] emulator/btdev: Enable LE Privacy feature Tedd Ho-Jeong An
2021-06-01 20:19 ` [BlueZ PATCH 2/3] tools/mgmt-tester: Add tests for experimental feature command Tedd Ho-Jeong An
2021-06-01 20:19 ` [BlueZ PATCH 3/3] tools/mgmt-tester: Add tests for whitelist and resolving list Tedd Ho-Jeong An
@ 2021-06-01 21:11 ` bluez.test.bot
2 siblings, 0 replies; 4+ messages in thread
From: bluez.test.bot @ 2021-06-01 21:11 UTC (permalink / raw)
To: linux-bluetooth, hj.tedd.an
[-- Attachment #1: Type: text/plain, Size: 4414 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=492055
---Test result---
Test Summary:
CheckPatch FAIL 1.00 seconds
GitLint PASS 0.32 seconds
Prep - Setup ELL PASS 41.00 seconds
Build - Prep PASS 0.10 seconds
Build - Configure PASS 7.22 seconds
Build - Make PASS 176.73 seconds
Make Check PASS 9.25 seconds
Make Distcheck PASS 208.95 seconds
Build w/ext ELL - Configure PASS 7.20 seconds
Build w/ext ELL - Make PASS 165.59 seconds
Details
##############################
Test: CheckPatch - FAIL
Desc: Run checkpatch.pl script with rule in .checkpatch.conf
Output:
tools/mgmt-tester: Add tests for experimental feature command
WARNING:LONG_LINE: line length of 87 exceeds 80 columns
#17: FILE: tools/mgmt-tester.c:6840:
+ tester_warn("Invalid cmd response parameter size: %d", length);
- total: 0 errors, 1 warnings, 156 lines checked
NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.
"[PATCH] tools/mgmt-tester: Add tests for experimental feature command" has style problems, please review.
NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO
NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
tools/mgmt-tester: Add tests for whitelist and resolving list
WARNING:LONG_LINE: line length of 83 exceeds 80 columns
#163: FILE: tools/mgmt-tester.c:6988:
+ tester_warn("Invalid parameter size for HCI command (%d)", length);
WARNING:LONG_LINE: line length of 83 exceeds 80 columns
#172: FILE: tools/mgmt-tester.c:7021:
+ tester_warn("Invalid parameter size for HCI command (%d)", length);
ERROR:SPACING: space prohibited before that ',' (ctx:WxW)
#240: FILE: tools/mgmt-tester.c:9396:
+ mgmt_send(data->mgmt, MGMT_OP_SET_EXP_FEATURE , data->mgmt_index,
^
ERROR:SPACING: space prohibited before that ',' (ctx:WxW)
#298: FILE: tools/mgmt-tester.c:9454:
+ mgmt_send(data->mgmt, MGMT_OP_SET_EXP_FEATURE , data->mgmt_index,
^
ERROR:SPACING: space prohibited before that ',' (ctx:WxW)
#358: FILE: tools/mgmt-tester.c:9514:
+ mgmt_send(data->mgmt, MGMT_OP_SET_EXP_FEATURE , data->mgmt_index,
^
- total: 3 errors, 2 warnings, 420 lines checked
NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.
"[PATCH] tools/mgmt-tester: Add tests for whitelist and resolving list" has style problems, please review.
NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO
NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
##############################
Test: GitLint - PASS
Desc: Run gitlint with rule in .gitlint
##############################
Test: Prep - Setup ELL - PASS
Desc: Clone, build, and install ELL
##############################
Test: Build - Prep - PASS
Desc: Prepare environment for build
##############################
Test: Build - Configure - PASS
Desc: Configure the BlueZ source tree
##############################
Test: Build - Make - PASS
Desc: Build the BlueZ source tree
##############################
Test: Make Check - PASS
Desc: Run 'make check'
##############################
Test: Make Distcheck - PASS
Desc: Run distcheck to check the distribution
##############################
Test: Build w/ext ELL - Configure - PASS
Desc: Configure BlueZ source with '--enable-external-ell' configuration
##############################
Test: Build w/ext ELL - Make - PASS
Desc: Build BlueZ source with '--enable-external-ell' configuration
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-06-01 21:11 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-06-01 20:19 [BlueZ PATCH 1/3] emulator/btdev: Enable LE Privacy feature Tedd Ho-Jeong An
2021-06-01 20:19 ` [BlueZ PATCH 2/3] tools/mgmt-tester: Add tests for experimental feature command Tedd Ho-Jeong An
2021-06-01 20:19 ` [BlueZ PATCH 3/3] tools/mgmt-tester: Add tests for whitelist and resolving list Tedd Ho-Jeong An
2021-06-01 21:11 ` [BlueZ,1/3] emulator/btdev: Enable LE Privacy feature bluez.test.bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).