static bool is_map_client_initialized = false;
-GVariant *__g_variant_new_array_split(char *str) {
- GVariantBuilder* b = g_variant_builder_new(G_VARIANT_TYPE_ARRAY);
- char *pos = str;
- char *item;
- while ((item = strsep(&pos, ","))) {
- g_variant_builder_add(b, "{s}", item);
- }
- return g_variant_builder_end(b);
-}
-
#define BT_CHECK_MAP_CLIENT_SUPPORT() \
{ \
BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); \
BT_CHECK_INIT_STATUS();
BT_CHECK_MAP_CLIENT_INIT_STATUS();
BT_CHECK_INPUT_PARAMETER(handle);
+ BT_CHECK_INPUT_PARAMETER(filter);
+ BT_CHECK_INPUT_PARAMETER_UINT(filter->offset);
+ BT_CHECK_INPUT_PARAMETER_UINT(filter->max_count);
bt_map_client_session_info_s* session = (bt_map_client_session_info_s*) handle;
- int offset = filter->offset;
- int maxcount = filter->maxcount;
-
- if (offset < -1 || maxcount < -1) {
- return BLUETOOTH_ERROR_INVALID_PARAM;
- }
-
- int error_code = _bt_get_error_code(bluetooth_map_client_list_folders(session, offset, maxcount));
+ int error_code = _bt_get_error_code(
+ bluetooth_map_client_list_folders(
+ session,
+ (bt_map_client_list_folders_filter_t*) filter
+ )
+ );
if (error_code != BT_ERROR_NONE) {
BT_ERR("bt_map_client_list_folders %s(0x%08x)", _bt_convert_error_to_string(error_code),
error_code);
bt_map_client_session_info_s* session = (bt_map_client_session_info_s*) handle;
- GVariantBuilder b;
- g_variant_builder_init(&b, (const GVariantType*) "a{sv}");
- if (filter->offset > -1)
- g_variant_builder_add(&b, "{sv}", "Offset", g_variant_new_uint16(filter->offset));
- if (filter->max_count > -1)
- g_variant_builder_add(&b, "{sv}", "MaxCount", g_variant_new_uint16(filter->max_count));
- if (filter->subject_length > -1)
- g_variant_builder_add(&b, "{sv}", "SubjectLength", g_variant_new_byte(filter->subject_length));
- if (filter->fields != NULL)
- g_variant_builder_add(&b, "{sv}", "Fields", __g_variant_new_array_split(filter->fields));
- if (filter->types != NULL)
- g_variant_builder_add(&b, "{sv}", "Types", __g_variant_new_array_split(filter->types));
- if (filter->period_begin != NULL)
- g_variant_builder_add(&b, "{sv}", "PeriodBegin", g_variant_new_string(filter->period_begin));
- if (filter->period_end != NULL)
- g_variant_builder_add(&b, "{sv}", "PeriodEnd", g_variant_new_string(filter->period_end));
- if (filter->is_read > -1)
- g_variant_builder_add(&b, "{sv}", "Read", g_variant_new_boolean(filter->is_read == 1 ? TRUE : FALSE));
- if (filter->recipient != NULL)
- g_variant_builder_add(&b, "{sv}", "Recipient", g_variant_new_string(filter->recipient));
- if (filter->sender != NULL)
- g_variant_builder_add(&b, "{sv}", "Sender", g_variant_new_string(filter->sender));
- if (filter->is_priority > -1)
- g_variant_builder_add(&b, "{sv}", "Priority", g_variant_new_boolean(filter->is_priority == 1 ? TRUE : FALSE));
- GVariant *filter_variant = g_variant_builder_end(&b);
-
- int error_code = _bt_get_error_code(bluetooth_map_client_list_messages(session, folder, filter_variant));
+ int error_code = _bt_get_error_code(
+ bluetooth_map_client_list_messages(
+ session,
+ folder,
+ (bt_map_client_list_messages_filter_t*) filter
+ )
+ );
if (error_code != BT_ERROR_NONE) {
BT_ERR("bluetooth_map_client_list_messages %s(0x%08x)",
_bt_convert_error_to_string(error_code), error_code);
return error_code; /* LCOV_EXCL_STOP */
}
+void bt_map_client_list_folders_filter_create(
+ bt_map_client_list_folders_filter_h *filter)
+{
+ (*filter) = malloc(sizeof(bt_map_client_list_folders_filter_s));
+ (*filter)->offset = -1;
+ (*filter)->max_count = -1;
+}
+
+void bt_map_client_list_folders_filter_destroy(
+ bt_map_client_list_folders_filter_h *filter)
+{
+ free(*filter);
+ *filter = NULL;
+}
+
void bt_map_client_list_messages_filter_create(
bt_map_client_list_messages_filter_h *filter)
{