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:
parent
d7b37d8cc8
commit
69abe7de8c
1 changed files with 34 additions and 0 deletions
|
@ -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_DISCOVERABLE);
|
||||||
tester_set_bit(cmds, GAP_SET_BONDABLE);
|
tester_set_bit(cmds, GAP_SET_BONDABLE);
|
||||||
tester_set_bit(cmds, GAP_START_ADVERTISING);
|
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_STOP_ADVERTISING);
|
||||||
tester_set_bit(cmds, GAP_START_DISCOVERY);
|
tester_set_bit(cmds, GAP_START_DISCOVERY);
|
||||||
tester_set_bit(cmds, GAP_STOP_DISCOVERY);
|
tester_set_bit(cmds, GAP_STOP_DISCOVERY);
|
||||||
|
@ -488,6 +489,36 @@ fail:
|
||||||
BTP_STATUS_FAILED);
|
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(¤t_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)
|
static void stop_advertising(const uint8_t *data, uint16_t len)
|
||||||
{
|
{
|
||||||
struct gap_stop_advertising_rp rp;
|
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:
|
case GAP_START_ADVERTISING:
|
||||||
start_advertising(data, len);
|
start_advertising(data, len);
|
||||||
return;
|
return;
|
||||||
|
case GAP_START_DIRECTED_ADV:
|
||||||
|
start_directed_advertising(data, len);
|
||||||
|
return;
|
||||||
case GAP_STOP_ADVERTISING:
|
case GAP_STOP_ADVERTISING:
|
||||||
stop_advertising(data, len);
|
stop_advertising(data, len);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue