Skip to content

Commit

Permalink
Merge branch 'feature/add_pcl_example_blecent' into 'master'
Browse files Browse the repository at this point in the history
Nimble:Added power control API usage demo in blecent app

See merge request espressif/esp-idf!22319
  • Loading branch information
jack0c committed Feb 27, 2023
2 parents 7320e10 + 708e5f1 commit d013bed
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions examples/bluetooth/nimble/blecent/main/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ static uint8_t peer_addr[6];

void ble_store_config_init(void);

#if MYNEWT_VAL(BLE_POWER_CONTROL)
static struct ble_gap_event_listener power_control_event_listener;
#endif

/**
* Application Callback. Called when the custom subscribable chatacteristic
* in the remote GATT server is read.
Expand Down Expand Up @@ -594,6 +598,55 @@ blecent_connect_if_interesting(void *disc)
}
}

#if MYNEWT_VAL(BLE_POWER_CONTROL)
static void blecent_power_control(uint16_t conn_handle)
{
int rc;

rc = ble_gap_read_remote_transmit_power_level(conn_handle, 0x01 ); // Attempting on LE 1M phy
assert (rc == 0);

rc = ble_gap_set_transmit_power_reporting_enable(conn_handle, 0x01, 0x01);
assert (rc == 0);

rc = ble_gap_set_path_loss_reporting_param(conn_handle, 60, 10, 30, 10, 2 ); //demo values
assert (rc == 0);

rc = ble_gap_set_path_loss_reporting_enable(conn_handle, 0x01);
assert (rc == 0);
}

static int
blecent_gap_power_event(struct ble_gap_event *event, void *arg)
{

switch(event->type) {
case BLE_GAP_EVENT_TRANSMIT_POWER:
MODLOG_DFLT(INFO, "Transmit power event : status=%d conn_handle=%d reason=%d "
"phy=%d power_level=%x power_level_flag=%d delta=%d",
event->transmit_power.status,
event->transmit_power.conn_handle,
event->transmit_power.reason,
event->transmit_power.phy,
event->transmit_power.transmit_power_level,
event->transmit_power.transmit_power_level_flag,
event->transmit_power.delta);
return 0;

case BLE_GAP_EVENT_PATHLOSS_THRESHOLD:
MODLOG_DFLT(INFO, "Pathloss threshold event : conn_handle=%d current path loss=%d "
"zone_entered =%d",
event->pathloss_threshold.conn_handle,
event->pathloss_threshold.current_path_loss,
event->pathloss_threshold.zone_entered);
return 0;

default:
return 0;
}
}
#endif

/**
* The nimble host executes this callback when a GAP event occurs. The
* application associates a GAP event callback with each connection that is
Expand Down Expand Up @@ -648,6 +701,13 @@ blecent_gap_event(struct ble_gap_event *event, void *arg)
return 0;
}

#if MYNEWT_VAL(BLE_POWER_CONTROL)
blecent_power_control(event->connect.conn_handle);

ble_gap_event_listener_register(&power_control_event_listener,
blecent_gap_power_event, NULL);
#endif

#if CONFIG_EXAMPLE_ENCRYPTION
/** Initiate security - It will perform
* Pairing (Exchange keys)
Expand Down

0 comments on commit d013bed

Please sign in to comment.