From 81b03f6d3263a618b04b72bc7dbed11f0ad30da7 Mon Sep 17 00:00:00 2001 From: Rahul Tank Date: Fri, 28 Apr 2023 14:38:50 +0530 Subject: [PATCH] Nimble: Add support to send power control event in registered callback --- examples/bluetooth/nimble/blecent/main/main.c | 58 +++++++---------- examples/bluetooth/nimble/bleprph/main/main.c | 62 +++++++------------ 2 files changed, 42 insertions(+), 78 deletions(-) diff --git a/examples/bluetooth/nimble/blecent/main/main.c b/examples/bluetooth/nimble/blecent/main/main.c index 151412883f..81a849a370 100644 --- a/examples/bluetooth/nimble/blecent/main/main.c +++ b/examples/bluetooth/nimble/blecent/main/main.c @@ -44,10 +44,6 @@ 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. @@ -615,36 +611,6 @@ static void blecent_power_control(uint16_t conn_handle) 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 /** @@ -703,9 +669,6 @@ blecent_gap_event(struct ble_gap_event *event, void *arg) #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 @@ -824,6 +787,27 @@ blecent_gap_event(struct ble_gap_event *event, void *arg) return 0; #endif +#if MYNEWT_VAL(BLE_POWER_CONTROL) + 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; +#endif default: return 0; } diff --git a/examples/bluetooth/nimble/bleprph/main/main.c b/examples/bluetooth/nimble/bleprph/main/main.c index 62e52e2e6f..479d37ba82 100644 --- a/examples/bluetooth/nimble/bleprph/main/main.c +++ b/examples/bluetooth/nimble/bleprph/main/main.c @@ -47,10 +47,6 @@ static uint8_t own_addr_type; void ble_store_config_init(void); -#if MYNEWT_VAL(BLE_POWER_CONTROL) -static struct ble_gap_event_listener power_control_event_listener; -#endif - /** * Logs information about a connection to the console. */ @@ -217,40 +213,6 @@ static void bleprph_power_control(uint16_t conn_handle) } #endif - -#if MYNEWT_VAL(BLE_POWER_CONTROL) -static int -bleprph_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 forms. @@ -296,9 +258,6 @@ bleprph_gap_event(struct ble_gap_event *event, void *arg) #if MYNEWT_VAL(BLE_POWER_CONTROL) bleprph_power_control(event->connect.conn_handle); - - ble_gap_event_listener_register(&power_control_event_listener, - bleprph_gap_power_event, NULL); #endif return 0; @@ -434,6 +393,27 @@ bleprph_gap_event(struct ble_gap_event *event, void *arg) } return 0; +#if MYNEWT_VAL(BLE_POWER_CONTROL) + 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; +#endif } return 0;