[Fix] Write service specific device last_seen in DB accepted/tizen/5.5/unified/20191203.011216 submit/tizen_5.5/20191129.113305
authorLokesh <l.kasana@samsung.com>
Fri, 29 Nov 2019 08:19:46 +0000 (13:49 +0530)
committersaerome.kim <saerome.kim@samsung.com>
Fri, 29 Nov 2019 10:41:40 +0000 (19:41 +0900)
Issue:
On device detection, update service specific device last_seen in DB.
At time of service_add_device/user(), this last_seen must initialisze from 0,
as per jira statement(https://code.sec.samsung.net/jira/browse/TSYSCON-1948).

Change-Id: Ic4dd09ba13b5cc5a64d0a05807857499976e5fd7
Signed-off-by: Lokesh <l.kasana@samsung.com>
packaging/ua-manager.spec
ua-daemon/include/ua-manager-core.h
ua-daemon/include/ua-manager-database.h
ua-daemon/src/ua-manager-core.c
ua-daemon/src/ua-manager-device-service-db.c

index 873a4ba..d24c7ac 100644 (file)
@@ -1,6 +1,6 @@
 Name:       ua-manager
 Summary:    User awareness manager
-Version:    0.13.9
+Version:    0.13.10
 Release:    1
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
index abaea10..72a200c 100644 (file)
@@ -239,9 +239,6 @@ int _uam_core_service_set_device_discriminant(const char *service_name,
 int _uam_core_service_get_device_discriminant(const char *service_name,
        const char *device_id, int tech_type, gboolean *discriminant);
 
-int _uam_core_service_set_device_last_seen(const char *svc_name,
-       const char *device_id, int tech_type, unsigned long long last_seen);
-
 int _uam_core_service_get_device_last_seen(const char *svc_name,
        const char *device_id, int tech_type, unsigned long long *last_seen);
 
index a09ea06..1b9bea3 100644 (file)
@@ -216,9 +216,6 @@ int _uam_db_insert_device_service_info(const char *device_id, int tech_type,
        unsigned long long last_seen);
 
 /* update */
-int _uam_db_update_device_service_info(const char *device_id, int tech_type,
-       const char *address, const char *service_name, gboolean discriminant, unsigned
-       long long last_seen);
 int _uam_db_update_device_service_discriminant(const char *device_id,
        int tech_type, const char *address, const char *service_name, gboolean discriminant);
 int _uam_db_update_device_service_last_seen(const char *device_id,
index a98bdcc..1bed38f 100644 (file)
@@ -1611,14 +1611,14 @@ int _uam_core_service_add_user(const char *svc_name, const char *account)
                        /* Insert device service info to db */
                        ret = _uam_db_insert_device_service_info(device->device_id,
                                                tech->tech_type, mac, service->name, service->cycle,
-                                               device->discriminant, tech->last_seen);
+                                               device->discriminant, 0);
                        if (UAM_ERROR_NONE != ret) {
                                UAM_WARN("Device service addition to persistent DB failed");
                                __uam_db_end_transaction(0);
                                return ret;
                        }
-                       ret = _uam_core_update_svc_dev_info(device->device_id, tech->tech_type,
-                                       service->name, device->discriminant, tech->last_seen);
+                       ret = _uam_core_update_svc_dev_info(device->device_id,
+                                       tech->tech_type, service->name, device->discriminant, 0);
                        if (UAM_ERROR_NONE != ret) {
                                UAM_WARN("Device service addition to service device mapping failed");
                                __uam_db_end_transaction(0);
@@ -1765,14 +1765,14 @@ int _uam_core_service_add_device(const char *svc_name, const char *device_id,
 
        mac = __get_mac_addr(tech_info);
        /* Insert device service info to db */
-       ret = _uam_db_insert_device_service_info(device_id, tech_type, mac, service->name,
-                               service->cycle, tech_info->discriminant, tech_info->last_seen);
+       ret = _uam_db_insert_device_service_info(device_id, tech_type, mac,
+                               service->name, service->cycle, tech_info->discriminant, 0);
        if (UAM_ERROR_NONE != ret) {
                UAM_WARN("Device service addition to persistent DB failed");
                return ret;
        }
        ret = _uam_core_update_svc_dev_info(device_id, tech_type, service->name,
-                       tech_info->discriminant, tech_info->last_seen);
+                       tech_info->discriminant, 0);
        if (UAM_ERROR_NONE != ret) {
                UAM_WARN("Device service addition to svc dev mapping failed");
                return ret;
@@ -2779,7 +2779,7 @@ static void __send_sensor_absence_event(uam_sensor_info_s *sensor_info,
 }
 
 void __send_user_presence_event(uam_db_tech_info_t *tech, unsigned int sensor,
-                               char *device_id)
+               uam_device_info_s *dev_info)
 {
        FUNC_ENTRY;
 
@@ -2788,9 +2788,11 @@ void __send_user_presence_event(uam_db_tech_info_t *tech, unsigned int sensor,
        uam_svc_dev_info_t *svc_dev = NULL;
        gboolean live_monitoring = FALSE;
        unsigned long long timestamp;
+       int ret;
 
        ret_if(NULL == tech);
        ret_if(NULL == tech->svc_list);
+       ret_if(NULL == dev_info);
 
        user = tech->device->user;
        user->last_seen = tech->last_seen;
@@ -2798,6 +2800,7 @@ void __send_user_presence_event(uam_db_tech_info_t *tech, unsigned int sensor,
        for (l = tech->svc_list; NULL != l; l = g_slist_next(l)) {
                uam_db_service_info_t *svc = l->data;
                GSList *l1;
+               live_monitoring = FALSE;
 
                if (!svc || !svc->monitors)
                        continue;
@@ -2809,7 +2812,8 @@ void __send_user_presence_event(uam_db_tech_info_t *tech, unsigned int sensor,
                        continue;
 
                UAM_DBG("Check service device discriminant");
-               svc_dev = _uam_core_find_svc_dev_info(device_id, tech->tech_type, svc->name);
+               svc_dev = _uam_core_find_svc_dev_info(dev_info->device_id,
+                               dev_info->type, svc->name);
                if (!svc_dev || !svc_dev->discriminant)
                        continue;
 
@@ -2827,7 +2831,7 @@ void __send_user_presence_event(uam_db_tech_info_t *tech, unsigned int sensor,
                                continue;
 
                        /*
-                        * For current service, if any its running monitor has same sensor
+                        * For current service, if any of its running monitor has same sensor
                         * and detection_mode
                         */
                        live_monitoring = TRUE;
@@ -2837,18 +2841,24 @@ void __send_user_presence_event(uam_db_tech_info_t *tech, unsigned int sensor,
                        _uam_manager_send_event(mon->name,
                                        UAM_EVENT_USER_PRESENCE_DETECTED,
                                        g_variant_new("(utsss)", sensor, timestamp,
-                                               user->account, svc->name,device_id));
+                                               user->account, svc->name, dev_info->device_id));
                        UAM_DBG("Sent UAM_EVENT_USER_PRESENCE_DETECTED to %s"
                                        " on device %s"
                                        " for 0x%8.8X, User: %s Service: %s Timestamp: %llu",
-                                       mon->name, device_id,
+                                       mon->name, dev_info->device_id,
                                        sensor, user->account,
                                        svc->name,
                                        timestamp);
                }
 
-               if (live_monitoring)
+               /* Update service specific device last_seen in svc_dev list and DB */
+               if (live_monitoring) {
                        svc_dev->last_seen = tech->last_seen;
+                       ret = _uam_db_update_device_service_last_seen(dev_info->device_id,
+                                       dev_info->type, dev_info->mac, svc->name, tech->last_seen);
+                       if (UAM_ERROR_NONE != ret)
+                               UAM_WARN("_uam_db_update_device_service_last_seen failed");
+               }
        }
 
        FUNC_EXIT;
@@ -2977,7 +2987,7 @@ int _uam_core_handle_presence_detected(unsigned int sensor,
        }
 
        /* Send user presence event and update service_device timestamp */
-       __send_user_presence_event(tech, sensor, dev_info->device_id);
+       __send_user_presence_event(tech, sensor, dev_info);
        __uam_db_end_transaction(1);
 
        FUNC_EXIT;
index 1c48235..0d9684e 100644 (file)
@@ -180,7 +180,7 @@ static int __uam_device_service_prepare_update(sqlite3 *db)
        PREPARE_QUERY(rc, db, update_device_service_discriminant,
                UPDATE_DEVICE_SERVICE_DISCRIMINANT, __uam_device_service_finalize_update);
        PREPARE_QUERY(rc, db, update_device_service_last_seen,
-               UPDATE_DEVICE_SERVICE_DISCRIMINANT, __uam_device_service_finalize_update);
+               UPDATE_DEVICE_SERVICE_LAST_SEEN, __uam_device_service_finalize_update);
 
        initialized = 1;
        FUNC_EXIT;
@@ -346,8 +346,10 @@ static int __uam_db_update_discriminant(int device_number,
        UAM_INFO("%d-%d", device_number, service_number);
 
        DB_ACTION(sqlite3_bind_int(stmt, 1, discriminant), error_code, handle_error);
-       DB_ACTION(sqlite3_bind_int(stmt, 2, device_number), error_code, handle_error);
-       DB_ACTION(sqlite3_bind_int(stmt, 3, service_number), error_code, handle_error);
+       DB_ACTION(sqlite3_bind_int(stmt, 2, device_number),
+                       error_code, handle_error);
+       DB_ACTION(sqlite3_bind_int(stmt, 3, service_number),
+                       error_code, handle_error);
 
        sql_ret = sqlite3_step(stmt);
        if (sql_ret != SQLITE_DONE) {
@@ -377,8 +379,10 @@ static int __uam_db_update_last_seen(int device_number,
        UAM_INFO("%d-%d", device_number, service_number);
 
        DB_ACTION(sqlite3_bind_int(stmt, 1, last_seen), error_code, handle_error);
-       DB_ACTION(sqlite3_bind_int(stmt, 2, device_number), error_code, handle_error);
-       DB_ACTION(sqlite3_bind_int(stmt, 3, service_number), error_code, handle_error);
+       DB_ACTION(sqlite3_bind_int(stmt, 2, device_number),
+                       error_code, handle_error);
+       DB_ACTION(sqlite3_bind_int(stmt, 3, service_number),
+                       error_code, handle_error);
 
        sql_ret = sqlite3_step(stmt);
        if (sql_ret != SQLITE_DONE) {
@@ -398,7 +402,8 @@ handle_error:
 }
 
 int _uam_db_update_device_service_discriminant(const char *device_id,
-       int tech_type, const char *address, const char *service_name, gboolean discriminant)
+               int tech_type, const char *address, const char *service_name,
+               gboolean discriminant)
 {
        FUNC_ENTRY;
        int ret = UAM_ERROR_NONE;
@@ -438,10 +443,12 @@ int _uam_db_update_device_service_last_seen(const char *device_id,
        db_service_info_t info;
        int service_number = 0;
 
-       UAM_INFO("%s-%d-%s-%s-%llu", device_id, tech_type, address, service_name, last_seen);
+       UAM_INFO("%s-%d-%s-%s-%llu", device_id, tech_type, address, service_name,
+                       last_seen);
 
        int device_number = 0;
-       ret = _uam_db_get_device_number(device_id, tech_type, address, &device_number);
+       ret = _uam_db_get_device_number(device_id, tech_type, address,
+                       &device_number);
        if (UAM_ERROR_NONE != ret)
                goto handle_error;
 
@@ -455,7 +462,8 @@ int _uam_db_update_device_service_last_seen(const char *device_id,
        if (UAM_ERROR_NONE != ret)
                goto handle_error;
 
-       UAM_DBG("Device-service info updated [%d] [%d]", device_number, service_number);
+       UAM_DBG("Device-service last_seen updated [%d] [%d]", device_number,
+                       service_number);
 
 handle_error:
        FUNC_EXIT;