From c40696c6d0ed27cd7410d138447753e95fae4a08 Mon Sep 17 00:00:00 2001 From: Abhay agarwal Date: Fri, 27 Dec 2019 08:54:19 +0530 Subject: [PATCH] Fix device payload update query Signed-off-by: Abhay agarwal --- ua-daemon/src/ua-manager-core.c | 22 ++++++---------------- ua-daemon/src/ua-manager-payload-db.c | 21 +++++++++++---------- 2 files changed, 17 insertions(+), 26 deletions(-) diff --git a/ua-daemon/src/ua-manager-core.c b/ua-daemon/src/ua-manager-core.c index 8b11fea..96421a4 100644 --- a/ua-daemon/src/ua-manager-core.c +++ b/ua-daemon/src/ua-manager-core.c @@ -149,22 +149,6 @@ static gint __compare_payload(gconstpointer data, gconstpointer user_data) return -1; } -#if 0 -static gint __compare_db_payload(gconstpointer data, gconstpointer user_data) -{ - const uam_db_payload_info_t *db_payload = data; - const uam_db_payload_info_t *payload = user_data; - - retv_if(NULL == db_payload, -1); - retv_if(NULL == payload, -1); - - if ((db_payload->primary_key == payload->primary_key) && - (0 == g_strcmp0(db_payload->device_uid, payload->device_uid))) - return 0; - return -1; -} -#endif - static void __free_address_info(gpointer data) { FUNC_ENTRY; @@ -3151,6 +3135,12 @@ int _uam_core_handle_presence_detected(unsigned int sensor, tech->presence_state = UAM_PRESENCE_STATE_PRESENT; tech->last_seen = dev_info->last_seen; + /** Update payload info in list with user data */ + l = g_slist_find_custom(payloads, payload, __compare_payload); + if (l) { + __uam_copy_uam_payload_info(l->data, payload); + } + retv_if(UAM_ERROR_NONE != __uam_db_begin_transaction(), UAM_ERROR_INVALID_PARAMETER); /* Check if IP/MAC address was updated then update in DB */ diff --git a/ua-daemon/src/ua-manager-payload-db.c b/ua-daemon/src/ua-manager-payload-db.c index b13a214..466c7fa 100644 --- a/ua-daemon/src/ua-manager-payload-db.c +++ b/ua-daemon/src/ua-manager-payload-db.c @@ -42,8 +42,9 @@ #define DELETE_ALL_PAYLOADS "delete from payloads" #define UPDATE_PAYLOAD "UPDATE payloads " \ - "SET primary_key = ?, secondary_key = ?, device_uid_len = ?, " \ - "device_uid = ?, device_icon = ?, user_data = ? WHERE device_number = ?" + "SET device_icon = ?, user_data = ? WHERE primary_key = ? AND " \ + "secondary_key = ? AND device_uid_len = ? AND " \ + "device_uid = ? AND device_number = ?" /* DELETE statements */ static sqlite3_stmt *delete_all_payloads; @@ -480,19 +481,19 @@ int _uam_db_update_payload_info( if (UAM_ERROR_NONE != error_code) goto handle_error; - DB_ACTION(sqlite3_bind_text(stmt, 1, &(payload->primary_key), 1, SQLITE_TRANSIENT), + DB_ACTION(sqlite3_bind_text(stmt, 1, &(payload->device_icon), 1, SQLITE_TRANSIENT), error_code, handle_error); - DB_ACTION(sqlite3_bind_text(stmt, 2, &(payload->secondary_key), 1, SQLITE_TRANSIENT), + user_data_len = UAM_BLE_PAYLOAD_DEVICE_UID_MAX_LEN - 1 - payload->device_uid_len; + DB_ACTION(sqlite3_bind_text(stmt, 2, payload->user_data, user_data_len, SQLITE_TRANSIENT), error_code, handle_error); - DB_ACTION(sqlite3_bind_int(stmt, 3, payload->device_uid_len), + + DB_ACTION(sqlite3_bind_text(stmt, 3, &(payload->primary_key), 1, SQLITE_TRANSIENT), error_code, handle_error); - DB_ACTION(sqlite3_bind_text(stmt, 4, payload->device_uid, payload->device_uid_len, SQLITE_TRANSIENT), + DB_ACTION(sqlite3_bind_text(stmt, 4, &(payload->secondary_key), 1, SQLITE_TRANSIENT), error_code, handle_error); - DB_ACTION(sqlite3_bind_text(stmt, 5, &(payload->device_icon), 1, SQLITE_TRANSIENT), + DB_ACTION(sqlite3_bind_int(stmt, 5, payload->device_uid_len), error_code, handle_error); - - user_data_len = UAM_BLE_PAYLOAD_DEVICE_UID_MAX_LEN - 1 - payload->device_uid_len; - DB_ACTION(sqlite3_bind_text(stmt, 6, payload->user_data, user_data_len, SQLITE_TRANSIENT), + DB_ACTION(sqlite3_bind_text(stmt, 6, payload->device_uid, payload->device_uid_len, SQLITE_TRANSIENT), error_code, handle_error); DB_ACTION(sqlite3_bind_int(stmt, 7, device_number), error_code, handle_error); -- 2.7.4