Bluetooth: tester: Add directed adv support

GAP/CONN/DCON/BV-01-C test case needs directed advertising
support.

Signed-off-by: Ilhan Ates <ilhan.ates@nordicsemi.no>
This commit is contained in:
Ilhan Ates 2021-10-21 09:07:41 +02:00 committed by Carles Cufí
commit 69abe7de8c

View file

@ -157,6 +157,7 @@ static void supported_commands(uint8_t *data, uint16_t len)
tester_set_bit(cmds, GAP_SET_DISCOVERABLE);
tester_set_bit(cmds, GAP_SET_BONDABLE);
tester_set_bit(cmds, GAP_START_ADVERTISING);
tester_set_bit(cmds, GAP_START_DIRECTED_ADV);
tester_set_bit(cmds, GAP_STOP_ADVERTISING);
tester_set_bit(cmds, GAP_START_DISCOVERY);
tester_set_bit(cmds, GAP_STOP_DISCOVERY);
@ -488,6 +489,36 @@ fail:
BTP_STATUS_FAILED);
}
static void start_directed_advertising(const uint8_t *data, uint16_t len)
{
const struct gap_start_directed_adv_cmd *cmd = (void *)data;
struct gap_start_directed_adv_rp rp;
struct bt_le_adv_param adv_param;
adv_param = *BT_LE_ADV_CONN_DIR((bt_addr_le_t *)data);
if (cmd->high_duty == 0) {
adv_param.options |= BT_LE_ADV_OPT_DIR_MODE_LOW_DUTY;
adv_param.interval_max = BT_GAP_ADV_FAST_INT_MAX_2;
adv_param.interval_min = BT_GAP_ADV_FAST_INT_MIN_2;
}
if (bt_le_adv_start(&adv_param, NULL, 0, NULL, 0) < 0) {
LOG_ERR("Failed to start advertising");
goto fail;
}
atomic_set_bit(&current_settings, GAP_SETTINGS_ADVERTISING);
rp.current_settings = sys_cpu_to_le32(current_settings);
tester_send(BTP_SERVICE_ID_GAP, GAP_START_DIRECTED_ADV,
CONTROLLER_INDEX, (uint8_t *)&rp, sizeof(rp));
return;
fail:
tester_rsp(BTP_SERVICE_ID_GAP, GAP_START_DIRECTED_ADV, CONTROLLER_INDEX,
BTP_STATUS_FAILED);
}
static void stop_advertising(const uint8_t *data, uint16_t len)
{
struct gap_stop_advertising_rp rp;
@ -1069,6 +1100,9 @@ void tester_handle_gap(uint8_t opcode, uint8_t index, uint8_t *data,
case GAP_START_ADVERTISING:
start_advertising(data, len);
return;
case GAP_START_DIRECTED_ADV:
start_directed_advertising(data, len);
return;
case GAP_STOP_ADVERTISING:
stop_advertising(data, len);
return;