/* Insert device service info to db */
ret = _uam_db_insert_device_service_info(device->device_id,
tech->tech_type, mac, service->name, service->cycle,
- device->discriminant, tech->last_seen);
+ device->discriminant, 0);
if (UAM_ERROR_NONE != ret) {
UAM_WARN("Device service addition to persistent DB failed");
__uam_db_end_transaction(0);
return ret;
}
- ret = _uam_core_update_svc_dev_info(device->device_id, tech->tech_type,
- service->name, device->discriminant, tech->last_seen);
+ ret = _uam_core_update_svc_dev_info(device->device_id,
+ tech->tech_type, service->name, device->discriminant, 0);
if (UAM_ERROR_NONE != ret) {
UAM_WARN("Device service addition to service device mapping failed");
__uam_db_end_transaction(0);
mac = __get_mac_addr(tech_info);
/* Insert device service info to db */
- ret = _uam_db_insert_device_service_info(device_id, tech_type, mac, service->name,
- service->cycle, tech_info->discriminant, tech_info->last_seen);
+ ret = _uam_db_insert_device_service_info(device_id, tech_type, mac,
+ service->name, service->cycle, tech_info->discriminant, 0);
if (UAM_ERROR_NONE != ret) {
UAM_WARN("Device service addition to persistent DB failed");
return ret;
}
ret = _uam_core_update_svc_dev_info(device_id, tech_type, service->name,
- tech_info->discriminant, tech_info->last_seen);
+ tech_info->discriminant, 0);
if (UAM_ERROR_NONE != ret) {
UAM_WARN("Device service addition to svc dev mapping failed");
return ret;
}
void __send_user_presence_event(uam_db_tech_info_t *tech, unsigned int sensor,
- char *device_id)
+ uam_device_info_s *dev_info)
{
FUNC_ENTRY;
uam_svc_dev_info_t *svc_dev = NULL;
gboolean live_monitoring = FALSE;
unsigned long long timestamp;
+ int ret;
ret_if(NULL == tech);
ret_if(NULL == tech->svc_list);
+ ret_if(NULL == dev_info);
user = tech->device->user;
user->last_seen = tech->last_seen;
for (l = tech->svc_list; NULL != l; l = g_slist_next(l)) {
uam_db_service_info_t *svc = l->data;
GSList *l1;
+ live_monitoring = FALSE;
if (!svc || !svc->monitors)
continue;
continue;
UAM_DBG("Check service device discriminant");
- svc_dev = _uam_core_find_svc_dev_info(device_id, tech->tech_type, svc->name);
+ svc_dev = _uam_core_find_svc_dev_info(dev_info->device_id,
+ dev_info->type, svc->name);
if (!svc_dev || !svc_dev->discriminant)
continue;
continue;
/*
- * For current service, if any its running monitor has same sensor
+ * For current service, if any of its running monitor has same sensor
* and detection_mode
*/
live_monitoring = TRUE;
_uam_manager_send_event(mon->name,
UAM_EVENT_USER_PRESENCE_DETECTED,
g_variant_new("(utsss)", sensor, timestamp,
- user->account, svc->name,device_id));
+ user->account, svc->name, dev_info->device_id));
UAM_DBG("Sent UAM_EVENT_USER_PRESENCE_DETECTED to %s"
" on device %s"
" for 0x%8.8X, User: %s Service: %s Timestamp: %llu",
- mon->name, device_id,
+ mon->name, dev_info->device_id,
sensor, user->account,
svc->name,
timestamp);
}
- if (live_monitoring)
+ /* Update service specific device last_seen in svc_dev list and DB */
+ if (live_monitoring) {
svc_dev->last_seen = tech->last_seen;
+ ret = _uam_db_update_device_service_last_seen(dev_info->device_id,
+ dev_info->type, dev_info->mac, svc->name, tech->last_seen);
+ if (UAM_ERROR_NONE != ret)
+ UAM_WARN("_uam_db_update_device_service_last_seen failed");
+ }
}
FUNC_EXIT;
}
/* Send user presence event and update service_device timestamp */
- __send_user_presence_event(tech, sensor, dev_info->device_id);
+ __send_user_presence_event(tech, sensor, dev_info);
__uam_db_end_transaction(1);
FUNC_EXIT;
PREPARE_QUERY(rc, db, update_device_service_discriminant,
UPDATE_DEVICE_SERVICE_DISCRIMINANT, __uam_device_service_finalize_update);
PREPARE_QUERY(rc, db, update_device_service_last_seen,
- UPDATE_DEVICE_SERVICE_DISCRIMINANT, __uam_device_service_finalize_update);
+ UPDATE_DEVICE_SERVICE_LAST_SEEN, __uam_device_service_finalize_update);
initialized = 1;
FUNC_EXIT;
UAM_INFO("%d-%d", device_number, service_number);
DB_ACTION(sqlite3_bind_int(stmt, 1, discriminant), error_code, handle_error);
- DB_ACTION(sqlite3_bind_int(stmt, 2, device_number), error_code, handle_error);
- DB_ACTION(sqlite3_bind_int(stmt, 3, service_number), error_code, handle_error);
+ DB_ACTION(sqlite3_bind_int(stmt, 2, device_number),
+ error_code, handle_error);
+ DB_ACTION(sqlite3_bind_int(stmt, 3, service_number),
+ error_code, handle_error);
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
UAM_INFO("%d-%d", device_number, service_number);
DB_ACTION(sqlite3_bind_int(stmt, 1, last_seen), error_code, handle_error);
- DB_ACTION(sqlite3_bind_int(stmt, 2, device_number), error_code, handle_error);
- DB_ACTION(sqlite3_bind_int(stmt, 3, service_number), error_code, handle_error);
+ DB_ACTION(sqlite3_bind_int(stmt, 2, device_number),
+ error_code, handle_error);
+ DB_ACTION(sqlite3_bind_int(stmt, 3, service_number),
+ error_code, handle_error);
sql_ret = sqlite3_step(stmt);
if (sql_ret != SQLITE_DONE) {
}
int _uam_db_update_device_service_discriminant(const char *device_id,
- int tech_type, const char *address, const char *service_name, gboolean discriminant)
+ int tech_type, const char *address, const char *service_name,
+ gboolean discriminant)
{
FUNC_ENTRY;
int ret = UAM_ERROR_NONE;
db_service_info_t info;
int service_number = 0;
- UAM_INFO("%s-%d-%s-%s-%llu", device_id, tech_type, address, service_name, last_seen);
+ UAM_INFO("%s-%d-%s-%s-%llu", device_id, tech_type, address, service_name,
+ last_seen);
int device_number = 0;
- ret = _uam_db_get_device_number(device_id, tech_type, address, &device_number);
+ ret = _uam_db_get_device_number(device_id, tech_type, address,
+ &device_number);
if (UAM_ERROR_NONE != ret)
goto handle_error;
if (UAM_ERROR_NONE != ret)
goto handle_error;
- UAM_DBG("Device-service info updated [%d] [%d]", device_number, service_number);
+ UAM_DBG("Device-service last_seen updated [%d] [%d]", device_number,
+ service_number);
handle_error:
FUNC_EXIT;