mesh: Add random address to mesh HCI init
authorDaan Pape <daan@dptechnics.com>
Wed, 19 Aug 2020 08:28:22 +0000 (10:28 +0200)
committerAbhay Agarwal <ay.agarwal@samsung.com>
Mon, 28 Dec 2020 06:20:04 +0000 (11:50 +0530)
This prevents error 0x12 when enabling/disabling LE scans

Change-Id: I1e299724c2a6b7229005762b3e04b3267aaaeca5
Signed-off-by: anuj.bhumiya <anuj.bhumiya@samsung.com>
mesh/mesh-io-generic.c

index 08c6db8..92e69f6 100644 (file)
@@ -212,6 +212,7 @@ static void configure_hci(struct mesh_io_private *io)
        struct bt_hci_cmd_le_set_scan_parameters cmd;
        struct bt_hci_cmd_set_event_mask cmd_sem;
        struct bt_hci_cmd_le_set_event_mask cmd_slem;
+       struct bt_hci_cmd_le_set_random_address cmd_raddr;
 
        /* Set scan parameters */
        cmd.type = 0x00; /* Passive Scanning. No scanning PDUs shall be sent */
@@ -264,6 +265,10 @@ static void configure_hci(struct mesh_io_private *io)
        cmd_slem.mask[6] = 0x00;
        cmd_slem.mask[7] = 0x00;
 
+       /* Set LE random address */
+       l_getrandom(cmd_raddr.addr, 6);
+       cmd_raddr.addr[5] |= 0xc0;
+
 #ifdef TIZEN_FEATURE_BLUEZ_MODIFY
        if (!(io->use_raw)) {
                /* Reset Command in case of user channel */
@@ -293,6 +298,10 @@ static void configure_hci(struct mesh_io_private *io)
        bt_hci_send(io->hci, BT_HCI_CMD_LE_SET_EVENT_MASK, &cmd_slem,
                        sizeof(cmd_slem), hci_generic_callback, NULL, NULL);
 
+       /* Set LE random address */
+       bt_hci_send(io->hci, BT_HCI_CMD_LE_SET_RANDOM_ADDRESS, &cmd_raddr,
+                       sizeof(cmd_raddr), hci_generic_callback, NULL, NULL);
+
        /* Scan Params */
        bt_hci_send(io->hci, BT_HCI_CMD_LE_SET_SCAN_PARAMETERS, &cmd,
                                sizeof(cmd), hci_generic_callback, NULL, NULL);