GSList *ua_monitor_list;
static ua_monitor_h scanning_monitor = NULL;
+static gboolean __ua_monitor_is_only_env_in_conditions(
+ ua_monitor_s *monitor)
+{
+ return !((monitor->presence_bitmask_and | monitor->presence_bitmask_or) &
+ (UA_SENSOR_WIFI | UA_SENSOR_BLE | UA_SENSOR_BT));
+}
+
static int __ua_stop_monitoring(unsigned int bitmask, char *service,
ua_detection_type_e detect)
{
ret_if(NULL == user_state);
- /** Block user callback if environmental callback already sent*/
- if (monitor->env_user_cb_sent) {
- UA_DBG("Environmental User presence cb already sent");
+ /** Block user callback if only environmental sensors in AND/OR conditions*/
+ if (__ua_monitor_is_only_env_in_conditions(monitor)) {
+ UA_DBG("AND/OR conditions have env sensors only, so no user cb");
FUNC_EXIT;
return;
}
}
static void __ua_sensor_presence_detected(ua_monitor_s *monitor,
- ua_sensor_info_s *sensor_info, char *account, unsigned long long last_seen,
- char *device_id)
+ ua_sensor_info_s *sensor_info, char *account,
+ unsigned long long last_seen, char *device_id)
{
FUNC_ENTRY;