capi: add feature check routine
authorsaerome.kim <saerome.kim@samsung.com>
Wed, 28 Mar 2018 08:18:49 +0000 (17:18 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Mon, 2 Jul 2018 10:38:49 +0000 (19:38 +0900)
Signed-off-by: saerome.kim <saerome.kim@samsung.com>
capi/CMakeLists.txt [changed mode: 0755->0644]
capi/src/companion.c
capi/src/companion_dbus.c [moved from capi/src/companion_dbus_internal.c with 80% similarity]
capi/src/companion_dbus.h [moved from capi/src/companion_dbus_internal.h with 96% similarity]
capi/src/companion_debug.h
capi/src/companion_private.h [moved from capi/src/companion_internal.h with 85% similarity]
capi/src/companion_util.c [new file with mode: 0644]
capi/src/companion_util.h [new file with mode: 0644]
capi/unittest/companion_unit_test.cpp [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index 575be48..b5e0f05
@@ -14,7 +14,8 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/src)
 
 SET(SOURCES src/companion.c
             src/companion_gdbus.c
-            src/companion_dbus_internal.c)
+                       src/companion_util.c
+            src/companion_dbus.c)
 
 ADD_LIBRARY(${CAPI_FN} SHARED ${SOURCES})
 
index 872ce99..1455ade 100644 (file)
 
 #include <dlog.h>
 #include <companion.h>
+#include <companion_util.h>
+#include <companion_dbus.h>
 #include <companion_debug.h>
 #include <companion_gdbus.h>
-#include <companion_internal.h>
-#include <companion_dbus_internal.h>
+#include <companion_private.h>
 
 /**
  * Companion Manager CAPI
@@ -45,334 +46,14 @@ do { \
 int ref_count = 0; /**< How many clients are alive */
 bool __is_initialized = false; /**< Initialize or not */
 
-static companion_group_s *_create_group_handle(char *uri_path, char *device_id,
-       char *group_name, char *host_addr, char *resource_type, companion_group_type_e type)
-{
-       companion_group_s *group = calloc(1, sizeof(companion_group_s));
-       if (NULL == group) {
-               /* LCOV_EXCL_START */
-               _ERR("Memory allocation failed");
-               goto CREATE_GROUP_HANDLER_ERROR;
-               /* LCOV_EXCL_STOP */
-       }
-
-       group->uri_path = g_strdup(uri_path);
-       group->device_id = g_strdup(device_id);
-       group->group_name = g_strdup(group_name);
-       group->host_addr = g_strdup(host_addr);
-       group->resource_type = g_strdup(resource_type);
-       group->type = type;
-
-       if (!group->uri_path || !group->device_id ||
-               !group->host_addr || !group->resource_type) {
-               /* LCOV_EXCL_START */
-               _ERR("Memory allocation failed");
-               goto CREATE_GROUP_HANDLER_ERROR;
-               /* LCOV_EXCL_STOP */
-       }
-       return group;
-
-CREATE_GROUP_HANDLER_ERROR:
-       /* LCOV_EXCL_START */
-       if (group) {
-               if (group->uri_path) {
-                       free(group->uri_path);
-                       group->uri_path = NULL;
-               }
-               if (group->device_id) {
-                       free(group->device_id);
-                       group->device_id = NULL;
-               }
-               if (group->group_name) {
-                       free(group->group_name);
-                       group->group_name = NULL;
-               }
-               if (group->host_addr) {
-                       free(group->host_addr);
-                       group->host_addr = NULL;
-               }
-               if (group->resource_type) {
-                       free(group->resource_type);
-                       group->resource_type = NULL;
-               }
-               free(group);
-               group = NULL;
-       }
-       return NULL;
-       /* LCOV_EXCL_STOP */
-}
-
-static companion_device_s *_create_device_handle(char *device_id, char *ip,
-       char *device_type, int port)
-{
-       companion_device_s *device = calloc(1, sizeof(companion_device_s));
-       if (NULL == device) {
-               /* LCOV_EXCL_START */
-               _ERR("Memory allocation failed");
-               goto CREATE_DEVICE_HANDLER_ERROR;
-               /* LCOV_EXCL_STOP */
-       }
-
-       device->device_id = g_strdup(device_id);
-       device->ip = g_strdup(ip);
-       device->device_type = g_strdup(device_type);
-       device->port = port;
-
-       if (!device->device_id || !device->ip || !device->device_type) {
-               /* LCOV_EXCL_START */
-               _ERR("Memory allocation failed");
-               goto CREATE_DEVICE_HANDLER_ERROR;
-               /* LCOV_EXCL_STOP */
-       }
-
-       return device;
-
-CREATE_DEVICE_HANDLER_ERROR:
-       /* LCOV_EXCL_START */
-       if (device) {
-               if (device->device_id) {
-                       free(device->device_id);
-                       device->device_id = NULL;
-               }
-               if (device->ip) {
-                       free(device->ip);
-                       device->ip = NULL;
-               }
-               if (device->device_type) {
-                       free(device->device_type);
-                       device->device_type = NULL;
-               }
-               free(device);
-               device = NULL;
-       }
-       return NULL;
-       /* LCOV_EXCL_STOP */
-}
-
-/* LCOV_EXCL_START */
-static void __group_found_cb(Group *object, GVariant *va, gpointer user_data)
-{
-       GVariantIter *iter = NULL;
-       const gchar *key;
-       GVariant *key_value = NULL;
-       companion_group_s *group = NULL;
-       char *uri_path = NULL;
-       char *device_id = NULL;
-       char *group_name = NULL;
-       char *host_addr = NULL;
-       char *resource_type = NULL;
-       companion_group_type_e type = COMPANION_GROUP_TYPE_ERROR;
-
-       NOTUSED(object);
-
-       comp_manager_s *handle = user_data;
-       companion_check_null_ret("user_data", user_data);
-
-       g_variant_get(va, "a{sv}", &iter);
-       while (g_variant_iter_loop(iter, "{sv}", &key, &key_value)) {
-               if (g_strcmp0(key, "URI") == 0)
-                       uri_path = (char *)g_variant_get_string(key_value, NULL);
-               else if (g_strcmp0(key, "DeviceID") == 0)
-                       device_id = (char *)g_variant_get_string(key_value, NULL);
-               else if (g_strcmp0(key, "GroupName") == 0)
-                       group_name = (char *)g_variant_get_string(key_value, NULL);
-               else if (g_strcmp0(key, "HostAddress") == 0)
-                       host_addr = (char *)g_variant_get_string(key_value, NULL);
-               else if (g_strcmp0(key, "GroupDeviceType") == 0)
-                       resource_type = (char *)g_variant_get_string(key_value, NULL);
-               else if (g_strcmp0(key, "GroupType") == 0)
-                       type = g_variant_get_int32(key_value);
-       }
-
-       g_variant_iter_free(iter);
-
-       group = _create_group_handle(uri_path, device_id, group_name, host_addr,
-               resource_type, type);
-       if (handle->group_found_cb.found_cb)
-               handle->group_found_cb.found_cb(type, group, handle->group_found_cb.user_data);
-}
-
-static void _group_find_finish_cb(Group *object, gint ret, gpointer user_data)
-{
-       NOTUSED(object);
-
-       comp_manager_s *handle = user_data;
-       companion_check_null_ret("user_data", user_data);
-
-       if (handle->group_find_finish_cb.finish_cb)
-               handle->group_find_finish_cb.finish_cb(ret,
-                       handle->group_find_finish_cb.user_data);
-}
-
-static void __device_found_cb(Group *object, gint count, GVariant *va,
-       gpointer user_data)
-{
-       GVariantIter *iter = NULL;
-       GVariantIter *iter_row = NULL;
-       const gchar *key;
-       GVariant *key_value;
-       companion_device_s *device = NULL;
-
-       NOTUSED(object);
-
-       comp_manager_s *handle = user_data;
-       companion_check_null_ret("user_data", user_data);
-
-       g_variant_get(va, "aa{sv}", &iter);
-       while (g_variant_iter_next(iter, "a{sv}", &iter_row)) {
-               char *device_id = NULL;
-               char *ip = NULL;
-               char *device_type = NULL;
-               int port = -1;
-
-               while (g_variant_iter_loop(iter_row, "{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, "Address") == 0)
-                               ip = (char *)g_variant_get_string(key_value, NULL);
-                       else if (g_strcmp0(key, "SecVer") == 0)
-                               device_type = (char *)g_variant_get_string(key_value, NULL);
-                       else if (g_strcmp0(key, "Port") == 0)
-                               port = g_variant_get_uint16(key_value);
-               }
-               g_variant_iter_free(iter_row);
-
-               device = _create_device_handle(device_id, ip, device_type, port);
-               if (handle->device_found_cb.found_cb)
-                       handle->device_found_cb.found_cb(device, handle->device_found_cb.user_data);
-       }
-       g_variant_iter_free(iter);
-}
-
-static void _device_find_finish_cb(Group *object, gint ret, gpointer user_data)
-{
-       NOTUSED(object);
-
-       comp_manager_s *handle = user_data;
-       companion_check_null_ret("user_data", user_data);
-
-       if (handle->device_find_finish_cb.finish_cb)
-               handle->device_find_finish_cb.finish_cb(ret,
-                       handle->device_find_finish_cb.user_data);
-}
-
-static void __mowned_device_found_cb(Group *object, gint count, GVariant *va,
-       gpointer user_data)
-{
-       GVariantIter *iter = NULL;
-       GVariantIter *iter_row = NULL;
-       const gchar *key;
-       GVariant *key_value;
-       companion_device_s *device = NULL;
-
-       NOTUSED(object);
-
-       comp_manager_s *handle = user_data;
-       companion_check_null_ret("user_data", user_data);
-
-       g_variant_get(va, "aa{sv}", &iter);
-       while (g_variant_iter_next(iter, "a{sv}", &iter_row)) {
-               char *device_id = NULL;
-               char *ip = NULL;
-               char *device_type = NULL;
-               int port = -1;
-
-               while (g_variant_iter_loop(iter_row, "{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, "Address") == 0)
-                               ip = (char *)g_variant_get_string(key_value, NULL);
-                       else if (g_strcmp0(key, "SecVer") == 0)
-                               device_type = (char *)g_variant_get_string(key_value, NULL);
-                       else if (g_strcmp0(key, "Port") == 0)
-                               port = g_variant_get_uint16(key_value);
-
-               }
-               g_variant_iter_free(iter_row);
-
-               device = _create_device_handle(device_id, ip, device_type, port);
-               if (handle->mowned_device_found_cb.found_cb)
-                       handle->mowned_device_found_cb.found_cb(device,
-                               handle->mowned_device_found_cb.user_data);
-       }
-       g_variant_iter_free(iter);
-}
-
-static void _mowned_device_find_finish_cb(Group *object, gint ret,
-       gpointer user_data)
-{
-       NOTUSED(object);
-
-       comp_manager_s *handle = user_data;
-       companion_check_null_ret("user_data", user_data);
-
-       if (handle->mowned_device_find_finish_cb.finish_cb)
-               handle->mowned_device_find_finish_cb.finish_cb(ret,
-                       handle->mowned_device_find_finish_cb.user_data);
-}
-
-static void __device_invite_result_cb(Group *object, gint ret, gpointer user_data)
-{
-       NOTUSED(object);
-
-       comp_manager_s *handle = user_data;
-       companion_check_null_ret("user_data", user_data);
-
-       if (handle->device_invite_result_cb.result_cb)
-               handle->device_invite_result_cb.result_cb(ret,
-                       handle->device_invite_result_cb.user_data);
-}
-
-static void __device_eject_result_cb(Group *object, gint ret, gpointer user_data)
-{
-       NOTUSED(object);
-
-       comp_manager_s *handle = user_data;
-       companion_check_null_ret("user_data", user_data);
-
-       if (handle->device_eject_result_cb.result_cb)
-               handle->device_eject_result_cb.result_cb(ret,
-                       handle->device_eject_result_cb.user_data);
-}
-
-static void __send_data_finish_cb(Group *object, gchar *resp_data, gint ret,
-       gpointer user_data)
-{
-       NOTUSED(object);
-
-       comp_manager_s *handle = user_data;
-       companion_check_null_ret("user_data", user_data);
-
-       if (handle->send_data_finish_cb.finish_cb)
-               handle->send_data_finish_cb.finish_cb(ret, resp_data,
-                       handle->send_data_finish_cb.user_data);
-}
-
-static void __request_result_cb(Group *object, gchar *cmd, gchar *arg, gint ret,
-       gpointer user_data)
-{
-       NOTUSED(object);
-
-       comp_manager_s *handle = user_data;
-       companion_check_null_ret("user_data", user_data);
-
-       if (handle->request_result_cb.result_cb)
-               handle->request_result_cb.result_cb(cmd, arg, ret,
-                       handle->request_result_cb.user_data);
-}
-/* LCOV_EXCL_STOP */
-
 EXPORT_API int companion_initialize(companion_h *handle)
 {
        int ret = COMP_ERROR_NONE;
        struct comp_manager_s *comp_manager = NULL;
 
-       if (NULL == handle) {
-               /* LCOV_EXCL_START */
-               _ERR("Invalid parameter");
-               return COMP_ERROR_INVALID_PARAMETER;
-               /* LCOV_EXCL_STOP */
-       }
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
+       companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
        _BEGIN();
 
@@ -407,6 +88,8 @@ EXPORT_API int companion_deinitialize(companion_h handle)
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        _BEGIN();
 
        COMPANION_LOCK;
@@ -435,8 +118,10 @@ EXPORT_API int companion_deinitialize(companion_h handle)
 EXPORT_API int companion_group_create(companion_h handle, char *group_name)
 {
        int ret = COMP_ERROR_NONE;
-
        GError *error = NULL;
+
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -448,6 +133,8 @@ EXPORT_API int companion_group_create(companion_h handle, char *group_name)
 
 EXPORT_API void companion_group_destroy(companion_group_s *group)
 {
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        companion_check_null_ret("group", group);
 
        if (group->uri_path) {
@@ -481,6 +168,8 @@ EXPORT_API int companion_group_find(companion_h handle, int timeout,
        int ret = COMP_ERROR_NONE;
        GError *error = NULL;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -502,6 +191,8 @@ EXPORT_API int companion_group_get_found_groups(companion_h handle,
        GVariant *va = NULL;
        GError *error = NULL;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -550,7 +241,7 @@ EXPORT_API int companion_group_get_found_groups(companion_h handle,
                        _INFO("DeviceID %s GroupName %s HostAddress %s GroupDeviceType %s",
                                  device_id, group_name, host_addr, resource_type);
 
-                       group = _create_group_handle(uri_path,
+                       group = create_group_handle(uri_path,
                                device_id, group_name, host_addr, resource_type, type);
 
                        (*groups)[i++] = (companion_group_h)group;
@@ -567,6 +258,8 @@ EXPORT_API int companion_group_join(companion_h handle, companion_group_h group,
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        NOTUSED(handle);
        NOTUSED(group);
        NOTUSED(callback);
@@ -580,6 +273,8 @@ EXPORT_API int companion_group_leave(companion_h handle, companion_group_h group
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        NOTUSED(handle);
        NOTUSED(group);
        NOTUSED(callback);
@@ -593,9 +288,10 @@ EXPORT_API int companion_device_find(companion_h handle, int timeout,
        void *user_data)
 {
        int ret = COMP_ERROR_NONE;
-
        GError *error = NULL;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -615,9 +311,12 @@ EXPORT_API int companion_device_find_mowned_device(companion_h handle,
        companion_device_find_finish_cb finish_cb, void *user_data)
 {
        int ret = COMP_ERROR_NONE;
-
        GError *error = NULL;
+
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
+       companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
        _handle->mowned_device_found_cb.found_cb = found_cb;
        _handle->mowned_device_found_cb.user_data = user_data;
@@ -634,10 +333,11 @@ EXPORT_API int companion_send_data(companion_h handle, companion_device_h device
        char *data, int len, companion_send_data_finish_cb finish_cb, void *user_data)
 {
        int ret = COMP_ERROR_NONE;
-
        char *buf = NULL;
        GError *error = NULL;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -669,10 +369,12 @@ EXPORT_API int companion_device_get_found_devices(companion_h handle,
        companion_device_h **devices, int *count)
 {
        int ret = COMP_ERROR_NONE;
-
        int num = 0;
        GVariant *va = NULL;
        GError *error = NULL;
+
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -711,7 +413,7 @@ EXPORT_API int companion_device_get_found_devices(companion_h handle,
                        }
                        g_variant_iter_free(iter_row);
 
-                       device = _create_device_handle(deviceid, addr, ver, port);
+                       device = create_device_handle(deviceid, addr, ver, port);
 
                        (*devices)[i++] = (companion_device_h)device;
                }
@@ -726,10 +428,12 @@ EXPORT_API int companion_device_get_found_mowned_devices(
        companion_h handle, companion_device_h **devices, int *count)
 {
        int ret = COMP_ERROR_NONE;
-
        int num = 0;
        GVariant *va = NULL;
        GError *error = NULL;
+
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -768,7 +472,7 @@ EXPORT_API int companion_device_get_found_mowned_devices(
                        }
                        g_variant_iter_free(iter_row);
 
-                       device = _create_device_handle(deviceid, addr, ver, port);
+                       device = create_device_handle(deviceid, addr, ver, port);
 
                        (*devices)[i++] = (companion_device_h)device;
                }
@@ -783,7 +487,6 @@ EXPORT_API int companion_device_get_my_device(companion_h handle,
        companion_device_h *device)
 {
        int ret = COMP_ERROR_NONE;
-
        GError *error = NULL;
        GVariant *va = NULL;
        GVariantIter *iter = NULL;
@@ -794,6 +497,8 @@ EXPORT_API int companion_device_get_my_device(companion_h handle,
        char *ver = NULL;
        int port = -1;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -814,7 +519,7 @@ EXPORT_API int companion_device_get_my_device(companion_h handle,
        if (deviceid == NULL || addr == NULL || ver == NULL)
                return -1;
 
-       *device = (companion_device_h)_create_device_handle(deviceid, addr, ver, port);
+       *device = (companion_device_h)create_device_handle(deviceid, addr, ver, port);
 
        g_variant_iter_free(iter);
 
@@ -823,6 +528,8 @@ EXPORT_API int companion_device_get_my_device(companion_h handle,
 
 EXPORT_API void companion_device_destroy(companion_device_h device)
 {
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        companion_device_s *_device = device;
        companion_check_null_ret("device", device);
 
@@ -847,6 +554,8 @@ EXPORT_API int companion_device_get_my_uuid(companion_h handle, char **uuid)
        int ret = 0;
        GError *error = NULL;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -861,6 +570,8 @@ EXPORT_API int companion_group_merge(companion_h hadnle,
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        NOTUSED(dest_group);
        NOTUSED(src_group);
 
@@ -871,6 +582,8 @@ EXPORT_API int companion_group_delete(companion_h handle, companion_group_h grou
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        NOTUSED(handle);
        NOTUSED(group);
 
@@ -882,6 +595,8 @@ EXPORT_API int companion_group_get_member_devices(companion_h handle,
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        NOTUSED(handle);
        NOTUSED(group);
        NOTUSED(devices);
@@ -897,6 +612,8 @@ EXPORT_API int companion_device_invite(companion_h handle,
        int ret = COMP_ERROR_NONE;
        GError *error = NULL;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -928,6 +645,8 @@ EXPORT_API int companion_device_eject(companion_h handle,
        int ret = COMP_ERROR_NONE;
        GError *error = NULL;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -952,6 +671,8 @@ EXPORT_API int companion_group_information_create(companion_group_h* group)
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        companion_group_h _group = g_malloc0(sizeof(companion_group_s));
        if (NULL == _group) {
                _ERR("Memory allocation Failed(%d)", errno);
@@ -967,10 +688,12 @@ EXPORT_API int companion_group_information_clone(companion_group_h target,
 {
        int ret = COMP_ERROR_NONE;
 
-       companion_group_s * dst = (companion_group_s *)target;
-       companion_group_s * src = (companion_group_s *)source;
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
 
+       companion_group_s * dst = (companion_group_s *)target;
        companion_check_null_ret_error("target", target, COMP_ERROR_INVALID_PARAMETER);
+
+       companion_group_s * src = (companion_group_s *)source;
        companion_check_null_ret_error("source", source, COMP_ERROR_INVALID_PARAMETER);
 
        if (src->uri_path)
@@ -997,6 +720,8 @@ EXPORT_API int companion_group_information_destroy(companion_group_h data)
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        companion_group_s * group = (companion_group_s *)data;
        companion_check_null_ret_error("group", group, COMP_ERROR_INVALID_PARAMETER);
 
@@ -1031,6 +756,8 @@ EXPORT_API int companion_group_information_get_type(companion_group_h group,
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        *type = ((companion_group_s *)group)->type;
 
        return ret;
@@ -1041,6 +768,8 @@ EXPORT_API int companion_group_information_get_resource_type(
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        *resource_type = g_strdup(((companion_group_s *)group)->resource_type);
 
        return ret;
@@ -1051,6 +780,8 @@ EXPORT_API int companion_group_information_get_uri_path(
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        *uri_path = g_strdup(((companion_group_s *)group)->uri_path);
 
        return ret;
@@ -1061,6 +792,8 @@ EXPORT_API int companion_group_information_get_name(
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        *name = g_strdup(((companion_group_s *)group)->group_name);
 
        return ret;
@@ -1071,6 +804,8 @@ EXPORT_API int companion_group_information_get_host_addr
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        *host_addr = g_strdup(((companion_group_s *)group)->host_addr);
 
        return ret;
@@ -1080,6 +815,8 @@ EXPORT_API int companion_device_information_create(companion_device_h* device)
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        companion_device_h _device = g_malloc0(sizeof(companion_device_s));
        if (NULL == device) {
                _ERR("Memory allocation Failed(%d)", errno);
@@ -1095,10 +832,12 @@ EXPORT_API int companion_device_information_clone(companion_device_h target,
 {
        int ret = COMP_ERROR_NONE;
 
-       companion_device_s * dst = (companion_device_s *)target;
-       companion_device_s * src = (companion_device_s *)source;
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
 
+       companion_device_s * dst = (companion_device_s *)target;
        companion_check_null_ret_error("target", target, COMP_ERROR_INVALID_PARAMETER);
+
+       companion_device_s * src = (companion_device_s *)source;
        companion_check_null_ret_error("source", source, COMP_ERROR_INVALID_PARAMETER);
 
        if (src->device_id)
@@ -1114,6 +853,9 @@ EXPORT_API int companion_device_information_clone(companion_device_h target,
 EXPORT_API int companion_device_information_destroy(companion_device_h data)
 {
        int ret = COMP_ERROR_NONE;
+
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        companion_device_s * device = (companion_device_s *)data;
        companion_check_null_ret_error("data", data, COMP_ERROR_INVALID_PARAMETER);
 
@@ -1141,6 +883,8 @@ EXPORT_API int companion_device_information_get_device_id(
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        *device_id = g_strdup(((companion_device_s *)device)->device_id);
 
        return ret;
@@ -1151,6 +895,8 @@ EXPORT_API int companion_device_information_get_ip(
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        *ip = g_strdup(((companion_device_s *)device)->ip);
 
        return ret;
@@ -1161,6 +907,8 @@ EXPORT_API int companion_device_information_get_device_type(
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        *device_type = g_strdup(((companion_device_s *)device)->device_type);
 
        return ret;
@@ -1171,8 +919,15 @@ EXPORT_API int companion_request_create_group(companion_h handle,
 {
        int ret = COMP_ERROR_NONE;
        GError *error = NULL;
+
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
+       companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
+
        companion_device_s *dev = (companion_device_s *)device;
+       companion_check_null_ret_error("device", device, COMP_ERROR_INVALID_PARAMETER);
+       companion_check_null_ret_error("group_name", group_name, COMP_ERROR_INVALID_PARAMETER);
 
        _DBG("Device id : %s", dev->device_id);
 
@@ -1187,28 +942,23 @@ EXPORT_API int companion_request_invite(companion_h handle,
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
        companion_group_s *grp = (companion_group_s *)group;
-       if (!grp) {
-               _ERR("grp is null");
-               return COMP_ERROR_INVALID_PARAMETER;
-       }
+       companion_check_null_ret_error("group", group, COMP_ERROR_INVALID_PARAMETER);
 
        companion_device_s *dev = (companion_device_s *)device;
-       if (!dev) {
-               _ERR("dev is null");
-               return COMP_ERROR_INVALID_PARAMETER;
-       }
+       companion_check_null_ret_error("device", device, COMP_ERROR_INVALID_PARAMETER);
 
        _DBG("%s", grp->device_id);
        _DBG("%s", grp->group_name);
        _DBG("%s", dev->device_id);
 
        group_call_request_invite(_handle->group_proxy, grp->device_id, grp->group_name,
-               dev->device_id, PIN,
-               NULL, NULL, NULL);
+               dev->device_id, PIN, NULL, NULL, NULL);
 
        return ret;
 }
@@ -1218,6 +968,8 @@ EXPORT_API int companion_request_eject(companion_h handle,
 {
        int ret = COMP_ERROR_NONE;
 
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
@@ -1241,6 +993,9 @@ EXPORT_API int companion_request_delete_group(companion_h handle,
        companion_group_h group)
 {
        int ret = COMP_ERROR_NONE;
+
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        NOTUSED(handle);
        NOTUSED(group);
        return ret;
@@ -1250,6 +1005,9 @@ EXPORT_API int companion_request_result_callback(companion_h handle,
        companion_request_result_cb result_cb, void *user_data)
 {
        int ret = COMP_ERROR_NONE;
+
+       CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE);
+
        comp_manager_s *_handle = handle;
        companion_check_null_ret_error("handle", handle, COMP_ERROR_INVALID_PARAMETER);
 
similarity index 80%
rename from capi/src/companion_dbus_internal.c
rename to capi/src/companion_dbus.c
index ebf8feb..7a7a43f 100644 (file)
 
 #include <dlog.h>
 #include <companion.h>
+#include <companion_util.h>
+#include <companion_dbus.h>
 #include <companion_debug.h>
 #include <companion_gdbus.h>
-#include <companion_internal.h>
-#include <companion_dbus_internal.h>
+#include <companion_private.h>
 
 #define COMP_DBUS_SERVICE "org.tizen.companion" /**< For companion dbus */
 #define COMP_DBUS_GROUP_PATH "/org/tizen/companion/group" /**< For group dbus */
 #define COMP_DBUS_ENABLER_PATH "/org/tizen/companion/enabler" /**< dbus auto-activation */
 
-static companion_group_s *_create_group_handle(char *uri_path, char *device_id,
-       char *group_name, char *host_addr, char *resource_type, companion_group_type_e type)
-{
-       companion_group_s *group = calloc(1, sizeof(companion_group_s));
-       if (NULL == group) {
-               /* LCOV_EXCL_START */
-               _ERR("Memory allocation failed");
-               goto CREATE_GROUP_HANDLER_ERROR;
-               /* LCOV_EXCL_STOP */
-       }
-
-       group->uri_path = g_strdup(uri_path);
-       group->device_id = g_strdup(device_id);
-       group->group_name = g_strdup(group_name);
-       group->host_addr = g_strdup(host_addr);
-       group->resource_type = g_strdup(resource_type);
-       group->type = type;
-
-       if (!group->uri_path || !group->device_id ||
-               !group->host_addr || !group->resource_type) {
-               /* LCOV_EXCL_START */
-               _ERR("Memory allocation failed");
-               goto CREATE_GROUP_HANDLER_ERROR;
-               /* LCOV_EXCL_STOP */
-       }
-       return group;
-
-CREATE_GROUP_HANDLER_ERROR:
-       /* LCOV_EXCL_START */
-       if (group) {
-               if (group->uri_path) {
-                       free(group->uri_path);
-                       group->uri_path = NULL;
-               }
-               if (group->device_id) {
-                       free(group->device_id);
-                       group->device_id = NULL;
-               }
-               if (group->group_name) {
-                       free(group->group_name);
-                       group->group_name = NULL;
-               }
-               if (group->host_addr) {
-                       free(group->host_addr);
-                       group->host_addr = NULL;
-               }
-               if (group->resource_type) {
-                       free(group->resource_type);
-                       group->resource_type = NULL;
-               }
-               free(group);
-               group = NULL;
-       }
-       return NULL;
-       /* LCOV_EXCL_STOP */
-}
-
-static companion_device_s *_create_device_handle(char *device_id, char *ip,
-       char *device_type, int port)
-{
-       companion_device_s *device = calloc(1, sizeof(companion_device_s));
-       if (NULL == device) {
-               /* LCOV_EXCL_START */
-               _ERR("Memory allocation failed");
-               goto CREATE_DEVICE_HANDLER_ERROR;
-               /* LCOV_EXCL_STOP */
-       }
-
-       device->device_id = g_strdup(device_id);
-       device->ip = g_strdup(ip);
-       device->device_type = g_strdup(device_type);
-       device->port = port;
-
-       if (!device->device_id || !device->ip || !device->device_type) {
-               /* LCOV_EXCL_START */
-               _ERR("Memory allocation failed");
-               goto CREATE_DEVICE_HANDLER_ERROR;
-               /* LCOV_EXCL_STOP */
-       }
-
-       return device;
-
-CREATE_DEVICE_HANDLER_ERROR:
-       /* LCOV_EXCL_START */
-       if (device) {
-               if (device->device_id) {
-                       free(device->device_id);
-                       device->device_id = NULL;
-               }
-               if (device->ip) {
-                       free(device->ip);
-                       device->ip = NULL;
-               }
-               if (device->device_type) {
-                       free(device->device_type);
-                       device->device_type = NULL;
-               }
-               free(device);
-               device = NULL;
-       }
-       return NULL;
-       /* LCOV_EXCL_STOP */
-}
-
 /* LCOV_EXCL_START */
 static void __group_found_cb(Group *object, GVariant *va, gpointer user_data)
 {
@@ -173,7 +70,7 @@ static void __group_found_cb(Group *object, GVariant *va, gpointer user_data)
 
        g_variant_iter_free(iter);
 
-       group = _create_group_handle(uri_path, device_id, group_name, host_addr,
+       group = create_group_handle(uri_path, device_id, group_name, host_addr,
                resource_type, type);
        if (handle->group_found_cb.found_cb)
                handle->group_found_cb.found_cb(type, group, handle->group_found_cb.user_data);
@@ -224,7 +121,7 @@ static void __device_found_cb(Group *object, gint count, GVariant *va,
                }
                g_variant_iter_free(iter_row);
 
-               device = _create_device_handle(device_id, ip, device_type, port);
+               device = create_device_handle(device_id, ip, device_type, port);
                if (handle->device_found_cb.found_cb)
                        handle->device_found_cb.found_cb(device, handle->device_found_cb.user_data);
        }
@@ -277,7 +174,7 @@ static void __mowned_device_found_cb(Group *object, gint count, GVariant *va,
                }
                g_variant_iter_free(iter_row);
 
-               device = _create_device_handle(device_id, ip, device_type, port);
+               device = create_device_handle(device_id, ip, device_type, port);
                if (handle->mowned_device_found_cb.found_cb)
                        handle->mowned_device_found_cb.found_cb(device,
                                handle->mowned_device_found_cb.user_data);
similarity index 96%
rename from capi/src/companion_dbus_internal.h
rename to capi/src/companion_dbus.h
index 7c7f267..b77b296 100644 (file)
@@ -18,7 +18,7 @@
 #ifndef __TIZEN_NETWORK_COMMON_COMPANION_DBUS_INTERNAL_H__
 #define __TIZEN_NETWORK_COMMON_COMPANION_DBUS_INTERNAL_H__
 
-#include <companion_internal.h>
+#include <companion_private.h>
 
 int gdbus_initialize(comp_manager_s *handle);
 int gdbus_deinitialize(comp_manager_s *handle);
index 10f10dc..7ab8293 100644 (file)
@@ -18,7 +18,7 @@
 #ifndef __TIZEN_NETWORK_COMMON_COMPANION_DEBUG_H__
 #define __TIZEN_NETWORK_COMMON_COMPANION_DEBUG_H__
 
-#include <stdio.h>
+#include <dlog.h>
 
 #define NOTUSED(var) (var = var)
 
similarity index 85%
rename from capi/src/companion_internal.h
rename to capi/src/companion_private.h
index b121db9..c0f8256 100644 (file)
  *
  */
 
-#ifndef __TIZEN_NETWORK_COMMON_COMPANION_INTERNAL_H__
-#define __TIZEN_NETWORK_COMMON_COMPANION_INTERNAL_H__
+#ifndef __TIZEN_NETWORK_COMMON_COMPANION_PRIVATE_H__
+#define __TIZEN_NETWORK_COMMON_COMPANION_PRIVATE_H__
 
 #include <glib.h>
 #include <gio/gio.h>
 #include <companion.h>
 #include <companion_gdbus.h>
+#include <companion_debug.h>
+
+#include <system_info.h>
+
+#define COMPANION_FEATURE "http://tizen.org/feature/network.companion"
+
+#define CHECK_INPUT_PARAMETER(arg) \
+       if (arg == NULL) { \
+               comp_supported("INVALID_PARAMETER"); \
+               return COMP_ERROR_INVALID_PARAMETER; \
+       }
+
+#if 1
+#define CHECK_FEATURE_SUPPORTED(feature_name) { \
+       bool comp_supported = FALSE; \
+       if (!system_info_get_platform_bool(feature_name, &comp_supported)) { \
+               if (comp_supported == FALSE) { \
+                       _ERR("companion feature is disabled"); \
+                       return COMP_ERROR_NOT_SUPPORTED; \
+               } \
+       } else { \
+               _ERR("Error - Feature getting from System Info"); \
+               return COMP_ERROR_NOT_SUPPORTED; \
+       } \
+}
+#else
+#define CHECK_FEATURE_SUPPORTED(feature_name) { \
+               _ERR("[Feature] Should be check !"); \
+       }
+#endif
 
 /**
  * @brief New group found callback structure
@@ -160,4 +190,4 @@ typedef struct _companion_device_s {
 } companion_device_s;
 
 
-#endif /* __TIZEN_NETWORK_COMMON_COMPANION_INTERNAL_H__ */
+#endif /* __TIZEN_NETWORK_COMMON_COMPANION_PRIVATE_H__ */
diff --git a/capi/src/companion_util.c b/capi/src/companion_util.c
new file mode 100644 (file)
index 0000000..497735d
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+#include <glib.h>
+#include <stdlib.h>
+#include <companion.h>
+#include <companion_debug.h>
+#include <companion_private.h>
+
+companion_group_s *create_group_handle(char *uri_path, char *device_id,
+       char *group_name, char *host_addr, char *resource_type, companion_group_type_e type)
+{
+       companion_group_s *group = calloc(1, sizeof(companion_group_s));
+       if (NULL == group) {
+               /* LCOV_EXCL_START */
+               _ERR("Memory allocation failed");
+               goto CREATE_GROUP_HANDLER_ERROR;
+               /* LCOV_EXCL_STOP */
+       }
+
+       group->uri_path = g_strdup(uri_path);
+       group->device_id = g_strdup(device_id);
+       group->group_name = g_strdup(group_name);
+       group->host_addr = g_strdup(host_addr);
+       group->resource_type = g_strdup(resource_type);
+       group->type = type;
+
+       if (!group->uri_path || !group->device_id ||
+               !group->host_addr || !group->resource_type) {
+               /* LCOV_EXCL_START */
+               _ERR("Memory allocation failed");
+               goto CREATE_GROUP_HANDLER_ERROR;
+               /* LCOV_EXCL_STOP */
+       }
+       return group;
+
+CREATE_GROUP_HANDLER_ERROR:
+       /* LCOV_EXCL_START */
+       if (group) {
+               if (group->uri_path) {
+                       free(group->uri_path);
+                       group->uri_path = NULL;
+               }
+               if (group->device_id) {
+                       free(group->device_id);
+                       group->device_id = NULL;
+               }
+               if (group->group_name) {
+                       free(group->group_name);
+                       group->group_name = NULL;
+               }
+               if (group->host_addr) {
+                       free(group->host_addr);
+                       group->host_addr = NULL;
+               }
+               if (group->resource_type) {
+                       free(group->resource_type);
+                       group->resource_type = NULL;
+               }
+               free(group);
+               group = NULL;
+       }
+       return NULL;
+       /* LCOV_EXCL_STOP */
+}
+
+companion_device_s *create_device_handle(char *device_id, char *ip,
+       char *device_type, int port)
+{
+       companion_device_s *device = calloc(1, sizeof(companion_device_s));
+       if (NULL == device) {
+               /* LCOV_EXCL_START */
+               _ERR("Memory allocation failed");
+               goto CREATE_DEVICE_HANDLER_ERROR;
+               /* LCOV_EXCL_STOP */
+       }
+
+       device->device_id = g_strdup(device_id);
+       device->ip = g_strdup(ip);
+       device->device_type = g_strdup(device_type);
+       device->port = port;
+
+       if (!device->device_id || !device->ip || !device->device_type) {
+               /* LCOV_EXCL_START */
+               _ERR("Memory allocation failed");
+               goto CREATE_DEVICE_HANDLER_ERROR;
+               /* LCOV_EXCL_STOP */
+       }
+
+       return device;
+
+CREATE_DEVICE_HANDLER_ERROR:
+       /* LCOV_EXCL_START */
+       if (device) {
+               if (device->device_id) {
+                       free(device->device_id);
+                       device->device_id = NULL;
+               }
+               if (device->ip) {
+                       free(device->ip);
+                       device->ip = NULL;
+               }
+               if (device->device_type) {
+                       free(device->device_type);
+                       device->device_type = NULL;
+               }
+               free(device);
+               device = NULL;
+       }
+       return NULL;
+       /* LCOV_EXCL_STOP */
+}
diff --git a/capi/src/companion_util.h b/capi/src/companion_util.h
new file mode 100644 (file)
index 0000000..db7314e
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef __TIZEN_NETWORK_COMMON_COMPANION_UTIL_H__
+#define __TIZEN_NETWORK_COMMON_COMPANION_UTIL_H__
+
+#include <companion_private.h>
+
+companion_group_s *create_group_handle(char *uri_path, char *device_id,
+       char *group_name, char *host_addr, char *resource_type, companion_group_type_e type);
+companion_device_s *create_device_handle(char *device_id, char *ip,
+       char *device_type, int port);
+
+#endif /* __TIZEN_NETWORK_COMMON_COMPANION_UTIL_H__ */
old mode 100755 (executable)
new mode 100644 (file)