[bluetooth-frwk] setFolder 46/102846/2
authorPiotr Dabrowski <p.dabrowski2@samsung.com>
Wed, 26 Oct 2016 15:37:52 +0000 (17:37 +0200)
committerPyun DoHyun <dh79.pyun@samsung.com>
Thu, 8 Dec 2016 00:18:48 +0000 (16:18 -0800)
Change-Id: I58c2c6a9eb54335920d553a6d376e9cceb6b5821

bt-api/bt-map-client.c
bt-api/bt-request-sender.c
bt-service/bt-request-handler.c
bt-service/bt-service-map-client.c
bt-service/include/bt-service-map-client.h
include/bluetooth-api.h
include/bt-internal-types.h

index fcd033c..6c6b3de 100644 (file)
@@ -98,7 +98,35 @@ BT_EXPORT_API int bluetooth_map_destroy_session(bt_map_session_info_s* session)
        return result;
 }
 
+BT_EXPORT_API int bluetooth_map_set_folder(
+       bt_map_session_info_s* session,
+       const char* name)
+{
+       BT_DBG("bluetooth_map_set_folder");
+       int result;
+
+       BT_CHECK_ENABLED(return);
+       BT_CHECK_PARAMETER(session->session_path, return);
+       BT_CHECK_PARAMETER(name, return);
 
+       BT_INIT_PARAMS();
+       BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+       g_array_append_vals(in_param1, session->session_path, strlen(session->session_path) + 1);
+       g_array_append_vals(in_param2, name, strlen(name) + 1);
+
+       result = _bt_send_request(BT_OBEX_SERVICE, BT_MAP_SET_FOLDER,
+               in_param1, in_param2, in_param3, in_param4, &out_param);
+
+       if (result != BLUETOOTH_ERROR_NONE) {
+               BT_ERR("bluetooth_map_set_folder failed");
+               return BLUETOOTH_ERROR_INTERNAL;
+       }
+
+       BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+       return result;
+}
 
 BT_EXPORT_API int bluetooth_map_update_inbox(bt_map_session_info_s* session)
 {
index e775e31..c0d05b0 100644 (file)
@@ -315,7 +315,7 @@ static void __send_request_cb(GDBusProxy *proxy,
                                request_id = g_array_index(out_param1, int, 0);
                                BT_DBG("request_id : %d", request_id);
                                _bt_add_push_request_id(request_id);
-                       } else if (cb_data->service_function == BT_MAP_555) {
+                       } else if (cb_data->service_function == BT_MAP_XXX) {
                                /* TODO: MAP service functions */
                        }
 
index 5839880..3273b2a 100644 (file)
@@ -2284,6 +2284,14 @@ int __bt_obexd_request(int function_name,
                break;
        }
 
+       case BT_MAP_SET_FOLDER: {
+               BT_DBG("BT_MAP_SET_FOLDER");
+               char *session_id = (char *)g_variant_get_data(in_param1);
+               char *name = (char *)g_variant_get_data(in_param2);
+               result = _bt_map_client_set_folder(session_id, name);
+               break;
+       }
+
        case BT_MAP_UPDATE_INBOX: {
                BT_DBG("BT_MAP_UPDATE_INBOX");
 
index 6824e50..3ebba02 100644 (file)
@@ -324,6 +324,48 @@ int _bt_destroy_session_sync(char* session_id)
        return BLUETOOTH_ERROR_NONE;
 }
 
+int _bt_map_client_set_folder(char* session_id, const char* name)
+{
+       BT_DBG("+");
+
+       GError *err = NULL;
+       GDBusConnection *g_conn;
+       GDBusProxy *message_proxy;
+       GVariant *ret = NULL;
+
+       g_conn = _bt_gdbus_get_session_gconn();
+       ret_if(g_conn == NULL);
+
+       GVariant *param = g_variant_new("(o)", session_id);
+
+       message_proxy = g_dbus_proxy_new_sync(g_conn,
+               G_DBUS_PROXY_FLAGS_NONE, NULL,
+               BT_OBEX_SERVICE_NAME, session_id,
+               BT_OBEX_MESSAGE_INTERFACE, NULL, &err);
+
+       retv_if(message_proxy == NULL, BLUETOOTH_ERROR_INTERNAL);
+
+       ret = g_dbus_proxy_call_sync(message_proxy,
+                               "SetFolder", g_variant_new("(s)", name),
+                               G_DBUS_CALL_FLAGS_NONE, DBUS_TIMEOUT,
+                               NULL, &err);
+
+       if (ret == NULL) {
+               if (err != NULL) {
+                       BT_ERR("SetFolder Error: %s\n", err->message);
+                       g_error_free(err);
+               }
+       } else {
+               g_variant_unref(ret);
+       }
+
+       g_object_unref(message_proxy);
+
+       BT_DBG("-");
+
+       return BLUETOOTH_ERROR_NONE;
+}
+
 int _bt_map_client_update_inbox(char* session_id)
 {
        BT_DBG("+");
index b18f201..d14f690 100644 (file)
@@ -64,6 +64,7 @@ typedef struct {
 
 int _bt_create_session_sync(char* address, char** session_id);
 int _bt_destroy_session_sync(char* session_id);
+int _bt_map_client_set_folder(char* session_id, const char* name);
 int _bt_map_client_update_inbox(char* session_id);
 /* TODO: MAP */
 
index 25f2ca0..92bc51a 100644 (file)
@@ -4865,6 +4865,27 @@ int bluetooth_map_init(void);
 
  int bluetooth_map_destroy_session(bt_map_session_info_s* session);
 
+ /**
+  * @fn int bluetooth_map_set_folder(const char *name)
+  * @brief Request set folder.
+  *
+  * This function is a synchronous call.
+  * No event corresponding to this api
+  *
+  * @return   BLUETOOTH_ERROR_NONE  - Success \n
+  *              BLUETOOTH_ERROR_DEVICE_NOT_ENABLED - Device is not enabled \n
+  *              BLUETOOTH_ERROR_INTERNAL - Update inbox failed \n
+  *
+  * @exception   None
+  * @param[in]   name   Folder name.
+  * @param[in]   remote_address   The remote device Bd address.
+  * @remark      None
+  */
+  int bluetooth_map_set_folder(
+        bt_map_session_info_s* session,
+        const char *name
+  );
+
 /**
  * @fn int bluetooth_map_update_inbox(void)
  * @brief Request remote to update its inbox.
index ab0b05a..297b4bd 100644 (file)
@@ -261,8 +261,8 @@ typedef enum {
        BT_MAP_DESTROY_SESSION,
        BT_MAP_UPDATE_INBOX,
        BT_MAP_LIST_FOLDERS,
-       BT_MAP_555,
-       BT_MAP_666,
+       BT_MAP_SET_FOLDER,
+       BT_MAP_XXX, /* TODO: MAP */
        BT_OBEX_SERVER_ALLOCATE,
        BT_OBEX_SERVER_DEALLOCATE,
        BT_OBEX_SERVER_IS_ACTIVATED,