#include <dlog.h>
#include <time.h>
#include <sys/time.h>
+#include <vconf.h>
#include <oal-event.h>
#include "bt-service-event.h"
#include "bt-service-core-adapter.h"
+/* Avoid the build error related to vconf.h's dependency */
+#ifndef VCONFKEY_BATTERY_MONITOR_STATUS
+#define VCONFKEY_BATTERY_MONITOR_STATUS "db/bluetooth/bmstatus"
+#endif
+
static struct timeval scan_start;
static struct timeval connect_start;
static struct timeval app_scan_base;
_bt_battery_data_t *current_session_data = NULL;
static void __bt_bm_add_prev_time(uint32_t scan_time);
+static int __bt_start_session_time(void);
uint32_t static __bt_dm_time_diff_msec(struct timeval prev, struct timeval cur)
{
static void __bt_display_session_data()
{
BT_DBG("Displaying session data...");
+
+ if (current_session_data == NULL) {
+ BT_ERR("Session in progress but data structure is not initialized");
+ return;
+ }
+
BT_DBG("session_start_time = %ld", current_session_data->session_start_time);
BT_DBG("session_end_time = %ld", current_session_data->session_end_time);
BT_DBG("session_scan_time = %d", current_session_data->session_scan_time);
return BLUETOOTH_ERROR_NOT_SUPPORT;
}
+ if (is_session_started == FALSE) {
+ if (__bt_start_session_time() != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("Fail to start session time");
+ return BLUETOOTH_ERROR_NOT_SUPPORT;
+ }
+ }
+
+ if (current_session_data == NULL) {
+ BT_ERR("Session in progress but data structure is not initialized");
+ return BLUETOOTH_ERROR_INTERNAL;
+ }
+
gettimeofday(&cur_time, 0);
data->tx_time = tx_time;
void _bt_bm_add_transaction_details(uid_t uid, pid_t pid, int value, data_transaction_type_e type)
{
+ if (is_session_started == FALSE)
+ __bt_start_session_time();
+
if (current_session_data == NULL) {
- BT_ERR("Session in progress but data structure is not initialized"); //error handling
+ BT_ERR("Session in progress but data structure is not initialized");
return;
}
GSList *t = is_app_present(current_session_data->atm_list, uid, pid);
}
}
-void _bt_start_session_time()
+static int __bt_start_session_time(void)
{
- if (is_session_started == FALSE) {
- BT_DBG("Bt session starting...");
- is_session_started = TRUE;
- current_session_data = g_malloc0(sizeof(_bt_battery_data_t));
- current_session_data->session_start_time = time(NULL);
- current_session_data->session_end_time = 0;
- current_session_data->session_connected_time = 0;
- current_session_data->session_scan_time = 0;
- current_session_data->atm_list = NULL;
- } else {
- if (current_session_data == NULL)
- BT_ERR("Session in progress but data structure is not initialized"); //error handling
- else
- BT_DBG("Bt session already in progress... Returning");
+ int state = 0;
+
+ if (is_session_started == TRUE) {
+ BT_ERR("Session is already started");
+ return BLUETOOTH_ERROR_ALREADY_INITIALIZED;
+ }
+
+ if (vconf_get_bool(VCONFKEY_BATTERY_MONITOR_STATUS, &state) != 0) {
+ BT_ERR("vconf_get_bool failed");
+ return BLUETOOTH_ERROR_INTERNAL;
}
+
+ if (state == 0) {
+ BT_ERR("Battery is not monitoring in now");
+ return BLUETOOTH_ERROR_NOT_SUPPORT;
+ }
+
+ BT_DBG("Bt session starting...");
+ is_session_started = TRUE;
+
+ if (current_session_data == NULL)
+ current_session_data = g_malloc0(sizeof(_bt_battery_data_t));
+
+ current_session_data->session_start_time = time(NULL);
+ current_session_data->session_end_time = 0;
+ current_session_data->session_connected_time = 0;
+ current_session_data->session_scan_time = 0;
+ current_session_data->atm_list = NULL;
+
+ return BLUETOOTH_ERROR_NONE;
}
-void _bt_stop_session_time()
+void _bt_stop_session_time(void)
{
if (is_session_started == FALSE) {
- BT_DBG("BT session not in progress... Returning"); //error handling
+ BT_DBG("BT session not in progress... Returning");
return;
}
+
BT_DBG("Bt session ending...");
is_session_started = FALSE;
+
+ if (current_session_data == NULL) {
+ BT_ERR("Session in progress but data structure is not initialized");
+ return;
+ }
+
current_session_data->session_end_time = time(NULL);
__bt_display_session_data();
}
void _bt_start_scan_time()
{
+ if (is_session_started == FALSE) {
+ if (__bt_start_session_time() != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("Fail to start session time");
+ return;
+ }
+ }
+
if (current_session_data != NULL) {
if (scan_cnt == 0) {
BT_DBG("Starting scan time");
}
scan_cnt++;
} else {
- BT_ERR("Data structure uninitialized"); //error handling
+ BT_ERR("Data structure uninitialized");
}
}
void _bt_stop_scan_time()
{
+ if (is_session_started == FALSE) {
+ if (__bt_start_session_time() != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("Fail to start session time");
+ return;
+ }
+ }
+
if (scan_cnt == 0 || current_session_data == NULL)
- BT_ERR("Error encountered, returning..."); //error handling
+ BT_ERR("Error encountered, returning...");
else {
scan_cnt--;
if(scan_cnt == 0) {
void _bt_start_connect_time()
{
+ if (is_session_started == FALSE) {
+ if (__bt_start_session_time() != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("Fail to start session time");
+ return;
+ }
+ }
+
if (current_session_data != NULL) {
if (connect_cnt == 0) {
BT_DBG("Starting connect time");
connect_cnt++;
}
else {
- BT_ERR("Data structure uninitialized"); //error handling
+ BT_ERR("Data structure uninitialized");
}
}
void _bt_stop_connect_time()
{
- if(connect_cnt == 0 || current_session_data == NULL) {
- BT_ERR("Error encountered, returning..."); //error handling
+ if (is_session_started == FALSE) {
+ if (__bt_start_session_time() != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("Fail to start session time");
+ return;
+ }
}
- else {
+
+ if(connect_cnt == 0 || current_session_data == NULL) {
+ BT_ERR("Error encountered, returning...");
+ } else {
connect_cnt--;
if(connect_cnt == 0) {
struct timeval cur_time;
}
}
-static void _bt_notify_battery_data(void)
+static void __bt_notify_battery_data(void)
{
BT_INFO("+");
_bt_battery_data_t *data = NULL;
switch(event_type) {
case OAL_EVENT_ADAPTER_ENABLED:
BT_DBG("Handling Adapter Enabled");
- _bt_start_session_time();
+ if (__bt_start_session_time() != BLUETOOTH_ERROR_NONE)
+ BT_ERR("Fail to start session time");
break;
case OAL_EVENT_ADAPTER_DISABLED:
BT_DBG("Handling Adapter Disabled");
- _bt_stop_session_time();
- _bt_notify_battery_data();
+ if (is_session_started == TRUE) {
+ _bt_stop_session_time();
+ __bt_notify_battery_data();
+ }
break;
case OAL_EVENT_ADAPTER_INQUIRY_STARTED:
case OAL_EVENT_BLE_DISCOVERY_STARTED: