bm_feature_data_h bm_data_handle = NULL;
GHashTable *gl_hash = NULL;
static struct bm_req_feature_data_handle_flag_s *bm_req_flag_h = NULL;
-static int battery_capacity = 500;
+int battery_capacity = 500;
int bm_engine_get_usage_by_app_id_for_resource_id(const gchar *app_id, gint resource_id, gint duration, int *b_usage)
{
app_usage->rId_wifi, app_usage->rId_cpu, app_usage->rId_display,
app_usage->rId_device_network);
+ ret_val = bm_server_appid_insert_to_db(app_usage->AppId);
+ if (ret_val != BATTERY_MONITOR_ERROR_NONE)
+ _ERR("Insert of Appid failed ");
+ else
+ _DBG("Insert successful");
+
ret_val = bm_server_app_usage_insert_to_db(app_usage);
if (ret_val != BATTERY_MONITOR_ERROR_NONE)
_ERR("Insert of App Usage failed ");
_DBG("Calculated Power for Appid(%s) - P_power_app_bt(%d), P_power_app_conn(%d), P_power_app_data(%d)",
appid, P_power_app_bt, P_power_app_conn, P_power_app_data);
- if (mode)
+ if (mode) {
+ ret_val = bm_server_appid_insert_to_db(app_usage->AppId);
+ if (ret_val != BATTERY_MONITOR_ERROR_NONE)
+ _ERR("Insert of BT appid failed ");
ret_val = bm_server_app_usage_insert_to_db(app_usage);
- else/* Call Global Hash */
+ } else/* Call Global Hash */
ret_val = bm_appid_session_usage_map(g_strdup(app_usage->AppId), app_usage->rId_ble, BM_PLUGIN_ID_BLE);
/* Error Check */
_DBG("Calculated Power for Appid(%s) - P_power_app_wifi(%d), P_power_app_conn(%d), P_power_app_data(%d)",
appid, P_power_app_wifi, P_power_app_conn, P_power_app_data);
- if (mode)
+ if (mode) {
+ ret_val = bm_server_appid_insert_to_db(app_usage->AppId);
+ if (ret_val != BATTERY_MONITOR_ERROR_NONE)
+ _ERR("Insert of WiFi appid failed ");
ret_val = bm_server_app_usage_insert_to_db(app_usage);
- else/* Call Global Hash */
+ } else/* Call Global Hash */
ret_val = bm_appid_session_usage_map(g_strdup(app_usage->AppId), app_usage->rId_wifi, BM_PLUGIN_ID_WIFI);
/* Error Check */
/* Call Insert Function */
_DBG("Calculated Power for Appid (%s) P_power_app_cpu (%d), P_power_app_use (%d)", appid, P_power_app_cpu, P_power_app_use);
- if (mode)
+
+ if (mode) {
+ ret_val = bm_server_appid_insert_to_db(app_usage->AppId);
+ if (ret_val != BATTERY_MONITOR_ERROR_NONE)
+ _ERR("Insert of CPU appid failed ");
ret_val = bm_server_app_usage_insert_to_db(app_usage);
- else
+ } else
ret_val = bm_appid_session_usage_map(g_strdup(app_usage->AppId), app_usage->rId_cpu, BM_PLUGIN_ID_CPU);
/* Error Check */
if (ret_val != BATTERY_MONITOR_ERROR_NONE)
sesTime += edTime - stTime;
dp_atm_iterator = datalistnode->atm_list;
-// dp_atm_iterator = ((bm_display_st *)(dp_data_iterator->data))->atm_list;
for ( ; dp_atm_iterator; dp_atm_iterator = dp_atm_iterator->next) {
/* Call Insert Function */
_DBG("Calculated Power for Appid (%s) P_power_app_disp(%d), P_power_app_on (%d)", appid, P_power_app_disp, P_power_app_on);
- if (mode)
+ if (mode) {
+ ret_val = bm_server_appid_insert_to_db(app_usage->AppId);
+ if (ret_val != BATTERY_MONITOR_ERROR_NONE)
+ _ERR("Insert of DSP appid failed ");
ret_val = bm_server_app_usage_insert_to_db(app_usage);
- else
+ } else
ret_val = bm_appid_session_usage_map(g_strdup(app_usage->AppId), app_usage->rId_display, BM_PLUGIN_ID_DISPLAY);
/* Error Check */
if (ret_val != BATTERY_MONITOR_ERROR_NONE)
/* Call Insert Function */
_DBG("Calculated Power for Appid (%s) P_power_app_dntw(%d), P_power_app_conn (%d), P_power_app_data(%d)", appid, P_power_app_dntw, P_power_app_conn, P_power_app_data);
- if (mode)
+ if (mode) {
+ ret_val = bm_server_appid_insert_to_db(app_usage->AppId);
+ if (ret_val != BATTERY_MONITOR_ERROR_NONE)
+ _ERR("Insert of DN appid failed ");
ret_val = bm_server_app_usage_insert_to_db(app_usage);
- else
+ } else
ret_val = bm_appid_session_usage_map(g_strdup(app_usage->AppId), app_usage->rId_device_network, BM_PLUGIN_ID_DEVICE_NETWORK);
/* Error Check */
return ret;
}
-static int bm_appid_map_usage_convert_to_sql(appid_map_s *bm_appid_map_type, bm_stmt hstmt, char *sql_value)
+static int bm_appid_map_usage_convert_to_sql(const char* app_id, bm_stmt hstmt, char *sql_value)
{
ENTER;
/* Caution : Keep insert query orders. */
- bm_query_bind_text(hstmt, count++, (char *)bm_appid_map_type->AppName);
-
- bm_query_bind_int(hstmt, count++, bm_appid_map_type->AppId);
+ bm_query_bind_text(hstmt, count++, app_id);
EXIT;
return count;
return ret;
}
+/*
int bm_get_appint_by_app_name(sqlite3 *bm_db_handle, const char *AppId)
{
ENTER;
EXIT;
return ncount;
}
+*/
-static gboolean app_name_check_duplicated(sqlite3 *bm_db_handle, const char *AppId)
+static gboolean app_name_check_duplicated(sqlite3 *bm_db_handle, const char *app_id, int *error_code)
{
ENTER;
char query[BATTERY_MONITOR_SQL_LEN_MAX] = {0, };
int count = 0;
+ *error_code = BATTERY_MONITOR_ERROR_NONE;
+
+ BM_RETURN_VAL((bm_db_handle != NULL), { *error_code = BATTERY_MONITOR_ERROR_DB_NOT_OPENED; }, false, ("The database isn't connected."));
+ BM_RETURN_VAL((app_id != NULL), { *error_code = BATTERY_MONITOR_ERROR_INVALID_PARAMETER; }, false, ("app_id is NULL."));
- BM_RETURN_VAL((bm_db_handle != NULL), {}, BATTERY_MONITOR_ERROR_DB_NOT_OPENED, ("The database isn't connected."));
- BM_RETURN_VAL((AppId != NULL), {}, BATTERY_MONITOR_ERROR_INVALID_PARAMETER, ("AppId is NULL."));
BM_MEMSET(query, 0x00, sizeof(query));
- BM_SNPRINTF(query, sizeof(query), "SELECT COUNT(*) FROM %s WHERE AppName='%s'", BATTERY_MONITOR_APP_ID_MAP_TABLE, AppId);
+ BM_SNPRINTF(query, sizeof(query), "SELECT COUNT(*) FROM %s WHERE AppId='%s'", BATTERY_MONITOR_APP_ID_MAP_TABLE, app_id);
count = bm_get_record_count(bm_db_handle, query);
if (count > 0) {
return error_code;
}
-int bm_appid_map_insert_to_db(sqlite3 *bm_db_handle, appid_map_s *bm_appid_map_type)
+int bm_appid_map_insert_to_db(sqlite3 *bm_db_handle, const char *app_id)
{
ENTER;
char query[BATTERY_MONITOR_SQL_LEN_MAX] = {0, };
int error_code = BATTERY_MONITOR_ERROR_NONE;
bm_stmt hstmt = NULL;
- bool to_insert = false;
BM_RETURN_VAL((bm_db_handle != NULL), {}, BATTERY_MONITOR_ERROR_DB_NOT_OPENED, ("The database isn't connected."));
- BM_RETURN_VAL((bm_appid_map_type != NULL), {}, BATTERY_MONITOR_ERROR_INVALID_PARAMETER, ("The battery monitor handle is NULL"));
/* check mandatory field(app id)*/
- if (!bm_appid_map_type->AppName)
+ if (!app_id)
return BATTERY_MONITOR_ERROR_INVALID_PARAMETER;
- to_insert = app_name_check_duplicated(bm_db_handle, bm_appid_map_type->AppName);
- if (to_insert)
- return BATTERY_MONITOR_ERROR_DUPLICATED;
-
/* The AppId integer value should be auto increment */
BM_MEMSET(query, 0x00, sizeof(query));
- BM_SNPRINTF(query, sizeof(query), "INSERT INTO %s( AppName, AppId ) values "
- "(?, ?)", BATTERY_MONITOR_APP_ID_MAP_TABLE);
+ BM_SNPRINTF(query, sizeof(query), "INSERT INTO %s( AppId ) values "
+ "(?)", BATTERY_MONITOR_APP_ID_MAP_TABLE);
hstmt = bm_prepare_query(bm_db_handle, query);
BM_RETURN_VAL((hstmt != NULL), {}, BATTERY_MONITOR_ERROR_DB_FAILED, ("bm_prepare_query() failed(%s).\n", bm_db_err_msg(bm_db_handle)));
- bm_appid_map_usage_convert_to_sql(bm_appid_map_type, hstmt, query);
+ bm_appid_map_usage_convert_to_sql(app_id, hstmt, query);
rc = bm_query_step(hstmt);
if (rc == SQLITE_BUSY) {
>-------Only these will be exposed for other files to use.
*/
+int bm_server_appid_insert_to_db(const char* app_id)
+{
+ ENTER;
+
+ int error_code = BATTERY_MONITOR_ERROR_NONE;
+ int ret_transaction = 0;
+ int to_insert = true;
+
+ BM_RETURN_VAL((g_hBatteryMonitorDB != NULL), {}, BATTERY_MONITOR_ERROR_DB_NOT_OPENED, ("The database isn't connected."));
+ BM_RETURN_VAL((app_id != NULL), {}, BATTERY_MONITOR_ERROR_INVALID_PARAMETER, ("Mandatory field app_id NULL"));
+
+ /* Checking if already inserted */
+ to_insert = app_name_check_duplicated(g_hBatteryMonitorDB, app_id, &error_code);
+ if (to_insert && error_code == BATTERY_MONITOR_ERROR_NONE) {
+ _DBG("AppID - [%s] already exists", app_id);
+ return BATTERY_MONITOR_ERROR_NONE;
+ } else if (error_code != BATTERY_MONITOR_ERROR_NONE) {
+ _ERR("Duplicate check failed");
+ return error_code;
+ }
+
+ pthread_mutex_lock(&battery_monitor_mutex);
+
+ /* Transaction Control Required */
+ ret_transaction = bm_begin_transaction(g_hBatteryMonitorDB);
+
+ if (bm_db_err_code(g_hBatteryMonitorDB) == SQLITE_PERM) {
+ pthread_mutex_unlock(&battery_monitor_mutex);
+ _ERR("Access failed(%s)", bm_db_err_msg(g_hBatteryMonitorDB));
+ return BATTERY_MONITOR_ERROR_PERMISSION_DENIED;
+ }
+
+ if (ret_transaction == BATTERY_MONITOR_ERROR_DATABASE_BUSY) {
+ _ERR("AppId map table insert:bm_begin_transaction fail %d\n", ret_transaction);
+ pthread_mutex_unlock(&battery_monitor_mutex);
+ return BATTERY_MONITOR_ERROR_DATABASE_BUSY;
+ } else if (ret_transaction != BATTERY_MONITOR_ERROR_NONE) {
+ _ERR("AppId map table insert:bm_begin_transaction fail %d\n", ret_transaction);
+ pthread_mutex_unlock(&battery_monitor_mutex);
+ return ret_transaction;
+ }
+
+ error_code = bm_appid_map_insert_to_db(g_hBatteryMonitorDB, app_id);
+
+ if (error_code != BATTERY_MONITOR_ERROR_NONE) {
+ ret_transaction = bm_end_transaction(g_hBatteryMonitorDB, false);
+ _ERR("INSERT appid fail, rollback insert query(%d)!!!!\n", ret_transaction);
+ pthread_mutex_unlock(&battery_monitor_mutex);
+ return error_code;
+ }
+
+ pthread_mutex_unlock(&battery_monitor_mutex);
+ bm_end_transaction(g_hBatteryMonitorDB, true);
+
+ EXIT;
+ return BATTERY_MONITOR_ERROR_NONE;
+}
+
int bm_server_resource_usage_insert_to_db(resourceid_usage_s *bm_resource_type)
{
ENTER;
}
if (ret_transaction == BATTERY_MONITOR_ERROR_DATABASE_BUSY) {
- _ERR("Resource Usage insert:bm_begin_transaction fail %d\n", ret_transaction);
+ _ERR("App Usage insert:bm_begin_transaction fail %d\n", ret_transaction);
pthread_mutex_unlock(&battery_monitor_mutex);
return BATTERY_MONITOR_ERROR_DATABASE_BUSY;
} else if (ret_transaction != BATTERY_MONITOR_ERROR_NONE) {
- _ERR("Resource Usage insert:bm_begin_transaction fail %d\n", ret_transaction);
+ _ERR("App Usage insert:bm_begin_transaction fail %d\n", ret_transaction);
pthread_mutex_unlock(&battery_monitor_mutex);
return ret_transaction;
}
if (error_code != BATTERY_MONITOR_ERROR_NONE) {
ret_transaction = bm_end_transaction(g_hBatteryMonitorDB, false);
- _ERR("INSERT resource usage fail, rollback insert query(%d)!!!!\n", ret_transaction);
+ _ERR("INSERT app usage fail, rollback insert query(%d)!!!!\n", ret_transaction);
pthread_mutex_unlock(&battery_monitor_mutex);
return error_code;
}