Ver Fonte

Nimble: Add support to send power control event in registered callback

Rahul Tank há 2 anos atrás
pai
commit
1f92c349a2

+ 1 - 1
components/bt/host/nimble/nimble

@@ -1 +1 @@
-Subproject commit ecbbecf59248d213e275ba4c1a430f3fdeeda36d
+Subproject commit 1eedf53d5a9d0e2bb3cd29f8a290cbff0777e027

+ 21 - 37
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;
     }

+ 21 - 41
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;