found_group_list = NULL;
- ret = companion_group_get_found_groups(&groups ,&count);
+ ret = companion_group_get_found_groups(&groups, &count);
if (ret == 0)
TC_PRT("group find successful");
else
TC_PRT("group find failed, ret [%d]", ret);
- TC_PRT("Found group count : ", count);
+ TC_PRT("Found group count : %d", count);
for (int i = 0; i < count; i++) {
companion_group_type_e type;
companion_device_find(input_int, _device_found_cb, _group_finish_cb, NULL);
if (ret == 0)
- TC_PRT("group find successful");
+ TC_PRT("device find successful");
else
- TC_PRT("group find failed, ret [%d]", ret);
+ TC_PRT("device find failed, ret [%d]", ret);
END();
return ret;
return ret;
}
+void _device_invite_result_cb(int result, void *user_data)
+{
+ TC_PRT("Invite complete !!!! ret : %d", result);
+}
+
int companion_device_invite_test(void)
{
int ret = 0;
BEGIN();
/* using stored group list and device list */
+ if (g_list_length(found_device_list) > 0 && g_list_length(found_group_list) > 0) {
+ TC_PRT("Invite Test Start");
+ companion_group_h group = (companion_group_h)(found_group_list[0].data);
+ companion_device_h device = (companion_device_h)(found_device_list[0].data);
+
+ companion_device_invite(group, device, "12341234", _device_invite_result_cb, NULL);
+
+ } else {
+ TC_PRT("not exist found group or device list");
+ }
END();
return ret;
}
+void _device_eject_result_cb(int result, void *user_data)
+{
+ TC_PRT("eject complete !!!! ret : %d", result);
+}
+
int companion_device_eject_test(void)
{
int ret = 0;
BEGIN();
/* using stored group list and device list */
+ if (g_list_length(found_device_list) > 0 && g_list_length(found_group_list) > 0) {
+ TC_PRT("Invite Test Start");
+ companion_group_h group = (companion_group_h)(found_group_list[0].data);
+ companion_device_h device = (companion_device_h)(found_device_list[0].data);
+
+ /* using stored group list and device list */
+ companion_device_eject(group, device, _device_eject_result_cb, NULL);
+ } else {
+ TC_PRT("not exist found group or device list");
+ }
+
END();
return ret;
typedef bool (*companion_group_found_cb)(companion_group_type_e type, companion_group_h group, void *user_data);
typedef bool (*companion_device_found_cb)(companion_device_h device, void *user_data);
-typedef void (*companion_group_finish_cb)(int result, void *user_data);
+typedef void (*companion_group_find_finish_cb)(int result, void *user_data);
+typedef void (*companion_device_find_finish_cb)(int result, void *user_data);
+typedef void (*companion_device_invite_result_cb)(int result, void *user_data);
+typedef void (*companion_device_eject_result_cb)(int result, void *user_data);
/* companion_group_create : craete group in my daemon */
int companion_group_create(char *group_name); /* O */
/* companion_group_find : find groups in my daemon + remote groups in network */
-int companion_group_find(int timeout, companion_group_found_cb found_cb, companion_group_finish_cb finish_cb, void *user_data); /* O */
+int companion_group_find(int timeout, companion_group_found_cb found_cb, companion_group_find_finish_cb finish_cb, void *user_data); /* O */
/* companion_group_find : find groups in my daemon + remote groups in network */
int companion_group_get_found_groups(companion_group_h **groups, int *count); /* O */
/* companion_group_join : join to remote group. if group handle is my daemon's, then the api return fail error */
-int companion_group_join(companion_group_h group, companion_group_finish_cb callback, void *user_data);
+int companion_group_join(companion_group_h group, companion_group_find_finish_cb callback, void *user_data);
/* companion_group_join : leave from remote group. if group handle is my daemon's, then the api return fail error */
-int companion_group_leave(companion_group_h group, companion_group_finish_cb callback, void *user_data);
+int companion_group_leave(companion_group_h group, companion_group_find_finish_cb callback, void *user_data);
/* companion_group_delete : remove group. if group handle is remote group, then the api return fail error */
int companion_group_delete(companion_group_h group);
int companion_group_merge(companion_group_h dest_group, companion_group_h src_group);
/* companion_group_device_find : Find the group devices on the network. (exclude myself) */
int companion_device_find(int timeout, companion_device_found_cb found_cb,
- companion_group_finish_cb finish_cb, void *user_data);
+ companion_device_find_finish_cb finish_cb, void *user_data);
/* companion_group_join : join to remote group. if group handle is my daemon's, then the api return fail error */
int companion_device_get_found_devices(companion_device_h **devices, int *count);
/* companion_group_device_invite : Invite a remote group device to my group. */
int companion_device_invite(companion_group_h group,
- companion_device_h device, char *PIN, companion_group_finish_cb callback, void *user_data);
+ companion_device_h device, char *PIN, companion_device_invite_result_cb callback, void *user_data);
/* companion_group_device_eject : Eject a remote group device from my group. */
int companion_device_eject(companion_group_h group,
- companion_device_h device, companion_group_finish_cb callback, void *user_data);
+ companion_device_h device, companion_device_eject_result_cb callback, void *user_data);
/* Group Information Module */
int companion_group_information_get_type(companion_group_h group, companion_group_type_e *type);
char *device_type;
} companion_device_t;
-typedef struct _group_event_cb_t {
+typedef struct _group_found_cb_t {
companion_group_found_cb found_cb;
- companion_group_finish_cb finish_cb;
void *user_data;
-} group_event_cb_t;
+} group_found_cb_t;
+group_found_cb_t group_found_cb;
-typedef struct _device_event_cb_t {
+typedef struct _device_found_cb_t {
companion_device_found_cb found_cb;
- companion_group_finish_cb finish_cb;
void *user_data;
-} device_event_cb_t;
+} device_found_cb_t;
+device_found_cb_t device_found_cb;
-static __thread GSList *group_event_cb_list = NULL;
-static __thread GSList *device_event_cb_list = NULL;
+typedef struct _group_find_finish_cb_t {
+ companion_group_find_finish_cb finish_cb;
+ void *user_data;
+} group_find_finish_cb_t;
+group_find_finish_cb_t group_find_finish_cb;
+
+typedef struct _device_find_finish_cb_t {
+ companion_device_find_finish_cb finish_cb;
+ void *user_data;
+} device_find_finish_cb_t;
+device_find_finish_cb_t device_find_finish_cb;
+
+typedef struct _device_invite_result_cb_t {
+ companion_device_invite_result_cb result_cb;
+ void *user_data;
+} device_invite_result_cb_t;
+device_invite_result_cb_t device_invite_result_cb;
+
+typedef struct _device_eject_result_cb_t {
+ companion_device_eject_result_cb result_cb;
+ void *user_data;
+} device_eject_result_cb_t;
+device_eject_result_cb_t device_eject_result_cb;
static companion_group_t *_create_group_handle(char *uri_path, char *device_id,
char *group_name, char *host_addr, char *resource_type, companion_group_type_e type)
g_variant_iter_free(iter);
group = _create_group_handle(uri_path, device_id, group_name, host_addr, resource_type, type);
+ group_found_cb.found_cb(type, group, group_found_cb.user_data);
+}
- for (GSList *l = group_event_cb_list; l != NULL; l = l->next) {
- group_event_cb_t *event_s = (group_event_cb_t *)l->data;
- event_s->found_cb(type, group, event_s->user_data);
- }
+static void _group_find_finish_cb(Group *object,
+ gint ret, gpointer user_data)
+{
+ group_find_finish_cb.finish_cb(ret, group_find_finish_cb.user_data);
}
static void __device_found_cb(Group *object,
- GVariant *va, gpointer user_data)
+ gint count, GVariant *va, gpointer user_data)
{
GVariantIter *iter = NULL;
+ GVariantIter *iter_row = NULL;
const gchar *key;
GVariant *key_value;
companion_device_t *device = NULL;
- char *device_id;
- char *friendly_name;
- char *device_type;
- g_variant_get(va, "a{sv}", &iter);
- while (g_variant_iter_loop(iter, "{sv}", &key, &key_value)) {
- if (g_strcmp0(key, "UUID") == 0) {
- device_id = g_variant_get_string(key_value, NULL);
- } else if (g_strcmp0(key, "FriendlyName") == 0) {
- friendly_name = g_variant_get_string(key_value, NULL);
- } else if (g_strcmp0(key, "DeviceType") == 0) {
- device_type = g_variant_get_string(key_value, NULL);
+ g_variant_get(va, "aa{sv}", &iter);
+ while (g_variant_iter_next(iter, "a{sv}", &iter_row)) {
+ char *device_id;
+ char *friendly_name;
+ char *device_type;
+
+ while (g_variant_iter_loop(iter_row, "{sv}", &key, &key_value)) {
+ if (g_strcmp0(key, "DeviceID") == 0) {
+ device_id = g_variant_get_string(key_value, NULL);
+ } else if (g_strcmp0(key, "FriendlyName") == 0) {
+ friendly_name = g_variant_get_string(key_value, NULL);
+ } else if (g_strcmp0(key, "DeviceType") == 0) {
+ device_type = g_variant_get_string(key_value, NULL);
+ }
}
- }
+ g_variant_iter_free(iter_row);
+ device = _create_device_handle(device_id, friendly_name, device_type);
+ device_found_cb.found_cb(device, device_found_cb.user_data);
+ }
g_variant_iter_free(iter);
+}
- device = _create_device_handle(device_id, friendly_name, device_type);
-
- for (GSList *l = device_event_cb_list; l != NULL; l = l->next) {
- device_event_cb_t *event_s = (device_event_cb_t *)l->data;
- event_s->found_cb(device, event_s->user_data);
- }
+static void _device_find_finish_cb(Group *object,
+ gint ret, gpointer user_data)
+{
+ device_find_finish_cb.finish_cb(ret, device_find_finish_cb.user_data);
}
-static void _finish_cb(Group *object,
+static void __device_invite_result_cb(Group *object,
gint ret, gpointer user_data)
{
- for (GSList *gl = group_event_cb_list; gl != NULL; gl = gl->next) {
- group_event_cb_t *event_s = (group_event_cb_t *)gl->data;
- event_s->finish_cb(ret, event_s->user_data);
- }
+ device_invite_result_cb.result_cb(ret, device_invite_result_cb.user_data);
+}
- for (GSList *dl = device_event_cb_list; dl != NULL; dl = dl->next) {
- device_event_cb_t *event_s = (device_event_cb_t *)dl->data;
- event_s->finish_cb(ret, event_s->user_data);
- }
+static void __device_eject_result_cb(Group *object,
+ gint ret, gpointer user_data)
+{
+ device_eject_result_cb.result_cb(ret, device_eject_result_cb.user_data);
}
+
static void _group_proxy_init(void)
{
GError *error = NULL;
&error);
g_signal_connect(group_proxy, "group-found", G_CALLBACK(__group_found_cb), NULL);
+ g_signal_connect(group_proxy, "group-find-finish", G_CALLBACK(_group_find_finish_cb), NULL);
g_signal_connect(group_proxy, "device-found", G_CALLBACK(__device_found_cb), NULL);
- g_signal_connect(group_proxy, "finish", G_CALLBACK(_finish_cb), NULL);
+ g_signal_connect(group_proxy, "device-find-finish", G_CALLBACK(_device_find_finish_cb), NULL);
+ g_signal_connect(group_proxy, "device-invite-result", G_CALLBACK(__device_invite_result_cb), NULL);
+ g_signal_connect(group_proxy, "device-eject-result", G_CALLBACK(__device_eject_result_cb), NULL);
+
}
static void _group_proxy_deinit(void)
return ret;
}
-int companion_group_find(int timeout, companion_group_found_cb found_cb, companion_group_finish_cb finish_cb, void *user_data)
+int companion_group_find(int timeout, companion_group_found_cb found_cb, companion_group_find_finish_cb finish_cb, void *user_data)
{
int ret = 0;
GError *error = NULL;
- /* set event cb */
- group_event_cb_t *event_t;
-
- event_t = g_try_new0(group_event_cb_t, 1);
- if (event_t == NULL)
- return -1;
-
- event_t->found_cb = found_cb;
- event_t->finish_cb = finish_cb;
- event_t->user_data = user_data;
-
- group_event_cb_list = g_slist_prepend(group_event_cb_list, event_t);
+ group_found_cb.found_cb = found_cb;
+ group_find_finish_cb.finish_cb = finish_cb;
+ group_found_cb.user_data = user_data;
+ group_find_finish_cb.user_data = user_data;
/* get groups from daemon using gdbus */
group_call_find_sync(group_proxy, timeout, &ret, NULL, &error);
}
int companion_device_find(int timeout, companion_device_found_cb found_cb,
- companion_group_finish_cb finish_cb, void *user_data)
+ companion_device_find_finish_cb finish_cb, void *user_data)
{
int ret = 0;
GError *error = NULL;
- /* set event cb */
- device_event_cb_t *event_t;
-
- event_t = g_try_new0(device_event_cb_t, 1);
- if (event_t == NULL)
- return -1;
-
- event_t->found_cb = found_cb;
- event_t->finish_cb = finish_cb;
- event_t->user_data = user_data;
-
- device_event_cb_list = g_slist_prepend(device_event_cb_list, event_t);
+ device_found_cb.found_cb = found_cb;
+ device_found_cb.user_data = user_data;
+ device_find_finish_cb.finish_cb= finish_cb;
+ device_find_finish_cb.user_data = user_data;
/* get groups from daemon using gdbus */
group_call_device_find_sync(group_proxy, timeout, &ret, NULL, &error);
}
int companion_device_invite(companion_group_h group,
- companion_device_h device, char *PIN, companion_group_finish_cb callback, void *user_data)
+ companion_device_h device, char *PIN, companion_device_invite_result_cb result_cb, void *user_data)
+{
+ int ret = 0;
+ GError *error = NULL;
+ companion_device_t *dev = (companion_device_t *)device;
+
+ device_invite_result_cb.result_cb = result_cb;
+ device_invite_result_cb.user_data = user_data;
+
+ group_call_device_invite_sync(group_proxy, dev->device_id, PIN, &ret, NULL, &error);
+}
+
+int companion_device_eject(companion_group_h group,
+ companion_device_h device, companion_device_eject_result_cb result_cb, void *user_data)
{
+ int ret = 0;
+ GError *error = NULL;
+ companion_device_t *dev = (companion_device_t *)device;
+
+ device_eject_result_cb.result_cb = result_cb;
+ device_eject_result_cb.user_data = user_data;
+ group_call_device_eject_sync(group_proxy, dev->device_id, &ret, NULL, &error);
}
int companion_group_information_get_type(companion_group_h group, companion_group_type_e *type)