or_condition ? "true" : "false");
if (monitor->presence_bitmask_and == 0 || monitor->presence_bitmask_or == 0)
- condition_result = monitor->presence_bitmask_and ? or_condition : and_condition;
+ condition_result = monitor->presence_bitmask_and ? and_condition : or_condition;
else if (monitor->presence_conjunction == UA_OR_OPERATION)
condition_result = and_condition || or_condition;
else
env_bitmask = monitor->presence_detected_bitmask
& (UA_SENSOR_MOTION | UA_SENSOR_LIGHT);
- /** Get sensor list*/
- sensors = ua_sensor_get_sensor_handle_list(
- monitor->presence_detected_bitmask & (user_state->sensor_bitmask | env_bitmask));
-
/**
* Filter the list of found_devices according to sensors mentioned in
* AND/OR conditions.
devices = g_slist_prepend(devices, dev);
}
+ /** Get sensor list*/
+ sensors = ua_sensor_get_sensor_handle_list(
+ monitor->presence_detected_bitmask & (user_state->sensor_bitmask | env_bitmask)
+ & filter_bitmask);
+
((ua_presence_user_detected_cb)monitor->presence_user_cb.callback)(
UA_ERROR_NONE, monitor, user_handle,
devices, sensors,
FUNC_ENTRY;
GSList *sensors = 0;
gboolean condition_result = 0;
+ unsigned int filter_bitmask = 0;
if (monitor->env_user_cb_sent) {
UA_DBG("Environmental User presence cb already sent");
}
/** Get sensor list*/
- sensors = ua_sensor_get_sensor_handle_list(monitor->presence_detected_bitmask);
+ filter_bitmask =
+ monitor->presence_bitmask_and | monitor->presence_bitmask_or;
+ sensors = ua_sensor_get_sensor_handle_list(monitor->presence_detected_bitmask
+ & filter_bitmask);
((ua_presence_user_detected_cb)monitor->presence_user_cb.callback)(
UA_ERROR_NONE, monitor, NULL,
{
FUNC_ENTRY;
unsigned int env_absence_bitmask = 0;
+ unsigned int filter_bitmask = 0;
unsigned int user_sensor_bitmask = user_state->sensor_bitmask;
gboolean and_condition = 0;
gboolean or_condition = 0;
or_condition ? "true" : "false");
if (monitor->absence_bitmask_and == 0 || monitor->absence_bitmask_or == 0)
- condition_result = monitor->absence_bitmask_and ? or_condition : and_condition;
+ condition_result = monitor->absence_bitmask_and ? and_condition : or_condition;
else if (monitor->absence_conjunction == UA_OR_OPERATION)
condition_result = and_condition || or_condition;
else
}
/** Get sensor list*/
+ filter_bitmask =
+ monitor->absence_bitmask_and | monitor->absence_bitmask_or;
sensors = ua_sensor_get_sensor_handle_list(
- monitor->absence_detected_bitmask & (user_sensor_bitmask | env_absence_bitmask));
+ monitor->absence_detected_bitmask & (user_sensor_bitmask | env_absence_bitmask)
+ & filter_bitmask);
((ua_absence_user_detected_cb)monitor->absence_user_cb.callback)(
UA_ERROR_NONE, monitor, user_handle, sensors,