LE energy info feature
Stack and BT-IF changes for LE energy feature
Change-Id: I671e63aaead210c6352b45a5e20ad5e4bbbb77b7
diff --git a/btif/src/btif_dm.c b/btif/src/btif_dm.c
index 7ec5948..c3dbe95 100644
--- a/btif/src/btif_dm.c
+++ b/btif/src/btif_dm.c
@@ -124,6 +124,17 @@
BT_OCTET16 sp_r;
BD_ADDR oob_bdaddr; /* peer bdaddr*/
} btif_dm_oob_cb_t;
+
+typedef struct
+{
+ uint8_t status;
+ uint8_t ctrl_state;
+ uint64_t tx_time;
+ uint64_t rx_time;
+ uint64_t idle_time;
+ uint64_t energy_used;
+} btif_activity_energy_info_cb_t;
+
#define BTA_SERVICE_ID_TO_SERVICE_MASK(id) (1 << (id))
/* This flag will be true if HCI_Inquiry is in progress */
@@ -1671,6 +1682,20 @@
HAL_CBACK(bt_hal_cbacks, adapter_properties_cb, BT_STATUS_SUCCESS, 1, &prop);
break;
}
+
+ case BTA_DM_ENER_INFO_READ:
+ {
+ btif_activity_energy_info_cb_t *p_ener_data = (btif_activity_energy_info_cb_t*) p_param;
+ bt_activity_energy_info energy_info;
+ energy_info.status = p_ener_data->status;
+ energy_info.ctrl_state = p_ener_data->ctrl_state;
+ energy_info.rx_time = p_ener_data->rx_time;
+ energy_info.tx_time = p_ener_data->tx_time;
+ energy_info.idle_time = p_ener_data->idle_time;
+ energy_info.energy_used = p_ener_data->energy_used;
+ HAL_CBACK(bt_hal_cbacks, energy_info_cb, &energy_info);
+ break;
+ }
#endif
case BTA_DM_AUTHORIZE_EVT:
@@ -1866,6 +1891,34 @@
btif_transfer_context(btif_dm_remote_service_record_evt, event, (char*)p_data, sizeof(tBTA_DM_SEARCH), NULL);
}
+/*******************************************************************************
+**
+** Function bta_energy_info_cb
+**
+** Description Switches context from BTE to BTIF for DM energy info event
+**
+** Returns void
+**
+*******************************************************************************/
+static void bta_energy_info_cb(tBTA_DM_BLE_TX_TIME_MS tx_time, tBTA_DM_BLE_RX_TIME_MS rx_time,
+ tBTA_DM_BLE_IDLE_TIME_MS idle_time,
+ tBTA_DM_BLE_ENERGY_USED energy_used,
+ tBTA_DM_CONTRL_STATE ctrl_state, tBTA_STATUS status)
+{
+ BTIF_TRACE_DEBUG("energy_info_cb-Status:%d,state=%d,tx_t=%ld, rx_t=%ld, idle_time=%ld,used=%ld",
+ status, ctrl_state, tx_time, rx_time, idle_time, energy_used);
+
+ btif_activity_energy_info_cb_t btif_cb;
+ btif_cb.status = status;
+ btif_cb.ctrl_state = ctrl_state;
+ btif_cb.tx_time = (uint64_t) tx_time;
+ btif_cb.rx_time = (uint64_t) rx_time;
+ btif_cb.idle_time =(uint64_t) idle_time;
+ btif_cb.energy_used =(uint64_t) energy_used;
+ btif_transfer_context(btif_dm_upstreams_evt, BTA_DM_ENER_INFO_READ,
+ (char*) &btif_cb, sizeof(btif_activity_energy_info_cb_t), NULL);
+}
+
/*****************************************************************************
**
** btif api functions (no context switch)
@@ -2790,6 +2843,20 @@
}
}
+/*******************************************************************************
+**
+** Function btif_dm_read_energy_info
+**
+** Description Reads the energy info from controller
+**
+** Returns void
+**
+*******************************************************************************/
+void btif_dm_read_energy_info()
+{
+ BTA_DmBleGetEnergyInfo(bta_energy_info_cb);
+}
+
static char* btif_get_default_local_name() {
if (btif_default_local_name[0] == '\0')
{