GList *dbus_sub_ids;
};
struct agent_s agent;
+
+#ifdef EJECT_DEVICE_BY_MULTI_RUN
static bool mot_dev2 = false;
static char *device_uuid1 = NULL;
static char *device_uuid2 = NULL;
+#endif
int agent_get_ownerid(char* deviceid)
{
return result;
}
+int agent_unlink(char* uuid_str1, char *uuid_str2)
+{
+ GVariant *variant = NULL;
+ int result = COMP_ERROR_NONE;
+ GError *error = NULL;
+
+ if (NULL == agent.dbus_connection || NULL == agent.gproxy_agent_service) {
+ LOG_ERR("I/O error");
+ return COMP_ERROR_IO_ERROR;
+ }
+
+ variant = g_dbus_proxy_call_sync(agent.gproxy_agent_service, "unlink",
+ g_variant_new("(ss)", uuid_str1, uuid_str2), G_DBUS_CALL_FLAGS_NONE,
+ -1, NULL, &error);
+ if (variant) {
+ g_variant_get(variant, "(i)", &result);
+ LOGD("remove_mo status 0x%x", result);
+ } else if (error) {
+ LOGE("Failed DBus call [%s]", error->message);
+ g_error_free(error);
+ return COMP_ERROR_IO_ERROR;
+ }
+#ifdef EJECT_DEVICE_BY_MULTI_RUN
+ if (result == COMP_ERROR_NONE) {
+ device_uuid1 = g_strdup(uuid_str1);
+ device_uuid2 = g_strdup(uuid_str2);
+ }
+#endif
+ return result;
+}
+
int agent_remove_mo_at_device(char* uuid_str)
{
GVariant *variant = NULL;
return result;
}
-int agent_remove_myowned_device(char* uuid_str1, char *uuid_str2)
+int agent_pair(char *pin, char* target1, char *subject1, char *uri1,
+ char *rt1, char *interface1, int permission1, char* target2, char *subject2, char *uri2,
+ char *rt2, char *interface2, int permission2)
+{
+ GVariant *variant = NULL;
+ int result = COMP_ERROR_NONE;
+ GError *error = NULL;
+
+ if (NULL == agent.dbus_connection || NULL == agent.gproxy_agent_service) {
+ LOG_ERR("I/O error");
+ return COMP_ERROR_IO_ERROR;
+ }
+
+ variant = g_dbus_proxy_call_sync(agent.gproxy_agent_service, "pair",
+ g_variant_new("(ssssssisssssi)", pin,
+ target1, subject1, uri1, rt1, interface1, permission1,
+ target2, subject2, uri2, rt2, interface2, permission2),
+ G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+ if (variant) {
+ g_variant_get(variant, "(i)", &result);
+ LOGD("pair status 0x%x", result);
+ } else if (error) {
+ LOGE("Failed DBus call [%s]", error->message);
+ g_error_free(error);
+ return COMP_ERROR_IO_ERROR;
+ }
+
+ return result;
+}
+
+int agent_unpair(char* uuid_str1, char *uuid_str2)
{
GVariant *variant = NULL;
int result = COMP_ERROR_NONE;
return COMP_ERROR_IO_ERROR;
}
- if (result == COMP_ERROR_NONE) {
- device_uuid1 = g_strdup(uuid_str1);
- device_uuid2 = g_strdup(uuid_str2);
- }
-
return result;
}
return proxy;
}
+#ifdef EJECT_DEVICE_BY_MULTI_RUN
static gboolean __perform_agent_pairwise(gpointer data)
{
int ret;
int ret;
ret = agent_remove_mo_at_device(device_uuid2);
-#if 0
if (ret != COMP_ERROR_NONE) {
comp_group_notify_group_dismiss(ret);
g_free(device_uuid1);
g_free(device_uuid2);
device_uuid1 = NULL;
}
-#endif
return FALSE;
}
int ret;
ret = agent_remove_cred_at_local(device_uuid2);
-#if 0
if (ret != COMP_ERROR_NONE) {
comp_group_notify_group_dismiss(ret);
g_free(device_uuid1);
g_free(device_uuid2);
device_uuid1 = NULL;
}
-#endif
return FALSE;
}
+#endif
static gboolean __perform_mot_me(gpointer data)
{
g_variant_get(parameters, "(i)", &result);
LOG_DEBUG("Result : %d", result);
} else if (0 == g_strcmp0(signal_name, "mot_done")) {
+#ifdef EJECT_DEVICE_BY_MULTI_RUN
comp_mot_device_t *device;
comp_context_t *comp_ctx = comp_context_get_context();
if (comp_ctx && (TRUE == comp_ctx->mot_me) ) {
g_timeout_add(10, __perform_agent_pairwise, NULL);
}
+#endif
} else if (0 == g_strcmp0(signal_name, "remove_mo_done")) {
g_variant_get(parameters, "(i)", &result);
LOG_DEBUG("Result : %d", result);
-
+#ifdef EJECT_DEVICE_BY_MULTI_RUN
g_timeout_add(10, __perform_remove_cred_at_local, NULL);
-
+#endif
} else if (0 == g_strcmp0(signal_name, "remove_cred_local_done")) {
g_variant_get(parameters, "(i)", &result);
LOG_DEBUG("Result : %d", result);
-
+#ifdef EJECT_DEVICE_BY_MULTI_RUN
comp_group_notify_group_dismiss(result);
g_free(device_uuid1);
device_uuid1 = NULL;
g_free(device_uuid2);
device_uuid1 = NULL;
+#endif
} else if (0 == g_strcmp0(signal_name, "pairwise_done")) {
g_variant_get(parameters, "(i)", &result);
LOG_DEBUG("Result : %d", result);
if (comp_group_get_invite_info() != NULL)
comp_group_notify_group_invite(result);
- } else if (0 == g_strcmp0(signal_name, "unpair_done")) {
+ } else if (0 == g_strcmp0(signal_name, "unlink_done")) {
g_variant_get(parameters, "(i)", &result);
LOG_DEBUG("Result : %d", result);
-#if 0
+#ifdef EJECT_DEVICE_BY_MULTI_RUN
if (result != 0) {
comp_group_notify_group_dismiss(result);
g_free(device_uuid1);
g_free(device_uuid2);
device_uuid1 = NULL;
}
-#endif
+
g_timeout_add(10, __perform_remove_mot_dev2, NULL);
+#endif
+ } else if (0 == g_strcmp0(signal_name, "pair_done")) {
+
+ g_variant_get(parameters, "(i)", &result);
+ LOG_DEBUG("Result : %d", result);
+
+ comp_group_notify_group_invite(result);
+ }else if (0 == g_strcmp0(signal_name, "unpair_done")) {
+
+ g_variant_get(parameters, "(i)", &result);
+ LOG_DEBUG("Result : %d", result);
+
+ comp_group_notify_group_dismiss(result);
}
}
static int _subscribe_event()
h->dbus_sub_ids = g_list_append(h->dbus_sub_ids, GUINT_TO_POINTER(id));
LOG_DEBUG("subscribed for (mot_done) signal %d", id);
- /* remove_mo_done */
+ /* acl_done */
id = g_dbus_connection_signal_subscribe(h->dbus_connection, NULL, AGENT_SERVER_NAME,
- "remove_mo_done", AGENT_OBJECT_PATH, NULL,
+ "acl_done", AGENT_OBJECT_PATH, NULL,
G_DBUS_CALL_FLAGS_NONE, _agent_signal_handler, h, NULL);
if (0 == id) {
- LOG_ERR("g_dbus_connection_signal_subscribe(remove_mo_done) Fail(%d)", errno);
+ LOG_ERR("g_dbus_connection_signal_subscribe(acl_done) Fail(%d)", errno);
return -1;
}
h->dbus_sub_ids = g_list_append(h->dbus_sub_ids, GUINT_TO_POINTER(id));
- LOG_DEBUG("subscribed for (remove_mo_done) signal %d", id);
+ LOG_DEBUG("subscribed for (acl_done) signal %d", id);
- /* remove_cred_local_done */
+ /*cred_done */
id = g_dbus_connection_signal_subscribe(h->dbus_connection, NULL, AGENT_SERVER_NAME,
- "remove_cred_local_done", AGENT_OBJECT_PATH, NULL,
+ "cred_done", AGENT_OBJECT_PATH, NULL,
G_DBUS_CALL_FLAGS_NONE, _agent_signal_handler, h, NULL);
if (0 == id) {
- LOG_ERR("g_dbus_connection_signal_subscribe(remove_cred_local_done) Fail(%d)", errno);
+ LOG_ERR("g_dbus_connection_signal_subscribe(cred_done) Fail(%d)", errno);
return -1;
}
h->dbus_sub_ids = g_list_append(h->dbus_sub_ids, GUINT_TO_POINTER(id));
- LOG_DEBUG("subscribed for (remove_cred_local_done) signal %d", id);
+ LOG_DEBUG("subscribed for (cred_done) signal %d", id);
- /* acl_done */
+ /*pairwise_done */
id = g_dbus_connection_signal_subscribe(h->dbus_connection, NULL, AGENT_SERVER_NAME,
- "acl_done", AGENT_OBJECT_PATH, NULL,
+ "pairwise_done", AGENT_OBJECT_PATH, NULL,
G_DBUS_CALL_FLAGS_NONE, _agent_signal_handler, h, NULL);
if (0 == id) {
- LOG_ERR("g_dbus_connection_signal_subscribe(acl_done) Fail(%d)", errno);
+ LOG_ERR("g_dbus_connection_signal_subscribe(pairwise_done) Fail(%d)", errno);
return -1;
}
h->dbus_sub_ids = g_list_append(h->dbus_sub_ids, GUINT_TO_POINTER(id));
- LOG_DEBUG("subscribed for (acl_done) signal %d", id);
+ LOG_DEBUG("subscribed for (pairwise_done) signal %d", id);
- /*cred_done */
+ /*unlink_done */
id = g_dbus_connection_signal_subscribe(h->dbus_connection, NULL, AGENT_SERVER_NAME,
- "cred_done", AGENT_OBJECT_PATH, NULL,
+ "unlink_done", AGENT_OBJECT_PATH, NULL,
G_DBUS_CALL_FLAGS_NONE, _agent_signal_handler, h, NULL);
if (0 == id) {
- LOG_ERR("g_dbus_connection_signal_subscribe(cred_done) Fail(%d)", errno);
+ LOG_ERR("g_dbus_connection_signal_subscribe(unlink_done) Fail(%d)", errno);
return -1;
}
h->dbus_sub_ids = g_list_append(h->dbus_sub_ids, GUINT_TO_POINTER(id));
- LOG_DEBUG("subscribed for (cred_done) signal %d", id);
+ LOG_DEBUG("subscribed for (unlink_done) signal %d", id);
- /*unpair_done */
+ /* remove_mo_done */
id = g_dbus_connection_signal_subscribe(h->dbus_connection, NULL, AGENT_SERVER_NAME,
- "unpair_done", AGENT_OBJECT_PATH, NULL,
+ "remove_mo_done", AGENT_OBJECT_PATH, NULL,
G_DBUS_CALL_FLAGS_NONE, _agent_signal_handler, h, NULL);
if (0 == id) {
- LOG_ERR("g_dbus_connection_signal_subscribe(unpair_done) Fail(%d)", errno);
+ LOG_ERR("g_dbus_connection_signal_subscribe(remove_mo_done) Fail(%d)", errno);
return -1;
}
h->dbus_sub_ids = g_list_append(h->dbus_sub_ids, GUINT_TO_POINTER(id));
- LOG_DEBUG("subscribed for (unpair_done) signal %d", id);
+ LOG_DEBUG("subscribed for (remove_mo_done) signal %d", id);
- /*pairwise_done */
+ /* remove_cred_local_done */
id = g_dbus_connection_signal_subscribe(h->dbus_connection, NULL, AGENT_SERVER_NAME,
- "pairwise_done", AGENT_OBJECT_PATH, NULL,
+ "remove_cred_local_done", AGENT_OBJECT_PATH, NULL,
G_DBUS_CALL_FLAGS_NONE, _agent_signal_handler, h, NULL);
if (0 == id) {
- LOG_ERR("g_dbus_connection_signal_subscribe(pairwise_done) Fail(%d)", errno);
+ LOG_ERR("g_dbus_connection_signal_subscribe(remove_cred_local_done) Fail(%d)", errno);
return -1;
}
h->dbus_sub_ids = g_list_append(h->dbus_sub_ids, GUINT_TO_POINTER(id));
- LOG_DEBUG("subscribed for (pairwise_done) signal %d", id);
+ LOG_DEBUG("subscribed for (remove_cred_local_done) signal %d", id);
+
+ /*pair_done */
+ id = g_dbus_connection_signal_subscribe(h->dbus_connection, NULL, AGENT_SERVER_NAME,
+ "pair_done", AGENT_OBJECT_PATH, NULL,
+ G_DBUS_CALL_FLAGS_NONE, _agent_signal_handler, h, NULL);
+ if (0 == id) {
+ LOG_ERR("g_dbus_connection_signal_subscribe(pair_done) Fail(%d)", errno);
+ return -1;
+ }
+ h->dbus_sub_ids = g_list_append(h->dbus_sub_ids, GUINT_TO_POINTER(id));
+ LOG_DEBUG("subscribed for (pair_done) signal %d", id);
+
+ /*unpair_done */
+ id = g_dbus_connection_signal_subscribe(h->dbus_connection, NULL, AGENT_SERVER_NAME,
+ "unpair_done", AGENT_OBJECT_PATH, NULL,
+ G_DBUS_CALL_FLAGS_NONE, _agent_signal_handler, h, NULL);
+ if (0 == id) {
+ LOG_ERR("g_dbus_connection_signal_subscribe(unpair_done) Fail(%d)", errno);
+ return -1;
+ }
+ h->dbus_sub_ids = g_list_append(h->dbus_sub_ids, GUINT_TO_POINTER(id));
+ LOG_DEBUG("subscribed for (unpair_done) signal %d", id);
return 0;
}
return MA_ERROR_NONE;\r
}\r
\r
+static gboolean _ma_dbus_handle_get_ownerid(NetMa *object,\r
+ GDBusMethodInvocation *invocation,\r
+ gpointer user_data)\r
+{\r
+ gchar *uuid_str = NULL;\r
+ int ret = MA_ERROR_NONE;\r
+ ma_service *service = (ma_service *)user_data;\r
+\r
+ ma_check_null_ret_error("service", service, FALSE);\r
+\r
+ ret = ma_request_get_ownerid(service, &uuid_str);\r
+ if (MA_ERROR_NONE != ret)\r
+ MA_LOGE("Failed to ma_request_get_ownerid = %d", ret);\r
+\r
+ net_ma_complete_get_ownerid(object, invocation, uuid_str, ret);\r
+\r
+ if (uuid_str)\r
+ g_free(uuid_str);\r
+\r
+ return TRUE;\r
+}\r
\r
static gboolean _ma_dbus_handle_disc_mot_enb_devs(NetMa *object,\r
GDBusMethodInvocation *invocation,\r
return TRUE;\r
}\r
\r
-static gboolean _ma_dbus_handle_remove_mo(NetMa *object,\r
- GDBusMethodInvocation *invocation, gchar *arg_target, gpointer user_data)\r
+static gboolean _ma_dbus_handle_acl(NetMa *object,\r
+ GDBusMethodInvocation *invocation, gchar *arg_target, gchar *arg_subject, gchar *arg_uri,\r
+ gchar *arg_rt, gchar *arg_interface, gint arg_permission, gpointer user_data)\r
{\r
int ret = MA_ERROR_NONE;\r
ma_service *service = (ma_service *)user_data;\r
ma_check_null_ret_error("service", service, FALSE);\r
\r
\r
- ret = ma_request_remove_mo(service, arg_target);\r
+ ret = ma_request_prov_acl(service, arg_target, arg_subject, arg_uri, arg_rt, arg_interface, arg_permission);\r
if (MA_ERROR_NONE != ret)\r
- MA_LOGE("Failed to ma_request_remove_mo !");\r
+ MA_LOGE("Failed to ma_request_prov_acl !");\r
\r
- net_ma_complete_remove_mo(object, invocation, ret);\r
+ net_ma_complete_acl(object, invocation, ret);\r
\r
return TRUE;\r
}\r
\r
-static gboolean _ma_dbus_handle_remove_cred_local(NetMa *object,\r
- GDBusMethodInvocation *invocation, gchar *arg_target, gpointer user_data)\r
+static gboolean _ma_dbus_handle_cred(NetMa *object,\r
+ GDBusMethodInvocation *invocation, gchar *arg_dev1, gchar *arg_dev2, gpointer user_data)\r
{\r
int ret = MA_ERROR_NONE;\r
ma_service *service = (ma_service *)user_data;\r
ma_check_null_ret_error("service", service, FALSE);\r
\r
\r
- ret = ma_request_remove_cred_local(service, arg_target);\r
+ ret = ma_request_prov_cred(service, arg_dev1, arg_dev2);\r
if (MA_ERROR_NONE != ret)\r
- MA_LOGE("Failed to ma_request_remove_mo !");\r
+ MA_LOGE("Failed to ma_request_prov_cred !");\r
\r
- net_ma_complete_remove_cred_local(object, invocation, ret);\r
+ net_ma_complete_cred(object, invocation, ret);\r
\r
return TRUE;\r
}\r
\r
-static gboolean _ma_dbus_handle_acl(NetMa *object,\r
- GDBusMethodInvocation *invocation, gchar *arg_target, gchar *arg_subject, gchar *arg_uri,\r
- gchar *arg_rt, gchar *arg_interface, gint arg_permission, gpointer user_data)\r
+static gboolean _ma_dbus_handle_pairwise(NetMa *object,\r
+ GDBusMethodInvocation *invocation, gchar *target_1,\r
+ gchar *subject_1, gchar *uri_1, gchar *rt_1,\r
+ gchar *interface_1, int permission_1, gchar *target_2,\r
+ gchar *subject_2, gchar *uri_2, gchar *rt_2,\r
+ gchar *interface_2, int permission_2, gpointer user_data)\r
{\r
int ret = MA_ERROR_NONE;\r
ma_service *service = (ma_service *)user_data;\r
ma_check_null_ret_error("service", service, FALSE);\r
\r
\r
- ret = ma_request_prov_acl(service, arg_target, arg_subject, arg_uri, arg_rt, arg_interface, arg_permission);\r
+ ret = ma_request_pairwise(service, target_1, subject_1, uri_1, rt_1,\r
+ interface_1, permission_1, target_2, subject_2, uri_2,\r
+ rt_2, interface_2, permission_2);\r
if (MA_ERROR_NONE != ret)\r
- MA_LOGE("Failed to ma_request_prov_acl !");\r
+ MA_LOGE("Failed to ma_request_pairwise = %d", ret);\r
\r
- net_ma_complete_acl(object, invocation, ret);\r
+ net_ma_complete_pairwise(object, invocation, ret);\r
\r
return TRUE;\r
}\r
\r
-static gboolean _ma_dbus_handle_cred(NetMa *object,\r
- GDBusMethodInvocation *invocation, gchar *arg_dev1, gchar *arg_dev2, gpointer user_data)\r
+static gboolean _ma_dbus_handle_unlink(NetMa *object,\r
+ GDBusMethodInvocation *invocation, gchar *uuid_dev1, gchar *uuid_dev2,\r
+ gpointer user_data)\r
{\r
int ret = MA_ERROR_NONE;\r
ma_service *service = (ma_service *)user_data;\r
\r
ma_check_null_ret_error("service", service, FALSE);\r
\r
-\r
- ret = ma_request_prov_cred(service, arg_dev1, arg_dev2);\r
+ ret = ma_request_unlink(service, uuid_dev1, uuid_dev2);\r
if (MA_ERROR_NONE != ret)\r
- MA_LOGE("Failed to ma_request_prov_cred !");\r
+ MA_LOGE("Failed to ma_request_unpair = %d", ret);\r
\r
- net_ma_complete_cred(object, invocation, ret);\r
+ net_ma_complete_unpair(object, invocation, ret);\r
\r
return TRUE;\r
}\r
\r
-static gboolean _ma_dbus_handle_get_ownerid(NetMa *object,\r
- GDBusMethodInvocation *invocation,\r
- gpointer user_data)\r
+static gboolean _ma_dbus_handle_remove_mo(NetMa *object,\r
+ GDBusMethodInvocation *invocation, gchar *arg_target, gpointer user_data)\r
{\r
- gchar *uuid_str = NULL;\r
int ret = MA_ERROR_NONE;\r
ma_service *service = (ma_service *)user_data;\r
\r
ma_check_null_ret_error("service", service, FALSE);\r
\r
- ret = ma_request_get_ownerid(service, &uuid_str);\r
+\r
+ ret = ma_request_remove_mo(service, arg_target);\r
if (MA_ERROR_NONE != ret)\r
- MA_LOGE("Failed to ma_request_get_ownerid = %d", ret);\r
+ MA_LOGE("Failed to ma_request_remove_mo !");\r
\r
- net_ma_complete_get_ownerid(object, invocation, uuid_str, ret);\r
+ net_ma_complete_remove_mo(object, invocation, ret);\r
\r
- if (uuid_str)\r
- g_free(uuid_str);\r
+ return TRUE;\r
+}\r
+\r
+static gboolean _ma_dbus_handle_remove_cred_local(NetMa *object,\r
+ GDBusMethodInvocation *invocation, gchar *arg_target, gpointer user_data)\r
+{\r
+ int ret = MA_ERROR_NONE;\r
+ ma_service *service = (ma_service *)user_data;\r
+\r
+ ma_check_null_ret_error("service", service, FALSE);\r
+\r
+\r
+ ret = ma_request_remove_cred_local(service, arg_target);\r
+ if (MA_ERROR_NONE != ret)\r
+ MA_LOGE("Failed to ma_request_remove_mo !");\r
+\r
+ net_ma_complete_remove_cred_local(object, invocation, ret);\r
\r
return TRUE;\r
}\r
\r
-static gboolean _ma_dbus_handle_pairwise(NetMa *object,\r
- GDBusMethodInvocation *invocation, gchar *target_1,\r
- gchar *subject_1, gchar *uri_1, gchar *rt_1,\r
- gchar *interface_1, int permission_1, gchar *target_2,\r
- gchar *subject_2, gchar *uri_2, gchar *rt_2,\r
- gchar *interface_2, int permission_2, gpointer user_data)\r
+static gboolean _ma_dbus_handle_pair(NetMa *object,\r
+ GDBusMethodInvocation *invocation, gchar *pin,\r
+ gchar *target_1, gchar *subject_1, gchar *uri_1, gchar *rt_1, gchar *interface_1, int permission_1,\r
+ gchar *target_2, gchar *subject_2, gchar *uri_2, gchar *rt_2, gchar *interface_2, int permission_2,\r
+ gpointer user_data)\r
{\r
int ret = MA_ERROR_NONE;\r
ma_service *service = (ma_service *)user_data;\r
ma_check_null_ret_error("service", service, FALSE);\r
\r
\r
- ret = ma_request_pairwise(service, target_1, subject_1, uri_1, rt_1,\r
+ ret = ma_request_pair(service, pin, target_1, subject_1, uri_1, rt_1,\r
interface_1, permission_1, target_2, subject_2, uri_2,\r
rt_2, interface_2, permission_2);\r
if (MA_ERROR_NONE != ret)\r
- MA_LOGE("Failed to ma_request_pairwise = %d", ret);\r
+ MA_LOGE("Failed to ma_request_pair = %d", ret);\r
\r
- net_ma_complete_pairwise(object, invocation, ret);\r
+ net_ma_complete_pair(object, invocation, ret);\r
\r
return TRUE;\r
}\r
\r
static gboolean _ma_dbus_handle_unpair(NetMa *object,\r
- GDBusMethodInvocation *invocation, gchar *uuid_dev1, gchar *uuid_dev2,\r
+ GDBusMethodInvocation *invocation, gchar *uuid_owner, gchar *uuid_owned,\r
gpointer user_data)\r
{\r
int ret = MA_ERROR_NONE;\r
\r
ma_check_null_ret_error("service", service, FALSE);\r
\r
- ret = ma_request_unpair(service, uuid_dev1, uuid_dev2);\r
+ ret = ma_request_unpair(service, uuid_owner, uuid_owned);\r
if (MA_ERROR_NONE != ret)\r
MA_LOGE("Failed to ma_request_unpair = %d", ret);\r
\r
MA_LOGE("net_ma_skeleton_new() Fail");\r
return;\r
}\r
-\r
+ g_signal_connect(ma_dbus_object, "handle-get-ownerid",\r
+ G_CALLBACK(_ma_dbus_handle_get_ownerid), service);\r
g_signal_connect(ma_dbus_object, "handle-disc-mot-enb-devs",\r
G_CALLBACK(_ma_dbus_handle_disc_mot_enb_devs), service);\r
g_signal_connect(ma_dbus_object, "handle-disc-mowned-devs",\r
G_CALLBACK(_ma_dbus_handle_disc_mowned_devs), service);\r
g_signal_connect(ma_dbus_object, "handle-mot",\r
G_CALLBACK(_ma_dbus_handle_mot), service);\r
+ g_signal_connect(ma_dbus_object, "handle-pairwise",\r
+ G_CALLBACK(_ma_dbus_handle_pairwise), service);\r
+ g_signal_connect(ma_dbus_object, "handle-unlink",\r
+ G_CALLBACK(_ma_dbus_handle_unlink), service);\r
g_signal_connect(ma_dbus_object, "handle-remove-mo",\r
G_CALLBACK(_ma_dbus_handle_remove_mo), service);\r
g_signal_connect(ma_dbus_object, "handle-remove-cred-local",\r
G_CALLBACK(_ma_dbus_handle_acl), service);\r
g_signal_connect(ma_dbus_object, "handle-cred",\r
G_CALLBACK(_ma_dbus_handle_cred), service);\r
- g_signal_connect(ma_dbus_object, "handle-get-ownerid",\r
- G_CALLBACK(_ma_dbus_handle_get_ownerid), service);\r
- g_signal_connect(ma_dbus_object, "handle-pairwise",\r
- G_CALLBACK(_ma_dbus_handle_pairwise), service);\r
+ g_signal_connect(ma_dbus_object, "handle-pair",\r
+ G_CALLBACK(_ma_dbus_handle_pair), service);\r
g_signal_connect(ma_dbus_object, "handle-unpair",\r
G_CALLBACK(_ma_dbus_handle_unpair), service);\r
\r
case MA_PROV_CRED:
net_ma_emit_cred_done(ma_dbus_get_object(), MA_ERROR_OPERATION_FAILED);
break;
+ case MA_PROV_PAIRWISE:
+ net_ma_emit_pairwise_done(ma_dbus_get_object(), MA_ERROR_OPERATION_FAILED);
+ break;
case MA_REMOVE_MOT:
net_ma_emit_remove_mo_done(ma_dbus_get_object(), MA_ERROR_OPERATION_FAILED);
break;
case MA_REMOVE_CRED_LOCAL:
net_ma_emit_remove_cred_local_done(ma_dbus_get_object(), MA_ERROR_OPERATION_FAILED);
break;
- case MA_UNPAIR:
+ case MA_UNLINK:
net_ma_emit_unpair_done(ma_dbus_get_object(), MA_ERROR_OPERATION_FAILED);
break;
- case MA_PROV_PAIRWISE:
- net_ma_emit_pairwise_done(ma_dbus_get_object(), MA_ERROR_OPERATION_FAILED);
+ case MA_PAIR:
+ net_ma_emit_pair_done(ma_dbus_get_object(), MA_ERROR_OPERATION_FAILED);
+ break;
+ case MA_UNPAIR:
+ net_ma_emit_unpair_done(ma_dbus_get_object(), MA_ERROR_OPERATION_FAILED);
break;
}
MOT_ENDED:
net_ma_emit_mot_done(ma_dbus_get_object(), (int)ret);
-#if 0
-#ifdef MULTIPLE_OWN_AT_ONCE
- OCProvisionDev_t* dev = NULL;
- LL_FOREACH(g_client->g_motdev_list, dev) {
- if(OIC_PRECONFIG_PIN == dev->doxm->oxmSel) {
- /* Pre-Configured PIN initialization */
- const char* testPreconfigPin = "00000000";/* Ex) "00000000" */
- ret = OCAddPreconfigPin(dev, testPreconfigPin, strlen(testPreconfigPin));
- if(OC_STACK_OK != ret) {
- MA_LOGE("Failed to save the pre-configured PIN");
- MA_LOGE("You can't use the pre-configured PIN OxM for MOT");
- goto MOT_ENDED;
- }
- }
- }
-#else
- {
- const char* testPreconfigPin = "00000000";/* Ex) "00000000" */
- ret = OCAddPreconfigPin(src_dev, testPreconfigPin, strlen(testPreconfigPin));
- if(OC_STACK_OK != ret) {
- MA_LOGE("Reset pre-configured PIN OxM for MOT");
- }
- }
-#endif
-#endif
if (uuid_target)
g_free(uuid_target);
return MA_ERROR_NONE;
}
-static void _remove_mo_cb(void* ctx, int num, OCProvisionResult_t* arr, bool has_error)
-{
- ma_subowner_s *client = (ma_subowner_s *)ctx;
-
- if (!has_error) {
- MA_LOGD("Remove Multiple Ownership SUCCEEDED");
- } else {
- MA_LOGD( "Remove Multiple Ownership FAILED ");
- _print_result_list((const OCProvisionResult_t*) arr, num);
- }
- client->g_doneCB = true;
-}
-
-static gpointer _remove_mo_func(gpointer data)
-{
- OCStackResult ret = MA_ERROR_OPERATION_FAILED;
- ma_req_cb_s *con = (ma_req_cb_s *)data;
-
- OCProvisionDev_t *src_dev = NULL;
- OicUuid_t uuid_mowner;
- OicUuid_t *uuid_target = NULL;
-
- if (!g_client) {
- ret = OC_STACK_INVALID_PARAM;
- MA_LOGE("mot agent is not initialized");
- goto REMOVE_MO_ENDED;
- }
-
- if (!con->uuid_target_str) {
- MA_LOGE("Target device UUID is NULL");
- goto REMOVE_MO_ENDED;
- }
-
- uuid_target = _convert_uuid(con->uuid_target_str);
- src_dev = _get_dev_by_uuid(g_client->g_motdev_list, uuid_target);
- if (!src_dev) {
- MA_LOGE("We can't find in MOT dev list");
- goto REMOVE_MO_ENDED;
- }
-
- g_client->g_doneCB = false;
-
- ret = GetDoxmDevOwnerId(&uuid_mowner);
- if (OC_STACK_OK != ret) {
- MA_LOGE("GetDoxmDevOwnerId faild = [%d][%s]", ret, _error_to_string(ret));
- goto REMOVE_MO_ENDED;
- }
-#ifdef MANIPULATE_LOCAL_PDM
- ret = ma_open_db();
- if (OC_STACK_OK != ret)
- MA_LOGE( "openDB: ret = %d (%s)", ret, _error_to_string(ret));
- ret = ma_delete_device((const OicUuid_t*) uuid_target);
- if (OC_STACK_OK != ret)
- MA_LOGE( "delete_mowned_device_db: ret = %d (%s)", ret, _error_to_string(ret));
- ret = ma_close_db();
- if (OC_STACK_OK != ret)
- MA_LOGE( "closeDB: ret = %d (%s)", ret, _error_to_string(ret));
-#endif
- ret = OCRemoveSubOwner(g_client, src_dev, &uuid_mowner, _remove_mo_cb);
- if (OC_STACK_OK != ret ) {
- MA_LOGE( "OCRemoveSubOwner: ret = %d (%s)", ret, _error_to_string(ret));
- goto REMOVE_MO_ENDED;
- }
-
- ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S);
- if(ret) {
- MA_LOGE( "OCRemoveSubOwner callback error = %d (%s)", ret, _error_to_string(ret));
- goto REMOVE_MO_ENDED;
- }
-
- MA_LOGE("Remove Multiple Ownership Done");
-
-REMOVE_MO_ENDED:
-
- net_ma_emit_remove_mo_done(ma_dbus_get_object(), (int)ret);
-
- if (uuid_target)
- g_free(uuid_target);
- _request_cleanup(data);
- g_thread_exit(GINT_TO_POINTER (1));
-
- return NULL;
-}
-
-static int _ma_remove_mo(ma_service *service, gchar *uuid_str)
-{
- ma_req_cb_s *con = NULL;
- con = g_malloc0(sizeof(ma_req_cb_s));
- if (NULL == con) {
- MA_LOGE( "g_malloc0() Fail=%d", errno);
- /* Unset d2ds status 'pending' */
- g_atomic_int_set(&service->pending, 0);
- return MA_ERROR_OUT_OF_MEMORY;
- }
-
- con->userdata = service;
- con->cid = MA_REMOVE_MOT;
- con->uuid_target_str = g_strdup(uuid_str);
-
- con->thread = g_thread_try_new("remove_mo", _remove_mo_func, con, NULL);
- if (!con->thread) {
- MA_LOGE("Failed to create thread");
- _request_cleanup(con);
- return MA_ERROR_OUT_OF_MEMORY;
- }
- g_thread_unref(con->thread);
-
-#ifdef TIMEOUT_USED
- con->tid = g_timeout_add_seconds(CALLBACK_TIMEOUT_5S * 2, _ma_timeout_cb, con);
-#endif
- return MA_ERROR_NONE;
-}
-
-static void _remove_remove_cred_local_cb(void* ctx, int num,
- OCProvisionResult_t* arr, bool has_error)
-{
- ma_subowner_s *client = (ma_subowner_s *)ctx;
-
- if (!has_error) {
- MA_LOGD("Remove CRED for mowned device SUCCEEDED");
- } else {
- MA_LOGD( "Remove CRED for mowned device FAILED ");
- _print_result_list((const OCProvisionResult_t*) arr, num);
- }
- client->g_doneCB = true;
-}
-
-static gpointer _remove_cred_local_func(gpointer data)
-{
- OCStackResult ret = OC_STACK_OK;
- ma_req_cb_s *con = (ma_req_cb_s *)data;
-
- OicUuid_t *uuid = NULL;
-
- if (!g_client) {
- ret = OC_STACK_INVALID_PARAM;
- MA_LOGE("mot agent is not initialized");
- goto REMOVE_LOCAL_CRED_ERROR;
- }
-
- if (!con->target_to_revoke) {
- MA_LOGE("Some parameters are wrong");
- MA_LOGE("%s", con->target_to_revoke );
- goto REMOVE_LOCAL_CRED_ERROR;
- }
-
- uuid = _convert_uuid(con->target_to_revoke);
-
- g_client->g_doneCB = false;
- MA_LOGI(" Removing CRED for remote device at local SVR DB");
-
- ret = OCRemoveDeviceWithUuid((void*) g_client, CALLBACK_TIMEOUT_5S, uuid,
- _remove_remove_cred_local_cb );
- if (OC_STACK_OK != ret) {
- MA_LOGD( "OCRemoveDeviceWithUuid API error: %d (%s)", ret, _error_to_string(ret));
- goto REMOVE_LOCAL_CRED_ERROR;
- }
-
- ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S);
- if (ret) {
- MA_LOGE( "OCRemoveDeviceWithUuid Faild = %d", errno);
- goto REMOVE_LOCAL_CRED_ERROR;
- }
- /* Disaply result result */
- MA_LOGI(" Removing CRED info. at local SVR DB - Done");
-
-REMOVE_LOCAL_CRED_ERROR:
- /* Notify ACL result */
- net_ma_emit_remove_cred_local_done(ma_dbus_get_object(), (int)ret);
- if (uuid)
- g_free(uuid);
- _request_cleanup(con);
- g_thread_exit(GINT_TO_POINTER (1));
- return NULL;
-}
-
-static int _ma_remove_cred_local(ma_service *service, gchar *uuid_str)
-{
- ma_req_cb_s *con = NULL;
- con = g_malloc0(sizeof(ma_req_cb_s));
- if (NULL == con) {
- MA_LOGE( "g_malloc0() Fail=%d", errno);
- /* Unset d2ds status 'pending' */
- g_atomic_int_set(&service->pending, 0);
- return MA_ERROR_OUT_OF_MEMORY;
- }
-
- con->userdata = service;
- con->cid = MA_REMOVE_CRED_LOCAL;
- con->target_to_revoke = g_strdup(uuid_str);
-
- con->thread = g_thread_try_new("remove_mowned_dev_cred", _remove_cred_local_func, con, NULL);
- if (!con->thread) {
- MA_LOGE("Failed to create thread");
- _request_cleanup(con);
- return MA_ERROR_OUT_OF_MEMORY;
- }
- g_thread_unref(con->thread);
-
-#ifdef TIMEOUT_USED
- con->tid = g_timeout_add_seconds(CALLBACK_TIMEOUT_5S * 2, _ma_timeout_cb, con);
-#endif
- return MA_ERROR_NONE;
-}
-
#if 0 /* TEST */
static int sendGetLed()
{
return NULL;
}
-static void _provisioning_acl_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error)
+static void _acl_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error)
{
ma_subowner_s *client = (ma_subowner_s *)ctx;
}
client->g_doneCB = true;
}
-static gpointer _provisioning_acl_func(gpointer data)
+static gpointer _acl_func(gpointer data)
{
OCStackResult ret = OC_STACK_OK;
ma_req_cb_s *con = (ma_req_cb_s *)data;
goto PVACL_ERROR;
}
- if (!con->uuid_subject_str ||!con->uuid_target_str || !con->rsrc_uri || !con->rsrc_type || !con->rsrc_interface) {
+ if (!con->uuid_subject_str ||!con->uuid_target_str ||
+ !con->rsrc_uri || !con->rsrc_type || !con->rsrc_interface) {
MA_LOGE("Some parameters are wrong");
MA_LOGE("%s", con->uuid_target_str );
MA_LOGE("%s", con->uuid_subject_str );
goto PVACL_ERROR;
}
- ret= OCProvisionACL((void*) g_client, target_dev, acl, _provisioning_acl_cb);
+ ret= OCProvisionACL((void*) g_client, target_dev, acl, _acl_cb);
if (OC_STACK_OK != ret) {
MA_LOGD( "OCProvisionACL API error: %d (%s)", ret, _error_to_string(ret));
goto PVACL_ERROR;
return NULL;
}
-static int _provisioning_acl(ma_service *service, gchar *target, gchar *subject,
+static int _acl(ma_service *service, gchar *target, gchar *subject,
gchar *rsrc_uri, gchar *rsrc_type, gchar *rsrc_interface, int permission)
{
ma_req_cb_s *con = NULL;
con->rsrc_type = g_strdup(rsrc_type);
con->rsrc_interface = g_strdup(rsrc_interface);
- con->thread = g_thread_try_new("prov_acl", _provisioning_acl_func, con, NULL);
+ con->thread = g_thread_try_new("prov_acl", _acl_func, con, NULL);
if (!con->thread) {
MA_LOGE("Failed to create thread");
_request_cleanup(con);
return MA_ERROR_NONE;
}
-static void _provision_cred_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error)
+static void _cred_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error)
{
ma_subowner_s *client = (ma_subowner_s *)ctx;
client->g_doneCB = true;
}
-static gpointer _cred_provisioning_func(gpointer data)
+static gpointer _cred_func(gpointer data)
{
OCStackResult ret = OC_STACK_OK;
ma_req_cb_s *con = (ma_req_cb_s *)data;
MA_LOGI("Provisioning Selected Pairwise Devices..");
ret = OCProvisionCredentials((void*) g_client,
SYMMETRIC_PAIR_WISE_KEY, OWNER_PSK_LENGTH_256,
- dev1, dev2, _provision_cred_cb);
+ dev1, dev2, _cred_cb);
if (OC_STACK_OK != ret) {
MA_LOGD( "OCProvisionPairwiseDevices API error: %d (%s)", ret, _error_to_string(ret));
goto PVCRED_ERROR;
return NULL;
}
-static int _provisioning_cred(ma_service *service,
+static int _cred(ma_service *service,
gchar *uuid_dev1, gchar *uuid_dev2)
{
ma_req_cb_s *con = NULL;
con->uuid_dev1 = g_strdup(uuid_dev1);
con->uuid_dev2 = g_strdup(uuid_dev2);
- con->thread = g_thread_try_new("prov_cred", _cred_provisioning_func, con, NULL);
+ con->thread = g_thread_try_new("prov_cred", _cred_func, con, NULL);
if (!con->thread) {
MA_LOGE("Failed to create thread");
_request_cleanup(con);
return MA_ERROR_NONE;
}
-static void _provisioning_pairwise_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error)
+static void _pairwise_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error)
{
ma_subowner_s *client = (ma_subowner_s *)ctx;
client->g_doneCB = true;
}
-static gpointer _provisioning_pairwise_func(gpointer data)
+static gpointer _pairwise_func(gpointer data)
{
OCStackResult ret = OC_STACK_OK;
ma_req_cb_s *con = (ma_req_cb_s *)data;
ret = OCProvisionPairwiseDevices((void*) g_client, SYMMETRIC_PAIR_WISE_KEY,
OWNER_PSK_LENGTH_256, target_dev_1, acl_1,
- target_dev_2, acl_2, _provisioning_pairwise_cb);
+ target_dev_2, acl_2, _pairwise_cb);
if (OC_STACK_OK != ret) {
MA_LOGD( "OCProvisionPairwiseDevices API error: %d (%s)", ret,
_error_to_string(ret));
return NULL;
}
-
-static int _provisioning_pairwise_link(ma_service *service, gchar *target_1, gchar *subject_1,
+static int _pairwise(ma_service *service, gchar *target_1, gchar *subject_1,
gchar *rsrc_uri_1, gchar *rsrc_type_1, gchar *rsrc_interface_1, int permission_1,
gchar *target_2, gchar *subject_2,gchar *rsrc_uri_2, gchar *rsrc_type_2, gchar *rsrc_interface_2, int permission_2)
{
con->rsrc_interface_2 = g_strdup(rsrc_interface_2);
con->permission_2 = permission_2;
- con->thread = g_thread_try_new("prov_pairwise", _provisioning_pairwise_func,
+ con->thread = g_thread_try_new("prov_pairwise", _pairwise_func,
con, NULL);
if (!con->thread) {
MA_LOGE("Failed to create thread");
return MA_ERROR_NONE;
}
-
static void _unlink_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error)
{
ma_subowner_s *client = (ma_subowner_s *)ctx;
client->g_doneCB = true;
}
-static gpointer _unlink_provisioning_func(gpointer data)
+static gpointer _unlink_func(gpointer data)
{
OCStackResult ret = OC_STACK_OK;
ma_req_cb_s *con = (ma_req_cb_s *)data;
g_client->g_doneCB = false;
- MA_LOGI("Provisioning Selected Pairwise Devices..");
+ MA_LOGI("Unlink Selected Pairwise Devices..");
ret = OCUnlinkDevices((void*) g_client, dev1, dev2, _unlink_cb );
if (OC_STACK_OK != ret) {
MA_LOGD( "OCUnlinkDevices API error: %d (%s)", ret, _error_to_string(ret));
return NULL;
}
-static int _provisioning_unlink(ma_service *service,
+static int _unlink(ma_service *service,
gchar *uuid_dev1, gchar *uuid_dev2)
{
ma_req_cb_s *con = NULL;
}
con->userdata = service;
- con->cid = MA_UNPAIR;
+ con->cid = MA_UNLINK;
if (!uuid_dev1 ||!uuid_dev2) {
MA_LOGE( "Invaild Prameters");
con->uuid_dev1 = g_strdup(uuid_dev1);
con->uuid_dev2 = g_strdup(uuid_dev2);
- con->thread = g_thread_try_new("prov_unlink", _unlink_provisioning_func,
+ con->thread = g_thread_try_new("prov_unlink", _unlink_func,
con, NULL);
if (!con->thread) {
MA_LOGE("Failed to create thread");
return MA_ERROR_NONE;
}
-int ma_request_enable(ma_service *service)
+static void _remove_mo_cb(void* ctx, int num, OCProvisionResult_t* arr, bool has_error)
{
- int ret = MA_ERROR_NONE;
- ma_check_null_ret_error("service", service, FALSE);
- ret = _init_provision_client();
- return ret;
+ ma_subowner_s *client = (ma_subowner_s *)ctx;
+
+ if (!has_error) {
+ MA_LOGD("Remove Multiple Ownership SUCCEEDED");
+ } else {
+ MA_LOGD( "Remove Multiple Ownership FAILED ");
+ _print_result_list((const OCProvisionResult_t*) arr, num);
+ }
+ client->g_doneCB = true;
}
-int ma_request_disc_mot_enb_devs(ma_service *service)
+static gpointer _remove_mo_func(gpointer data)
+{
+ OCStackResult ret = MA_ERROR_OPERATION_FAILED;
+ ma_req_cb_s *con = (ma_req_cb_s *)data;
+
+ OCProvisionDev_t *src_dev = NULL;
+ OicUuid_t uuid_mowner;
+ OicUuid_t *uuid_target = NULL;
+
+ if (!g_client) {
+ ret = OC_STACK_INVALID_PARAM;
+ MA_LOGE("mot agent is not initialized");
+ goto REMOVE_MO_ENDED;
+ }
+
+ if (!con->uuid_target_str) {
+ MA_LOGE("Target device UUID is NULL");
+ goto REMOVE_MO_ENDED;
+ }
+
+ uuid_target = _convert_uuid(con->uuid_target_str);
+ src_dev = _get_dev_by_uuid(g_client->g_motdev_list, uuid_target);
+ if (!src_dev) {
+ MA_LOGE("We can't find in MOT dev list");
+ goto REMOVE_MO_ENDED;
+ }
+
+ g_client->g_doneCB = false;
+
+ ret = GetDoxmDevOwnerId(&uuid_mowner);
+ if (OC_STACK_OK != ret) {
+ MA_LOGE("GetDoxmDevOwnerId faild = [%d][%s]", ret, _error_to_string(ret));
+ goto REMOVE_MO_ENDED;
+ }
+#ifdef MANIPULATE_LOCAL_PDM
+ ret = ma_open_db();
+ if (OC_STACK_OK != ret)
+ MA_LOGE( "openDB: ret = %d (%s)", ret, _error_to_string(ret));
+ ret = ma_delete_device((const OicUuid_t*) uuid_target);
+ if (OC_STACK_OK != ret)
+ MA_LOGE( "delete_mowned_device_db: ret = %d (%s)", ret, _error_to_string(ret));
+ ret = ma_close_db();
+ if (OC_STACK_OK != ret)
+ MA_LOGE( "closeDB: ret = %d (%s)", ret, _error_to_string(ret));
+#endif
+ ret = OCRemoveSubOwner(g_client, src_dev, &uuid_mowner, _remove_mo_cb);
+ if (OC_STACK_OK != ret ) {
+ MA_LOGE( "OCRemoveSubOwner: ret = %d (%s)", ret, _error_to_string(ret));
+ goto REMOVE_MO_ENDED;
+ }
+
+ ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S);
+ if(ret) {
+ MA_LOGE( "OCRemoveSubOwner callback error = %d (%s)", ret, _error_to_string(ret));
+ goto REMOVE_MO_ENDED;
+ }
+
+ MA_LOGE("Remove Multiple Ownership Done");
+
+REMOVE_MO_ENDED:
+
+ net_ma_emit_remove_mo_done(ma_dbus_get_object(), (int)ret);
+
+ if (uuid_target)
+ g_free(uuid_target);
+ _request_cleanup(data);
+ g_thread_exit(GINT_TO_POINTER (1));
+
+ return NULL;
+}
+
+static int _ma_remove_mo(ma_service *service, gchar *uuid_str)
+{
+ ma_req_cb_s *con = NULL;
+ con = g_malloc0(sizeof(ma_req_cb_s));
+ if (NULL == con) {
+ MA_LOGE( "g_malloc0() Fail=%d", errno);
+ /* Unset d2ds status 'pending' */
+ g_atomic_int_set(&service->pending, 0);
+ return MA_ERROR_OUT_OF_MEMORY;
+ }
+
+ con->userdata = service;
+ con->cid = MA_REMOVE_MOT;
+ con->uuid_target_str = g_strdup(uuid_str);
+
+ con->thread = g_thread_try_new("remove_mo", _remove_mo_func, con, NULL);
+ if (!con->thread) {
+ MA_LOGE("Failed to create thread");
+ _request_cleanup(con);
+ return MA_ERROR_OUT_OF_MEMORY;
+ }
+ g_thread_unref(con->thread);
+
+#ifdef TIMEOUT_USED
+ con->tid = g_timeout_add_seconds(CALLBACK_TIMEOUT_5S * 2, _ma_timeout_cb, con);
+#endif
+ return MA_ERROR_NONE;
+}
+
+static void _remove_remove_cred_local_cb(void* ctx, int num,
+ OCProvisionResult_t* arr, bool has_error)
+{
+ ma_subowner_s *client = (ma_subowner_s *)ctx;
+
+ if (!has_error) {
+ MA_LOGD("Remove CRED for mowned device SUCCEEDED");
+ } else {
+ MA_LOGD( "Remove CRED for mowned device FAILED ");
+ _print_result_list((const OCProvisionResult_t*) arr, num);
+ }
+ client->g_doneCB = true;
+}
+
+static gpointer _remove_cred_local_func(gpointer data)
+{
+ OCStackResult ret = OC_STACK_OK;
+ ma_req_cb_s *con = (ma_req_cb_s *)data;
+
+ OicUuid_t *uuid = NULL;
+
+ if (!g_client) {
+ ret = OC_STACK_INVALID_PARAM;
+ MA_LOGE("mot agent is not initialized");
+ goto REMOVE_LOCAL_CRED_ERROR;
+ }
+
+ if (!con->target_to_revoke) {
+ MA_LOGE("Some parameters are wrong");
+ MA_LOGE("%s", con->target_to_revoke );
+ goto REMOVE_LOCAL_CRED_ERROR;
+ }
+
+ uuid = _convert_uuid(con->target_to_revoke);
+
+ g_client->g_doneCB = false;
+ MA_LOGI(" Removing CRED for remote device at local SVR DB");
+
+ ret = OCRemoveDeviceWithUuid((void*) g_client, CALLBACK_TIMEOUT_5S, uuid,
+ _remove_remove_cred_local_cb );
+ if (OC_STACK_OK != ret) {
+ MA_LOGD( "OCRemoveDeviceWithUuid API error: %d (%s)", ret, _error_to_string(ret));
+ goto REMOVE_LOCAL_CRED_ERROR;
+ }
+
+ ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S);
+ if (ret) {
+ MA_LOGE( "OCRemoveDeviceWithUuid Faild = %d", errno);
+ goto REMOVE_LOCAL_CRED_ERROR;
+ }
+ /* Disaply result result */
+ MA_LOGI(" Removing CRED info. at local SVR DB - Done");
+
+REMOVE_LOCAL_CRED_ERROR:
+ /* Notify ACL result */
+ net_ma_emit_remove_cred_local_done(ma_dbus_get_object(), (int)ret);
+ if (uuid)
+ g_free(uuid);
+ _request_cleanup(con);
+ g_thread_exit(GINT_TO_POINTER (1));
+ return NULL;
+}
+
+static int _ma_remove_cred_local(ma_service *service, gchar *uuid_str)
+{
+ ma_req_cb_s *con = NULL;
+ con = g_malloc0(sizeof(ma_req_cb_s));
+ if (NULL == con) {
+ MA_LOGE( "g_malloc0() Fail=%d", errno);
+ /* Unset d2ds status 'pending' */
+ g_atomic_int_set(&service->pending, 0);
+ return MA_ERROR_OUT_OF_MEMORY;
+ }
+
+ con->userdata = service;
+ con->cid = MA_REMOVE_CRED_LOCAL;
+ con->target_to_revoke = g_strdup(uuid_str);
+
+ con->thread = g_thread_try_new("remove_mowned_dev_cred", _remove_cred_local_func, con, NULL);
+ if (!con->thread) {
+ MA_LOGE("Failed to create thread");
+ _request_cleanup(con);
+ return MA_ERROR_OUT_OF_MEMORY;
+ }
+ g_thread_unref(con->thread);
+
+#ifdef TIMEOUT_USED
+ con->tid = g_timeout_add_seconds(CALLBACK_TIMEOUT_5S * 2, _ma_timeout_cb, con);
+#endif
+ return MA_ERROR_NONE;
+}
+
+static gpointer _pair_func(gpointer data)
+{
+ OCStackResult ret = OC_STACK_OK;
+ ma_req_cb_s *con = (ma_req_cb_s *)data;
+
+ OicUuid_t *uuid_1 = NULL;
+ OicUuid_t *uuid_2 = NULL;
+ OicUuid_t *uuid_3 = NULL;
+ OicUuid_t *uuid_4 = NULL;
+
+ OicSecAcl_t* acl_1 = NULL;
+ OicSecAcl_t* acl_2 = NULL;
+
+ OCProvisionDev_t *target_dev_1 = NULL;
+ OCProvisionDev_t *target_dev_2 = NULL;
+ OCProvisionDev_t *subject_dev_1 = NULL;
+ OCProvisionDev_t *subject_dev_2 = NULL;
+
+ OCProvisionDev_t *src_dev = NULL;
+ OCProvisionDev_t *next_dev = NULL;
+
+ if (!g_client) {
+ ret = OC_STACK_INVALID_PARAM;
+ MA_LOGE("mot agent is not initialized");
+ goto PVPAIR_ERROR;
+ }
+
+ if (!con->subject_1 || !con->rsrc_uri_1 || !con->rsrc_type_1 || !con->rsrc_interface_1 ||
+ !con->subject_2 || !con->rsrc_uri_2 || !con->rsrc_type_2 || !con->rsrc_interface_2) {
+ MA_LOGE("Some parameters are wrong");
+ MA_LOGE("%s", con->subject_1 );
+ MA_LOGE("%s", con->rsrc_uri_1 );
+ MA_LOGE("%s", con->rsrc_type_1 );
+ MA_LOGE("%s", con->rsrc_interface_1 );
+ MA_LOGE("%s", con->subject_2 );
+ MA_LOGE("%s", con->rsrc_uri_2 );
+ MA_LOGE("%s", con->rsrc_type_2 );
+ MA_LOGE("%s", con->rsrc_interface_2 );
+
+ goto PVPAIR_ERROR;
+ }
+
+ uuid_1 = _convert_uuid(con->target_1);
+ target_dev_1 = _get_dev_by_uuid(g_client->g_motdev_list, uuid_1);
+ if (!target_dev_1) {
+ MA_LOGE("We can't find target in MOT enabled dev list");
+ goto PVPAIR_ERROR;
+ }
+
+ uuid_2 = _convert_uuid(con->target_2);
+ target_dev_2 = _get_dev_by_uuid(g_client->g_motdev_list, uuid_2);
+ if (!target_dev_2) {
+ MA_LOGE("We can't find target in MOT enabled dev list");
+ goto PVPAIR_ERROR;
+ }
+
+ uuid_3 = _convert_uuid(con->subject_1);
+ subject_dev_1 = _get_dev_by_uuid(g_client->g_motdev_list, uuid_3);
+ if (!subject_dev_1) {
+ MA_LOGE("We can't find subject in MOWNED dev list");
+ goto PVPAIR_ERROR;
+ }
+
+ uuid_4 = _convert_uuid(con->subject_2);
+ subject_dev_2 = _get_dev_by_uuid(g_client->g_motdev_list, uuid_4);
+ if (!subject_dev_2) {
+ MA_LOGE("We can't find subject in MOWNED dev list");
+ goto PVPAIR_ERROR;
+ }
+
+ src_dev = _get_dev_by_uuid(g_client->g_motdev_list, uuid_2);
+ if (!src_dev) {
+ MA_LOGE("We can't find in MOT dev list");
+ goto PVPAIR_ERROR;
+ }
+ /* Copy next MOT enabled device pointer temporally */
+ next_dev = src_dev->next;
+ /* Next MOT enabled device set NULL to MOT a single device */
+ src_dev->next = NULL;
+
+ g_client->g_doneCB = false;
+
+ if(OIC_PRECONFIG_PIN == src_dev->doxm->oxmSel) {
+ /* Pre-Configured PIN initialization */
+ const char* testPreconfigPin = con->pin;/* Ex) "12341234" */
+ ret = OCAddPreconfigPin(src_dev, testPreconfigPin, strlen(testPreconfigPin));
+ if(OC_STACK_OK != ret) {
+ MA_LOGE("Failed to save the pre-configured PIN");
+ MA_LOGE("You can't use the pre-configured PIN OxM for MOT");
+ goto PVPAIR_ERROR;
+ }
+ }
+ ret = OCDoMultipleOwnershipTransfer(g_client, src_dev, _mot_cb);
+ if (OC_STACK_OK != ret ) {
+ MA_LOGE( "OCDoMultipleOwnershipTransfer: ret = %d (%s)", ret, _error_to_string(ret));
+ goto PVPAIR_ERROR;
+ }
+
+ ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S);
+ if (OC_STACK_OK != ret ) {
+ MA_LOGE( "OCDoMultipleOwnershipTransfer callback error = %d (%s)", ret, _error_to_string(ret));
+ goto PVPAIR_ERROR;
+ }
+ /* Restore MOT enabled devices */
+ src_dev->next = next_dev ;
+
+ MA_LOGE("Registered Discovered Devices");
+
+ g_client->g_doneCB = false;
+
+ MA_LOGI(" Provisioning Selected Pairwise..");
+
+ acl_1 = _create_target_acl(&target_dev_1->doxm->deviceID,
+ &subject_dev_1->doxm->deviceID, con->rsrc_uri_1,
+ con->rsrc_type_1,
+ con->rsrc_interface_1, con->permission_1);
+ if (NULL == acl_1) {
+ MA_LOGE( "Failed to create ACL for %s", con->rsrc_uri);
+ goto PVPAIR_ERROR;
+ }
+
+ acl_2 = _create_target_acl(&target_dev_2->doxm->deviceID,
+ &subject_dev_2->doxm->deviceID, con->rsrc_uri_2,
+ con->rsrc_type_2,
+ con->rsrc_interface_2, con->permission_2);
+ if (NULL == acl_2) {
+ MA_LOGE( "Failed to create ACL for %s", con->rsrc_uri);
+ goto PVPAIR_ERROR;
+ }
+
+ ret = OCProvisionPairwiseDevices((void*) g_client, SYMMETRIC_PAIR_WISE_KEY,
+ OWNER_PSK_LENGTH_256, target_dev_1, acl_1,
+ target_dev_2, acl_2, _pairwise_cb);
+ if (OC_STACK_OK != ret) {
+ MA_LOGD( "OCProvisionPairwiseDevices API error: %d (%s)", ret,
+ _error_to_string(ret));
+ goto PVPAIR_ERROR;
+ }
+
+ ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S);
+ if (ret) {
+ MA_LOGE( "OCProvisionPairwise Faild = %d", errno);
+ goto PVPAIR_ERROR;
+ }
+ /* display the pairwise-provisioned result */
+ MA_LOGI(" Provision pairwise Done");
+
+PVPAIR_ERROR:
+ /* Notify pair result */
+ net_ma_emit_pair_done(ma_dbus_get_object(), (int)ret);
+
+ if (uuid_1)
+ g_free(uuid_1);
+ if (uuid_2)
+ g_free(uuid_2);
+ if (uuid_3)
+ g_free(uuid_3);
+ if (uuid_4)
+ g_free(uuid_4);
+ if (acl_1)
+ OCDeleteACLList(acl_1);
+ if (acl_2)
+ OCDeleteACLList(acl_2);
+
+ _request_cleanup(con);
+
+ g_thread_exit(GINT_TO_POINTER (1));
+ return NULL;
+}
+
+static int _pair(ma_service *service, gchar *pin, gchar *target_1, gchar *subject_1,
+ gchar *rsrc_uri_1, gchar *rsrc_type_1, gchar *rsrc_interface_1, int permission_1,
+ gchar *target_2, gchar *subject_2,gchar *rsrc_uri_2, gchar *rsrc_type_2, gchar *rsrc_interface_2, int permission_2)
+{
+ ma_req_cb_s *con = NULL;
+ con = g_malloc0(sizeof(ma_req_cb_s));
+ if (NULL == con) {
+ MA_LOGE( "g_malloc0() Fail=%d", errno);
+ /* Unset d2ds status 'pending' */
+ g_atomic_int_set(&service->pending, 0);
+ return MA_ERROR_OUT_OF_MEMORY;
+ }
+
+ con->userdata = service;
+ con->cid = MA_PAIR;
+
+ con->pin = g_strdup(pin);
+ con->target_1 = g_strdup(target_1);
+ con->subject_1 = g_strdup(subject_1);
+ con->rsrc_uri_1 = g_strdup(rsrc_uri_1);
+ con->rsrc_type_1 = g_strdup(rsrc_type_1);
+ con->rsrc_interface_1 = g_strdup(rsrc_interface_1);
+ con->permission_1 = permission_1;
+
+ con->target_2 = g_strdup(target_2);
+ con->subject_2 = g_strdup(subject_2);
+ con->rsrc_uri_2 = g_strdup(rsrc_uri_2);
+ con->rsrc_type_2 = g_strdup(rsrc_type_2);
+ con->rsrc_interface_2 = g_strdup(rsrc_interface_2);
+ con->permission_2 = permission_2;
+
+ con->thread = g_thread_try_new("pair", _pair_func, con, NULL);
+ if (!con->thread) {
+ MA_LOGE("Failed to create thread");
+ _request_cleanup(con);
+ return MA_ERROR_OUT_OF_MEMORY;
+ }
+ g_thread_unref(con->thread);
+#ifdef TIMEOUT_USED
+ con->tid = g_timeout_add_seconds(CALLBACK_TIMEOUT_5S * 2, _ma_timeout_cb, con);
+#endif
+ return MA_ERROR_NONE;
+}
+
+static gpointer _unpair_func(gpointer data)
+{
+ OCStackResult ret = OC_STACK_OK;
+ ma_req_cb_s *con = (ma_req_cb_s *)data;
+
+ OicUuid_t uuid_mowner;
+ OicUuid_t *owner_uuid = NULL;
+ OicUuid_t *owned_uuid = NULL;
+ OCProvisionDev_t *owner_dev = NULL;
+ OCProvisionDev_t *owned_dev = NULL;
+
+ if (NULL == g_client) {
+ ret = OC_STACK_INVALID_PARAM;
+ MA_LOGE("mot agent is not initialized");
+ goto PVUNPAIR_ERROR;
+ }
+
+ if (NULL == con->uuid_dev1 ) {
+ MA_LOGE("dev1 is NULL");
+ goto PVUNPAIR_ERROR;
+ }
+ if (NULL == con->uuid_dev2) {
+ MA_LOGE("dev2 is NULL");
+ goto PVUNPAIR_ERROR;
+ }
+
+ owner_uuid = _convert_uuid(con->uuid_dev1);
+ owner_dev = _get_dev_by_uuid(g_client->g_motdev_list, owner_uuid);
+ if (!owner_dev) {
+ MA_LOGE("We can't find in MOWNED dev list");
+ goto PVUNPAIR_ERROR;
+ }
+
+ owned_uuid = _convert_uuid(con->uuid_dev2);
+ owned_dev = _get_dev_by_uuid(g_client->g_motdev_list, owned_uuid);
+ if (!owned_dev) {
+ MA_LOGE("We can't find in MOWNED dev list");
+ goto PVUNPAIR_ERROR;
+ }
+
+ g_client->g_doneCB = false;
+
+ MA_LOGI("Unlink Selected Pairwise Devices..");
+ ret = OCUnlinkDevices((void*) g_client, owner_dev, owned_dev, _unlink_cb );
+ if (OC_STACK_OK != ret) {
+ MA_LOGD( "OCUnlinkDevices API error = %d (%s)", ret, _error_to_string(ret));
+ goto PVUNPAIR_ERROR;
+ }
+
+ ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S);
+ if (OC_STACK_OK != ret) {
+ MA_LOGD( "OCUnlinkDevices Timeout = %d (%s)", ret, _error_to_string(ret));
+ goto PVUNPAIR_ERROR;
+ }
+
+ /* display the pairwise-provisioned result */
+ MA_LOGI("Unlink Devices Done");
+
+ g_client->g_doneCB = false;
+
+ ret = GetDoxmDevOwnerId(&uuid_mowner);
+ if (OC_STACK_OK != ret) {
+ MA_LOGE("GetDoxmDevOwnerId faild = [%d][%s]", ret, _error_to_string(ret));
+ goto PVUNPAIR_ERROR;
+ }
+
+ ret = OCRemoveSubOwner(g_client, owned_dev, &uuid_mowner, _remove_mo_cb);
+ if (OC_STACK_OK != ret ) {
+ MA_LOGE( "OCRemoveSubOwner: ret = %d (%s)", ret, _error_to_string(ret));
+ goto PVUNPAIR_ERROR;
+ }
+
+ ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S);
+ if (OC_STACK_OK != ret) {
+ MA_LOGE( "OCRemoveSubOwner Timeout = %d (%s)", ret, _error_to_string(ret));
+ goto PVUNPAIR_ERROR;
+ }
+
+ MA_LOGE("Remove Multiple Ownership Done");
+
+ g_client->g_doneCB = false;
+
+ MA_LOGI(" Removing CRED for remote device at local SVR DB");
+
+ ret = OCRemoveDeviceWithUuid((void*) g_client, CALLBACK_TIMEOUT_5S, owned_uuid,
+ _remove_remove_cred_local_cb );
+ if (OC_STACK_OK != ret) {
+ MA_LOGD( "OCRemoveDeviceWithUuid API error = %d (%s)", ret, _error_to_string(ret));
+ goto PVUNPAIR_ERROR;
+ }
+
+ ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S);
+ if (OC_STACK_OK != ret) {
+ MA_LOGD( "OCRemoveDeviceWithUuid Timeout = %d (%s)", ret, _error_to_string(ret));
+ goto PVUNPAIR_ERROR;
+ }
+ /* Disaply result result */
+ MA_LOGI(" Removing CRED info. at local SVR DB - Done");
+
+PVUNPAIR_ERROR:
+ /* Notify unpair result */
+ net_ma_emit_unpair_done(ma_dbus_get_object(), (int)ret);
+
+ if (owner_uuid)
+ g_free(owner_uuid);
+ if (owned_uuid)
+ g_free(owned_uuid);
+
+ _request_cleanup(con);
+
+ g_thread_exit(GINT_TO_POINTER (1));
+
+ return NULL;
+}
+
+static int _unpair(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2)
+{
+ ma_req_cb_s *con = NULL;
+ con = g_malloc0(sizeof(ma_req_cb_s));
+ if (!con) {
+ MA_LOGE( "g_malloc0() Fail=%d", errno);
+ /* Unset d2ds status 'pending' */
+ g_atomic_int_set(&service->pending, 0);
+ return MA_ERROR_OUT_OF_MEMORY;
+ }
+
+ con->userdata = service;
+ con->cid = MA_UNPAIR;
+
+ if (!uuid_dev1 ||!uuid_dev2) {
+ MA_LOGE( "Invaild Prameters");
+ _request_cleanup(con);
+ return MA_ERROR_INVALID_PARAMETER;
+ }
+
+ con->uuid_dev1 = g_strdup(uuid_dev1);
+ con->uuid_dev2 = g_strdup(uuid_dev2);
+
+ con->thread = g_thread_try_new("prov_unlink", _unpair_func, con, NULL);
+ if (!con->thread) {
+ MA_LOGE("Failed to create thread");
+ _request_cleanup(con);
+ return MA_ERROR_OUT_OF_MEMORY;
+ }
+ g_thread_unref(con->thread);
+#ifdef TIMEOUT_USED
+ con->tid = g_timeout_add_seconds(CALLBACK_TIMEOUT_5S * 2, _ma_timeout_cb, con);
+#endif
+ return MA_ERROR_NONE;
+}
+
+int ma_request_get_ownerid(ma_service *service, gchar **uuid_str)
+{
+ int ret =MA_ERROR_NONE;
+ OicUuid_t uuid;
+
+ ma_check_null_ret_error("service", service, FALSE);
+
+ MA_LOGD("[IPC] Get Device ID");
+
+ ret = GetDoxmDevOwnerId(&uuid);
+ if (OC_STACK_OK != ret)
+ MA_LOGE("GetDoxmDevOwnerId faild = [%d][%s]", ret, _error_to_string(ret));
+
+ ret = ConvertUuidToStr(&uuid, uuid_str);
+ if (OC_STACK_OK != ret)
+ MA_LOGE("ConvertUuidToStr faild = [%d][%s]", ret, _error_to_string(ret));
+
+ return ret;
+}
+
+int ma_request_disc_mot_enb_devs(ma_service *service)
{
int ret =MA_ERROR_NONE;
return ret;
}
-int ma_request_remove_mo(ma_service *service, gchar* uuid_str)
+int ma_request_prov_acl(ma_service *service, gchar *target, gchar *subject,
+ gchar *rsrc_uri, gchar *rsrc_type, gchar *rsrc_interface, int permission)
{
int ret =MA_ERROR_NONE;
ma_check_null_ret_error("service", service, FALSE);
- MA_LOGD("[IPC] Remove Mulltiple Ownership");
+ MA_LOGD("[IPC] Provisioning ACL");
/* If we are working now? */
if (g_atomic_int_get(&service->pending))
return MA_ERROR_IN_PROGRESS;
- if (!uuid_str) {
- MA_LOGE("uuid_str = %s", uuid_str);
+ if (!target || !subject || !rsrc_uri || !rsrc_type || !rsrc_interface) {
+ MA_LOGE("target = %s", target);
+ MA_LOGE("subject = %s", subject);
+ MA_LOGE("rsrc_uri = %s", rsrc_uri);
+ MA_LOGE("rsrc_type = %s", rsrc_type);
+ MA_LOGE("rsrc_interface = %s", rsrc_interface);
return MA_ERROR_INVALID_PARAMETER;
}
/* Set d2ds status 'pending' */
g_atomic_int_set(&service->pending, 1);
- ret = _ma_remove_mo(service, uuid_str);
+ ret = _acl(service, target, subject, rsrc_uri, rsrc_type, rsrc_interface, permission);
return ret;
}
-int ma_request_remove_cred_local(ma_service *service, gchar* uuid_str)
+int ma_request_prov_cred(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2)
{
int ret =MA_ERROR_NONE;
ma_check_null_ret_error("service", service, FALSE);
- MA_LOGD("[IPC] Remove CRED for Owned Dev in my SVR DB");
+ MA_LOGD("[IPC] Provisioning Credential");
/* If we are working now? */
if (g_atomic_int_get(&service->pending))
return MA_ERROR_IN_PROGRESS;
- if (!uuid_str) {
- MA_LOGE("uuid_str = %s", uuid_str);
+ if (!uuid_dev1 || !uuid_dev2) {
+ MA_LOGE("uuid_dev1 = %s", uuid_dev1);
+ MA_LOGE("uuid_dev2 = %s", uuid_dev2);
return MA_ERROR_INVALID_PARAMETER;
}
/* Set d2ds status 'pending' */
g_atomic_int_set(&service->pending, 1);
- ret = _ma_remove_cred_local(service, uuid_str);
+ ret = _cred(service, uuid_dev1, uuid_dev2);
return ret;
}
-int ma_request_prov_acl(ma_service *service, gchar *target, gchar *subject,
- gchar *rsrc_uri, gchar *rsrc_type, gchar *rsrc_interface, int permission)
+int ma_request_pairwise(ma_service *service, gchar *target_1,
+ gchar *subject_1, gchar *rsrc_uri_1, gchar *rsrc_type_1,
+ gchar *rsrc_interface_1, int permission_1,
+ gchar *target_2, gchar *subject_2,gchar *rsrc_uri_2,
+ gchar *rsrc_type_2, gchar *rsrc_interface_2,
+ int permission_2)
{
- int ret =MA_ERROR_NONE;
+ int ret = MA_ERROR_NONE;
ma_check_null_ret_error("service", service, FALSE);
- MA_LOGD("[IPC] Provisioning ACL");
+ MA_LOGD("[IPC] Link Pairwise");
/* If we are working now? */
if (g_atomic_int_get(&service->pending))
return MA_ERROR_IN_PROGRESS;
- if (!target || !subject || !rsrc_uri || !rsrc_type || !rsrc_interface) {
- MA_LOGE("target = %s", target);
- MA_LOGE("subject = %s", subject);
- MA_LOGE("rsrc_uri = %s", rsrc_uri);
- MA_LOGE("rsrc_type = %s", rsrc_type);
- MA_LOGE("rsrc_interface = %s", rsrc_interface);
+ if (!target_1 || !subject_1 || !rsrc_uri_1 || !rsrc_type_1 ||
+ !rsrc_interface_1 || !target_2 || !subject_2 || !rsrc_uri_2 ||
+ !rsrc_type_2 || !rsrc_interface_2) {
+ MA_LOGE("target_1 = %s", target_1);
+ MA_LOGE("subject_1 = %s", subject_1);
+ MA_LOGE("rsrc_uri_1 = %s", rsrc_uri_1);
+ MA_LOGE("rsrc_type_1 = %s", rsrc_type_1);
+ MA_LOGE("rsrc_interface_1 = %s", rsrc_interface_1);
+ MA_LOGE("target_2 = %s", target_2);
+ MA_LOGE("subject_2 = %s", subject_2);
+ MA_LOGE("rsrc_uri_2 = %s", rsrc_uri_2);
+ MA_LOGE("rsrc_type_2 = %s", rsrc_type_2);
+ MA_LOGE("rsrc_interface_2 = %s", rsrc_interface_2);
return MA_ERROR_INVALID_PARAMETER;
}
/* Set d2ds status 'pending' */
g_atomic_int_set(&service->pending, 1);
- ret = _provisioning_acl(service, target, subject, rsrc_uri, rsrc_type, rsrc_interface, permission);
+ ret = _pairwise(service, target_1, subject_1, rsrc_uri_1,
+ rsrc_type_1, rsrc_interface_1, permission_1, target_2,
+ subject_2, rsrc_uri_2, rsrc_type_2, rsrc_interface_2,
+ permission_2);
return ret;
+
}
-int ma_request_prov_cred(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2)
+int ma_request_unlink(ma_service *service, gchar *uuid_dev1,
+ gchar *uuid_dev2)
{
- int ret =MA_ERROR_NONE;
+ int ret = MA_ERROR_NONE;
ma_check_null_ret_error("service", service, FALSE);
- MA_LOGD("[IPC] Provisioning Credential");
+ MA_LOGD("[IPC] Unlink devices");
/* If we are working now? */
if (g_atomic_int_get(&service->pending))
/* Set d2ds status 'pending' */
g_atomic_int_set(&service->pending, 1);
- ret = _provisioning_cred(service, uuid_dev1, uuid_dev2);
+ ret = _unlink(service, uuid_dev1, uuid_dev2);
return ret;
}
-int ma_request_get_ownerid(ma_service *service, gchar **uuid_str)
+int ma_request_remove_mo(ma_service *service, gchar* uuid_str)
{
int ret =MA_ERROR_NONE;
- OicUuid_t uuid;
ma_check_null_ret_error("service", service, FALSE);
- MA_LOGD("[IPC] Get Device ID");
+ MA_LOGD("[IPC] Remove Mulltiple Ownership");
- ret = GetDoxmDevOwnerId(&uuid);
- if (OC_STACK_OK != ret)
- MA_LOGE("GetDoxmDevOwnerId faild = [%d][%s]", ret, _error_to_string(ret));
+ /* If we are working now? */
+ if (g_atomic_int_get(&service->pending))
+ return MA_ERROR_IN_PROGRESS;
- ret = ConvertUuidToStr(&uuid, uuid_str);
- if (OC_STACK_OK != ret)
- MA_LOGE("ConvertUuidToStr faild = [%d][%s]", ret, _error_to_string(ret));
+ if (!uuid_str) {
+ MA_LOGE("uuid_str = %s", uuid_str);
+ return MA_ERROR_INVALID_PARAMETER;
+ }
+
+ /* Set d2ds status 'pending' */
+ g_atomic_int_set(&service->pending, 1);
+
+ ret = _ma_remove_mo(service, uuid_str);
return ret;
}
-int ma_request_disable(ma_service *service)
+int ma_request_remove_cred_local(ma_service *service, gchar* uuid_str)
{
- NOTUSED(service);
+ int ret =MA_ERROR_NONE;
- if (!g_client)
- return MA_ERROR_NONE;
+ ma_check_null_ret_error("service", service, FALSE);
- if (OC_STACK_OK != OCStop()) {
- MA_LOGE( "OCStack stop error");
- }
+ MA_LOGD("[IPC] Remove CRED for Owned Dev in my SVR DB");
- OCTerminatePM();
+ /* If we are working now? */
+ if (g_atomic_int_get(&service->pending))
+ return MA_ERROR_IN_PROGRESS;
- if (g_client->g_mowned_list) {
- OCDeleteDiscoveredDevices(g_client->g_mowned_list);
- g_client->g_mowned_list = NULL;
- }
- if (g_client->g_motdev_list) {
- OCDeleteDiscoveredDevices(g_client->g_motdev_list);
- g_client->g_motdev_list= NULL;
+ if (!uuid_str) {
+ MA_LOGE("uuid_str = %s", uuid_str);
+ return MA_ERROR_INVALID_PARAMETER;
}
- if (g_client->rnd_pin) {
- g_free(g_client->rnd_pin);
- g_client->rnd_pin = NULL;
- }
+ /* Set d2ds status 'pending' */
+ g_atomic_int_set(&service->pending, 1);
- g_free(g_client);
- g_client = NULL;
+ ret = _ma_remove_cred_local(service, uuid_str);
- return MA_ERROR_NONE;
+ return ret;
}
-int ma_request_pairwise(ma_service *service, gchar *target_1,
+int ma_request_pair(ma_service *service, gchar *pin, gchar *target_1,
gchar *subject_1, gchar *rsrc_uri_1, gchar *rsrc_type_1,
gchar *rsrc_interface_1, int permission_1,
gchar *target_2, gchar *subject_2,gchar *rsrc_uri_2,
ma_check_null_ret_error("service", service, FALSE);
- MA_LOGD("[IPC] Link Pairwise");
+ MA_LOGD("[IPC] Pair both device");
/* If we are working now? */
if (g_atomic_int_get(&service->pending))
return MA_ERROR_IN_PROGRESS;
- if (!target_1 || !subject_1 || !rsrc_uri_1 || !rsrc_type_1 ||
+ if (!pin || !target_1 || !subject_1 || !rsrc_uri_1 || !rsrc_type_1 ||
!rsrc_interface_1 || !target_2 || !subject_2 || !rsrc_uri_2 ||
!rsrc_type_2 || !rsrc_interface_2) {
+ MA_LOGE("pin = %s", pin);
MA_LOGE("target_1 = %s", target_1);
MA_LOGE("subject_1 = %s", subject_1);
MA_LOGE("rsrc_uri_1 = %s", rsrc_uri_1);
/* Set d2ds status 'pending' */
g_atomic_int_set(&service->pending, 1);
- ret = _provisioning_pairwise_link(service, target_1, subject_1, rsrc_uri_1,
- rsrc_type_1, rsrc_interface_1, permission_1, target_2,
- subject_2, rsrc_uri_2, rsrc_type_2, rsrc_interface_2,
- permission_2);
+ ret = _pair(service, pin, target_1, subject_1, rsrc_uri_1,
+ rsrc_type_1, rsrc_interface_1, permission_1, target_2,
+ subject_2, rsrc_uri_2, rsrc_type_2, rsrc_interface_2,
+ permission_2);
return ret;
ma_check_null_ret_error("service", service, FALSE);
- MA_LOGD("[IPC] Unlink devices");
+ MA_LOGD("[IPC] Unpair both devices");
/* If we are working now? */
if (g_atomic_int_get(&service->pending))
/* Set d2ds status 'pending' */
g_atomic_int_set(&service->pending, 1);
- ret = _provisioning_unlink(service, uuid_dev1, uuid_dev2);
+ ret = _unpair(service, uuid_dev1, uuid_dev2);
+
+ return ret;
+}
+int ma_request_enable(ma_service *service)
+{
+ int ret = MA_ERROR_NONE;
+ ma_check_null_ret_error("service", service, FALSE);
+ ret = _init_provision_client();
return ret;
}
+
+int ma_request_disable(ma_service *service)
+{
+ NOTUSED(service);
+
+ if (!g_client)
+ return MA_ERROR_NONE;
+
+ if (OC_STACK_OK != OCStop()) {
+ MA_LOGE( "OCStack stop error");
+ }
+
+ OCTerminatePM();
+
+ if (g_client->g_mowned_list) {
+ OCDeleteDiscoveredDevices(g_client->g_mowned_list);
+ g_client->g_mowned_list = NULL;
+ }
+ if (g_client->g_motdev_list) {
+ OCDeleteDiscoveredDevices(g_client->g_motdev_list);
+ g_client->g_motdev_list= NULL;
+ }
+
+ if (g_client->rnd_pin) {
+ g_free(g_client->rnd_pin);
+ g_client->rnd_pin = NULL;
+ }
+
+ g_free(g_client);
+ g_client = NULL;
+
+ return MA_ERROR_NONE;
+}
+