[bluetooth] added getMessage implementation 64/102864/2
authorPiotr Kosko <p.kosko@samsung.com>
Wed, 9 Nov 2016 07:02:15 +0000 (08:02 +0100)
committerPyun DoHyun <dh79.pyun@samsung.com>
Thu, 8 Dec 2016 00:16:20 +0000 (16:16 -0800)
[feature] getMessage function works, listener is called after downloading file is finished.
  Path to the file is returned to callback

Change-Id: I8f8be5cce6e06cd0bd73c3a59a9a2a13c6d89aee
Signed-off-by: Piotr Kosko <p.kosko@samsung.com>
include/bluetooth_private.h
include/mobile/bluetooth_internal.h
include/mobile/bluetooth_type_internal.h
include/wearable/bluetooth_internal.h
include/wearable/bluetooth_type_internal.h
src/bluetooth-common.c
src/bluetooth-map-client.c

index 89ec912137f85797cfee1a7c003be603e59d1b48..ce62351bdb6fd2422ac68895da349553576c6d18 100644 (file)
@@ -158,7 +158,7 @@ typedef enum {
        BT_EVENT_MAP_CLIENT_LIST_FOLDERS, /**< MAP client - listFolders event*/
        BT_EVENT_MAP_CLIENT_LIST_FILTER_FIELDS, /**< MAP - get filter field list callback */
        BT_EVENT_MAP_CLIENT_LIST_MESSAGES, /**< MAP - listMessages event*/
-       BT_EVENT_MAP_CLIENT_333, /**< MAP client 333 */
+       BT_EVENT_MAP_CLIENT_GET_MESSAGE, /**< MAP - getMessage event*/
        BT_EVENT_MAP_CLIENT_444, /**< MAP client 444 */
        BT_EVENT_MAP_CLIENT_555, /**< MAP client 555 */
        BT_EVENT_MAP_CLIENT_666, /**< MAP client 666 */
index 683619c3e52f9e2ca5e9f9407c9d0cd05fbf7cdc..fb75c251c8a3859ddf8ed7a32d7458536f69cc60 100644 (file)
@@ -1730,7 +1730,8 @@ int bt_map_client_get_message(
     const char* message_object_name,
     const char* target_file,
     bool attachment,
-    bt_map_client_get_message_cb callback
+    bt_map_client_get_message_cb callback,
+    void* user_data
 );
 
 /**
index 441d5009a36ae7a94b2da5811becf051ca4a1bc8..3a215425a0eeb9295bb9d9ca7d225fe80578a3d1 100644 (file)
@@ -147,22 +147,24 @@ typedef struct {
 } bt_map_client_push_message_args_s;
 
 typedef struct {
-       char *folder;
-       char *subject;
-       char *timestamp;
-       char *sender;
-       char *sender_address;
-       char *reply_to;
-       char *recipient;
-       char *recipient_address;
-       char *type;
-       int64_t size;
-       char *status;
-       int is_priority;
-       int is_read;
-       int is_deleted;
-       int is_sent;
-       int is_protected;
+       char *file_path;
+// TODO: maybe some additional fields could be supported
+//     char *folder;
+//     char *subject;
+//     char *timestamp;
+//     char *sender;
+//     char *sender_address;
+//     char *reply_to;
+//     char *recipient;
+//     char *recipient_address;
+//     char *type;
+//     int64_t size;
+//     char *status;
+//     int is_priority;
+//     int is_read;
+//     int is_deleted;
+//     int is_sent;
+//     int is_protected;
 } bt_map_client_message_s;
 
 typedef bt_map_client_list_folders_filter_s* bt_map_client_list_folders_filter_h;
index a87c631851f2e530e74aa1efae91b1b64884b83b..4d136e56a001c127197c91624c5f4c2b972874c8 100644 (file)
@@ -1700,7 +1700,8 @@ int bt_map_client_get_message(
     const char* message_object_name,
     const char* target_file,
     bool attachment,
-    bt_map_client_get_message_cb callback
+    bt_map_client_get_message_cb callback,
+    void* user_data
 );
 
 /**
index 89b8574b5e4cd1df13d7a160f32adf2e07330ad8..4e6c1df581207b0407b5b4adac4291b91d6eae71 100644 (file)
@@ -149,22 +149,24 @@ typedef struct {
 } bt_map_client_push_message_args_s;
 
 typedef struct {
-       char *folder;
-       char *subject;
-       char *timestamp;
-       char *sender;
-       char *sender_address;
-       char *reply_to;
-       char *recipient;
-       char *recipient_address;
-       char *type;
-       int64_t size;
-       char *status;
-       int is_priority;
-       int is_read;
-       int is_deleted;
-       int is_sent;
-       int is_protected;
+       char *file_path;
+// TODO: maybe some additional fields could be supported
+//     char *folder;
+//     char *subject;
+//     char *timestamp;
+//     char *sender;
+//     char *sender_address;
+//     char *reply_to;
+//     char *recipient;
+//     char *recipient_address;
+//     char *type;
+//     int64_t size;
+//     char *status;
+//     int is_priority;
+//     int is_read;
+//     int is_deleted;
+//     int is_sent;
+//     int is_protected;
 } bt_map_client_message_s;
 
 typedef bt_map_client_list_folders_filter_s* bt_map_client_list_folders_filter_h;
index ff0668e9c6d7bb8ee447355b1351e96b6e5995c1..101b6a58938ca3bfca9b44a627cc6b08b43c58d7 100644 (file)
@@ -1499,7 +1499,21 @@ static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *us
                        free(device_addr);
                break;
 
-       /// TODO MAP place for your case 3
+       case BLUETOOTH_EVENT_MAP_GET_MESSAGE_COMPLETE:
+               BT_INFO("BLUETOOTH_EVENT_MAP_GET_MESSAGE_COMPLETE event");
+
+               bt_get_message_callback_data *data = bt_event_slot_container[event_index].user_data;
+               char *target_file = (char*) data->target_file;
+               void *user_data = data->user_data;
+               free(data);
+
+               bt_map_client_message_s* res = malloc(sizeof(*res));
+               res->file_path = target_file;
+
+               ((bt_map_client_get_message_cb)bt_event_slot_container[event_index].callback)(
+                       param->result, res, user_data);
+               break;
+
        /// TODO MAP place for your case 4
        /// TODO MAP place for your case 5
        /// TODO MAP place for your case 6
@@ -3083,7 +3097,8 @@ static int __bt_get_cb_index(int event)
                return BT_EVENT_MAP_CLIENT_LIST_FILTER_FIELDS;
        case BLUETOOTH_EVENT_MAP_LIST_MESSAGES_COMPLETE:
                return BT_EVENT_MAP_CLIENT_LIST_MESSAGES;
-       /// TODO MAP place for your case 3
+       case BLUETOOTH_EVENT_MAP_GET_MESSAGE_COMPLETE:
+                       return BT_EVENT_MAP_CLIENT_GET_MESSAGE;
        /// TODO MAP place for your case 4
        /// TODO MAP place for your case 5
        /// TODO MAP place for your case 6
index 73f34502c3f414ac38942e7e91dadad68d3bc7fe..832c02905020565c3a443f37a47f78e0aa3d4b7e 100644 (file)
@@ -331,10 +331,33 @@ int bt_map_client_get_message(
     const char* message_object_name,
     const char* target_file,
     bool attachment,
-    bt_map_client_get_message_cb callback)
+    bt_map_client_get_message_cb callback,
+    void* user_data)
 {
-       /* TODO: MAP */
-       return BT_ERROR_NONE;
+       LOGE("Entered bt_map_client_get_message");
+       //BT_CHECK_MAP_CLIENT_SUPPORT();
+       BT_CHECK_INIT_STATUS();
+       BT_CHECK_MAP_CLIENT_INIT_STATUS();
+       BT_CHECK_INPUT_PARAMETER(handle);
+       BT_CHECK_INPUT_PARAMETER(message_object_name);
+       BT_CHECK_INPUT_PARAMETER(target_file);
+
+       bt_map_client_session_info_s* session = (bt_map_client_session_info_s*) handle;
+
+       bt_get_message_callback_data *data = malloc(sizeof(*data));
+       data->target_file = target_file;
+       data->user_data = user_data;
+
+       int error_code = _bt_get_error_code(bluetooth_map_client_get_message(session,
+                       message_object_name, target_file, attachment));
+       if (error_code != BT_ERROR_NONE) {
+               BT_ERR("bt_map_client_get_message %s(0x%08x)", _bt_convert_error_to_string(error_code),
+                               error_code);
+       } else {
+               _bt_set_cb(BT_EVENT_MAP_CLIENT_GET_MESSAGE, callback, data);
+       }
+
+       return error_code; /* LCOV_EXCL_STOP */
 }
 
 void bt_map_client_list_messages_filter_create(