Skip to content

Commit 69abe7d

Browse files
ilhanatescarlescufi
authored andcommitted
Bluetooth: tester: Add directed adv support
GAP/CONN/DCON/BV-01-C test case needs directed advertising support. Signed-off-by: Ilhan Ates <[email protected]>
1 parent d7b37d8 commit 69abe7d

File tree

1 file changed

+34
-0
lines changed
  • tests/bluetooth/tester/src

1 file changed

+34
-0
lines changed

tests/bluetooth/tester/src/gap.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ static void supported_commands(uint8_t *data, uint16_t len)
157157
tester_set_bit(cmds, GAP_SET_DISCOVERABLE);
158158
tester_set_bit(cmds, GAP_SET_BONDABLE);
159159
tester_set_bit(cmds, GAP_START_ADVERTISING);
160+
tester_set_bit(cmds, GAP_START_DIRECTED_ADV);
160161
tester_set_bit(cmds, GAP_STOP_ADVERTISING);
161162
tester_set_bit(cmds, GAP_START_DISCOVERY);
162163
tester_set_bit(cmds, GAP_STOP_DISCOVERY);
@@ -488,6 +489,36 @@ static void start_advertising(const uint8_t *data, uint16_t len)
488489
BTP_STATUS_FAILED);
489490
}
490491

492+
static void start_directed_advertising(const uint8_t *data, uint16_t len)
493+
{
494+
const struct gap_start_directed_adv_cmd *cmd = (void *)data;
495+
struct gap_start_directed_adv_rp rp;
496+
struct bt_le_adv_param adv_param;
497+
498+
adv_param = *BT_LE_ADV_CONN_DIR((bt_addr_le_t *)data);
499+
500+
if (cmd->high_duty == 0) {
501+
adv_param.options |= BT_LE_ADV_OPT_DIR_MODE_LOW_DUTY;
502+
adv_param.interval_max = BT_GAP_ADV_FAST_INT_MAX_2;
503+
adv_param.interval_min = BT_GAP_ADV_FAST_INT_MIN_2;
504+
}
505+
506+
if (bt_le_adv_start(&adv_param, NULL, 0, NULL, 0) < 0) {
507+
LOG_ERR("Failed to start advertising");
508+
goto fail;
509+
}
510+
511+
atomic_set_bit(&current_settings, GAP_SETTINGS_ADVERTISING);
512+
rp.current_settings = sys_cpu_to_le32(current_settings);
513+
514+
tester_send(BTP_SERVICE_ID_GAP, GAP_START_DIRECTED_ADV,
515+
CONTROLLER_INDEX, (uint8_t *)&rp, sizeof(rp));
516+
return;
517+
fail:
518+
tester_rsp(BTP_SERVICE_ID_GAP, GAP_START_DIRECTED_ADV, CONTROLLER_INDEX,
519+
BTP_STATUS_FAILED);
520+
}
521+
491522
static void stop_advertising(const uint8_t *data, uint16_t len)
492523
{
493524
struct gap_stop_advertising_rp rp;
@@ -1069,6 +1100,9 @@ void tester_handle_gap(uint8_t opcode, uint8_t index, uint8_t *data,
10691100
case GAP_START_ADVERTISING:
10701101
start_advertising(data, len);
10711102
return;
1103+
case GAP_START_DIRECTED_ADV:
1104+
start_directed_advertising(data, len);
1105+
return;
10721106
case GAP_STOP_ADVERTISING:
10731107
stop_advertising(data, len);
10741108
return;

0 commit comments

Comments
 (0)