env_sensors = _uam_core_get_env_sensors();
UAM_DBG("Envionmental sensors: 0x%8.8X", env_sensors);
- if (0 != env_sensors) {
- /* Stop PRESENCE detection on envionmental sensors*/
- ret = _uam_pm_stop_detection(UAM_DETECT_PRESENCE, env_sensors);
- if (UAM_ERROR_NONE != ret)
- UAM_ERR("Failed with error: %s (0x%4.4X)",
- _uam_manager_error_to_str(ret), ret);
-
- /* Stop ABSENCE detection on envionmental sensors*/
- ret = _uam_pm_stop_detection(UAM_DETECT_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 PRESENCE detection on envionmental sensors*/
- ret = _uam_pm_start_detection(UAM_DETECT_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 ABSENCE detection on envionmental sensors*/
- ret = _uam_pm_start_detection(UAM_DETECT_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;
}
done:
+ if (0 != env_sensors) {
+ /* Stop PRESENCE detection on envionmental sensors*/
+ ret = _uam_pm_stop_detection(UAM_DETECT_PRESENCE, env_sensors);
+ if (UAM_ERROR_NONE != ret)
+ UAM_ERR("Failed with error: %s (0x%4.4X)",
+ _uam_manager_error_to_str(ret), ret);
+
+ /* Stop ABSENCE detection on envionmental sensors*/
+ ret = _uam_pm_stop_detection(UAM_DETECT_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 PRESENCE detection on envionmental sensors*/
+ ret = _uam_pm_start_detection(UAM_DETECT_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 ABSENCE detection on envionmental sensors*/
+ ret = _uam_pm_start_detection(UAM_DETECT_ABSENCE, env_sensors);
+ if (UAM_ERROR_NONE != ret)
+ UAM_ERR("Failed with error: %s (0x%4.4X)",
+ _uam_manager_error_to_str(ret), ret);
+ }
+
FUNC_EXIT;
return TRUE;
}
if (!mon || !mon->name || !mon->service)
continue;
uam_db_service_info_t *service = mon->service;
-
- UAM_DBG("service->remaining_time: %d", service->remaining_time);
- cycle_state = (service->remaining_time <= UAM_DETECTION_CYCLE_MIN) ?
- UAM_DETECTION_CYCLE_END : UAM_DETECTION_CYCLE_MID;
+ cycle_state = UAM_DETECTION_CYCLE_END;
+
+ UAM_DBG("[%s]->remaining_time: %d", service->name, service->remaining_time);
+ if (!(mon->sensors & _uam_core_get_env_sensors())) {
+ if (service->remaining_time < service->cycle)
+ return;
+ } else if (service->remaining_time > UAM_DETECTION_CYCLE_MIN) {
+ cycle_state = UAM_DETECTION_CYCLE_MID;
+ }
_uam_manager_send_event(mon->name, UAM_EVENT_DETECTION_STOPPED,
g_variant_new("(si)", service->name, cycle_state));