*/
#define UA_MIN_DETECTION_CYCLE 60 /**< 1 min */
+/**
+ * @brief Maximum sensor values count.
+ * @since_tizen 5.5
+ */
+#define UA_SENSOR_MAX_VALUES 4 /**< 4 values */
+
/**
* @brief Default service name.
* @since_tizen 5.5
* @pre
* @post
*/
-void _ua_monitor_handle_user_presence_detected(unsigned int bitmask,
+void _ua_monitor_handle_user_presence_detected(uam_sensor_info_s *sensor_info,
char *service, char *account,
long timestamp, char *device_id);
*/
ua_sensor_e _uam_to_ua_sensor(uam_sensor_bitmask_e bitmask);
+/**
+ * @ingroup CAPI_NETWORK_UA_MODULE
+ * @internal
+ * @brief Converts uam sensor info to ua sensor info.
+ * @since_tizen 5.5
+ *
+ * @remarks The returned value can be used until return call function is valid.
+ *
+ * @param[in] Struct uam sensor info to be converted.
+ *
+ * @return Sensor info struct
+ *
+ * @exception
+ * @pre
+ * @post
+ *
+ */
+ua_sensor_info_s* _uam_to_ua_sensor_info(uam_sensor_info_s *info);
+
#ifdef __cplusplus
}
#endif
UA_AND_OPERATION = 0x01 /**< AND & OR */
} ua_condition_conjunction_e;
+/**
+ * @brief sensor info data structure.
+ * @since_tizen 5.5
+ */
+typedef struct {
+ ua_sensor_e bitmask;
+ long int timestamp;
+ int accuracy;
+ int count;
+ double *values;
+} ua_sensor_info_s;
+
/**
* @ingroup CAPI_NETWORK_UA_MODULE
* @brief The handle of user presence/absence monitor.
Name: capi-network-ua
Summary: User Awareness Framework CAPI
-Version: 0.9.4
+Version: 0.10.0
Release: 1
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
switch (event) {
case UAM_EVENT_USER_PRESENCE_DETECTED: {
uam_detection_event_data_s *event_data = NULL;
+ uam_sensor_info_s *sensor_info = NULL;
event_data = event_param->data;
ret_if(NULL == event_data);
ret_if(0 == event_data->timestamp);
ret_if(NULL == event_data->device_id);
+ sensor_info->sensor_bitmask = event_data->sensor_bitmask;
_ua_monitor_handle_user_presence_detected(
- event_data->sensor_bitmask, event_data->service,
+ sensor_info, event_data->service,
event_data->account, event_data->timestamp,
event_data->device_id);
break;
}
case UAM_EVENT_PRESENCE_DETECTED: {
- uam_sensor_info_s *event_data = NULL;
+ uam_sensor_info_s *sensor_info = NULL;
- event_data = event_param->data;
- ret_if(NULL == event_data);
+ sensor_info = event_param->data;
+ ret_if(NULL == sensor_info);
UA_INFO("sensor: [%u], timestamp [%ld], accuracy [%d], value [%f]",
- event_data->sensor_bitmask, event_data->timestamp,
- event_data->accuracy, event_data->values[0]);
- _ua_monitor_handle_user_presence_detected(event_data->sensor_bitmask, NULL,
+ sensor_info->sensor_bitmask, sensor_info->timestamp,
+ sensor_info->accuracy, sensor_info->values[0]);
+ _ua_monitor_handle_user_presence_detected(sensor_info, NULL,
NULL, 0, NULL);
break;
FUNC_EXIT;
}
-void _ua_monitor_handle_user_presence_detected(unsigned int uam_bitmask,
+void _ua_monitor_handle_user_presence_detected(uam_sensor_info_s *info,
char *service, char *account, long timestamp, char *device_id)
{
FUNC_ENTRY;
GSList *l;
- ua_sensor_e bitmask = _uam_to_ua_sensor(uam_bitmask);
+ ua_sensor_info_s *sensor_info;
+ ua_sensor_e bitmask;
+ ret_if(NULL == info);
+
+ sensor_info = _uam_to_ua_sensor_info(info);
+ ret_if(NULL == sensor_info);
+ bitmask = sensor_info->bitmask;
for (l = ua_monitor_list; l; l = g_slist_next(l)) {
ua_monitor_s *monitor = l->data;
if (!service || !g_strcmp0(service, monitor->service)) {
/* Presence detection ongoing */
+ monitor->user_data = sensor_info;
__ua_sensor_presence_detected(monitor, bitmask, account,
timestamp, device_id);
}
}
FUNC_EXIT;
}
+
+ua_sensor_info_s* _uam_to_ua_sensor_info(uam_sensor_info_s *info)
+{
+ FUNC_ENTRY;
+ ua_sensor_info_s *sensor_info = NULL;
+ unsigned int i = 0;
+
+ sensor_info = g_malloc0(sizeof(ua_sensor_info_s));
+ if (!sensor_info) {
+ UA_ERR("g_malloc0 failed");
+ return NULL;
+ }
+ sensor_info->values = NULL;
+ sensor_info->values = g_malloc0(UA_SENSOR_MAX_VALUES*sizeof(double));
+ if (!sensor_info->values) {
+ UA_ERR("g_malloc0 failed");
+ g_free(sensor_info);
+ return NULL;
+ }
+ sensor_info->timestamp = info->timestamp;
+ sensor_info->count = info->count;
+ sensor_info->bitmask = _uam_to_ua_sensor(info->sensor_bitmask);
+ for(i = 0; i < UA_SENSOR_MAX_VALUES; i++) {
+ sensor_info->values[i] = info->values[i];
+ }
+
+ return sensor_info;
+ FUNC_EXIT;
+}
msg("\n[%s] Device PRESENCE [%d]", pbuf, sensor);
free(pbuf);
+ ua_sensor_info_s *info;
+ info = user_data;
if (UA_SENSOR_BLE == (UA_SENSOR_BLE & sensor)) {
msgb("[%s] PRESENCE detected [%s]",
uat_get_sensor_bitmask_str(UA_SENSOR_BLE), uat_get_error_str(result));
uat_get_sensor_bitmask_str(UA_SENSOR_WIFI), uat_get_error_str(result));
}
if (UA_SENSOR_LIGHT == (UA_SENSOR_LIGHT & sensor)) {
- msgb("[%s] PRESENCE detected [%s]",
- uat_get_sensor_bitmask_str(UA_SENSOR_LIGHT),uat_get_error_str(result));
+ msgb("[%s] PRESENCE detected at timestamp [%ld] lux [%f] [%s]",
+ uat_get_sensor_bitmask_str(UA_SENSOR_LIGHT), info->timestamp,
+ info->values[0], uat_get_error_str(result));
}
if (UA_SENSOR_MOTION == (UA_SENSOR_MOTION & sensor)) {
- msgb("[%s] PRESENCE detected [%s]",
- uat_get_sensor_bitmask_str(UA_SENSOR_MOTION), uat_get_error_str(result));
+ msgb("[%s] PRESENCE detected at timestamp [%ld] [%s]",
+ uat_get_sensor_bitmask_str(UA_SENSOR_MOTION), info->timestamp, uat_get_error_str(result));
}
}