Skip to content

Commit 6b39df4

Browse files
gabewillentannewt
authored andcommitted
Update Adapter.c
Added support for setting transmitter power currently done during every time advertising starts as implemented in the Arduino library
1 parent 806b39f commit 6b39df4

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

ports/nrf/common-hal/_bleio/Adapter.c

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,10 @@ STATIC void bleio_adapter_reset_name(bleio_adapter_obj_t *self) {
333333
common_hal_bleio_adapter_set_name(self, (char *)default_ble_name);
334334
}
335335

336+
337+
// The nRF SD 6.1.0 can only do one concurrent advertisement so share the advertising handle.
338+
uint8_t adv_handle = BLE_GAP_ADV_SET_HANDLE_NOT_SET;
339+
336340
void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enabled) {
337341
const bool is_enabled = common_hal_bleio_adapter_get_enabled(self);
338342

@@ -386,6 +390,14 @@ bool common_hal_bleio_adapter_get_enabled(bleio_adapter_obj_t *self) {
386390
return is_enabled;
387391
}
388392

393+
void common_hal_bleio_adapter_set_tx_power(bleio_adapter_obj_t *self, mp_int_t tx_power) {
394+
self->tx_power = tx_power;
395+
}
396+
397+
mp_int_t common_hal_bleio_adapter_get_tx_power(bleio_adapter_obj_t *self) {
398+
return self->tx_power;
399+
}
400+
389401
bleio_address_obj_t *common_hal_bleio_adapter_get_address(bleio_adapter_obj_t *self) {
390402
common_hal_bleio_adapter_set_enabled(self, true);
391403

@@ -619,8 +631,6 @@ mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_addre
619631
return mp_const_none;
620632
}
621633

622-
// The nRF SD 6.1.0 can only do one concurrent advertisement so share the advertising handle.
623-
uint8_t adv_handle = BLE_GAP_ADV_SET_HANDLE_NOT_SET;
624634

625635
STATIC void check_data_fit(size_t data_len, bool connectable) {
626636
if (data_len > BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED ||
@@ -725,7 +735,10 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self,
725735
}
726736

727737
ble_drv_add_event_handler(advertising_on_ble_evt, self);
728-
738+
err_code = sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, adv_handle, self->tx_power);
739+
if (err_code != NRF_SUCCESS) {
740+
return err_code;
741+
}
729742
vm_used_ble = true;
730743
err_code = sd_ble_gap_adv_start(adv_handle, BLE_CONN_CFG_TAG_CUSTOM);
731744
if (err_code != NRF_SUCCESS) {

0 commit comments

Comments
 (0)