tools/mgmt-tester: Add support for experimental feature in setup
authorTedd Ho-Jeong An <tedd.an@intel.com>
Mon, 25 Oct 2021 20:31:20 +0000 (13:31 -0700)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 11 Mar 2022 13:38:37 +0000 (19:08 +0530)
This patch adds support for experimental feature in setup_settings
options.

Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
tools/mgmt-tester.c

index f490dc2..1ccce0a 100755 (executable)
@@ -260,6 +260,7 @@ struct generic_data {
        const uint16_t *setup_settings;
        bool setup_nobredr;
        bool setup_limited_discov;
+       const void *setup_exp_feat_param;
        uint16_t setup_expect_hci_command;
        const void *setup_expect_hci_param;
        uint8_t setup_expect_hci_len;
@@ -7222,6 +7223,7 @@ proceed:
                unsigned char privacy_param[] = { 0x01,
                        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
                        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
+               unsigned char set_exp_feat_param[17] = { 0x00 };
                unsigned char *param = simple_param;
                size_t param_size = sizeof(simple_param);
                mgmt_request_func_t func = NULL;
@@ -7250,14 +7252,30 @@ proceed:
                                memcpy(param, test->setup_discovery_param, 1);
                }
 
+               if (*cmd == MGMT_OP_SET_EXP_FEATURE) {
+                       if (test->setup_exp_feat_param) {
+                               memcpy(set_exp_feat_param,
+                                      test->setup_exp_feat_param, 17);
+                               param_size = sizeof(set_exp_feat_param);
+                               param = set_exp_feat_param;
+                       }
+               }
+
                if (*cmd == MGMT_OP_SET_LE && test->setup_nobredr) {
                        unsigned char off[] = { 0x00 };
+                       tester_print("Setup sending %s (0x%04x)",
+                                                       mgmt_opstr(*cmd), *cmd);
                        mgmt_send(data->mgmt, *cmd, data->mgmt_index,
                                        param_size, param, NULL, NULL, NULL);
+                       tester_print("Setup sending %s (0x%04x)",
+                                       mgmt_opstr(MGMT_OP_SET_BREDR),
+                                       MGMT_OP_SET_BREDR);
                        mgmt_send(data->mgmt, MGMT_OP_SET_BREDR,
                                        data->mgmt_index, sizeof(off), off,
                                        func, data, NULL);
                } else {
+                       tester_print("Setup sending %s (0x%04x)",
+                                                       mgmt_opstr(*cmd), *cmd);
                        mgmt_send(data->mgmt, *cmd, data->mgmt_index,
                                        param_size, param, func, data, NULL);
                }