[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>
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 */
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
);
/**
} 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;
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
);
/**
} 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;
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
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
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(