From 57f24b180b04ddd03a8f37a329bddfab5e16a4ec Mon Sep 17 00:00:00 2001 From: "saerome.kim" Date: Wed, 28 Feb 2018 15:33:17 +0900 Subject: [PATCH] mot-agent: code clean up - change signal name - remove unnecessary codes Signed-off-by: saerome.kim --- src/companion-manager/include/comp_gdbus.h | 0 src/companion-manager/include/comp_gdbus_group.h | 0 src/companion-manager/include/comp_log.h | 0 src/companion-manager/include/comp_manager.h | 0 src/companion-manager/include/comp_mot_agent.h | 4 +- src/companion-manager/include/comp_resource.h | 0 src/companion-manager/src/comp_context.c | 0 src/companion-manager/src/comp_gdbus_group.c | 0 src/companion-manager/src/comp_group.c | 4 +- src/companion-manager/src/comp_iot.c | 0 src/companion-manager/src/comp_log.c | 0 src/companion-manager/src/comp_manager.c | 0 src/companion-manager/src/comp_mot_agent.c | 22 +- src/companion-manager/src/comp_resource.c | 0 src/companion-manager/src/companion_gdbus.xml | 0 src/mot-agent/introspection/ma.xml | 4 +- src/mot-agent/ma-service-interface.c | 48 ++- src/mot-agent/ma-subowner.c | 513 +++++++++++------------ src/mot-agent/ma-subowner.h | 8 +- 19 files changed, 290 insertions(+), 313 deletions(-) mode change 100755 => 100644 src/companion-manager/include/comp_gdbus.h mode change 100755 => 100644 src/companion-manager/include/comp_gdbus_group.h mode change 100755 => 100644 src/companion-manager/include/comp_log.h mode change 100755 => 100644 src/companion-manager/include/comp_manager.h mode change 100755 => 100644 src/companion-manager/include/comp_mot_agent.h mode change 100755 => 100644 src/companion-manager/include/comp_resource.h mode change 100755 => 100644 src/companion-manager/src/comp_context.c mode change 100755 => 100644 src/companion-manager/src/comp_gdbus_group.c mode change 100755 => 100644 src/companion-manager/src/comp_iot.c mode change 100755 => 100644 src/companion-manager/src/comp_log.c mode change 100755 => 100644 src/companion-manager/src/comp_manager.c mode change 100755 => 100644 src/companion-manager/src/comp_resource.c mode change 100755 => 100644 src/companion-manager/src/companion_gdbus.xml diff --git a/src/companion-manager/include/comp_gdbus.h b/src/companion-manager/include/comp_gdbus.h old mode 100755 new mode 100644 diff --git a/src/companion-manager/include/comp_gdbus_group.h b/src/companion-manager/include/comp_gdbus_group.h old mode 100755 new mode 100644 diff --git a/src/companion-manager/include/comp_log.h b/src/companion-manager/include/comp_log.h old mode 100755 new mode 100644 diff --git a/src/companion-manager/include/comp_manager.h b/src/companion-manager/include/comp_manager.h old mode 100755 new mode 100644 diff --git a/src/companion-manager/include/comp_mot_agent.h b/src/companion-manager/include/comp_mot_agent.h old mode 100755 new mode 100644 index c5df6d3..123fe19 --- a/src/companion-manager/include/comp_mot_agent.h +++ b/src/companion-manager/include/comp_mot_agent.h @@ -33,10 +33,10 @@ int agent_get_ownerid(char* deviceid); int agent_find_mot_enable_devices(int timeout); int agent_find_mowned_devices(); int agent_mot(char* uuid_str, char *pin); -int agent_pairwise(char* target1, char *subject1, char *uri1, +int agent_resources_pairwise(char* target1, char *subject1, char *uri1, char *rt1, char *interface1, int permission1, char* target2, char *subject2, char *uri2, char *rt2, char *interface2, int permission2); -int agent_unlink(char* uuid_str1, char *uuid_str2); +int agent_unlink_resources(char* uuid_str1, char *uuid_str2); int agent_remove_subowner(char* uuid_str); int agent_remove_subowned(char* uuid_str); int agent_pair(char *pin, char* target1, char *subject1, char *uri1, diff --git a/src/companion-manager/include/comp_resource.h b/src/companion-manager/include/comp_resource.h old mode 100755 new mode 100644 diff --git a/src/companion-manager/src/comp_context.c b/src/companion-manager/src/comp_context.c old mode 100755 new mode 100644 diff --git a/src/companion-manager/src/comp_gdbus_group.c b/src/companion-manager/src/comp_gdbus_group.c old mode 100755 new mode 100644 diff --git a/src/companion-manager/src/comp_group.c b/src/companion-manager/src/comp_group.c index e4c41aa..fa883a9 100644 --- a/src/companion-manager/src/comp_group.c +++ b/src/companion-manager/src/comp_group.c @@ -531,7 +531,7 @@ int comp_group_pair_resource(char* target1, char *subject1, char *uri1, LOG_BEGIN(); - ret = agent_pairwise(target1, subject1, uri1, rt1, interface1, permission1, + ret = agent_resources_pairwise(target1, subject1, uri1, rt1, interface1, permission1, target2, subject2, uri2, rt2, interface2, permission2); LOG_END(); @@ -545,7 +545,7 @@ int comp_group_unpair_resource(gchar *uuid_dev1, gchar *uuid_dev2) LOG_BEGIN(); - ret = agent_unlink(uuid_dev1, uuid_dev2); + ret = agent_unlink_resources(uuid_dev1, uuid_dev2); LOG_END(); diff --git a/src/companion-manager/src/comp_iot.c b/src/companion-manager/src/comp_iot.c old mode 100755 new mode 100644 diff --git a/src/companion-manager/src/comp_log.c b/src/companion-manager/src/comp_log.c old mode 100755 new mode 100644 diff --git a/src/companion-manager/src/comp_manager.c b/src/companion-manager/src/comp_manager.c old mode 100755 new mode 100644 diff --git a/src/companion-manager/src/comp_mot_agent.c b/src/companion-manager/src/comp_mot_agent.c index e654695..31807c0 100644 --- a/src/companion-manager/src/comp_mot_agent.c +++ b/src/companion-manager/src/comp_mot_agent.c @@ -42,10 +42,10 @@ #define AGENT_DBUS_PROXY_TIMEOUT ((9.5 + 2) * 1000) /**< default timeout for GDBus */ struct agent_s { - GDBusProxy *gproxy_agent_service; - gpointer dbus_connection; - GCancellable *ca; - GList *dbus_sub_ids; + GDBusProxy *gproxy_agent_service; /**< Proxy for MOT agent */ + gpointer dbus_connection; /**< Dbus connection for MOT agent */ + GCancellable *ca; /**< Cancellable for MOT agent */ + GList *dbus_sub_ids; /**< DBus ID for MOT agent */ }; struct agent_s agent; @@ -188,7 +188,7 @@ int agent_mot(char* uuid_str, char *pin) return result; } -int agent_pairwise(char* target1, char *subject1, char *uri1, +int agent_resources_pairwise(char* target1, char *subject1, char *uri1, char *rt1, char *interface1, int permission1, char* target2, char *subject2, char *uri2, char *rt2, char *interface2, int permission2) { @@ -218,7 +218,7 @@ int agent_pairwise(char* target1, char *subject1, char *uri1, return result; } -int agent_unlink(char* uuid_str1, char *uuid_str2) +int agent_unlink_resources(char* uuid_str1, char *uuid_str2) { GVariant *variant = NULL; int result = COMP_ERROR_NONE; @@ -234,7 +234,7 @@ int agent_unlink(char* uuid_str1, char *uuid_str2) -1, NULL, &error); if (variant) { g_variant_get(variant, "(i)", &result); - LOGD("remove_mo status 0x%x", result); + LOGD("remove_subowner status 0x%x", result); } else if (error) { LOGE("Failed DBus call [%s]", error->message); g_error_free(error); @@ -260,11 +260,11 @@ int agent_remove_subowner(char* uuid_str) return COMP_ERROR_IO_ERROR; } - variant = g_dbus_proxy_call_sync(agent.gproxy_agent_service, "remove_mo", + variant = g_dbus_proxy_call_sync(agent.gproxy_agent_service, "remove_subowner", g_variant_new("(s)", uuid_str), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (variant) { g_variant_get(variant, "(i)", &result); - LOGD("remove_mo status 0x%x", result); + LOGD("remove_subowner status 0x%x", result); } else if (error) { LOGE("Failed DBus call [%s]", error->message); g_error_free(error); @@ -285,7 +285,7 @@ int agent_remove_subowned(char* uuid_str) return COMP_ERROR_IO_ERROR; } - variant = g_dbus_proxy_call_sync(agent.gproxy_agent_service, "remove_cred_local", + variant = g_dbus_proxy_call_sync(agent.gproxy_agent_service, "remove_device", g_variant_new("(s)", uuid_str), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (variant) { g_variant_get(variant, "(i)", &result); @@ -345,7 +345,7 @@ int agent_unpair(char* uuid_str1, char *uuid_str2) -1, NULL, &error); if (variant) { g_variant_get(variant, "(i)", &result); - LOGD("remove_mo status 0x%x", result); + LOGD("remove_subowner status 0x%x", result); } else if (error) { LOGE("Failed DBus call [%s]", error->message); g_error_free(error); diff --git a/src/companion-manager/src/comp_resource.c b/src/companion-manager/src/comp_resource.c old mode 100755 new mode 100644 diff --git a/src/companion-manager/src/companion_gdbus.xml b/src/companion-manager/src/companion_gdbus.xml old mode 100755 new mode 100644 diff --git a/src/mot-agent/introspection/ma.xml b/src/mot-agent/introspection/ma.xml index efa6a34..c734f79 100644 --- a/src/mot-agent/introspection/ma.xml +++ b/src/mot-agent/introspection/ma.xml @@ -24,11 +24,11 @@ - + - + diff --git a/src/mot-agent/ma-service-interface.c b/src/mot-agent/ma-service-interface.c index f88abc7..a2484fc 100644 --- a/src/mot-agent/ma-service-interface.c +++ b/src/mot-agent/ma-service-interface.c @@ -192,7 +192,8 @@ static gboolean _ma_dbus_handle_disc_mowned_devs(NetMa *object, } static gboolean _ma_dbus_handle_mot(NetMa *object, - GDBusMethodInvocation *invocation, gchar *arg_target, gchar *arg_pin, gpointer user_data) + GDBusMethodInvocation *invocation, gchar *arg_target, gchar *arg_pin, + gpointer user_data) { int ret = MA_ERROR_NONE; ma_service *service = (ma_service *)user_data; @@ -210,8 +211,9 @@ static gboolean _ma_dbus_handle_mot(NetMa *object, } static gboolean _ma_dbus_handle_acl(NetMa *object, - GDBusMethodInvocation *invocation, gchar *arg_target, gchar *arg_subject, gchar *arg_uri, - gchar *arg_rt, gchar *arg_interface, gint arg_permission, gpointer user_data) + GDBusMethodInvocation *invocation, gchar *arg_target, gchar *arg_subject, + gchar *arg_uri, gchar *arg_rt, gchar *arg_interface, gint arg_permission, + gpointer user_data) { int ret = MA_ERROR_NONE; ma_service *service = (ma_service *)user_data; @@ -219,7 +221,8 @@ static gboolean _ma_dbus_handle_acl(NetMa *object, ma_check_null_ret_error("service", service, FALSE); - ret = ma_request_prov_acl(service, arg_target, arg_subject, arg_uri, arg_rt, arg_interface, arg_permission); + ret = ma_request_prov_acl(service, arg_target, arg_subject, arg_uri, arg_rt, + arg_interface, arg_permission); if (MA_ERROR_NONE != ret) MA_LOGE("Failed to ma_request_prov_acl !"); @@ -229,7 +232,8 @@ static gboolean _ma_dbus_handle_acl(NetMa *object, } static gboolean _ma_dbus_handle_cred(NetMa *object, - GDBusMethodInvocation *invocation, gchar *arg_dev1, gchar *arg_dev2, gpointer user_data) + GDBusMethodInvocation *invocation, gchar *arg_dev1, gchar *arg_dev2, + gpointer user_data) { int ret = MA_ERROR_NONE; ma_service *service = (ma_service *)user_data; @@ -259,7 +263,7 @@ static gboolean _ma_dbus_handle_pairwise(NetMa *object, ma_check_null_ret_error("service", service, FALSE); - ret = ma_request_pairwise(service, target_1, subject_1, uri_1, rt_1, + ret = ma_request_rsrc_pairwise(service, target_1, subject_1, uri_1, rt_1, interface_1, permission_1, target_2, subject_2, uri_2, rt_2, interface_2, permission_2); if (MA_ERROR_NONE != ret) @@ -279,7 +283,7 @@ static gboolean _ma_dbus_handle_unlink(NetMa *object, ma_check_null_ret_error("service", service, FALSE); - ret = ma_request_unlink(service, uuid_dev1, uuid_dev2); + ret = ma_request_unlink_rsrc(service, uuid_dev1, uuid_dev2); if (MA_ERROR_NONE != ret) MA_LOGE("Failed to ma_request_unpair = %d", ret); @@ -288,7 +292,7 @@ static gboolean _ma_dbus_handle_unlink(NetMa *object, return TRUE; } -static gboolean _ma_dbus_handle_remove_mo(NetMa *object, +static gboolean _ma_dbus_handle_remove_subowner(NetMa *object, GDBusMethodInvocation *invocation, gchar *arg_target, gpointer user_data) { int ret = MA_ERROR_NONE; @@ -297,16 +301,16 @@ static gboolean _ma_dbus_handle_remove_mo(NetMa *object, ma_check_null_ret_error("service", service, FALSE); - ret = ma_request_remove_mo(service, arg_target); + ret = ma_request_remove_subowner(service, arg_target); if (MA_ERROR_NONE != ret) - MA_LOGE("Failed to ma_request_remove_mo !"); + MA_LOGE("Failed to ma_request_remove_subowner !"); - net_ma_complete_remove_mo(object, invocation, ret); + net_ma_complete_remove_subowner(object, invocation, ret); return TRUE; } -static gboolean _ma_dbus_handle_remove_cred_local(NetMa *object, +static gboolean _ma_dbus_handle_remove_device(NetMa *object, GDBusMethodInvocation *invocation, gchar *arg_target, gpointer user_data) { int ret = MA_ERROR_NONE; @@ -315,19 +319,21 @@ static gboolean _ma_dbus_handle_remove_cred_local(NetMa *object, ma_check_null_ret_error("service", service, FALSE); - ret = ma_request_remove_cred_local(service, arg_target); + ret = ma_request_remove_device(service, arg_target); if (MA_ERROR_NONE != ret) - MA_LOGE("Failed to ma_request_remove_mo !"); + MA_LOGE("Failed to ma_request_remove_subowner !"); - net_ma_complete_remove_cred_local(object, invocation, ret); + net_ma_complete_remove_device(object, invocation, ret); return TRUE; } static gboolean _ma_dbus_handle_pair(NetMa *object, GDBusMethodInvocation *invocation, gchar *pin, - gchar *target_1, gchar *subject_1, gchar *uri_1, gchar *rt_1, gchar *interface_1, int permission_1, - gchar *target_2, gchar *subject_2, gchar *uri_2, gchar *rt_2, gchar *interface_2, int permission_2, + gchar *target_1, gchar *subject_1, gchar *uri_1, + gchar *rt_1, gchar *interface_1, int permission_1, + gchar *target_2, gchar *subject_2, gchar *uri_2, + gchar *rt_2, gchar *interface_2, int permission_2, gpointer user_data) { int ret = MA_ERROR_NONE; @@ -391,10 +397,10 @@ static void _ma_dbus_on_bus_acquired(GDBusConnection *conn, const gchar *name, G_CALLBACK(_ma_dbus_handle_pairwise), service); g_signal_connect(ma_dbus_object, "handle-unlink", G_CALLBACK(_ma_dbus_handle_unlink), service); - g_signal_connect(ma_dbus_object, "handle-remove-mo", - G_CALLBACK(_ma_dbus_handle_remove_mo), service); - g_signal_connect(ma_dbus_object, "handle-remove-cred-local", - G_CALLBACK(_ma_dbus_handle_remove_cred_local), service); + g_signal_connect(ma_dbus_object, "handle-remove-subowner", + G_CALLBACK(_ma_dbus_handle_remove_subowner), service); + g_signal_connect(ma_dbus_object, "handle-remove-device", + G_CALLBACK(_ma_dbus_handle_remove_device), service); g_signal_connect(ma_dbus_object, "handle-acl", G_CALLBACK(_ma_dbus_handle_acl), service); g_signal_connect(ma_dbus_object, "handle-cred", diff --git a/src/mot-agent/ma-subowner.c b/src/mot-agent/ma-subowner.c index ef1c84d..4d474b8 100644 --- a/src/mot-agent/ma-subowner.c +++ b/src/mot-agent/ma-subowner.c @@ -115,6 +115,7 @@ typedef struct _ma_subowner { GThread *thread; /**< Worker Thread */ GAsyncQueue *queue; /**< Async Queue to be handled */ gint pending; /**< Is there any pending operation? */ + GMutex iotivity_mutex; /**< Mutex for IoTivity stack */ OCProvisionDev_t* g_motdev_list; /**< Discoverd MOT enabled devices list */ OCProvisionDev_t* g_mowned_list; /**< My owned MOT enabled devices list */ @@ -129,7 +130,6 @@ typedef struct _ma_subowner { } ma_subowner_s; ma_subowner_s *g_client; /**< MOT agent client instance */ -GMutex iotivity_mutex; /**< Mutex for IoTivity stack */ #ifdef THREAD_COND_WAIT_USED /* @@ -235,9 +235,9 @@ static int _wait_cb_ret(int msec) MA_LOGE("nanosleep failed=%d", errno); } - g_mutex_lock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); ret = OCProcess(); - g_mutex_unlock(&iotivity_mutex); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret) { MA_LOGE( "OCStack process error = %d", ret); @@ -368,7 +368,8 @@ static void _request_cleanup(gpointer data) } /* Set d2ds status 'pending' */ - g_atomic_int_set(&g_client->pending, 0); + if (g_client) + g_atomic_int_set(&g_client->pending, 0); if (con) { g_free(con); @@ -386,6 +387,7 @@ static void __notify_found_devs(void *data) ma_check_null_ret("con", con); ma_service *service= (ma_service *)con->userdata; ma_check_null_ret("service", service); + ma_check_null_ret("g_client", g_client); /* g_mowned_list would be filled above request */ g_variant_builder_init(&builder, G_VARIANT_TYPE("aa{sv}")); @@ -463,10 +465,10 @@ static void _disc_mot_env_devs_func(ma_req_cb_s *con) /* delete mot device lists before updating them */ _remove_mot_client(); - g_mutex_lock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); OCDiscoverMultipleOwnerEnabledDevices(con->timeout, &g_client->g_motdev_list); - g_mutex_unlock(&iotivity_mutex); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret) { MA_LOGE( "OCDiscoverMultipleOwnerEnalbedDevices API error"); goto DISC_MOT_ENB_DEVS_END; @@ -480,6 +482,7 @@ DISC_MOT_ENB_DEVS_END: static int _disc_mot_enb_devs(ma_service *service, int timeout) { ma_req_cb_s *con = NULL; + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (NULL == con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -512,10 +515,10 @@ static void _disc_owned_devs_func(ma_req_cb_s *con) MA_LOGD("Discovering MOWNED Devices"); - g_mutex_lock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); ret = OCDiscoverMultipleOwnedDevices(con->timeout, &g_client->g_mowned_list); - g_mutex_unlock(&iotivity_mutex); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret) { MA_LOGE( "OCDiscoverMultipleOwnerEnabledDevices API error"); goto DISC_OWNED_DEVS_END; @@ -529,6 +532,7 @@ DISC_OWNED_DEVS_END: static int _disc_owned_devs(ma_service *service, int timeout) { ma_req_cb_s *con = NULL; + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (NULL == con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -592,10 +596,12 @@ static void _mot_func(ma_req_cb_s *con) MA_LOGE("We can't find in MOT dev list"); goto MOT_ENDED; } +#ifndef MULTIPLE_OWN_AT_ONCE /* Copy next MOT enabled device pointer temporally */ - next_dev = src_dev->next; + next_dev = src_dev->next; /* Next MOT enabled device set NULL to MOT a single device */ src_dev->next = NULL; +#endif g_client->g_doneCB = false; @@ -643,12 +649,14 @@ static void _mot_func(ma_req_cb_s *con) ret, ma_ocf_error_to_string(ret)); goto MOT_ENDED; } - /* Restore MOT enabled devices */ - src_dev->next = next_dev ; - MA_LOGI("Registered Discovered Devices"); MOT_ENDED: +#ifndef MULTIPLE_OWN_AT_ONCE + /* Restore MOT enabled devices */ + src_dev->next = next_dev; +#endif + net_ma_emit_mot_done(ma_dbus_get_object(), (int)ret); if (uuid_target) @@ -657,10 +665,10 @@ MOT_ENDED: _request_cleanup(con); } -static int _ma_mot(ma_service *service, gchar *uuid_str, gchar *pin) +static int _mot(ma_service *service, gchar *uuid_str, gchar *pin) { ma_req_cb_s *con = NULL; - + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (NULL == con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -787,7 +795,8 @@ CREATE_ACL_ERROR: return NULL; } -static void _acl_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error) +static void _acl_provisioning_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, + bool has_error) { ma_subowner_s *client = (ma_subowner_s *)ctx; @@ -799,7 +808,7 @@ static void _acl_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_er } client->g_doneCB = true; } -static void _acl_func(ma_req_cb_s *con) +static void _acl_provisioning_func(ma_req_cb_s *con) { OCStackResult ret = OC_STACK_OK; @@ -810,39 +819,26 @@ static void _acl_func(ma_req_cb_s *con) OCProvisionDev_t *subject_dev = NULL; if (!g_client) { - ret = OC_STACK_INVALID_PARAM; MA_LOGE("mot agent is not initialized"); - goto PVACL_ERROR; + goto PV_ACL_END; } if (NULL == con) { - ret = OC_STACK_INVALID_PARAM; MA_LOGE("container is NULL"); - goto PVACL_ERROR; - } - - 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 ); - MA_LOGE("%s", con->rsrc_uri ); - MA_LOGE("%s", con->rsrc_type ); - MA_LOGE("%s", con->rsrc_interface ); - goto PVACL_ERROR; + goto PV_ACL_END; } uuid1 = ma_convert_uuid(con->uuid_target_str); target_dev = ma_get_dev_by_uuid(g_client->g_motdev_list, uuid1); if (!target_dev) { MA_LOGE("We can't find target in MOT enabled dev list"); - goto PVACL_ERROR; + goto PV_ACL_END; } uuid2 = ma_convert_uuid(con->uuid_subject_str); subject_dev = ma_get_dev_by_uuid(g_client->g_motdev_list, uuid2); if (!subject_dev) { MA_LOGE("We can't find subject in MOT enabled dev list"); - goto PVACL_ERROR; + goto PV_ACL_END; } g_client->g_doneCB = false; @@ -853,24 +849,25 @@ static void _acl_func(ma_req_cb_s *con) con->rsrc_interface, con->permission); if (NULL == acl) { MA_LOGE( "Failed to create ACL for %s", con->rsrc_uri); - goto PVACL_ERROR; + goto PV_ACL_END; } - ret= OCProvisionACL((void*) g_client, target_dev, acl, _acl_cb); + /* Do ACL provisioning */ + ret= OCProvisionACL((void*) g_client, target_dev, acl, _acl_provisioning_cb); if (OC_STACK_OK != ret) { MA_LOGD( "OCProvisionACL API error: %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto PVACL_ERROR; + goto PV_ACL_END; } ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S); if (ret) { MA_LOGE( "OCProvisionCredentials Faild = %d", errno); - goto PVACL_ERROR; + goto PV_ACL_END; } /* display the ACL-provisioned result */ MA_LOGI(" Provisioned Selected ACL Successfully"); -PVACL_ERROR: +PV_ACL_END: /* Notify ACL result */ net_ma_emit_acl_done(ma_dbus_get_object(), (int)ret); @@ -884,10 +881,11 @@ PVACL_ERROR: _request_cleanup(con); } -static int _acl(ma_service *service, gchar *target, gchar *subject, +static int _acl_provisioning(ma_service *service, gchar *target, gchar *subject, gchar *rsrc_uri, gchar *rsrc_type, gchar *rsrc_interface, int permission) { ma_req_cb_s *con = NULL; + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (NULL == con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -909,7 +907,7 @@ static int _acl(ma_service *service, gchar *target, gchar *subject, return MA_ERROR_NONE; } -static void _cred_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error) +static void _cred_provisioning_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error) { ma_subowner_s *client = (ma_subowner_s *)ctx; @@ -922,7 +920,7 @@ static void _cred_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_e client->g_doneCB = true; } -static void _cred_func(ma_req_cb_s *con) +static void _cred_provisioning_func(ma_req_cb_s *con) { OCStackResult ret = OC_STACK_OK; @@ -930,45 +928,45 @@ static void _cred_func(ma_req_cb_s *con) OicUuid_t *uuid2 = NULL; OCProvisionDev_t *dev1 = NULL; OCProvisionDev_t *dev2 = NULL; + OCProvisionDev_t *dev1_next = NULL; + OCProvisionDev_t *dev2_next = NULL; if (!g_client) { - ret = OC_STACK_INVALID_PARAM; MA_LOGE("mot agent is not initialized"); - goto PVCRED_ERROR; + goto PV_CRED_END; } if (NULL == con) { - ret = OC_STACK_INVALID_PARAM; MA_LOGE("container is NULL"); - goto PVCRED_ERROR; + goto PV_CRED_END; } if (!con->uuid_dev1 ) { MA_LOGE("dev1 is NULL"); - goto PVCRED_ERROR; + goto PV_CRED_END; } if (!con->uuid_dev2) { MA_LOGE("dev2 is NULL"); - goto PVCRED_ERROR; + goto PV_CRED_END; } uuid1 = ma_convert_uuid(con->uuid_dev1); dev1 = ma_get_dev_by_uuid(g_client->g_motdev_list, uuid1); if (!dev1) { MA_LOGE("We can't find in MOWNED dev list"); - goto PVCRED_ERROR; + goto PV_CRED_END; } uuid2 = ma_convert_uuid(con->uuid_dev2); dev2 = ma_get_dev_by_uuid(g_client->g_motdev_list, uuid2); if (!dev2) { MA_LOGE("We can't find in MOWNED dev list"); - goto PVCRED_ERROR; + goto PV_CRED_END; } /* To do ACL provisioning only one */ + dev1_next = dev1->next; dev1->next = NULL; - - /* To do ACL provisioning only one */ + dev2_next = dev2->next; dev2->next = NULL; g_client->g_doneCB = false; @@ -976,23 +974,27 @@ static void _cred_func(ma_req_cb_s *con) MA_LOGI("Provisioning Selected Pairwise Devices.."); ret = OCProvisionCredentials((void*) g_client, SYMMETRIC_PAIR_WISE_KEY, OWNER_PSK_LENGTH_256, - dev1, dev2, _cred_cb); + dev1, dev2, _cred_provisioning_cb); if (OC_STACK_OK != ret) { MA_LOGD( "OCProvisionPairwiseDevices API error: %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto PVCRED_ERROR; + goto PV_CRED_END; } ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S); if (ret) { MA_LOGE( "OCProvisionCredentials Faild = %d", errno); - goto PVCRED_ERROR; + goto PV_CRED_END; } /* display the pairwise-provisioned result */ MA_LOGI("Provisioned Selected Pairwise Devices"); -PVCRED_ERROR: +PV_CRED_END: + /* Restore MOT enabled device list */ + dev1->next = dev1_next; + dev2->next = dev2_next; + /* Notify ACL result */ net_ma_emit_cred_done(ma_dbus_get_object(), (int)ret); @@ -1004,10 +1006,11 @@ PVCRED_ERROR: _request_cleanup(con); } -static int _cred(ma_service *service, +static int _cred_provisioning(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2) { ma_req_cb_s *con = NULL; + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (!con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -1033,7 +1036,7 @@ static int _cred(ma_service *service, return MA_ERROR_NONE; } -static void _pairwise_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, +static void _resources_pairwise_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error) { ma_subowner_s *client = (ma_subowner_s *)ctx; @@ -1047,7 +1050,7 @@ static void _pairwise_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, client->g_doneCB = true; } -static void _pairwise_func(ma_req_cb_s *con) +static void _resources_pairwise_func(ma_req_cb_s *con) { OCStackResult ret = OC_STACK_OK; @@ -1065,31 +1068,14 @@ static void _pairwise_func(ma_req_cb_s *con) OCProvisionDev_t *subject_dev_2 = NULL; if (!g_client) { - ret = OC_STACK_INVALID_PARAM; MA_LOGE("mot agent is not initialized"); goto PVPAIRWIE_ERROR; } if (NULL == con) { - ret = OC_STACK_INVALID_PARAM; MA_LOGE("container is NULL"); goto PVPAIRWIE_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 PVPAIRWIE_ERROR; - } - uuid_1 = ma_convert_uuid(con->target_1); target_dev_1 = ma_get_dev_by_uuid(g_client->g_motdev_list, uuid_1); if (!target_dev_1) { @@ -1139,9 +1125,10 @@ static void _pairwise_func(ma_req_cb_s *con) goto PVPAIRWIE_ERROR; } + /* Do both resources pairwise */ 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); + target_dev_2, acl_2, _resources_pairwise_cb); if (OC_STACK_OK != ret) { MA_LOGD( "OCProvisionPairwiseDevices API error: %d (%s)", ret, ma_ocf_error_to_string(ret)); @@ -1176,12 +1163,13 @@ PVPAIRWIE_ERROR: _request_cleanup(con); } -static int _pairwise(ma_service *service, gchar *target_1, gchar *subject_1, +static int _resources_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) { ma_req_cb_s *con = NULL; + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (NULL == con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -1212,7 +1200,8 @@ static int _pairwise(ma_service *service, gchar *target_1, gchar *subject_1, return MA_ERROR_NONE; } -static void _unlink_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has_error) +static void _unlink_resources_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, + bool has_error) { ma_subowner_s *client = (ma_subowner_s *)ctx; @@ -1225,7 +1214,7 @@ static void _unlink_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool has client->g_doneCB = true; } -static void _unlink_func(ma_req_cb_s *con) +static void _unlink_resources_func(ma_req_cb_s *con) { OCStackResult ret = OC_STACK_OK; @@ -1271,7 +1260,7 @@ static void _unlink_func(ma_req_cb_s *con) g_client->g_doneCB = false; MA_LOGI("Unlink Selected Pairwise Devices.."); - ret = OCUnlinkDevices((void*) g_client, dev1, dev2, _unlink_cb ); + ret = OCUnlinkDevices((void*) g_client, dev1, dev2, _unlink_resources_cb); if (OC_STACK_OK != ret) { MA_LOGD( "OCUnlinkDevices API error: %d (%s)", ret, ma_ocf_error_to_string(ret)); goto PVUNLINKPAIRWISE_ERROR; @@ -1298,10 +1287,11 @@ PVUNLINKPAIRWISE_ERROR: _request_cleanup(con); } -static int _unlink(ma_service *service, +static int _unlink_resources(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2) { ma_req_cb_s *con = NULL; + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (!con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -1313,7 +1303,7 @@ static int _unlink(ma_service *service, con->userdata = service; con->cid = MA_UNLINK_RESOURCES; - if (!uuid_dev1 ||!uuid_dev2) { + if (!uuid_dev1 || !uuid_dev2) { MA_LOGE( "Invaild Prameters"); _request_cleanup(con); return MA_ERROR_INVALID_PARAMETER; @@ -1327,7 +1317,7 @@ static int _unlink(ma_service *service, return MA_ERROR_NONE; } -static void _remove_mo_cb(void* ctx, int num, OCProvisionResult_t* arr, +static void _remove_subowner_cb(void* ctx, int num, OCProvisionResult_t* arr, bool has_error) { ma_subowner_s *client = (ma_subowner_s *)ctx; @@ -1341,7 +1331,7 @@ static void _remove_mo_cb(void* ctx, int num, OCProvisionResult_t* arr, client->g_doneCB = true; } -static void _remove_mo_func(ma_req_cb_s *con) +static void _remove_subowner_func(ma_req_cb_s *con) { OCStackResult ret = MA_ERROR_OPERATION_FAILED; @@ -1352,24 +1342,24 @@ static void _remove_mo_func(ma_req_cb_s *con) if (!g_client) { ret = OC_STACK_INVALID_PARAM; MA_LOGE("mot agent is not initialized"); - goto REMOVE_MO_ENDED; + goto REMOVE_SUBOWNER_ENDED; } if (NULL == con) { ret = OC_STACK_INVALID_PARAM; MA_LOGE("container is NULL"); - goto REMOVE_MO_ENDED; + goto REMOVE_SUBOWNER_ENDED; } if (!con->uuid_target_str) { MA_LOGE("Target device UUID is NULL"); - goto REMOVE_MO_ENDED; + goto REMOVE_SUBOWNER_ENDED; } uuid_target = ma_convert_uuid(con->uuid_target_str); src_dev = ma_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; + goto REMOVE_SUBOWNER_ENDED; } g_client->g_doneCB = false; @@ -1378,34 +1368,35 @@ static void _remove_mo_func(ma_req_cb_s *con) if (OC_STACK_OK != ret) { MA_LOGE("GetDoxmDevOwnerId faild = [%d][%s]", ret, ma_ocf_error_to_string(ret)); - goto REMOVE_MO_ENDED; + goto REMOVE_SUBOWNER_ENDED; } - ret = OCRemoveSubOwner(g_client, src_dev, &uuid_mowner, _remove_mo_cb); + ret = OCRemoveSubOwner(g_client, src_dev, &uuid_mowner, _remove_subowner_cb); if (OC_STACK_OK != ret ) { MA_LOGE( "OCRemoveSubOwner: ret = %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto REMOVE_MO_ENDED; + goto REMOVE_SUBOWNER_ENDED; } ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S); if(ret) { MA_LOGE( "OCRemoveSubOwner callback error = %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto REMOVE_MO_ENDED; + goto REMOVE_SUBOWNER_ENDED; } MA_LOGI("Remove Multiple Ownership Done"); -REMOVE_MO_ENDED: +REMOVE_SUBOWNER_ENDED: net_ma_emit_remove_mo_done(ma_dbus_get_object(), (int)ret); if (uuid_target) g_free(uuid_target); _request_cleanup(con); } -static int _ma_remove_mo(ma_service *service, gchar *uuid_str) +static int _ma_remove_subowner(ma_service *service, gchar *uuid_str) { ma_req_cb_s *con = NULL; + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (NULL == con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -1423,7 +1414,7 @@ static int _ma_remove_mo(ma_service *service, gchar *uuid_str) return MA_ERROR_NONE; } -static void _remove_remove_cred_local_cb(void* ctx, int num, +static void _remove_remove_device_cb(void* ctx, int num, OCProvisionResult_t* arr, bool has_error) { ma_subowner_s *client = (ma_subowner_s *)ctx; @@ -1437,7 +1428,7 @@ static void _remove_remove_cred_local_cb(void* ctx, int num, client->g_doneCB = true; } -static void _remove_cred_local_func(ma_req_cb_s *con) +static void _remove_device_func(ma_req_cb_s *con) { OCStackResult ret = OC_STACK_OK; OicUuid_t *uuid = NULL; @@ -1445,17 +1436,17 @@ static void _remove_cred_local_func(ma_req_cb_s *con) if (!g_client) { ret = OC_STACK_INVALID_PARAM; MA_LOGE("mot agent is not initialized"); - goto REMOVE_LOCAL_CRED_ERROR; + goto REMOVE_DEVICE_END; } if (NULL == con) { ret = OC_STACK_INVALID_PARAM; MA_LOGE("container is NULL"); - goto REMOVE_LOCAL_CRED_ERROR; + goto REMOVE_DEVICE_END; } if (!con->target_to_revoke) { MA_LOGE("Some parameters are wrong"); MA_LOGE("%s", con->target_to_revoke ); - goto REMOVE_LOCAL_CRED_ERROR; + goto REMOVE_DEVICE_END; } uuid = ma_convert_uuid(con->target_to_revoke); @@ -1463,23 +1454,23 @@ static void _remove_cred_local_func(ma_req_cb_s *con) 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 ); + ret = OCRemoveDeviceWithUuid((void*) g_client, CALLBACK_TIMEOUT_5S, uuid, + _remove_subowner_cb ); if (OC_STACK_OK != ret) { MA_LOGD( "OCRemoveDeviceWithUuid API error: %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto REMOVE_LOCAL_CRED_ERROR; + goto REMOVE_DEVICE_END; } ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S); if (ret) { MA_LOGE( "OCRemoveDeviceWithUuid Faild = %d", errno); - goto REMOVE_LOCAL_CRED_ERROR; + goto REMOVE_DEVICE_END; } /* Disaply result result */ MA_LOGI(" Removing CRED info. at local SVR DB - Done"); -REMOVE_LOCAL_CRED_ERROR: +REMOVE_DEVICE_END: /* Notify ACL result */ net_ma_emit_remove_cred_local_done(ma_dbus_get_object(), (int)ret); if (uuid) @@ -1487,9 +1478,10 @@ REMOVE_LOCAL_CRED_ERROR: _request_cleanup(con); } -static int _ma_remove_cred_local(ma_service *service, gchar *uuid_str) +static int _remove_device(ma_service *service, gchar *uuid_str) { ma_req_cb_s *con = NULL; + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (NULL == con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -1507,7 +1499,7 @@ static int _ma_remove_cred_local(ma_service *service, gchar *uuid_str) return MA_ERROR_NONE; } -static void _pair_func(ma_req_cb_s *con) +static void _make_devices_pair_func(ma_req_cb_s *con) { OCStackResult ret = OC_STACK_OK; @@ -1530,64 +1522,49 @@ static void _pair_func(ma_req_cb_s *con) if (!g_client) { ret = OC_STACK_INVALID_PARAM; MA_LOGE("mot agent is not initialized"); - goto PVPAIR_ERROR; + goto PV_PAIR_END; } if (NULL == con) { ret = OC_STACK_INVALID_PARAM; MA_LOGE("container is NULL"); - 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; + goto PV_PAIR_END; } uuid_1 = ma_convert_uuid(con->target_1); target_dev_1 = ma_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; + goto PV_PAIR_END; } uuid_2 = ma_convert_uuid(con->target_2); target_dev_2 = ma_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; + goto PV_PAIR_END; } uuid_3 = ma_convert_uuid(con->subject_1); subject_dev_1 = ma_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; + goto PV_PAIR_END; } uuid_4 = ma_convert_uuid(con->subject_2); subject_dev_2 = ma_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; + goto PV_PAIR_END; } src_dev = ma_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; + goto PV_PAIR_END; } /* Copy next MOT enabled device pointer temporally */ - next_dev = src_dev->next; + next_dev = src_dev->next; /* Next MOT enabled device set NULL to MOT a single device */ src_dev->next = NULL; @@ -1596,33 +1573,31 @@ static void _pair_func(ma_req_cb_s *con) if(OIC_PRECONFIG_PIN == src_dev->doxm->oxmSel) { /* Pre-Configured PIN initialization */ const char* testPreconfigPin = con->pin;/* Ex) "12341234" */ - g_mutex_lock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); ret = OCAddPreconfigPin(src_dev, testPreconfigPin, strlen(testPreconfigPin)); - g_mutex_unlock(&iotivity_mutex); + g_mutex_unlock(&g_client->iotivity_mutex); 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; + goto PV_PAIR_END; } } - g_mutex_lock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); ret = OCDoMultipleOwnershipTransfer(g_client, src_dev, _mot_cb); - g_mutex_unlock(&iotivity_mutex); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret ) { MA_LOGE( "OCDoMultipleOwnershipTransfer: ret = %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto PVPAIR_ERROR; + goto PV_PAIR_END; } ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S); if (OC_STACK_OK != ret ) { MA_LOGE( "OCDoMultipleOwnershipTransfer callback error = %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto PVPAIR_ERROR; + goto PV_PAIR_END; } - /* Restore MOT enabled devices */ - src_dev->next = next_dev ; MA_LOGI("Registered Discovered Devices"); @@ -1636,7 +1611,7 @@ static void _pair_func(ma_req_cb_s *con) 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; + goto PV_PAIR_END; } acl_2 = _create_target_acl(&target_dev_2->doxm->deviceID, @@ -1645,29 +1620,31 @@ static void _pair_func(ma_req_cb_s *con) 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; + goto PV_PAIR_END; } - g_mutex_lock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); 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); - g_mutex_unlock(&iotivity_mutex); + target_dev_2, acl_2, _resources_pairwise_cb); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret) { MA_LOGD( "OCProvisionPairwiseDevices API error: %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto PVPAIR_ERROR; + goto PV_PAIR_END; } ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S); if (ret) { MA_LOGE( "OCProvisionPairwise Faild = %d", errno); - goto PVPAIR_ERROR; + goto PV_PAIR_END; } /* display the pairwise-provisioned result */ MA_LOGI(" Provision pairwise Done"); -PVPAIR_ERROR: +PV_PAIR_END: + /* Restore MOT enabled devices */ + src_dev->next = next_dev ; /* Notify pair result */ net_ma_emit_pair_done(ma_dbus_get_object(), (int)ret); @@ -1687,12 +1664,13 @@ PVPAIR_ERROR: _request_cleanup(con); } -static int _pair(ma_service *service, gchar *pin, gchar *target_1, gchar *subject_1, +static int _make_devices_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; + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (NULL == con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -1724,7 +1702,7 @@ static int _pair(ma_service *service, gchar *pin, gchar *target_1, gchar *subjec return MA_ERROR_NONE; } -static void _unpair_func(ma_req_cb_s *con) +static void _make_devices_unpair_func(ma_req_cb_s *con) { OCStackResult ret = OC_STACK_OK; @@ -1737,43 +1715,43 @@ static void _unpair_func(ma_req_cb_s *con) if (NULL == g_client) { ret = OC_STACK_INVALID_PARAM; MA_LOGE("mot agent is not initialized"); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } if (NULL == con) { ret = OC_STACK_INVALID_PARAM; MA_LOGE("container is NULL"); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } if (NULL == con->uuid_dev1 ) { MA_LOGE("dev1 is NULL"); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } if (NULL == con->uuid_dev2) { MA_LOGE("dev2 is NULL"); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } owner_uuid = ma_convert_uuid(con->uuid_dev1); owner_dev = ma_get_dev_by_uuid(g_client->g_motdev_list, owner_uuid); if (!owner_dev) { MA_LOGE("We can't find in MOT enabled dev list"); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } owned_uuid = ma_convert_uuid(con->uuid_dev2); owned_dev = ma_get_dev_by_uuid(g_client->g_motdev_list, owned_uuid); if (!owned_dev) { MA_LOGE("We can't find in MOT enabled dev list"); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } g_client->g_doneCB = false; MA_LOGI("Unlink Selected Pairwise Devices.."); - g_mutex_lock(&iotivity_mutex); - ret = OCUnlinkDevices((void*) g_client, owner_dev, owned_dev, _unlink_cb ); - g_mutex_unlock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); + ret = OCUnlinkDevices((void*) g_client, owner_dev, owned_dev, _unlink_resources_cb ); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret) { MA_LOGD( "OCUnlinkDevices API error = %d (%s)", ret, ma_ocf_error_to_string(ret)); @@ -1782,7 +1760,7 @@ static void _unpair_func(ma_req_cb_s *con) if (OC_STACK_OK != ret) { MA_LOGD( "OCUnlinkDevices Timeout = %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } } @@ -1795,23 +1773,23 @@ static void _unpair_func(ma_req_cb_s *con) if (OC_STACK_OK != ret) { MA_LOGE("GetDoxmDevOwnerId faild = [%d][%s]", ret, ma_ocf_error_to_string(ret)); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } - g_mutex_lock(&iotivity_mutex); - ret = OCRemoveSubOwner(g_client, owned_dev, &uuid_mowner, _remove_mo_cb); - g_mutex_unlock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); + ret = OCRemoveSubOwner(g_client, owned_dev, &uuid_mowner, _remove_subowner_cb); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret ) { MA_LOGE( "OCRemoveSubOwner: ret = %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S); if (OC_STACK_OK != ret) { MA_LOGE( "OCRemoveSubOwner Timeout = %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } MA_LOGI("Remove Multiple Ownership Done"); @@ -1820,26 +1798,26 @@ static void _unpair_func(ma_req_cb_s *con) MA_LOGI(" Removing CRED for remote device at local SVR DB"); - g_mutex_lock(&iotivity_mutex); - ret = OCRemoveDeviceWithUuid((void*) g_client, CALLBACK_TIMEOUT_5S, owned_uuid, - _remove_remove_cred_local_cb ); - g_mutex_unlock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); + ret = OCRemoveDeviceWithUuid((void*) g_client, CALLBACK_TIMEOUT_5S, owned_uuid, + _remove_remove_device_cb ); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret) { MA_LOGD( "OCRemoveDeviceWithUuid API error = %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } ret = _wait_cb_ret(CALLBACK_TIMEOUT_5S); if (OC_STACK_OK != ret) { MA_LOGD( "OCRemoveDeviceWithUuid Timeout = %d (%s)", ret, ma_ocf_error_to_string(ret)); - goto PVUNPAIR_ERROR; + goto PV_UNPAIR_END; } /* Disaply result result */ MA_LOGI(" Removing CRED info. at local SVR DB - Done"); -PVUNPAIR_ERROR: +PV_UNPAIR_END: /* Notify unpair result */ net_ma_emit_unpair_done(ma_dbus_get_object(), (int)ret); if (owner_uuid) @@ -1849,9 +1827,10 @@ PVUNPAIR_ERROR: _request_cleanup(con); } -static int _unpair(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2) +static int _makde_devices_unpair(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2) { ma_req_cb_s *con = NULL; + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (!con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -1880,6 +1859,7 @@ static int _unpair(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2) static int _disable(ma_service *service) { ma_req_cb_s *con = NULL; + ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); con = g_malloc0(sizeof(ma_req_cb_s)); if (!con) { MA_LOGE( "g_malloc0() Fail=%d", errno); @@ -1915,28 +1895,28 @@ static gpointer _worker_thread(gpointer data) _mot_func(con); break; case MA_DO_ACL_PROVISIONING: - _acl_func(con); + _acl_provisioning_func(con); break; case MA_DO_CRED_PROVISIONING: - _cred_func(con); + _cred_provisioning_func(con); break; case MA_DO_RESOURCES_PAIRWISE: - _pairwise_func(con); + _resources_pairwise_func(con); break; case MA_REMOVE_MULTIPLE_OWNED_DEVICE: - _remove_mo_func(con); + _remove_subowner_func(con); break; case MA_REMOVE_DEVICE_WITH_UUID_IN_SVR: - _remove_cred_local_func(con); + _remove_device_func(con); break; case MA_UNLINK_RESOURCES: - _unlink_func(con); + _unlink_resources_func(con); break; case MA_MAKE_PAIR: - _pair_func(con); + _make_devices_pair_func(con); break; case MA_MAKE_UNPAIR: - _unpair_func(con); + _make_devices_unpair_func(con); break; default: _request_cleanup(con); @@ -1957,7 +1937,17 @@ static int _init_provision_client(void) if (g_client) return ret; - g_mutex_init(&iotivity_mutex); + g_client = g_malloc0(sizeof(ma_subowner_s)); + if (!g_client) { + MA_LOGE( "memory allocation error = %d", errno); + return MA_ERROR_OUT_OF_MEMORY; + } + g_mutex_init(&g_client->iotivity_mutex); + g_client->thread = g_thread_try_new("worker", _worker_thread, g_client, NULL); + g_client->queue = g_async_queue_new(); + g_client->g_motdev_list = NULL; + g_client->g_mowned_list = NULL; + g_client->rnd_pin = NULL; snprintf(data_dir, MAX_FILE_PATH_LEN, "%s/network/%s", "/opt/usr/data", PRVN_DB_FILE_NAME); @@ -1965,9 +1955,9 @@ static int _init_provision_client(void) /* initialize persistent storage for SVR DB */ static OCPersistentStorage ps = { _fopen_prvn_mng, fread, fwrite, fclose, unlink }; - g_mutex_lock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); ret = OCRegisterPersistentStorageHandler(&ps); - g_mutex_unlock(&iotivity_mutex); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret ) { MA_LOGE( "OCRegisterPersistentStorageHandler error = %d", ret); return ret; @@ -1976,26 +1966,26 @@ static int _init_provision_client(void) ma_set_device_id_seed(); /* initialize OC stack and provisioning manager */ - g_mutex_lock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); ret = OCInit(NULL, 0, OC_CLIENT_SERVER); - g_mutex_unlock(&iotivity_mutex); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret ) { MA_LOGE( "OCInit() error = [%d][%s]", ret, ma_ocf_error_to_string(ret)); return ret; } /* Do Self-Ownership Transfer */ - g_mutex_lock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); ret = OCConfigSelfOwnership(); - g_mutex_unlock(&iotivity_mutex); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret ) { MA_LOGE( "OCConfigSelfOwnership() error = [%d][%s]", ret, ma_ocf_error_to_string(ret)); } - g_mutex_lock(&iotivity_mutex); + g_mutex_lock(&g_client->iotivity_mutex); ret = OCInitPM(data_dir); - g_mutex_unlock(&iotivity_mutex); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret ) { MA_LOGE( "OCInitPM() error = [%d][%s]", ret, ma_ocf_error_to_string(ret)); return ret; @@ -2003,17 +1993,6 @@ static int _init_provision_client(void) SetInputPinCB(_input_pin_cb); - g_client = g_malloc0(sizeof(ma_subowner_s)); - if (!g_client) { - MA_LOGE( "memory allocation error = %d", errno); - return MA_ERROR_OUT_OF_MEMORY; - } - g_client->thread = g_thread_try_new("worker", _worker_thread, g_client, NULL); - g_client->queue = g_async_queue_new(); - g_client->g_motdev_list = NULL; - g_client->g_mowned_list = NULL; - g_client->rnd_pin = NULL; - return ret; } @@ -2045,7 +2024,7 @@ int ma_request_disc_mot_enb_devs(ma_service *service, int timeout) ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); ma_check_null_ret_error("service", service, FALSE); - MA_LOGD("[IPC] Discovery MOT enabled devices"); + MA_LOGD("[IPC] Find MOT enabled devices"); /* If we are working now? */ if (g_atomic_int_get(&g_client->pending)) @@ -2066,7 +2045,7 @@ int ma_request_disc_owned_devs(ma_service *service, int timeout) ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); ma_check_null_ret_error("service", service, FALSE); - MA_LOGD("[IPC] Discovery Owned devices"); + MA_LOGD("[IPC] Find owned devices"); /* If we are working now? */ if (g_atomic_int_get(&g_client->pending)) @@ -2087,7 +2066,7 @@ int ma_request_mot(ma_service *service, gchar* uuid_str, gchar *pin) ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); ma_check_null_ret_error("service", service, FALSE); - MA_LOGD("[IPC] Mullti Ownership Transfer"); + MA_LOGD("[IPC] Do Mullti Ownership Transfer"); /* If we are working now? */ if (g_atomic_int_get(&g_client->pending)) @@ -2102,7 +2081,7 @@ int ma_request_mot(ma_service *service, gchar* uuid_str, gchar *pin) /* Set d2ds status 'pending' */ g_atomic_int_set(&g_client->pending, 1); - ret = _ma_mot(service, uuid_str, pin); + ret = _mot(service, uuid_str, pin); return ret; } @@ -2121,19 +2100,17 @@ int ma_request_prov_acl(ma_service *service, gchar *target, gchar *subject, if (g_atomic_int_get(&g_client->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); - return MA_ERROR_INVALID_PARAMETER; - } + ma_check_null_ret_error("target", target, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("subject", subject, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_uri", rsrc_uri, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_type", rsrc_type, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_interface", rsrc_interface, MA_ERROR_INVALID_PARAMETER); /* Set d2ds status 'pending' */ g_atomic_int_set(&g_client->pending, 1); - ret = _acl(service, target, subject, rsrc_uri, rsrc_type, rsrc_interface, permission); + ret = _acl_provisioning(service, target, subject, rsrc_uri, rsrc_type, rsrc_interface, + permission); return ret; } @@ -2145,7 +2122,7 @@ int ma_request_prov_cred(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2 ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); ma_check_null_ret_error("service", service, FALSE); - MA_LOGD("[IPC] Provisioning Credential"); + MA_LOGD("[IPC] Provisioning credential"); /* If we are working now? */ if (g_atomic_int_get(&g_client->pending)) @@ -2160,12 +2137,12 @@ int ma_request_prov_cred(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2 /* Set d2ds status 'pending' */ g_atomic_int_set(&g_client->pending, 1); - ret = _cred(service, uuid_dev1, uuid_dev2); + ret = _cred_provisioning(service, uuid_dev1, uuid_dev2); return ret; } -int ma_request_pairwise(ma_service *service, gchar *target_1, +int ma_request_rsrc_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, @@ -2177,32 +2154,27 @@ int ma_request_pairwise(ma_service *service, gchar *target_1, ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); ma_check_null_ret_error("service", service, FALSE); - MA_LOGD("[IPC] Link Pairwise"); + MA_LOGD("[IPC] Link both resources pairwise"); /* If we are working now? */ if (g_atomic_int_get(&g_client->pending)) return MA_ERROR_IN_PROGRESS; - 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; - } + ma_check_null_ret_error("target_1", target_1, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("subject_1", subject_1, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_uri_1", rsrc_uri_1, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_type_1", rsrc_type_1, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_interface_1", rsrc_interface_1, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("target_2", target_2, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("subject_2", subject_2, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_uri_2", rsrc_uri_2, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_type_2", rsrc_type_2, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_interface_2", rsrc_interface_2, MA_ERROR_INVALID_PARAMETER); /* Set d2ds status 'pending' */ g_atomic_int_set(&g_client->pending, 1); - ret = _pairwise(service, target_1, subject_1, rsrc_uri_1, + ret = _resources_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); @@ -2211,7 +2183,7 @@ int ma_request_pairwise(ma_service *service, gchar *target_1, } -int ma_request_unlink(ma_service *service, gchar *uuid_dev1, +int ma_request_unlink_rsrc(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2) { int ret = MA_ERROR_NONE; @@ -2219,7 +2191,7 @@ int ma_request_unlink(ma_service *service, gchar *uuid_dev1, ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); ma_check_null_ret_error("service", service, FALSE); - MA_LOGD("[IPC] Unlink devices"); + MA_LOGD("[IPC] Unlink both devices"); /* If we are working now? */ if (g_atomic_int_get(&g_client->pending)) @@ -2234,12 +2206,12 @@ int ma_request_unlink(ma_service *service, gchar *uuid_dev1, /* Set d2ds status 'pending' */ g_atomic_int_set(&g_client->pending, 1); - ret = _unlink(service, uuid_dev1, uuid_dev2); + ret = _unlink_resources(service, uuid_dev1, uuid_dev2); return ret; } -int ma_request_remove_mo(ma_service *service, gchar* uuid_str) +int ma_request_remove_subowner(ma_service *service, gchar* uuid_str) { int ret =MA_ERROR_NONE; @@ -2260,19 +2232,19 @@ int ma_request_remove_mo(ma_service *service, gchar* uuid_str) /* Set d2ds status 'pending' */ g_atomic_int_set(&g_client->pending, 1); - ret = _ma_remove_mo(service, uuid_str); + ret = _ma_remove_subowner(service, uuid_str); return ret; } -int ma_request_remove_cred_local(ma_service *service, gchar* uuid_str) +int ma_request_remove_device(ma_service *service, gchar* uuid_str) { int ret =MA_ERROR_NONE; ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); ma_check_null_ret_error("service", service, FALSE); - MA_LOGD("[IPC] Remove CRED for Owned Dev in my SVR DB"); + MA_LOGD("[IPC] Remove target CRED in local SVR"); /* If we are working now? */ if (g_atomic_int_get(&g_client->pending)) @@ -2286,7 +2258,7 @@ int ma_request_remove_cred_local(ma_service *service, gchar* uuid_str) /* Set d2ds status 'pending' */ g_atomic_int_set(&g_client->pending, 1); - ret = _ma_remove_cred_local(service, uuid_str); + ret = _remove_device(service, uuid_str); return ret; } @@ -2303,33 +2275,28 @@ int ma_request_pair(ma_service *service, gchar *pin, gchar *target_1, ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); ma_check_null_ret_error("service", service, FALSE); - MA_LOGD("[IPC] Pair both device"); + MA_LOGD("[IPC] Make both devices pair "); /* If we are working now? */ if (g_atomic_int_get(&g_client->pending)) return MA_ERROR_IN_PROGRESS; - 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); - 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; - } + ma_check_null_ret_error("pin", pin, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("target_1", target_1, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("subject_1", subject_1, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_uri_1", rsrc_uri_1, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_type_1", rsrc_type_1, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_interface_1", rsrc_interface_1, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("target_2", target_2, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("subject_2", subject_2, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_uri_2", rsrc_uri_2, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_type_2", rsrc_type_2, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("rsrc_interface_2", rsrc_interface_2, MA_ERROR_INVALID_PARAMETER); /* Set d2ds status 'pending' */ g_atomic_int_set(&g_client->pending, 1); - ret = _pair(service, pin, target_1, subject_1, rsrc_uri_1, + ret = _make_devices_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); @@ -2346,22 +2313,19 @@ int ma_request_unpair(ma_service *service, gchar *uuid_dev1, ma_check_null_ret_error("g_client", g_client, MA_ERROR_NO_DATA); ma_check_null_ret_error("service", service, FALSE); - MA_LOGD("[IPC] Unpair both devices"); + MA_LOGD("[IPC] Make both devices unpair"); /* If we are working now? */ if (g_atomic_int_get(&g_client->pending)) return MA_ERROR_IN_PROGRESS; - if (!uuid_dev1 || !uuid_dev2) { - MA_LOGE("uuid_dev1 = %s", uuid_dev1); - MA_LOGE("uuid_dev2 = %s", uuid_dev2); - return MA_ERROR_INVALID_PARAMETER; - } + ma_check_null_ret_error("uuid_dev1", uuid_dev1, MA_ERROR_INVALID_PARAMETER); + ma_check_null_ret_error("uuid_dev2", uuid_dev2, MA_ERROR_INVALID_PARAMETER); /* Set d2ds status 'pending' */ g_atomic_int_set(&g_client->pending, 1); - ret = _unpair(service, uuid_dev1, uuid_dev2); + ret = _makde_devices_unpair(service, uuid_dev1, uuid_dev2); return ret; } @@ -2391,28 +2355,33 @@ int ma_delete_mot_agent(ma_service *service) if (NULL == g_client) return MA_ERROR_NONE; + /* Wait until worker thread exits */ if (g_client->thread) { g_thread_join(g_client->thread); g_thread_unref(g_client->thread); g_client->thread = NULL; } - g_mutex_lock(&iotivity_mutex); + /* Stop OCF threads */ + g_mutex_lock(&g_client->iotivity_mutex); ret = OCStop(); - g_mutex_unlock(&iotivity_mutex); + g_mutex_unlock(&g_client->iotivity_mutex); if (OC_STACK_OK != ret) { MA_LOGE( "OCStack stop error"); } - g_mutex_lock(&iotivity_mutex); + /* Stop provisioning */ + g_mutex_lock(&g_client->iotivity_mutex); OCTerminatePM(); - g_mutex_unlock(&iotivity_mutex); + g_mutex_unlock(&g_client->iotivity_mutex); - g_mutex_clear(&iotivity_mutex); + g_mutex_clear(&g_client->iotivity_mutex); + /* Remove found devices list */ _remove_owned_client(); _remove_mot_client(); + /* Remove random PIN number */ if (g_client->rnd_pin) { g_free(g_client->rnd_pin); g_client->rnd_pin = NULL; @@ -2420,5 +2389,7 @@ int ma_delete_mot_agent(ma_service *service) g_free(g_client); g_client = NULL; + + return ret; } diff --git a/src/mot-agent/ma-subowner.h b/src/mot-agent/ma-subowner.h index 454fa7e..8399fba 100644 --- a/src/mot-agent/ma-subowner.h +++ b/src/mot-agent/ma-subowner.h @@ -59,15 +59,15 @@ int ma_request_mot(ma_service *service, gchar* uuid, gchar *pin); 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_prov_cred(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2); -int ma_request_pairwise(ma_service *service, gchar *target_1, gchar *subject_1, +int ma_request_rsrc_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 ma_request_unlink(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2); -int ma_request_remove_mo(ma_service *service, gchar* uuid_str); -int ma_request_remove_cred_local(ma_service *service, gchar* uuid_str); +int ma_request_unlink_rsrc(ma_service *service, gchar *uuid_dev1, gchar *uuid_dev2); +int ma_request_remove_subowner(ma_service *service, gchar* uuid_str); +int ma_request_remove_device(ma_service *service, gchar* uuid_str); 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, -- 2.7.4