typedef struct {
+ bool found;
iotcon_device_info_cb cb;
void *user_data;
unsigned int id;
} icl_device_info_s;
typedef struct {
+ bool found;
iotcon_platform_info_cb cb;
void *user_data;
unsigned int id;
icl_device_info_s *cb_container = user_data;
iotcon_device_info_cb cb = cb_container->cb;
- if (cb_container->timeout_id)
- cb_container->timeout_id = 0;
+ cb_container->found = true;
g_variant_get(parameters, "(&s&s&s&s&s)", &uri_path, &info.device_name,
&info.spec_ver, &info.device_id, &info.data_model_ver);
return G_SOURCE_REMOVE;
}
- if (cb_container->timeout_id && cb_container->cb)
+ if (false == cb_container->found && cb_container->cb)
cb_container->cb(&info, IOTCON_ERROR_TIMEOUT, cb_container->user_data);
+ cb_container->timeout_id = 0;
icl_dbus_unsubscribe_signal(cb_container->id);
cb_container->id = 0;
return G_SOURCE_REMOVE;
}
+static void _icl_device_info_conn_cleanup(icl_device_info_s *cb_container)
+{
+ RET_IF(NULL == cb_container);
+ if (cb_container->timeout_id)
+ g_source_remove(cb_container->timeout_id);
+ free(cb_container);
+}
+
API int iotcon_get_device_info(const char *host_address,
iotcon_connectivity_type_e connectivity_type,
iotcon_device_info_cb cb,
cb_container->cb = cb;
cb_container->user_data = user_data;
- sub_id = icl_dbus_subscribe_signal(signal_name, cb_container, free,
- _icl_device_info_cb);
+ sub_id = icl_dbus_subscribe_signal(signal_name, cb_container,
+ _icl_device_info_conn_cleanup, _icl_device_info_cb);
if (0 == sub_id) {
ERR("icl_dbus_subscribe_signal() Fail");
free(cb_container);
icl_platform_info_s *cb_container = user_data;
iotcon_platform_info_cb cb = cb_container->cb;
- if (cb_container->timeout_id)
- cb_container->timeout_id = 0;
+ cb_container->found = true;
g_variant_get(parameters, "(&s&s&s&s&s&s&s&s&s&s&s&s)",
&uri_path,
return G_SOURCE_REMOVE;
}
- if (cb_container->timeout_id && cb_container->cb)
+ if (false == cb_container->found && cb_container->cb)
cb_container->cb(&info, IOTCON_ERROR_TIMEOUT, cb_container->user_data);
+ cb_container->timeout_id = 0;
icl_dbus_unsubscribe_signal(cb_container->id);
cb_container->id = 0;
return G_SOURCE_REMOVE;
}
+static void _icl_platform_info_conn_cleanup(icl_platform_info_s *cb_container)
+{
+ RET_IF(NULL == cb_container);
+
+ if (cb_container->timeout_id)
+ g_source_remove(cb_container->timeout_id);
+
+ free(cb_container);
+}
+
API int iotcon_get_platform_info(const char *host_address,
iotcon_connectivity_type_e connectivity_type,
iotcon_platform_info_cb cb,
cb_container->cb = cb;
cb_container->user_data = user_data;
- sub_id = icl_dbus_subscribe_signal(signal_name, cb_container, free,
- _icl_platform_info_cb);
+ sub_id = icl_dbus_subscribe_signal(signal_name, cb_container,
+ _icl_platform_info_conn_cleanup, _icl_platform_info_cb);
if (0 == sub_id) {
ERR("icl_dbus_subscribe_signal() Fail");
free(cb_container);
#define ICL_REMOTE_RESOURCE_MAX_TIME_INTERVAL 3600 /* 60 min */
typedef struct {
+ bool found;
iotcon_found_resource_cb cb;
void *user_data;
unsigned int id;
icl_found_resource_s *cb_container = user_data;
iotcon_found_resource_cb cb = cb_container->cb;
- if (cb_container->timeout_id)
- cb_container->timeout_id = 0;
+ cb_container->found = true;
g_variant_get(parameters, "(vi)", &payload, &connectivity_type);
return G_SOURCE_REMOVE;
}
- if (cb_container->timeout_id && cb_container->cb)
+ if (false == cb_container->found && cb_container->cb)
cb_container->cb(NULL, IOTCON_ERROR_TIMEOUT, cb_container->user_data);
+ cb_container->timeout_id = 0;
icl_dbus_unsubscribe_signal(cb_container->id);
cb_container->id = 0;
return G_SOURCE_REMOVE;
}
+static void _icl_find_resource_conn_cleanup(icl_found_resource_s *cb_container)
+{
+ RET_IF(NULL == cb_container);
+ if (cb_container->timeout_id)
+ g_source_remove(cb_container->timeout_id);
+ free(cb_container);
+}
+
/* The length of resource_type should be less than or equal to 61.
* If resource_type is NULL, then All resources in host are discovered. */
cb_container->cb = cb;
cb_container->user_data = user_data;
- sub_id = icl_dbus_subscribe_signal(signal_name, cb_container, free,
- _icl_found_resource_cb);
+ sub_id = icl_dbus_subscribe_signal(signal_name, cb_container,
+ _icl_find_resource_conn_cleanup, _icl_found_resource_cb);
if (0 == sub_id) {
ERR("icl_dbus_subscribe_signal() Fail");
return IOTCON_ERROR_DBUS;