Remove address information 91/185591/1
authorJihoon Jung <jh8801.jung@samsung.com>
Wed, 1 Aug 2018 04:02:56 +0000 (13:02 +0900)
committerJihoon Jung <jh8801.jung@samsung.com>
Wed, 1 Aug 2018 04:03:16 +0000 (13:03 +0900)
Signed-off-by: Jihoon Jung <jh8801.jung@samsung.com>
Change-Id: I32073abe940824e62d13a4d0cb49c2b7b6d4f413

14 files changed:
src/mdg-manager/include/mdgd_group.h
src/mdg-manager/include/mdgd_iot.h
src/mdg-manager/include/mdgd_typedef.h
src/mdg-manager/include/mdgd_util.h
src/mdg-manager/src/mdg_gdbus.xml
src/mdg-manager/src/mdgd_db.c
src/mdg-manager/src/mdgd_gdbus.c
src/mdg-manager/src/mdgd_group.c
src/mdg-manager/src/mdgd_iot.cpp
src/mdg-manager/src/mdgd_iot_client.cpp
src/mdg-manager/src/mdgd_iot_server.cpp
src/mdg-manager/src/mdgd_mot_agent.c
src/mdg-manager/src/mdgd_util.c
src/mot-agent/ma-subowner.c

index 2854dd8107c06f69e3a64e6d0b498e651a72e40c..e93ec093955d0e39f01c72d26a63c4dec131c06f 100755 (executable)
@@ -37,14 +37,12 @@ int mdgd_group_eject_device(char *sender, const char *group_name, const char *uu
 
 int mdgd_group_regist_channel(char *sender, char *channel_id);
 int mdgd_group_unregist_channel(char *sender, char *channel_id);
-int mdgd_group_send_data(char *sender, char *uuid, char *addr, int port, char *channel_id,
+int mdgd_group_send_data(char *sender, char *uuid, char *channel_id,
                                                 unsigned char *data, int len);
 
 /* Group Request to remote */
-int mdgd_group_request_create_group(char *sender, char *uuid, char *addr,int port, char *group_name);
-int mdgd_group_request_invite(char *sender, char *uuid, char *addr, int port, char *group_name, char *target_uuid, char *PIN);
-int mdgd_group_request_eject(char *sender, char *uuid, char *addr, int port, char *group_name, char *target_uuid);
-int mdgd_group_request_channel_list(char *sender, char *uuid, char *addr, int port);
+int mdgd_group_request(mdgd_request_type_e type, char *sender, char *uuid,
+       char *arg1, char *arg2, char *arg3, void *user_data);
 
 /* send signal to client */
 int mdgd_group_notify_event(char *sender, mdgd_event_type_e type, int result, void *user_data);
index bce17b4913488ba3bc937d265e7f3b5310909804..ec356e2e338f1537e469fff4dc3f418236b86f58 100755 (executable)
@@ -38,8 +38,7 @@ extern "C"
 int mdgd_iot_initialize();
 int mdgd_iot_add_resource(mdgd_resource_type_e resource_type, const char *uri);
 int mdgd_iot_discovery_resource(mdgd_resource_type_e resource_type, void *user_data);
-int mdgd_iot_send_data(mdgd_resource_type_e resource_type, mdgd_command_t *cmd);
-int mdgd_iot_get_device_description(mdgd_command_t *cmd);
+int mdgd_iot_get_device_description(mdgd_command_t *cmd, char *host_addr, int conn_type);
 int mdgd_iot_deinitialize();
 
 #ifdef __cplusplus
index 317d07816173a1d5c092d26e7df2857f6f3d0362..b9fbc8a691c264660fd01624637258193fce68db 100755 (executable)
@@ -107,7 +107,6 @@ typedef enum {
 
 typedef struct {
        char *device_id; /**< Device ID */
-       char *host_addr; /**< IP Address of remote device */
        char *group_name; /**< Group name */
        mdgd_group_type_e type; /**< Group type */
        char *sender;
@@ -115,10 +114,6 @@ typedef struct {
 
 typedef struct {
        char *device_id; /**< Device Id */
-       int port; /**< Remtoe device is listening this port */
-       char *addr; /**< IP Address of remote device */
-       unsigned int conn_type; /**< Connection type */
-       int secure_port; /**< Secured port once TLS handhaking complete */
        char *model_name; /**< Device ID */
        char *device_name; /**< Host address */
        char *platform_ver; /**< Group name */
@@ -128,6 +123,11 @@ typedef struct {
        mdgd_device_type_e type; /**< Group type */
 } mdgd_device_t;
 
+typedef struct {
+       char *device_id; /**< Device Id */
+       char *file_path;
+} mdgd_receive_file_t;
+
 typedef struct {
        char *device_id;
        char *channel_id;
@@ -158,17 +158,14 @@ typedef struct {
 } mdgd_conn_destroy_data;
 
 typedef struct {
-       int tid; /**< Timer ID */
        int resource_type; /**< OCF resource type */
-       mdgd_request_type_e command; /**< Comments set for group management */
+       mdgd_request_type_e type; /**< Comments set for group management */
        gchar *uuid; /**< Device UUID */
-       gchar *host; /**< Host address + Port */
        gchar *addr; /**< Host address + Port */
        gchar *sender; /**< Dbus Sender */
        gchar *arg1; /**< Arguement #1 */
        gchar *arg2; /**< Arguement #2 */
        gchar *arg3; /**< Arguement #3 */
-       gchar *arg4; /**< Arguement #4 */
 #ifdef SUPPORT_BASE64_ENCODING
        unsigned char *data;
        int data_len;
index 00c2d1d99935720ba70372d347d8f00f4e400efd..29d87b38d2bdc675758070853a117e03b1e6032e 100755 (executable)
@@ -32,6 +32,7 @@ int mdgd_uuid_to_str(const OicUuid_t* uuid, char** strUuid);
 void mdgd_clean_user_data(void *user_data);
 GVariant *mdgd_create_variant_group(mdgd_group_t *group);
 GVariant *mdgd_create_variant_device(mdgd_device_t *device);
+GVariant *mdgd_create_variant_receive_file(mdgd_receive_file_t *receive_file);
 GVariant *mdgd_create_variant_channel(mdgd_channel_t *channel);
 GVariant *mdgd_create_variant_data(mdgd_data_t *data);
 GVariant *mdgd_create_variant_device_list(char *group_name);
index 47a5caa50603efb5448b572b5d2f50ceff2d4a5b..a616ed1b99d9f4591aae5108de3fc24952dcdc22 100755 (executable)
                </method>
                <method name="SendData">
                        <arg type="s" name="uuid" direction="in" />
-                       <arg type="s" name="addr" direction="in"/>
-                       <arg type="i" name="port" direction="in"/>
                        <arg type="s" name="channel_id" direction="in"/>
                        <arg type="(iay)" name="data" direction="in"/>
                        <arg type="i" name="result" direction="out" />
                </method>
                <method name="SendFile">
                        <arg type="s" name="uuid" direction="in" />
-                       <arg type="s" name="addr" direction="in"/>
-                       <arg type="i" name="port" direction="in"/>
                        <arg type="s" name="file_path" direction="in"/>
                        <arg type="i" name="result" direction="out" />
                </method>
                <method name="RequestCreateGroup">
                        <arg type="s" name="uuid" direction="in" />
-                       <arg type="s" name="addr" direction="in"/>
-                       <arg type="i" name="port" direction="in"/>
                        <arg type="s" name="group_name" direction="in" />
                        <arg type="i" name="result" direction="out" />
                </method>
                <method name="RequestInvite">
                        <arg type="s" name="uuid" direction="in" />
-                       <arg type="s" name="addr" direction="in"/>
-                       <arg type="i" name="port" direction="in"/>
                        <arg type="s" name="group_name" direction="in" />
                        <arg type="s" name="target_uuid" direction="in" />
                        <arg type="s" name="pin" direction="in" />
                </method>
                <method name="RequestEject">
                        <arg type="s" name="uuid" direction="in" />
-                       <arg type="s" name="addr" direction="in"/>
-                       <arg type="i" name="port" direction="in"/>
                        <arg type="s" name="group_name" direction="in" />
                        <arg type="s" name="target_uuid" direction="in" />
                        <arg type="i" name="result" direction="out" />
                </method>
                <method name="RequestChannelList">
                        <arg type="s" name="uuid" direction="in" />
-                       <arg type="s" name="addr" direction="in"/>
-                       <arg type="i" name="port" direction="in"/>
                        <arg type="i" name="result" direction="out" />
                </method>
                <!-- Signal (D-Bus) definitions -->
index 3075a36fd9a8f570b9f7ea60b24294973b560045..22c4300df5e9a365d33cf8670ac32c3bd7be979b 100755 (executable)
@@ -112,7 +112,7 @@ static int __create_device_table()
                return -1;
        }
 
-       sql = sqlite3_mprintf("CREATE TABLE %s(id INTEGER PRIMARY KEY, group_name TEXT, device_id TEXT, port INTEGER, addr TEXT, conn_type INTEGER, secure_port INTEGER, model_name TEXT, device_name TEXT, platform_ver TEXT, vendor_id TEXT, profile TEXT, is_invited INTEGER, type INTEGER);",
+       sql = sqlite3_mprintf("CREATE TABLE %s(id INTEGER PRIMARY KEY, group_name TEXT, device_id TEXT, model_name TEXT, device_name TEXT, platform_ver TEXT, vendor_id TEXT, profile TEXT, is_invited INTEGER, type INTEGER);",
                MDGD_DB_DEVICE_TABLE);
 
        if (sql != NULL) {
@@ -306,14 +306,10 @@ int mdgd_db_device_insert(const char *group_name, mdgd_device_t *device)
                return -1;
        }
 
-       sql = sqlite3_mprintf("INSERT INTO %s (group_name, device_id, port, addr, conn_type, secure_port, model_name, device_name, platform_ver, vendor_id, profile, is_invited, type) values(%Q, %Q, %d, %Q, %d, %d, %Q, %Q, %Q, %Q, %Q, %d, %d);",
+       sql = sqlite3_mprintf("INSERT INTO %s (group_name, device_id, model_name, device_name, platform_ver, vendor_id, profile, is_invited, type) values(%Q, %Q, %Q, %Q, %Q, %Q, %Q, %d, %d);",
                MDGD_DB_DEVICE_TABLE,
                group_name,
                device->device_id,
-               device->port,
-               device->addr,
-               device->conn_type,
-               device->secure_port,
                device->model_name,
                device->device_name,
                device->platform_ver,
@@ -637,17 +633,13 @@ void mdgd_db_get_devices_in_group(char *group_name, mdgd_device_t **devices, int
                        while (sqlite3_step(stmt) == SQLITE_ROW) {
                                devices[i] = g_new0(mdgd_device_t, 1);
                                devices[i]->device_id = g_strdup(sqlite3_column_text(stmt, 2));
-                               devices[i]->port = sqlite3_column_int(stmt, 3);
-                               devices[i]->addr = g_strdup(sqlite3_column_text(stmt, 4));
-                               devices[i]->conn_type = sqlite3_column_int(stmt, 5);
-                               devices[i]->secure_port = sqlite3_column_int(stmt, 6);
-                               devices[i]->model_name = g_strdup(sqlite3_column_text(stmt, 7));
-                               devices[i]->device_name = g_strdup(sqlite3_column_text(stmt, 8));
-                               devices[i]->platform_ver = g_strdup(sqlite3_column_text(stmt, 9));
-                               devices[i]->vendor_id = g_strdup(sqlite3_column_text(stmt, 10));
-                               devices[i]->profile = g_strdup(sqlite3_column_text(stmt, 11));
-                               devices[i]->is_invited = sqlite3_column_int(stmt,12);
-                               devices[i]->type = sqlite3_column_int(stmt, 13);
+                               devices[i]->model_name = g_strdup(sqlite3_column_text(stmt, 3));
+                               devices[i]->device_name = g_strdup(sqlite3_column_text(stmt, 4));
+                               devices[i]->platform_ver = g_strdup(sqlite3_column_text(stmt, 5));
+                               devices[i]->vendor_id = g_strdup(sqlite3_column_text(stmt, 6));
+                               devices[i]->profile = g_strdup(sqlite3_column_text(stmt, 7));
+                               devices[i]->is_invited = sqlite3_column_int(stmt, 8);
+                               devices[i]->type = sqlite3_column_int(stmt, 9);
 
                                i++;
                        }
index eaae23e52952b12cfeebad121dd5dab0152d5f3f..1232d9a06d8d358e09a5decbbde8e1c9eb16a33c 100755 (executable)
@@ -204,8 +204,7 @@ gboolean group_unregist_channel(Group *group, GDBusMethodInvocation *invocation,
 }
 
 gboolean group_send_data(Group *group, GDBusMethodInvocation *invocation,
-       gchar *uuid, gchar *addr, int port, gchar *channel_id, GVariant *params,
-       gpointer user_data)
+       gchar *uuid, gchar *channel_id, GVariant *params, gpointer user_data)
 {
        int ret = MDGD_ERROR_NONE;
        const gchar *sender = g_dbus_method_invocation_get_sender(invocation);
@@ -231,7 +230,7 @@ gboolean group_send_data(Group *group, GDBusMethodInvocation *invocation,
 
        g_variant_iter_free(iter);
 
-       ret = mdgd_group_send_data(sender, uuid, addr, port, channel_id, data, len);
+       ret = mdgd_group_send_data(sender, uuid, channel_id, data, len);
 
        group_complete_send_data(group, invocation, ret);
 
@@ -243,14 +242,16 @@ gboolean group_send_data(Group *group, GDBusMethodInvocation *invocation,
 }
 
 gboolean group_send_file(Group *group, GDBusMethodInvocation *invocation,
-       gchar *uuid, gchar *addr, int port, gchar *file_path, gpointer user_data)
+       gchar *uuid, gchar *file_path, gpointer user_data)
 {
        int ret = MDGD_ERROR_NONE;
        const gchar *sender = g_dbus_method_invocation_get_sender(invocation);
 
        LOG_BEGIN();
 
-       ret = mdgd_group_send_file(sender, uuid, addr, port, file_path);
+       ret = mdgd_group_request(MDGD_REQ_SEND_FILE, sender, uuid,
+               file_path, NULL, NULL, NULL);
+
        group_complete_send_file(group, invocation, ret);
 
        LOG_END();
@@ -259,14 +260,16 @@ gboolean group_send_file(Group *group, GDBusMethodInvocation *invocation,
 }
 
 gboolean group_request_create_group(Group *group, GDBusMethodInvocation
-       *invocation, gchar *uuid, gchar *addr, int port, gchar *group_name, gpointer user_data)
+       *invocation, gchar *uuid, gchar *group_name, gpointer user_data)
 {
        int ret = MDGD_ERROR_NONE;
        const gchar *sender = g_dbus_method_invocation_get_sender(invocation);
 
        LOG_BEGIN();
 
-       ret = mdgd_group_request_create_group(sender, uuid, addr, port, group_name);
+       ret = mdgd_group_request(MDGD_REQ_CREATE_GROUP, sender, uuid,
+               group_name, NULL, NULL, NULL);
+
        group_complete_request_create_group(group, invocation, ret);
 
        LOG_END();
@@ -275,14 +278,16 @@ gboolean group_request_create_group(Group *group, GDBusMethodInvocation
 }
 
 gboolean group_request_invite(Group *group, GDBusMethodInvocation *invocation,
-       gchar *uuid, gchar *addr, int port, gchar *group_name, gchar *target_uuid, gchar *PIN, gpointer user_data)
+       gchar *uuid, gchar *group_name, gchar *target_uuid, gchar *PIN, gpointer user_data)
 {
        int ret = MDGD_ERROR_NONE;
        const gchar *sender = g_dbus_method_invocation_get_sender(invocation);
 
        LOG_BEGIN();
 
-       ret = mdgd_group_request_invite(sender, uuid, addr, port, group_name, target_uuid, PIN);
+       ret = mdgd_group_request(MDGD_REQ_INVITE_DEVICE, sender, uuid,
+               group_name, target_uuid, PIN, NULL);
+
        group_complete_request_invite(group, invocation, ret);
 
        LOG_END();
@@ -291,14 +296,16 @@ gboolean group_request_invite(Group *group, GDBusMethodInvocation *invocation,
 }
 
 gboolean group_request_eject(Group *group, GDBusMethodInvocation *invocation,
-       gchar *uuid, gchar *addr, int port, gchar *group_name, gchar *target_uuid, gpointer user_data)
+       gchar *uuid, gchar *group_name, gchar *target_uuid, gpointer user_data)
 {
        int ret = MDGD_ERROR_NONE;
        const gchar *sender = g_dbus_method_invocation_get_sender(invocation);
 
        LOG_BEGIN();
 
-       ret = mdgd_group_request_eject(sender, uuid, addr, port, group_name, target_uuid);
+       ret = mdgd_group_request(MDGD_REQ_EJECT_DEVICE, sender, uuid,
+               group_name, target_uuid, NULL, NULL);
+
        group_complete_request_eject(group, invocation, ret);
 
        LOG_END();
@@ -307,14 +314,16 @@ gboolean group_request_eject(Group *group, GDBusMethodInvocation *invocation,
 }
 
 gboolean group_request_channel_list(Group *group, GDBusMethodInvocation *invocation,
-       gchar *uuid, gchar *addr, int port, gpointer user_data)
+       gchar *uuid, gpointer user_data)
 {
        int ret = MDGD_ERROR_NONE;
        const gchar *sender = g_dbus_method_invocation_get_sender(invocation);
 
        LOG_BEGIN();
 
-       ret = mdgd_group_request_channel_list(sender, uuid, addr, port);
+       ret = mdgd_group_request(MDGD_REQ_CHANNEL_LIST, sender, uuid,
+               NULL, NULL, NULL, NULL);
+
        group_complete_request_channel_list(group, invocation, ret);
 
        LOG_END();
index c0cb06f27057d7402bd103636d099c0abbe59a30..0082af411a6f3231bf0d8cb1b5180da0552475f7 100755 (executable)
@@ -239,7 +239,7 @@ int mdgd_group_unregist_channel(char *sender, char *channel_id)
        return ret;
 }
 
-int mdgd_group_send_data(char *sender, char *uuid, char *addr, int port, char *channel_id,
+int mdgd_group_send_data(char *sender, char *uuid, char *channel_id,
                                                 unsigned char *data, int len)
 {
        int ret;
@@ -253,17 +253,17 @@ int mdgd_group_send_data(char *sender, char *uuid, char *addr, int port, char *c
                return ret;
        }
 
-       cmd->command = MDGD_REQ_SEND_DATA;
+       cmd->resource_type = MDGD_RESOURCE_TYPE_DATA;
+       cmd->type = MDGD_REQ_SEND_DATA;
        cmd->uuid = g_strdup(uuid);
        cmd->sender = g_strdup(sender);
-       cmd->host = mdgd_addr2host(addr, port, true);
        cmd->arg1 = g_strdup(channel_id);
 #ifdef SUPPORT_BASE64_ENCODING
        cmd->data = g_try_malloc0(len + 1);
        if (NULL == cmd->data) {
                ret = MDGD_ERROR_OUT_OF_MEMORY;
-               LOG_ERR("Send Data Fail to uuid = %s host %s error=%s",
-                       cmd->uuid, cmd->host, mdgd_log_get_error_string(ret));
+               LOG_ERR("Send Data Fail to uuid = %s error=%s",
+                       cmd->uuid, mdgd_log_get_error_string(ret));
                return ret;
        }
 
@@ -271,10 +271,10 @@ int mdgd_group_send_data(char *sender, char *uuid, char *addr, int port, char *c
        cmd->data_len = len;
 #else
        cmd->arg2 = g_try_malloc0(len + 1);
-       if (NULL == cmd->arg1) {
+       if (NULL == cmd->arg2) {
                ret = MDGD_ERROR_OUT_OF_MEMORY;
-               LOG_ERR("Send Data Fail to uuid = %s host %s error=%s",
-                       cmd->uuid, cmd->host, mdgd_log_get_error_string(ret));
+               LOG_ERR("Send Data Fail to uuid = %s error=%s",
+                       cmd->uuid, mdgd_log_get_error_string(ret));
                return ret;
        }
 
@@ -282,20 +282,16 @@ int mdgd_group_send_data(char *sender, char *uuid, char *addr, int port, char *c
        cmd->arg2[len] = '\0';
 #endif
 
-       LOG_DEBUG("UUID %s host %s", cmd->uuid, cmd->host);
-
-       ret = mdgd_iot_send_data(MDGD_RESOURCE_TYPE_DATA, cmd);
-       if (ret != MDGD_ERROR_NONE) {
-               LOG_ERR("Failed to send data : %s",
-                               mdgd_log_get_error_string(ret));
-       }
+       ret = mdgd_iot_discovery_resource(cmd->resource_type, cmd);
 
        LOG_END();
 
        return ret;
 }
 
-int mdgd_group_send_file(char *sender, char *uuid, char *addr, int port, char *file_path)
+
+int mdgd_group_request(mdgd_request_type_e type, char *sender, char *uuid,
+       char *arg1, char *arg2, char *arg3, void *user_data)
 {
        int ret;
 
@@ -308,129 +304,20 @@ int mdgd_group_send_file(char *sender, char *uuid, char *addr, int port, char *f
                return ret;
        }
 
-       cmd->command = MDGD_REQ_SEND_FILE;
-       cmd->uuid = g_strdup(uuid);
-       cmd->sender = g_strdup(sender);
-       cmd->addr = g_strdup(addr);
-       cmd->host = mdgd_addr2host(addr, port, true);
-       cmd->arg1 = g_strdup(file_path);
-
-       LOG_DEBUG("UUID %s host %s, file path %s", cmd->uuid, cmd->host, cmd->arg1);
-
-       ret = mdgd_iot_send_data(MDGD_RESOURCE_TYPE_DATA, cmd);
-       if (ret != MDGD_ERROR_NONE) {
-               LOG_ERR("Failed to send data : %s",
-                               mdgd_log_get_error_string(ret));
-       }
-
-       LOG_END();
-
-       return ret;
-}
-
-int mdgd_group_request_create_group(char *sender, char *uuid, char *addr, int port,
-       char *group_name)
-{
-       int ret = MDGD_ERROR_NONE;
-
-       LOG_BEGIN();
-
-       mdgd_command_t *cmd = g_new0(mdgd_command_t, 1);
-       cmd->command = MDGD_REQ_CREATE_GROUP;
+       cmd->resource_type = MDGD_RESOURCE_TYPE_DATA;
+       cmd->type = type;
        cmd->uuid = g_strdup(uuid);
-       cmd->arg1 = g_strdup(group_name);
        cmd->sender = g_strdup(sender);
-       cmd->host = mdgd_addr2host(addr, port, true);
+       cmd->user_data = user_data;
 
-       LOG_DEBUG("UUID %s host %s", cmd->uuid, cmd->host);
+       if (arg1 != NULL)
+               cmd->arg1 = g_strdup(arg1);
+       if (arg2 != NULL)
+               cmd->arg2 = g_strdup(arg2);
+       if (arg3 != NULL)
+               cmd->arg3 = g_strdup(arg3);
 
-       ret = mdgd_iot_send_data(MDGD_RESOURCE_TYPE_DATA, cmd);
-       if (ret != MDGD_ERROR_NONE) {
-               LOG_ERR("Failed to send data : %s",
-                               mdgd_log_get_error_string(ret));
-       }
-
-       LOG_END();
-
-       return ret;
-}
-
-int mdgd_group_request_invite(char *sender, char *uuid, char *addr, int port,
-       char *group_name, char *target_uuid, char *PIN)
-{
-       int ret = MDGD_ERROR_NONE;
-
-       LOG_BEGIN();
-
-       mdgd_command_t *cmd = g_new0(mdgd_command_t, 1);
-       cmd->command = MDGD_REQ_INVITE_DEVICE;
-       cmd->uuid = g_strdup(uuid);
-       cmd->arg1 = g_strdup(group_name);
-       cmd->arg2 = g_strdup(target_uuid);
-       cmd->arg3 = g_strdup(PIN);
-       cmd->sender = g_strdup(sender);
-       cmd->host = mdgd_addr2host(addr, port, true);
-
-       LOG_DEBUG("UUID %s host %s", cmd->uuid, cmd->host);
-
-       ret = mdgd_iot_send_data(MDGD_RESOURCE_TYPE_DATA, cmd);
-       if (ret != MDGD_ERROR_NONE) {
-               LOG_ERR("Failed to send data : %s",
-                               mdgd_log_get_error_string(ret));
-       }
-
-       LOG_END();
-
-       return ret;
-}
-
-int mdgd_group_request_eject(char *sender, char *uuid, char *addr, int port,
-       char *group_name, char *target_uuid)
-{
-       int ret = MDGD_ERROR_NONE;
-
-       LOG_BEGIN();
-
-       mdgd_command_t *cmd = g_new0(mdgd_command_t, 1);
-       cmd->command = MDGD_REQ_EJECT_DEVICE;
-       cmd->uuid = g_strdup(uuid);
-       cmd->arg1 = g_strdup(group_name);
-       cmd->arg2 = g_strdup(target_uuid);
-       cmd->sender = g_strdup(sender);
-       cmd->host = mdgd_addr2host(addr, port, true);
-
-       LOG_DEBUG("UUID %s host %s", cmd->uuid, cmd->host);
-
-       ret = mdgd_iot_send_data(MDGD_RESOURCE_TYPE_DATA, cmd);
-       if (ret != MDGD_ERROR_NONE) {
-               LOG_ERR("Failed to send data : %s",
-                               mdgd_log_get_error_string(ret));
-       }
-
-       LOG_END();
-
-       return ret;
-}
-
-int mdgd_group_request_channel_list(char *sender, char *uuid, char *addr, int port)
-{
-       int ret = MDGD_ERROR_NONE;
-
-       LOG_BEGIN();
-
-       mdgd_command_t *cmd = g_new0(mdgd_command_t, 1);
-       cmd->command = MDGD_REQ_CHANNEL_LIST;
-       cmd->uuid = g_strdup(uuid);
-       cmd->sender = g_strdup(sender);
-       cmd->host = mdgd_addr2host(addr, port, true);
-
-       LOG_DEBUG("UUID %s host %s", cmd->uuid, cmd->host);
-
-       ret = mdgd_iot_send_data(MDGD_RESOURCE_TYPE_DATA, cmd);
-       if (ret != MDGD_ERROR_NONE) {
-               LOG_ERR("Failed to send data : %s",
-                               mdgd_log_get_error_string(ret));
-       }
+       ret = mdgd_iot_discovery_resource(cmd->resource_type, cmd);
 
        LOG_END();
 
@@ -461,6 +348,9 @@ int mdgd_group_notify_event(char *sender, mdgd_event_type_e type, int result, vo
        case MDGD_EVENT_RECEIVE_DATA:
                va = mdgd_create_variant_data((mdgd_data_t *)user_data);
                break;
+       case MDGD_EVENT_RECEIVE_FILE:
+               va = mdgd_create_variant_receive_file((mdgd_receive_file_t *)user_data);
+               break;
        default:
                LOG_ERR("Unknown event : %d", type);
                break;
index f7c4096fa9895b8c93fce69f823fac56e740ef21..8379e777023c47235635eb45d35e76cdb4ad5a9c 100755 (executable)
@@ -193,7 +193,7 @@ int mdgd_iot_initialize()
                OC::ServiceType::InProc,
                        OC::ModeType::Both,
                        (OCTransportAdapter)(OCTransportAdapter::OC_ADAPTER_IP),
-                       OC::QualityOfService::LowQos,
+                       OC::QualityOfService::HighQos,
                        &ps
        };
 
@@ -284,10 +284,6 @@ int mdgd_iot_initialize()
                system_info_get_platform_string(SYSTEM_INFO_PROFILE, &profile);
 
                device->device_id = device_id;
-               device->port = iter->endpoint.port;
-               device->addr = g_strdup(iter->endpoint.addr);
-               device->conn_type = iter->connType;
-               device->secure_port = iter->securePort;
                device->device_name = g_strdup(device_name);
                device->model_name = g_strdup(model_name);
                device->platform_ver  = g_strdup(platform_ver);
index 2674bcd35f11325d38548e525f7d55a19623167e..8aa187c697444287e138a092053ac45dbff5640f 100755 (executable)
@@ -61,11 +61,11 @@ using namespace std;
 #define MAXBUF 1024
 
 /* FILE Send in thread */
-static gpointer file_send_thread_func(gpointer user_data)
+static gpointer __file_send_thread_func(gpointer user_data)
 {
        int ret = MDGD_ERROR_NONE;
        int sock;
-       struct sockaddr_in6 serveraddr;
+       struct sockaddr_in serveraddr;
        int retval;
        mdgd_command_t *cmd = (mdgd_command_t *)user_data;
        long num_read;
@@ -76,6 +76,7 @@ static gpointer file_send_thread_func(gpointer user_data)
        char buf[MAXBUF];
        long total_bytes;
        char tempaddr[26] = {0,};
+       char *tmpaddr;
 
        LOG_BEGIN();
 
@@ -85,20 +86,20 @@ static gpointer file_send_thread_func(gpointer user_data)
                goto SEND_THREAD_EXIT;
        }
 
-       sock = socket(AF_INET6, SOCK_STREAM, 0);
+       sock = socket(AF_INET, SOCK_STREAM, 0);
        if(sock < 0) {
                LOG_ERR("socket() error");
                ret = MDGD_ERROR_OPERATION_FAILED;
                goto SEND_THREAD_EXIT;
        }
 
-       serveraddr.sin6_family = AF_INET6;
-       serveraddr.sin6_port = htons(PORT);
-       serveraddr.sin6_flowinfo = 0;
-       serveraddr.sin6_scope_id = if_nametoindex("wlan0");
+       serveraddr.sin_family = AF_INET;
+       serveraddr.sin_port = htons(PORT);
 
-       strncpy(tempaddr, cmd->addr, 25);
-       inet_pton(AF_INET6, tempaddr, &serveraddr.sin6_addr);
+       sscanf(cmd->addr, "coaps://%s", &tempaddr);
+       strtok(tempaddr, ":");
+
+       inet_pton(AF_INET, tempaddr, &serveraddr.sin_addr.s_addr);
        retval = connect(sock, (struct sockaddr*) &serveraddr, sizeof(serveraddr));
        if(retval < 0) {
                LOG_ERR("connect() error : %s", strerror(errno));
@@ -166,7 +167,7 @@ SEND_THREAD_EXIT:
        return NULL;
 }
 
-void __get_group_information(const HeaderOptions& headerOptions,
+static void __get_group_information(const HeaderOptions& headerOptions,
        const OCRepresentation& rep, const int eCode, void *user_data)
 {
        int ret;
@@ -201,6 +202,47 @@ void __get_group_information(const HeaderOptions& headerOptions,
        LOG_END();
 }
 
+static void __request_finish(const HeaderOptions&,
+                                        const OCRepresentation& rep, const int eCode,
+                                        void *user_data)
+{
+       int ret = MDGD_ERROR_NONE;
+
+       mdgd_check_null_ret("user_data", user_data);
+       mdgd_command_t *cmd = (mdgd_command_t *)user_data;
+
+       LOG_BEGIN();
+
+       try {
+               if (eCode == OC_STACK_OK || eCode == OC_STACK_RESOURCE_CREATED ||
+                       eCode == OC_STACK_RESOURCE_CHANGED) {
+                       if (cmd->type == MDGD_REQ_CHANNEL_LIST) {
+                               std::map<std::string, AttributeValue> channel_list = rep.getValues();
+                               std::map<std::string, AttributeValue>::iterator iter;
+
+                               for (iter = channel_list.begin(); iter != channel_list.end(); ++iter) {
+                                       std::string channel_id = (*iter).first;
+                                       mdgd_channel_t *channel = g_new0(mdgd_channel_t, 1);
+                                       channel->device_id = g_strdup(cmd->uuid);
+                                       channel->channel_id = g_strdup(channel_id.c_str());
+                                       mdgd_group_notify_event(cmd->sender, MDGD_EVENT_REQ_CHANNEL_LIST_FINISH, ret, (void *)channel);
+                               }
+                       } else if (cmd->type == MDGD_REQ_SEND_DATA) {
+                               mdgd_group_notify_event(cmd->sender, MDGD_EVENT_SEND_DATA_FINISH, ret, NULL);
+                       } else if (cmd->type == MDGD_REQ_SEND_FILE) {
+                               GError *error = NULL;
+                               g_thread_try_new("file_send_thread", __file_send_thread_func, cmd, &error);
+                       }
+               } else {
+                       LOG_ERR("__get_device_description Response error %d", eCode);
+               }
+       } catch(std::exception& e) {
+               LOG_ERR("Exception %s in on get", e.what());
+       }
+
+       LOG_END();
+}
+
 static bool _found_resource(std::shared_ptr<OCResource> resource,
                                                        void *user_data)
 {
@@ -229,10 +271,10 @@ static bool _found_resource(std::shared_ptr<OCResource> resource,
                                        resource_type = g_strdup(resourceTypes.c_str());
                        }
 
-                       if (g_strcmp0(resource_type, mdgd_resource_get_type(MDGD_RESOURCE_TYPE_GROUP)) == 0) {
+                       if (g_strcmp0(resource_type,
+                                       mdgd_resource_get_type(MDGD_RESOURCE_TYPE_GROUP)) == 0) {
                                mdgd_group_t *group = (mdgd_group_t *)g_try_malloc0(sizeof(mdgd_group_t));
                                group->device_id = g_strdup(resource->sid().c_str());
-                               group->host_addr = g_strdup(resource->host().c_str());
                                group->sender = g_strdup(cmd->sender);
                                if (g_strcmp0(group->device_id, mdgd_ctx->device_uuid) != 0) {
                                        group->type = MDGD_GROUP_TYPE_REMOTE;
@@ -242,6 +284,68 @@ static bool _found_resource(std::shared_ptr<OCResource> resource,
 
                                resource->get(QueryParamsMap(), std::bind(&__get_group_information,
                                        std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, group));
+                       } else if (g_strcmp0(resource_type,
+                                       mdgd_resource_get_type(MDGD_RESOURCE_TYPE_DATA)) == 0 &&
+                                       g_strcmp0(cmd->uuid, resource->sid().c_str()) == 0) {
+                               OCRepresentation rep;
+                               rep.setValue("CMD", cmd->type);
+
+                               mdgd_context_t *mdgd_ctx = mdgd_context_get_context();
+                               rep.setValue("device_id", std::string(mdgd_ctx->device_uuid));
+
+                               LOG_DEBUG("request type is %d", cmd->type);
+                               switch (cmd->type) {
+                               case MDGD_REQ_SEND_FILE:
+                                       rep.setValue("file_path", std::string(cmd->arg1));
+                                       cmd->addr = g_strdup(resource->host().c_str());
+                                       break;
+                               case MDGD_REQ_SEND_DATA:
+                               {
+                                       rep.setValue("channel_id", std::string(cmd->arg1));
+#ifdef SUPPORT_BASE64_ENCODING
+                                       uint32_t outSize = 0;
+                                       size_t b64BufSize;
+                                       char *b64Buf;
+
+                                       b64BufSize = B64ENCODE_OUT_SAFESIZE((cmd->data_len + 1));
+                                       b64Buf = (char *) g_try_malloc0(b64BufSize + 1);
+                                       if (NULL == b64Buf) {
+                                               mdgd_clean_user_data(cmd);
+                                               return TRUE;
+                                       }
+                                       b64Encode(cmd->data, cmd->data_len,
+                                               b64Buf, b64BufSize, &outSize);
+                                       rep.setValue("data", std::string(b64Buf));
+                                       rep.setValue("data_length", to_string(outSize));
+                                       LOG_DEBUG("b64BufSize = %d outSize = %d b64Buf = %s",
+                                               b64BufSize, outSize, b64Buf);
+                                       g_free(b64Buf);
+#else
+                                       rep.setValue("data", std::string(cmd->arg2));
+#endif
+                                       break;
+                               }
+                               case MDGD_REQ_CREATE_GROUP:
+                                       rep.setValue("name", std::string(cmd->arg1));
+                                       break;
+                               case MDGD_REQ_INVITE_DEVICE:
+                                       rep.setValue("name", std::string(cmd->arg1));
+                                       rep.setValue("id", std::string(cmd->arg2));
+                                       rep.setValue("PIN", std::string(cmd->arg3));
+                                       break;
+                               case MDGD_REQ_EJECT_DEVICE:
+                                       rep.setValue("name", std::string(cmd->arg1));
+                                       rep.setValue("id", std::string(cmd->arg2));
+                                       break;
+                               case MDGD_REQ_CHANNEL_LIST:
+                                       break;
+                               default:
+                                       LOG_ERR("Invalid command %d", cmd->type);
+                                       return FALSE;
+                               }
+
+                               resource->post(rep, QueryParamsMap(), std::bind (&__request_finish,
+                                       std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, cmd));
                        }
                }
                else {
@@ -273,22 +377,10 @@ int mdgd_iot_discovery_resource(mdgd_resource_type_e resource_type,
                requestURI << OC_RSRVD_WELL_KNOWN_URI << "?rt=" <<
                        mdgd_resource_get_type(resource_type);
 
-               auto found_cb = std::bind (&_found_resource, std::placeholders::_1,
-                                                                  cmd);
-
-               if (cmd) {
-                       LOG_DEBUG("Querying for Resource host address  %s",
-                                         cmd->host ? cmd->host : "NULL");
-
-                       if (cmd->host)
-                               ret = OCPlatform::findResource(cmd->host, requestURI.str(),
-                                                                                          CT_ADAPTER_IP,
-                                                                                          found_cb);
-                       else
-                               ret = OCPlatform::findResource("", requestURI.str(),
-                                                                                          CT_ADAPTER_IP,
-                                                                                          found_cb);
-               }
+               auto found_cb = std::bind (&_found_resource, std::placeholders::_1, cmd);
+
+               ret = OCPlatform::findResource("", requestURI.str(), CT_IP_USE_V4, found_cb);
+
        } catch (OCException &e) {
                LOG_ERR("Failed to find resource %s", e.what());
                ret = e.code();
@@ -351,156 +443,24 @@ void __get_device_description(const HeaderOptions& headerOptions,
        LOG_END();
 }
 
-int mdgd_iot_get_device_description(mdgd_command_t *cmd)
+int mdgd_iot_get_device_description(mdgd_command_t *cmd, char *host_addr, int conn_type)
 {
+       int ret;
        std::string uri_path;
        std::vector<std::string> resource_types = {"core.comp.device"};
        std::vector<std::string> ifaces = {DEFAULT_INTERFACE};
-       char *host_addr = NULL;
-       mdgd_device_t *device = (mdgd_device_t *)(cmd->user_data);
 
        LOG_BEGIN();
 
        uri_path =      std::string(mdgd_resource_get_uri_prefix(MDGD_RESOURCE_TYPE_DEVICE));
-       host_addr = mdgd_addr2host(device->addr, device->port, false);
 
        OCResource::Ptr device_resource = OCPlatform::constructResourceObject(std::string(host_addr),
-               uri_path, (OCConnectivityType)device->conn_type, false, resource_types, ifaces);
+               uri_path, (OCConnectivityType)conn_type, false, resource_types, ifaces);
 
-       device_resource->get(QueryParamsMap(), std::bind (&__get_device_description, std::placeholders::_1,
+       ret = device_resource->get(QueryParamsMap(), std::bind (&__get_device_description, std::placeholders::_1,
                                                           std::placeholders::_2, std::placeholders::_3, cmd));
 
        LOG_END();
-}
-
-static void __send_data_finish(const HeaderOptions&,
-                                        const OCRepresentation& rep, const int eCode,
-                                        void *user_data)
-{
-       int ret = MDGD_ERROR_NONE;
-
-       mdgd_check_null_ret("user_data", user_data);
-       mdgd_command_t *cmd = (mdgd_command_t *)user_data;
-
-       LOG_BEGIN();
-
-       try {
-               if (eCode == OC_STACK_OK || eCode == OC_STACK_RESOURCE_CREATED ||
-                       eCode == OC_STACK_RESOURCE_CHANGED) {
-                       if (cmd->command == MDGD_REQ_CHANNEL_LIST) {
-                               std::map<std::string, AttributeValue> channel_list = rep.getValues();
-                               std::map<std::string, AttributeValue>::iterator iter;
-
-                               for (iter = channel_list.begin(); iter != channel_list.end(); ++iter) {
-                                       std::string channel_id = (*iter).first;
-                                       mdgd_channel_t *channel = g_new0(mdgd_channel_t, 1);
-                                       channel->device_id = g_strdup(cmd->uuid);
-                                       channel->channel_id = g_strdup(channel_id.c_str());
-                                       mdgd_group_notify_event(cmd->sender, MDGD_EVENT_REQ_CHANNEL_LIST_FINISH, ret, (void *)channel);
-                               }
-                       } else if (cmd->command == MDGD_REQ_SEND_DATA) {
-                               mdgd_group_notify_event(cmd->sender, MDGD_EVENT_SEND_DATA_FINISH, ret, NULL);
-                       } else if (cmd->command == MDGD_REQ_SEND_FILE) {
-                               GError *error = NULL;
-                               g_thread_try_new("file_send_thread", file_send_thread_func, cmd, &error);
-                       }
-               } else {
-                       LOG_ERR("__get_device_description Response error %d", eCode);
-               }
-       } catch(std::exception& e) {
-               LOG_ERR("Exception %s in on get", e.what());
-       }
-
-       //__clean_user_data(cmd);
-}
-
-int mdgd_iot_send_data(mdgd_resource_type_e resource_type, mdgd_command_t *cmd)
-{
-       int ret;
-       OCResource::Ptr resource;
-       std::string requestURI;
-       std::vector<std::string> ifaces = {DEFAULT_INTERFACE};
-       std::vector<std::string> resource_types;
-       resource_types = {mdgd_resource_get_type(resource_type)};
-
-       try {
-               requestURI = std::string(mdgd_resource_get_uri_prefix(resource_type));
-
-               LOG_DEBUG("Request URI %s", requestURI.c_str());
-
-               resource = OCPlatform::constructResourceObject(std::string(cmd->host),
-                                                          requestURI, CT_ADAPTER_IP, false,
-                                                          resource_types, ifaces);
-               if (!resource) {
-                       LOG_ERR("Failed to construct resource");
-                       return -1;
-               }
-
-               OCRepresentation rep;
-               rep.setValue("CMD", cmd->command);
-
-               mdgd_context_t *mdgd_ctx = mdgd_context_get_context();
-               rep.setValue("device_id", std::string(mdgd_ctx->device_uuid));
-
-#ifdef SUPPORT_BASE64_ENCODING
-               uint32_t outSize = 0;
-               size_t b64BufSize;
-               char *b64Buf;
-#endif
-               switch (cmd->command) {
-               case MDGD_REQ_SEND_FILE:
-                       rep.setValue("file_path", std::string(cmd->arg1));
-                       break;
-               case MDGD_REQ_SEND_DATA:
-                       rep.setValue("channel_id", std::string(cmd->arg1));
-#ifdef SUPPORT_BASE64_ENCODING
-                       b64BufSize = B64ENCODE_OUT_SAFESIZE((cmd->data_len + 1));
-                       b64Buf = (char *) g_try_malloc0(b64BufSize + 1);
-                       if (NULL == b64Buf) {
-                               mdgd_clean_user_data(cmd);
-                               return TRUE;
-                       }
-                       b64Encode(cmd->data, cmd->data_len,
-                                         b64Buf, b64BufSize, &outSize);
-                       rep.setValue("data", std::string(b64Buf));
-                       rep.setValue("data_length", to_string(outSize));
-                       LOG_DEBUG("b64BufSize = %d outSize = %d b64Buf = %s",
-                                         b64BufSize, outSize, b64Buf);
-                       g_free(b64Buf);
-#else
-                       rep.setValue("data", std::string(cmd->arg2));
-#endif
-                       break;
-               case MDGD_REQ_CREATE_GROUP:
-                       rep.setValue("name", std::string(cmd->arg1));
-                       break;
-               case MDGD_REQ_INVITE_DEVICE:
-                       rep.setValue("name", std::string(cmd->arg1));
-                       rep.setValue("id", std::string(cmd->arg2));
-                       rep.setValue("PIN", std::string(cmd->arg3));
-                       break;
-               case MDGD_REQ_EJECT_DEVICE:
-                       rep.setValue("name", std::string(cmd->arg1));
-                       rep.setValue("id", std::string(cmd->arg2));
-                       break;
-               case MDGD_REQ_CHANNEL_LIST:
-                       break;
-               default:
-                       LOG_ERR("Invalid command %d", cmd->command);
-                       return -1;
-               }
-
-               ret = resource->post(rep, QueryParamsMap(),
-                                                  std::bind (&__send_data_finish, std::placeholders::_1,
-                                                  std::placeholders::_2, std::placeholders::_3, cmd));
-
-       } catch (OCException &e) {
-               LOG_ERR("Failed to send data %s", e.what());
-               ret = e.code();
-       }
-
-       LOG_DEBUG("Send Data : %s", get_error_message(ret));
 
        return ret;
 }
-
index 454db923b02b6e0d04be22a4065d29ffaf185c99..c8ce1bc70dcef85ebb29d9f563aba012a96a687b 100755 (executable)
@@ -60,27 +60,36 @@ using namespace std;
 #define MAXBUF 1024
 
 /* FILE Receive in thread */
-static gpointer file_receive_thread_func(gpointer user_data)
+static gpointer __file_receive_thread_func(gpointer user_data)
 {
        LOG_BEGIN();
 
        int server_sockfd;
        int client_sockfd;
        int fd;
-       struct sockaddr_in6 serveraddr, clientaddr;
-       char client_ipaddr[INET6_ADDRSTRLEN];
+       struct sockaddr_in serveraddr, clientaddr;
+       char client_ipaddr[INET_ADDRSTRLEN];
        int read_len, file_read_len;
        socklen_t client_len;
        struct linger ling;
-       char *file_path = (char *)user_data;
+       mdgd_receive_file_t *receive_file = (mdgd_receive_file_t *)user_data;
 
-       if (file_path == NULL) {
-               LOG_ERR("file path is NULL");
+       if (receive_file == NULL) {
+               LOG_ERR("receive_file is NULL");
+               goto RECEIVE_THREAD_EXIT;
+       }
+       if (receive_file->file_path == NULL) {
+               LOG_ERR("receive_file->file_path is NULL");
+               goto RECEIVE_THREAD_EXIT;
+       }
+       if (receive_file->device_id == NULL) {
+               LOG_ERR("receive_file->device_id is NULL");
                goto RECEIVE_THREAD_EXIT;
        }
-       LOG_DEBUG("file path : %s", file_path);
 
-       fd = open(file_path, O_WRONLY | O_CREAT | O_EXCL, 0700);
+       LOG_DEBUG("file path : %s", receive_file->file_path);
+
+       fd = open(receive_file->file_path, O_WRONLY | O_CREAT | O_EXCL, 0700);
        if(!fd || errno == EEXIST) {
                LOG_ERR("file open error : %s", strerror(errno));
                goto RECEIVE_THREAD_EXIT;
@@ -91,7 +100,7 @@ static gpointer file_receive_thread_func(gpointer user_data)
 
        client_len = sizeof(clientaddr);
 
-       server_sockfd = socket(AF_INET6, SOCK_STREAM, 0);
+       server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
        if(server_sockfd == -1) {
                LOG_ERR("socket error : %s", strerror(errno));
                goto RECEIVE_THREAD_EXIT;
@@ -100,11 +109,9 @@ static gpointer file_receive_thread_func(gpointer user_data)
        setsockopt(server_sockfd, SOL_SOCKET, SO_LINGER, &ling, sizeof(ling));
 
        bzero(&serveraddr, sizeof(serveraddr));
-       serveraddr.sin6_family = AF_INET6;
-       serveraddr.sin6_addr = in6addr_any;
-       serveraddr.sin6_port = htons(PORT);
-       serveraddr.sin6_flowinfo = 0;
-       serveraddr.sin6_scope_id = if_nametoindex("wlan0");
+       serveraddr.sin_family = AF_INET;
+       serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
+       serveraddr.sin_port = htons(PORT);
 
        if (bind(server_sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0) {
                LOG_ERR("bind error : %s", strerror(errno));
@@ -117,7 +124,7 @@ static gpointer file_receive_thread_func(gpointer user_data)
        }
 
        client_sockfd = accept(server_sockfd, (struct sockaddr *)&clientaddr, &client_len);
-       inet_ntop(AF_INET6, &clientaddr.sin6_addr, client_ipaddr, sizeof(client_ipaddr));
+       inet_ntop(AF_INET, &clientaddr.sin_addr.s_addr, client_ipaddr, sizeof(client_ipaddr));
 
        LOG_DEBUG("Accepted IP : %s", client_ipaddr);
 
@@ -125,9 +132,10 @@ static gpointer file_receive_thread_func(gpointer user_data)
                char buf[MAXBUF] = {0,};
                file_read_len = read(client_sockfd, buf, MAXBUF);
                write(fd, buf, file_read_len);
-               if(file_read_len == EOF | file_read_len == 0) {
+               if (file_read_len == EOF | file_read_len == 0) {
                        LOG_DEBUG("Receive file successful");
-                       //send event to client
+                       mdgd_group_notify_event(NULL, MDGD_EVENT_RECEIVE_FILE, MDGD_ERROR_NONE, receive_file);
+
                        break;
                }
        }
@@ -234,8 +242,12 @@ OCEntityHandlerResult _request_handler(std::shared_ptr<OCResourceRequest> reques
                                        if (!requestRep.getValue("file_path", file_path))
                                                LOG_ERR("CMD not found in representation");
 
+                                       mdgd_receive_file_t *receive_file = g_new0(mdgd_receive_file_t, 1);
+                                       receive_file->file_path = g_strdup(file_path.c_str());
+                                       receive_file->device_id = g_strdup(requester_id.c_str());
+
                                        g_thread_try_new("file_receive_thread",
-                                               file_receive_thread_func, g_strdup(file_path.c_str()), NULL);
+                                               __file_receive_thread_func, receive_file, NULL);
 
                                        break;
                                }
index e5868e0ad09d98819cbab7e3b410f7602fadd80f..9deb5142732d18eaad610dd8b8467dbd68121ce5 100755 (executable)
@@ -358,22 +358,16 @@ static void _agent_signal_handler(GDBusConnection *connection,
                        val = g_variant_lookup_value(device_info, "port", G_VARIANT_TYPE_UINT16);
                        int port = g_variant_get_uint16(val);
                        LOG_DEBUG("port = %d", port);
-                       device->port = port;
 
                        val = g_variant_lookup_value(device_info, "addr", G_VARIANT_TYPE_STRING);
                        const char *addr = g_variant_get_string(val, &len);
                        LOG_DEBUG("addr = %s", addr);
-                       device->addr = g_strdup(addr);
 
-                       val = g_variant_lookup_value(device_info, "connType", G_VARIANT_TYPE_UINT32);
-                       int connType = g_variant_get_uint32(val);
-                       LOG_DEBUG("connType = %d", connType);
-                       device->conn_type = connType;
+                       char *host_addr = mdgd_addr2host(addr, port, false);
 
-                       val = g_variant_lookup_value(device_info, "securePort", G_VARIANT_TYPE_UINT16);
-                       int securePort = g_variant_get_uint16(val);
-                       LOG_DEBUG("securePort = %d", securePort);
-                       device->secure_port = securePort;
+                       val = g_variant_lookup_value(device_info, "connType", G_VARIANT_TYPE_UINT32);
+                       int conn_type = g_variant_get_uint32(val);
+                       LOG_DEBUG("connType = %d", conn_type);
 
                        if (!strncmp(signal_name, "disc_mot_enb_devs_done", strlen(signal_name))) {
                                device->is_invited = false;
@@ -385,7 +379,7 @@ static void _agent_signal_handler(GDBusConnection *connection,
 
                        cmd->user_data = (void *)device;
 
-                       mdgd_iot_get_device_description(cmd);
+                       mdgd_iot_get_device_description(cmd, host_addr, conn_type);
                }
        } else if (0 == g_strcmp0(signal_name, "pair_done") ||
                        0 == g_strcmp0(signal_name, "unpair_done")) {
index 78947020deaf3a17828d23bc91b53f89cb7166b0..40e3ce26f93d09f082ed1d5e6bb4dd2918a39b17 100755 (executable)
@@ -90,10 +90,6 @@ void mdgd_clean_user_data(void *user_data)
                g_free(cmd->uuid);
                cmd->uuid = NULL;
        }
-       if (cmd->host) {
-               g_free(cmd->host);
-               cmd->host = NULL;
-       }
        if (cmd->arg1) {
                g_free(cmd->arg1);
                cmd->arg1 = NULL;
@@ -128,8 +124,6 @@ GVariant *mdgd_create_variant_group(mdgd_group_t *group)
 
        g_variant_builder_add(builder, "{sv}", "DeviceID",
                                                  g_variant_new_string(group->device_id));
-       g_variant_builder_add(builder, "{sv}", "HostAddr",
-                                                 g_variant_new_string(group->host_addr));
        g_variant_builder_add(builder, "{sv}", "GroupName",
                                                  g_variant_new_string(group->group_name));
        g_variant_builder_add(builder, "{sv}", "Type",
@@ -152,14 +146,6 @@ GVariant *mdgd_create_variant_device(mdgd_device_t *device)
 
        g_variant_builder_add(builder, "{sv}", "DeviceID",
                                                  g_variant_new_string(device->device_id));
-       g_variant_builder_add(builder, "{sv}", "Port",
-                                                 g_variant_new_int32(device->port));
-       g_variant_builder_add(builder, "{sv}", "Addr",
-                                                 g_variant_new_string(device->addr));
-       g_variant_builder_add(builder, "{sv}", "ConnType",
-                                                 g_variant_new_int32(device->conn_type));
-       g_variant_builder_add(builder, "{sv}", "SecurePort",
-                                                 g_variant_new_int32(device->secure_port));
        g_variant_builder_add(builder, "{sv}", "ModelName",
                                                  g_variant_new_string(device->model_name));
        g_variant_builder_add(builder, "{sv}", "DeviceName",
@@ -182,6 +168,26 @@ GVariant *mdgd_create_variant_device(mdgd_device_t *device)
        return va;
 }
 
+GVariant *mdgd_create_variant_receive_file(mdgd_receive_file_t *receive_file)
+{
+       GVariant *va;
+
+       GVariantBuilder *builder;
+
+       builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
+
+       g_variant_builder_add(builder, "{sv}", "DeviceID",
+                                                 g_variant_new_string(receive_file->device_id));
+       g_variant_builder_add(builder, "{sv}", "FilePath",
+                                                 g_variant_new_string(receive_file->file_path));
+
+       va = g_variant_builder_end(builder);
+
+       g_variant_builder_unref(builder);
+
+       return va;
+}
+
 GVariant *mdgd_create_variant_channel(mdgd_channel_t *channel)
 {
        GVariant *va;
@@ -286,14 +292,6 @@ GVariant *mdgd_create_variant_device_list(char *group_name)
 
                g_variant_builder_add(builder, "{sv}", "DeviceID",
                                                          g_variant_new_string(device->device_id));
-               g_variant_builder_add(builder, "{sv}", "Port",
-                                                         g_variant_new_int32(device->port));
-               g_variant_builder_add(builder, "{sv}", "Addr",
-                                                         g_variant_new_string(device->addr));
-               g_variant_builder_add(builder, "{sv}", "ConnType",
-                                                         g_variant_new_int32(device->conn_type));
-               g_variant_builder_add(builder, "{sv}", "SecurePort",
-                                                         g_variant_new_int32(device->secure_port));
                g_variant_builder_add(builder, "{sv}", "ModelName",
                                                          g_variant_new_string(device->model_name));
                g_variant_builder_add(builder, "{sv}", "DeviceName",
@@ -362,14 +360,6 @@ mdgd_device_t *mdgd_get_device_from_variant(GVariant *va)
        while (g_variant_iter_loop(iter, "{sv}", &key, &key_value)) {
                if (g_strcmp0(key, "DeviceID") == 0)
                        device_id = (char *)g_variant_get_string(key_value, NULL);
-               else if (g_strcmp0(key, "Addr") == 0)
-                       addr = (char *)g_variant_get_string(key_value, NULL);
-               else if (g_strcmp0(key, "Port") == 0)
-                       port = g_variant_get_int32(key_value);
-               else if (g_strcmp0(key, "SecurePort") == 0)
-                       secure_port = g_variant_get_int32(key_value);
-               else if (g_strcmp0(key, "ConnType") == 0)
-                       conn_type = g_variant_get_int32(key_value);
                else if (g_strcmp0(key, "ModelName") == 0)
                        model_name = (char *)g_variant_get_string(key_value, NULL);
                else if (g_strcmp0(key, "DeviceName") == 0)
@@ -387,10 +377,6 @@ mdgd_device_t *mdgd_get_device_from_variant(GVariant *va)
        }
 
        device->device_id = g_strdup(device_id);
-       device->addr = g_strdup(addr);
-       device->port = port;
-       device->secure_port = secure_port;
-       device->conn_type = conn_type;
        device->model_name = g_strdup(model_name);
        device->device_name = g_strdup(device_name);
        device->platform_ver = g_strdup(platform_ver);
index 885a8c2a88e135429a893cf9d77fde0b8894364b..e5af2085db26f86f79f6b60bc982d2d27920cffb 100755 (executable)
@@ -1169,6 +1169,8 @@ static int _cred_provisioning(ma_service *service,
        return MA_ERROR_NONE;
 }
 
+int pairwise_ret;
+
 static void _resources_pairwise_cb(void* ctx, int nOfRes, OCProvisionResult_t* arr,
        bool has_error)
 {
@@ -1176,6 +1178,7 @@ static void _resources_pairwise_cb(void* ctx, int nOfRes, OCProvisionResult_t* a
 
        if (!has_error)  {
                MA_LOGD("Provision pairwise SUCCEEDED");
+               pairwise_ret = MA_ERROR_NONE;
        } else {
                MA_LOGD("Provision pairwise FAILED ");
                ma_print_result_list((const OCProvisionResult_t*) arr, nOfRes);
@@ -1767,6 +1770,7 @@ static void _make_devices_pair_func(ma_req_cb_s *con)
        }
 
        g_mutex_lock(&g_client->iotivity_mutex);
+       pairwise_ret = MA_ERROR_OPERATION_FAILED;
        ret = OCProvisionPairwiseDevices((void*) g_client, SYMMETRIC_PAIR_WISE_KEY,
                                                         OWNER_PSK_LENGTH_256, target_dev_1, acl_1,
                                                         target_dev_2, acl_2, _resources_pairwise_cb);
@@ -1792,7 +1796,7 @@ PV_PAIR_END:
 
        /* Notify pair result  */
        if (con) {
-               con->ret = ret;
+               con->ret = pairwise_ret;
                __notify_result(con);
        }
        if (uuid_1)