Change position of _uam_pm_stop_detection()
authorLokesh <l.kasana@samsung.com>
Thu, 14 Nov 2019 11:28:00 +0000 (16:58 +0530)
committersaerome.kim <saerome.kim@samsung.com>
Fri, 15 Nov 2019 09:11:28 +0000 (18:11 +0900)
Do _uam_pm_stop_detection() for both presence and absence together,
so that motion plugin sends detection_stopped event.

Change-Id: I9fb0e1696c16cb59eb0c3c7f910101844364b5ec
Signed-off-by: Lokesh <l.kasana@samsung.com>
ua-daemon/src/ua-manager-core.c

index 4f2c3ae..d045bd0 100644 (file)
@@ -1924,6 +1924,21 @@ static gboolean __start_detection(gpointer data)
        absence_env_sensors = _uam_core_get_active_env_sensors(UAM_DETECT_ABSENCE);
        UAM_DBG("Absence Envionmental sensors: 0x%8.8X", absence_env_sensors);
 
+       if (0 != presence_env_sensors) {
+               /* Stop PRESENCE detection on active envionmental sensors*/
+               ret = _uam_pm_stop_detection(UAM_DETECT_PRESENCE, presence_env_sensors);
+               if (UAM_ERROR_NONE != ret)
+                       UAM_ERR("Failed with error: %s (0x%4.4X)",
+                                       _uam_manager_error_to_str(ret), ret);
+       }
+       if (0 != absence_env_sensors) {
+               /* Stop ABSENCE detection on envionmental sensors*/
+               ret = _uam_pm_stop_detection(UAM_DETECT_ABSENCE, absence_env_sensors);
+               if (UAM_ERROR_NONE != ret)
+                       UAM_ERR("Failed with error: %s (0x%4.4X)",
+                                       _uam_manager_error_to_str(ret), ret);
+       }
+
        for (l = services; NULL != l; l = g_slist_next(l)) {
                service = l->data;
                if (!service || !service->monitors)
@@ -1975,26 +1990,13 @@ static gboolean __start_detection(gpointer data)
 
 done:
        if (0 != presence_env_sensors) {
-               /* Stop PRESENCE detection on active envionmental sensors*/
-               ret = _uam_pm_stop_detection(UAM_DETECT_PRESENCE, presence_env_sensors);
-               if (UAM_ERROR_NONE != ret)
-                       UAM_ERR("Failed with error: %s (0x%4.4X)",
-                                       _uam_manager_error_to_str(ret), ret);
-
                /* Always Start PRESENCE detection on active envionmental sensors*/
                ret = _uam_pm_start_detection(UAM_DETECT_PRESENCE, presence_env_sensors);
                if (UAM_ERROR_NONE != ret)
                        UAM_ERR("Failed with error: %s (0x%4.4X)",
                                        _uam_manager_error_to_str(ret), ret);
        }
-
        if (0 != absence_env_sensors) {
-               /* Stop ABSENCE detection on envionmental sensors*/
-               ret = _uam_pm_stop_detection(UAM_DETECT_ABSENCE, absence_env_sensors);
-               if (UAM_ERROR_NONE != ret)
-                       UAM_ERR("Failed with error: %s (0x%4.4X)",
-                                       _uam_manager_error_to_str(ret), ret);
-
                /* Always Start ABSENCE detection on active envionmental sensors*/
                ret = _uam_pm_start_detection(UAM_DETECT_ABSENCE, absence_env_sensors);
                if (UAM_ERROR_NONE != ret)
@@ -3248,10 +3250,12 @@ void _uam_core_handle_detection_stopped(unsigned int sensor)
                        uam_db_service_info_t *service = mon->service;
                        cycle_state = UAM_DETECTION_CYCLE_END;
 
-                       UAM_DBG("[%s]->remaining_time: %d", service->name, service->remaining_time);
+                       UAM_DBG("mon->sensors[0x%X], [%s]->remaining_time: %d", mon->sensors, service->name, service->remaining_time);
                        if (!(mon->sensors & _uam_core_get_env_sensors())) {
-                               if (service->remaining_time < service->cycle)
+                               if (service->remaining_time < service->cycle) {
+                                       UAM_DBG("service->remaining_time < service->cycle, return");
                                        return;
+                               }
                        } else if (service->remaining_time > UAM_DETECTION_CYCLE_MIN) {
                                cycle_state = UAM_DETECTION_CYCLE_MID;
                        }