demo: Make 'Invite' and 'Eject' scenario
authorsaerome.kim <saerome.kim@samsung.com>
Thu, 18 Jan 2018 05:24:58 +0000 (14:24 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Mon, 2 Jul 2018 10:38:44 +0000 (19:38 +0900)
mot-agent: reduce time during unparing
capi: add 'Invite' and "Eject' method

Signed-off-by: saerome.kim <saerome.kim@samsung.com>
capi/src/companion_gdbus.xml [changed mode: 0755->0644]
src/companion-manager/include/comp_gdbus_group.h [changed mode: 0755->0644]
src/companion-manager/src/comp_gdbus.c [changed mode: 0755->0644]
src/companion-manager/src/comp_gdbus_group.c [changed mode: 0755->0644]
src/companion-manager/src/companion_gdbus.xml [changed mode: 0755->0644]
src/mot-agent/ma-log.h
src/mot-agent/ma-subowner.c

old mode 100755 (executable)
new mode 100644 (file)
index e50a34e..d50e8dc
                        <arg type="i" name="timeout" direction="in" />
                        <arg type="i" name="result" direction="out" />
                </method>
+               <method name="Invite">
+                       <arg type="s" name="uuid" direction="in"/>
+                       <arg type="s" name="pin" direction="in" />
+                       <arg type="i" name="result" direction="out"/>
+               </method>
+               <method name="Eject">
+                       <arg type="s" name="uuid" direction="in"/>
+                       <arg type="i" name="result" direction="out" />
+               </method>
                <method name="DeviceInvite">
                        <arg type="s" name="uuid" direction="in" />
                        <arg type="s" name="pin" direction="in" />
old mode 100755 (executable)
new mode 100644 (file)
index 47e1470..475dc83
@@ -34,6 +34,12 @@ gboolean group_device_invite(Group *group, GDBusMethodInvocation *invocation,
 gboolean group_device_eject(Group *group, GDBusMethodInvocation *invocation,
        gchar *uuid_dev1, gchar *uuid_dev2, gpointer user_data);
 
+gboolean group_invite(Group *group, GDBusMethodInvocation *invocation,
+       gchar *uuid, gchar *pin, gpointer user_data);
+
+gboolean group_eject(Group *group, GDBusMethodInvocation *invocation,
+       gchar *uuid, gpointer user_data);
+
 gboolean group_get_remote_device(Group *group, GDBusMethodInvocation *invocation,
        gpointer user_data);
 
old mode 100755 (executable)
new mode 100644 (file)
index e760fb0..7fa8673
@@ -54,6 +54,16 @@ static bool __group_init(GDBusConnection *connection)
                G_CALLBACK(group_device_find),
                NULL);
 
+       g_signal_connect(group_skeleton,
+               "handle-invite",
+               G_CALLBACK(group_invite),
+               NULL);
+
+       g_signal_connect(group_skeleton,
+               "handle-eject",
+               G_CALLBACK(group_eject),
+               NULL);
+
        g_signal_connect(group_skeleton,
                "handle-device-invite",
                G_CALLBACK(group_device_invite),
old mode 100755 (executable)
new mode 100644 (file)
index 82371ad..5fe79c3
@@ -118,6 +118,48 @@ gboolean group_device_eject(Group *group, GDBusMethodInvocation *invocation,
        return TRUE;
 }
 
+#include "comp_context.h"
+
+#define FULL_PERMISSION 31
+
+gboolean group_invite(Group *group, GDBusMethodInvocation *invocation,
+       gchar *uuid, gchar *pin, gpointer user_data)
+{
+       gint result = 0;
+
+       comp_context_t *comp_ctx = comp_context_get_context();
+       if (!comp_ctx) {
+               LOG_ERR("ctx is null");
+               return FALSE;
+       }
+
+       result = comp_group_invite(comp_ctx->device_uuid, uuid, pin,
+               "/comp/data/1", " core.comp.data", "oic.if.baseline", FULL_PERMISSION,
+               "/comp/data/1", " core.comp.data", "oic.if.baseline", FULL_PERMISSION);
+
+       group_complete_invite(group, invocation, result);
+
+       return TRUE;
+}
+
+gboolean group_eject(Group *group, GDBusMethodInvocation *invocation,
+       gchar *uuid, gpointer user_data)
+{
+       gint result = 0;
+
+       comp_context_t *comp_ctx = comp_context_get_context();
+       if (!comp_ctx) {
+               LOG_ERR("ctx is null");
+               return FALSE;
+       }
+
+       result = comp_group_dismiss(comp_ctx->device_uuid, uuid);
+
+       group_complete_eject(group, invocation, result);
+
+       return TRUE;
+}
+
 gboolean group_get_remote_device(Group *group, GDBusMethodInvocation *invocation,
        gpointer user_data)
 {
old mode 100755 (executable)
new mode 100644 (file)
index fe61dad..9ac7cf4
                        <arg type="i" name="timeout" direction="in" />
                        <arg type="i" name="result" direction="out" />
                </method>
+               <method name="Invite">
+                       <arg type="s" name="uuid" direction="in"/>
+                       <arg type="s" name="pin" direction="in" />
+                       <arg type="i" name="result" direction="out"/>
+               </method>
+               <method name="Eject">
+                       <arg type="s" name="uuid" direction="in"/>
+                       <arg type="i" name="result" direction="out" />
+               </method>
                <method name="DeviceInvite">
                        <arg type="s" name="uuid_dev1" direction="in"/>
                        <arg type="s" name="uuid_dev2" direction="in"/>
index 3d4c707184a3c4a2c69c7e51842eece98af0fa08..0b4ec469451fa3544998379674a6e903f177fc28 100644 (file)
 #undef LOG_TAG\r
 #define LOG_TAG "MOT_AGENT"\r
 \r
+#define COLOR_RED "\033[0;31m"\r
+#define COLOR_GREEN "\033[0;32m"\r
+#define COLOR_BROWN "\033[0;33m"\r
+#define COLOR_BLUE "\033[0;34m"\r
+#define COLOR_PURPLE "\033[0;35m"\r
+#define COLOR_CYAN "\033[0;36m"\r
+#define COLOR_LIGHTBLUE "\033[0;37m"\r
+#define COLOR_END "\033[0;m"\r
+\r
 #define MA_LOGV(format, args...) LOGV(format, ##args)\r
-#define MA_LOGD(format, args...) LOGD(format, ##args)\r
-#define MA_LOGI(format, args...) LOGI(format, ##args)\r
-#define MA_LOGW(format, args...) LOGW(format, ##args)\r
-#define MA_LOGE(format, args...) LOGE(format, ##args)\r
+#define MA_LOGD(format, args...) LOGD(COLOR_LIGHTBLUE" "format COLOR_END, ##args)\r
+#define MA_LOGI(format, args...) LOGI(COLOR_GREEN" "format COLOR_END, ##args)\r
+#define MA_LOGW(format, args...) LOGW(COLOR_CYAN" "format COLOR_END, ##args)\r
+#define MA_LOGE(format, args...) LOGE(COLOR_RED" "format COLOR_END, ##args)\r
 #define MA_LOGF(format, args...) LOGF(format, ##args)\r
 \r
 #define __MA_LOG_FUNC_ENTER__ LOGD("Enter")\r
index e55fa6dcdee65314f70ce2b2abc6c8099656756e..9f2764e4ba37d5d75c6f88be8b0fca75221db947 100644 (file)
@@ -63,6 +63,7 @@
 #define CALLBACK_TIMEOUT_5S 5 * 1000 /**< 5sec = 5 * 1000 * 1ms */
 
 #define TIMEOUT_USED
+#define DEBUG_UUID
 
 /* '_' for separaing from the same constant variable in srmresourcestrings.c  */
 static const char* SVR_DB_FILE_NAME = "oic_svr_db_ma.dat";
@@ -155,7 +156,6 @@ const char* _error_to_string(OCStackResult err)
        CASE_TO_STR(OC_STACK_INVALID_PARAM)
        CASE_TO_STR(OC_STACK_INVALID_OBSERVE_PARAM)
 
-
        CASE_TO_STR(OC_STACK_NO_MEMORY)
        CASE_TO_STR(OC_STACK_COMM_ERROR)
        CASE_TO_STR(OC_STACK_TIMEOUT)
@@ -265,43 +265,17 @@ OicUuid_t* _convert_uuid(gchar *device_id)
        return uuid;
 }
 
-static void _print_no_uuid(int idx, const OicUuid_t* uuid)
+char g_uuid_str[256] = {0};
+static char * _get_readable_uuid(const OicUuid_t* uuid)
 {
-       char uuid_string[256] = {0};
-       snprintf(uuid_string, sizeof(uuid_string),
-               "[%d] %02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
-               idx,
-               (*uuid).id[0], (*uuid).id[1], (*uuid).id[2], (*uuid).id[3],
-               (*uuid).id[4], (*uuid).id[5],  (*uuid).id[6], (*uuid).id[7],
-               (*uuid).id[8], (*uuid).id[9],  (*uuid).id[10], (*uuid).id[11],
-               (*uuid).id[12], (*uuid).id[13], (*uuid).id[14], (*uuid).id[15]);
-       MA_LOGI("%s", uuid_string);
-}
-#ifdef DEBUG_UUID
-static void _print_uuid(const OicUuid_t* uuid)
-{
-       char uuid_string[256] = {0};
-       snprintf(uuid_string, sizeof(uuid_string),
+       memset(g_uuid_str, 0, sizeof(g_uuid_str));
+       snprintf(g_uuid_str, sizeof(g_uuid_str),
                "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
                (*uuid).id[0], (*uuid).id[1], (*uuid).id[2], (*uuid).id[3],
                (*uuid).id[4], (*uuid).id[5],  (*uuid).id[6], (*uuid).id[7],
                (*uuid).id[8], (*uuid).id[9],  (*uuid).id[10], (*uuid).id[11],
                (*uuid).id[12], (*uuid).id[13], (*uuid).id[14], (*uuid).id[15]);
-       MA_LOGI("%s", uuid_string);
-}
-#endif
-
-static void _print_uuid_res(const OicUuid_t* uuid, int res)
-{
-       char uuid_string[256] = {0};
-       snprintf(uuid_string, sizeof(uuid_string),
-               "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x : [%d] [%s]",
-               (*uuid).id[0], (*uuid).id[1], (*uuid).id[2], (*uuid).id[3],
-               (*uuid).id[4], (*uuid).id[5],  (*uuid).id[6], (*uuid).id[7],
-               (*uuid).id[8], (*uuid).id[9],  (*uuid).id[10], (*uuid).id[11],
-               (*uuid).id[12], (*uuid).id[13], (*uuid).id[14], (*uuid).id[15],
-               res, _error_to_string(res));
-       MA_LOGI("%s", uuid_string);
+       return g_uuid_str;
 }
 
 #ifdef TEST
@@ -337,16 +311,18 @@ static OCProvisionDev_t* _get_dev_by_uuid(const OCProvisionDev_t* dev_lst,
                return NULL;
        }
 
-       OCProvisionDev_t* lst = (OCProvisionDev_t*)dev_lst;
 #ifdef DEBUG_UUID
-       _print_uuid(&lst->doxm->deviceID);
+               MA_LOGD("[T] : %s", _get_readable_uuid(uuid));
 #endif
+       OCProvisionDev_t* lst = (OCProvisionDev_t*)dev_lst;
        while (lst) {
-               if (!memcmp((const void *)&lst->doxm->deviceID, (const void *)uuid, sizeof(OicUuid_t)))
-                       return lst;
 #ifdef DEBUG_UUID
-               _print_uuid(uuid);
+               MA_LOGD("[C] : %s", _get_readable_uuid(&lst->doxm->deviceID));
 #endif
+               if (!memcmp((const void *)&lst->doxm->deviceID, (const void *)uuid, sizeof(OicUuid_t))) {
+                       MA_LOGD("[M] : %s", _get_readable_uuid(&lst->doxm->deviceID));
+                       return lst;
+               }
                lst = lst->next;
        }
 
@@ -363,7 +339,7 @@ static int _print_dev_list(const OCProvisionDev_t* dev_lst)
        OCProvisionDev_t* lst = (OCProvisionDev_t*) dev_lst;
        int lst_cnt = 0;
        for ( ; lst; ) {
-               _print_no_uuid(++lst_cnt, (const OicUuid_t*) &lst->doxm->deviceID);
+               MA_LOGI("[%d] %s", ++lst_cnt, _get_readable_uuid((const OicUuid_t*) &lst->doxm->deviceID));
                lst = lst->next;
        }
 
@@ -379,7 +355,9 @@ static int _print_result_list(const OCProvisionResult_t* rslt_lst, const int rsl
 
        int lst_cnt = 0;
        for ( ; rslt_cnt>lst_cnt; ++lst_cnt) {
-               _print_uuid_res((const OicUuid_t*) &rslt_lst[lst_cnt].deviceId, rslt_lst[lst_cnt].res);
+               MA_LOGD("%s : [%d][%s]",
+                       _get_readable_uuid((const OicUuid_t*) &rslt_lst[lst_cnt].deviceId),
+                       rslt_lst[lst_cnt].res, _error_to_string(rslt_lst[lst_cnt].res));
        }
 
        return lst_cnt;
@@ -525,7 +503,6 @@ static int _init_provision_client(void)
        ret = OCConfigSelfOwnership();
        if (OC_STACK_OK != ret ) {
                MA_LOGE( "OCConfigSelfOwnership() error = [%d][%s]", ret, _error_to_string(ret));
-               //return ret;
        }
 
        ret = OCInitPM(data_dir);
@@ -670,24 +647,13 @@ static void __notify_found_devs(void  *data)
        }
 
        while (iter != NULL) {
-               char uuid_string[256] = {0};
-
                OicUuid_t *uuid = &iter->doxm->deviceID;
                ma_check_null_ret("uuid", uuid);
 
-               snprintf(uuid_string, sizeof(uuid_string),
-                       "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
-                       (*uuid).id[0], (*uuid).id[1], (*uuid).id[2], (*uuid).id[3],
-                       (*uuid).id[4], (*uuid).id[5],  (*uuid).id[6], (*uuid).id[7],
-                       (*uuid).id[8], (*uuid).id[9],  (*uuid).id[10], (*uuid).id[11],
-                       (*uuid).id[12], (*uuid).id[13], (*uuid).id[14], (*uuid).id[15]);
-
-               MA_LOGI("uuid %s", uuid_string);
-
                g_variant_builder_open(&builder, G_VARIANT_TYPE_VARDICT);
 
                g_variant_builder_add(&builder, "{sv}", "deviceId",
-                               g_variant_new_string(uuid_string));
+                               g_variant_new_string(_get_readable_uuid(uuid)));
                g_variant_builder_add(&builder, "{sv}", "adapter",
                                g_variant_new_uint32(iter->endpoint.adapter));
                g_variant_builder_add(&builder, "{sv}", "flags",
@@ -703,8 +669,6 @@ static void __notify_found_devs(void  *data)
                g_variant_builder_add(&builder, "{sv}", "remoteId",
                                g_variant_new_string(iter->endpoint.remoteId));
 
-               MA_LOGI("%s", iter->endpoint.remoteId);
-
                g_variant_builder_add(&builder, "{sv}", "connType",
                                g_variant_new_uint32(iter->connType));
                g_variant_builder_add(&builder, "{sv}", "securePort",
@@ -1072,7 +1036,7 @@ static gpointer _remove_mo_func(gpointer data)
        }
 
        uuid_target = _convert_uuid(con->uuid_target_str);
-       src_dev = _get_dev_by_uuid(g_client->g_mowned_list, uuid_target);
+       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 MOT_ENDED;
@@ -1368,8 +1332,12 @@ static OicSecAcl_t* _create_target_acl(const OicUuid_t* target, const OicUuid_t*
                return NULL;
        }
 #ifdef DEBUG_UUID
-       _print_uuid(target);
-       _print_uuid(subject);
+       MA_LOGE("target = %s", _get_readable_uuid(target));
+       MA_LOGE("subject = %s", _get_readable_uuid(subject));
+       MA_LOGE("rsrc_uri = %s", rsrc_uri);
+       MA_LOGE("rsrc_type = %s", rsrc_type);
+       MA_LOGE("rsrc_interface = %s", rsrc_interface);
+       MA_LOGE("permission = %d", permission);
 #endif
        acl = (OicSecAcl_t*) OICCalloc(1, sizeof(OicSecAcl_t));
        if (!acl) {
@@ -1477,16 +1445,16 @@ static gpointer _provisioning_acl_func(gpointer data)
        }
 
        uuid1 = _convert_uuid(con->uuid_target_str);
-       target_dev = _get_dev_by_uuid(g_client->g_mowned_list, uuid1);
+       target_dev = _get_dev_by_uuid(g_client->g_motdev_list, uuid1);
        if (!target_dev) {
-               MA_LOGE("We can't find target in MOWNED dev list");
+               MA_LOGE("We can't find target in MOT enabled dev list");
                goto PVACL_ERROR;
        }
 
        uuid2 = _convert_uuid(con->uuid_subject_str);
-       subject_dev = _get_dev_by_uuid(g_client->g_mowned_list, uuid2);
+       subject_dev = _get_dev_by_uuid(g_client->g_motdev_list, uuid2);
        if (!subject_dev) {
-               MA_LOGE("We can't find subject in MOWNED dev list");
+               MA_LOGE("We can't find subject in MOT enabled dev list");
                goto PVACL_ERROR;
        }
 
@@ -1595,14 +1563,14 @@ static gpointer _cred_provisioning_func(gpointer data)
        }
 
        uuid1 = _convert_uuid(con->uuid_dev1);
-       dev1 = _get_dev_by_uuid(g_client->g_mowned_list, uuid1);
+       dev1 = _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;
        }
 
        uuid2 = _convert_uuid(con->uuid_dev2);
-       dev2 = _get_dev_by_uuid(g_client->g_mowned_list, uuid2);
+       dev2 = _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;
@@ -1735,14 +1703,14 @@ static gpointer _provisioning_pairwise_func(gpointer data)
        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 MOWNED dev list");
+               MA_LOGE("We can't find target in MOT enabled dev list");
                goto PVPAIRWIE_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 MOWNED dev list");
+               MA_LOGE("We can't find target in MOT enabled dev list");
                goto PVPAIRWIE_ERROR;
        }
 
@@ -1913,17 +1881,10 @@ static gpointer _unlink_provisioning_func(gpointer data)
                goto PVUNLINKPAIRWISE_ERROR;
        }
 
-       /* To do ACL provisioning only one */
-       dev1->next = NULL;
-
-       /* To do ACL provisioning only one */
-       dev2->next = NULL;
-
        g_client->g_doneCB = false;
 
        MA_LOGI("Provisioning Selected Pairwise Devices..");
-       ret = OCUnlinkDevices((void*) g_client,dev1,dev2,_unlink_cb );
-
+       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));
                goto PVUNLINKPAIRWISE_ERROR;