- Problem: The crash happened when reusing one after destroying the device.
- Cause: Use the device handle of the device list directly without cloning.
- Solution: Clone the device handle before manipulation.
Change-Id: I47d640c56ca8063e2038debf1f6427beefc587a1
Signed-off-by: saerome.kim <saerome.kim@samsung.com>
gboolean isadded; /**< Is the user addition completed? */
gboolean default_user; /**< Is it a default user? */
gboolean create_by_app; /**< Did app add this user information? */
- unsigned long long last_presence_timestamp; /**< timestamp of last presence */
+ unsigned long long last_seen; /**< The time of last presence */
} ua_user_info_s;
/**
gboolean isadded; /**< Is the device addition completed? */
gboolean create_by_app; /**< Did app add this device information? */
gboolean discriminant; /**< Determines whether to judge PRESENCE/ABSENCE */
- unsigned long long last_presence_timestamp; /**< timestamp of last presence */
+ unsigned long long last_seen; /**< The time of last presence */
ua_ble_payload_s *payload; /**< BLE payload to filter device*/
} ua_dev_info_s;
* @post
*/
void _ua_monitor_handle_user_presence_detected(uam_sensor_info_s *sensor_info,
- char *service, char *account,
- unsigned long long timestamp, char *device_id);
+ char *service, char *account, unsigned long long timestamp, char *device_id);
/**
* @brief Stops monitoring detection.
* @pre
* @post
*/
-void _ua_monitor_handle_detection_stopped(char *svc_name, uam_cycle_state_e cycle_state);
+void _ua_monitor_handle_detection_stopped(char *svc_name,
+ uam_cycle_state_e cycle_state);
/**
* @brief Changes sensor state.
ua_user_h _ua_get_user_handle_by_account(const char *account);
/**
- * @brief set last presence timestamp in user handle.
+ * @brief set last presence time in user handle.
* @since_tizen 5.5
*
* @param[in] user_handle User handle.
- * @param[in] timestamp The timestamp to be updated in user handle.
+ * @param[in] last_seen The lastest time which updated in user handle.
*
* @return not null on success, otherwise error
*
* @pre
* @post
*/
-void _ua_set_user_last_presence_timestamp(ua_user_h user_handle,
- unsigned long long timestamp);
+void _ua_set_user_last_seen(ua_user_h user_handle,
+ unsigned long long last_seen);
/**
* @brief Checks whether a device exists in device list.
/**
* @ingroup CAPI_NETWORK_UA_MODULE
- * @brief Gets last presence timestamp info for user handle.
+ * @brief Gets last presence time info for user handle.
* @since_tizen 5.5
*
* @param[in] user_handle The user handle.
- * @param[out] timestamp The last presence timestamp information for UA user.
+ * @param[out] last_seen The last presence time information for UA user.
*
* @return 0 on success, otherwise a negative error value
* @retval #UA_ERROR_NONE Successful
* @post
*
*/
-int ua_user_get_last_presence(ua_user_h user_handle, unsigned long long *timestamp);
+int ua_user_get_last_presence(ua_user_h user_handle, unsigned long long *last_seen);
/**
* @ingroup CAPI_NETWORK_UA_MODULE
/**
* @ingroup CAPI_NETWORK_UA_MODULE
- * @brief Gets sensor's timestamp.
+ * @brief Gets sensor's bitmask.
* @since_tizen 5.5
*
* @param[in] sensor_handle The sensor handle
Name: capi-network-ua
Summary: User Awareness Framework CAPI
-Version: 0.13.2
+Version: 0.13.3
Release: 1
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
UA_VALIDATE_INPUT_PARAMETER(timestamp);
UA_PRINT_DEVICE_HANDLE(device_handle);
- *timestamp = device->last_presence_timestamp;
+ *timestamp = device->last_seen;
FUNC_EXIT;
return UA_ERROR_NONE;
device->type = org_device->type;
device->os = org_device->os;
device->discriminant = org_device->discriminant;
- device->last_presence_timestamp = org_device->last_presence_timestamp;
+ device->last_seen = org_device->last_seen;
if (!device->user) {
/* Currently user info will be create and store at this point */
device_info->type = _to_ua_mac_type(ptr->type);
device_info->os = ptr->operating_system;
device_info->discriminant = ptr->discriminant;
- device_info->last_presence_timestamp = ptr->last_seen;
+ device_info->last_seen = ptr->last_seen;
ua_devices_list = g_slist_append(ua_devices_list, device_info);
} else {
UA_ERR("OPERATION_FAILED(0x%08x)",
device_info->handle = (ua_device_h)device_info;
device_info->type = _to_ua_mac_type(ptr->type);
device_info->os = ptr->operating_system;
- device_info->last_presence_timestamp = ptr->last_seen;
+ device_info->last_seen = ptr->last_seen;
device_info->discriminant = ptr->discriminant;
device_info->user = (ua_user_h)user;
ua_devices_user_list = g_slist_append(ua_devices_user_list, device_info);
ret_if(NULL == sensor_info);
sensor_info->sensor_bitmask = event_data->sensor_bitmask;
- sensor_info->timestamp = event_data->timestamp;
+ sensor_info->timestamp = event_data->last_seen;
UA_INFO("sensor_info: bitmask[%u], timestamp [%llu]",
sensor_info->sensor_bitmask, sensor_info->timestamp);
_ua_monitor_handle_user_presence_detected(
sensor_info, event_data->service,
- event_data->account, event_data->timestamp,
+ event_data->account, event_data->last_seen,
event_data->device_id);
g_free(sensor_info);
}
static void __ua_sensor_presence_detected(ua_monitor_s *monitor,
- ua_sensor_info_s *sensor_info, char *account, unsigned long long timestamp,
+ ua_sensor_info_s *sensor_info, char *account, unsigned long long last_seen,
char *device_id)
{
FUNC_ENTRY;
device_handle);
ua_user_h user_handle = _ua_get_user_handle_by_account(user_state->account);
- _ua_set_user_last_presence_timestamp(user_handle, timestamp);
+ _ua_set_user_last_seen(user_handle, last_seen);
}
if (!monitor->presence_detection_started) {
if (!service || !g_strcmp0(service, monitor->service)) {
/* Presence detection ongoing */
- __ua_sensor_presence_detected(monitor, sensor_info, account,
- timestamp, device_id);
+ __ua_sensor_presence_detected(monitor, sensor_info, account, timestamp,
+ device_id);
}
}
_ua_free_sensor_info(sensor_info);
device_info->type = _to_ua_mac_type(ptr->type);
device_info->os = ptr->operating_system;
device_info->discriminant = ptr->discriminant;
- device_info->last_presence_timestamp = ptr->last_seen;
+ device_info->last_seen = ptr->last_seen;
device_info->user = NULL;
if (!foreach_cb(service->service_handle, device_info->handle, user_data)) {
return NULL;
}
-void _ua_set_user_last_presence_timestamp(ua_user_h user_handle,
- unsigned long long timestamp)
+void _ua_set_user_last_seen(ua_user_h user_handle,
+ unsigned long long last_seen)
{
FUNC_ENTRY;
ua_user_info_s *user = (ua_user_info_s *)user_handle;
return;
}
- user->last_presence_timestamp = timestamp;
+ user->last_seen = last_seen;
FUNC_EXIT;
}
}
user->state = UA_PRSENCE_STATE_INVALID;
user->account = NULL;
- user->last_presence_timestamp = 0;
+ user->last_seen = 0;
/* Add user to list of users*/
*user_handle = (ua_user_h)user;
user_dst->isadded = user_src->isadded;
user_dst->default_user = user_src->default_user;
user_dst->create_by_app = user_src->create_by_app;
- user_dst->last_presence_timestamp = user_src->last_presence_timestamp;
+ user_dst->last_seen = user_src->last_seen;
user_dst->name = g_strdup(user_src->name);
if (!user_dst->name) {
return UA_ERROR_NONE;
}
-int ua_user_get_last_presence(ua_user_h user_handle, unsigned long long *timestamp)
+int ua_user_get_last_presence(ua_user_h user_handle, unsigned long long *last_seen)
{
FUNC_ENTRY;
ua_user_info_s *user = (ua_user_info_s *)user_handle;
UA_VALIDATE_INPUT_PARAMETER(user_handle);
- UA_VALIDATE_INPUT_PARAMETER(timestamp);
+ UA_VALIDATE_INPUT_PARAMETER(last_seen);
UA_PRINT_USER_HANDLE(user_handle);
/* update user list from uam_api */
- *timestamp = user->last_presence_timestamp;
+ *last_seen = user->last_seen;
FUNC_EXIT;
return UA_ERROR_NONE;
device_info->handle = (ua_device_h)device_info;
device_info->type = _to_ua_mac_type(ptr->type);
device_info->os = ptr->operating_system;
- device_info->last_presence_timestamp = ptr->last_seen;
+ device_info->last_seen = ptr->last_seen;
device_info->discriminant = ptr->discriminant;
device_info->user = (ua_user_h)user;
ua_devices_user_list = g_slist_append(ua_devices_user_list, device_info);
GSList *next = iter->next;
ua_device_h *handle = iter->data;
if (handle && ++id == selected_id) {
- g_device_h = handle; /* Make selected device as a current one */
- uat_update_device_info(); /* Update device info. */
+ /* Make selected device as a current one */
+ ua_device_clone(&g_device_h, handle);
+ /* Update device info. */
+ uat_update_device_info();
msg("[%d] device selected", selected_id);
return RET_SUCCESS;
}
char *service_name = NULL;
char *account = NULL;
char *name = NULL;
- unsigned long long timestamp = 0;
+ unsigned long long last_seen = 0;
ret = ua_service_get_name(service_handle, &service_name);
if (UA_ERROR_NONE == ret)
g_free(name);
}
- ret = ua_user_get_last_presence(handle, ×tamp);
+ ret = ua_user_get_last_presence(handle, &last_seen);
if (UA_ERROR_NONE == ret)
- msglr("last present at %llu", timestamp);
+ msglr("last present at %llu", last_seen);
return true;
char *ipv4 = NULL;
bool required = false;
bool discriminant = false;
- unsigned long long timestamp = 0;
+ unsigned long long last_seen = 0;
char service_id = 0;
char device_icon = 0;
char purpose = 0;
if (UA_ERROR_NONE == ret_temp)
msgb("Discriminant : %s", discriminant ? "Enabled" : "Disabled");
- ret_temp = ua_device_get_last_presence(handle, ×tamp);
+ ret_temp = ua_device_get_last_presence(handle, &last_seen);
if (UA_ERROR_NONE == ret_temp)
- msgb("Last present at : %llu", timestamp);
+ msgb("Last present at : %llu", last_seen);
ret_temp = ua_device_get_payload_service_id(handle, &service_id);
if (UA_ERROR_NONE == ret_temp)
ua_user_h handle = NULL;
char *account = NULL;
char *name = NULL;
- unsigned long long timestamp = 0;
+ unsigned long long last_seen = 0;
if (!user_handle) {
msgr("user_handle is NULL");
g_free(name);
}
- ret = ua_user_get_last_presence(handle, ×tamp);
+ ret = ua_user_get_last_presence(handle, &last_seen);
if (UA_ERROR_NONE == ret)
- msglr("last present at %llu", timestamp);
+ msglr("last present at %llu", last_seen);
return true;
}
char *wifi_bssid = NULL;
char *ipv4 = NULL;
bool required = false;
- unsigned long long timestamp = 0;
+ unsigned long long last_seen = 0;
bool discriminant = false;
char service_id = 0;
char device_icon = 0;
if (UA_ERROR_NONE == ret_temp)
msgc("Pairing Required : %s", required ? "YES" : "NO");
- ret_temp = ua_device_get_last_presence(handle, ×tamp);
+ ret_temp = ua_device_get_last_presence(handle, &last_seen);
if (UA_ERROR_NONE == ret_temp)
- msgc("Last present at : %llu", timestamp);
+ msgc("Last present at : %llu", last_seen);
ret_temp = ua_device_get_payload_service_id(handle, &service_id);
if (UA_ERROR_NONE == ret_temp)