case BT_GATT_SET_PROPERTY_REQUEST:
case BT_GATT_READ_CHARACTERISTIC:
case BT_GATT_DISCOVER_CHARACTERISTICS_DESCRIPTOR:
+ case BT_PBAP_CONNECT:
+ case BT_PBAP_DISCONNECT:
+ case BT_PBAP_GET_PHONEBOOK_SIZE:
+ case BT_PBAP_GET_PHONEBOOK:
+ case BT_PBAP_GET_LIST:
+ case BT_PBAP_PULL_VCARD:
+ case BT_PBAP_PHONEBOOK_SEARCH:
ret_val = cynara_check(p_cynara, client_creds, client_session, user_creds,
BT_PRIVILEGE_PUBLIC);
BT_ERR("Fail to access: %s", BT_PRIVILEGE_PUBLIC);
result = FALSE;
}
+
+ /* Need to check mediastorage privilege */
+ if (function_name == BT_PBAP_GET_PHONEBOOK ||
+ function_name == BT_PBAP_PULL_VCARD) {
+ ret_val = cynara_check(p_cynara, client_creds, client_session, user_creds,
+ MEDIASTORAGE_PRIVILEGE);
+
+ if (ret_val != CYNARA_API_ACCESS_ALLOWED) {
+ BT_ERR("Fail to access: %s", MEDIASTORAGE_PRIVILEGE);
+ result = FALSE;
+ }
+ }
break;
case BT_ENABLE_ADAPTER:
case BT_LE_WRITE_HOST_SUGGESTED_DATA_LENGTH:
case BT_LE_READ_HOST_SUGGESTED_DATA_LENGTH:
case BT_LE_SET_DATA_LENGTH:
- case BT_PBAP_CONNECT:
- case BT_PBAP_DISCONNECT:
- case BT_PBAP_GET_PHONEBOOK_SIZE:
- case BT_PBAP_GET_PHONEBOOK:
- case BT_PBAP_GET_LIST:
- case BT_PBAP_PULL_VCARD:
- case BT_PBAP_PHONEBOOK_SEARCH:
ret_val = cynara_check(p_cynara, client_creds, client_session, user_creds,
BT_PRIVILEGE_PLATFORM);
#include <syspopup_caller.h>
#endif
#include <vconf.h>
+#include <storage.h>
#include "bt-internal-types.h"
#include "bt-service-common.h"
#define PBAP_NUM_OF_FIELDS_ENTRY 29
#define PBAP_FIELD_ALL (0xFFFFFFFFFFFFFFFFULL)
+#define PBAP_DEFAULT_DOWNLAOD_PATH "/opt/usr/media/Downloads"
+#define PBAP_DEFAULT_FILE_NAME "pb.vcf"
+
char *FIELDS[] = {
"VERSION",
"FN",
BT_DBG("+");
int i;
+ int ret;
char *format_str = NULL;
char *fields_str = NULL;
char *order_str = NULL;
- char *target_file = "/opt/usr/media/Downloads/pb.vcf";
+ char *download_path = NULL;
+ char *target_file = NULL;
bt_pbap_pull_parameters_t *app_param = pbap_data->app_param;
GVariantBuilder builder;
GVariantBuilder inner_builder;
GVariant *filters;
+
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
g_variant_builder_init (&inner_builder, G_VARIANT_TYPE_ARRAY);
//
//****************************
+ ret = storage_get_directory(STORAGE_TYPE_INTERNAL,
+ STORAGE_DIRECTORY_DOWNLOADS, &download_path);
+
+ if (ret != STORAGE_ERROR_NONE) {
+ target_file = g_strdup_printf("%s/%s", PBAP_DEFAULT_DOWNLAOD_PATH,
+ PBAP_DEFAULT_FILE_NAME);
+ } else {
+ target_file = g_strdup_printf("%s/%s", download_path,
+ PBAP_DEFAULT_FILE_NAME);
+
+ if (download_path)
+ free(download_path);
+ }
+
+ DBG_SECURE("Target flie: %s", target_file);
+
g_dbus_proxy_call(proxy, "PullAll",
g_variant_new("(s@a{sv})", target_file, filters),
G_DBUS_CALL_FLAGS_NONE, -1, NULL,
BT_DBG("+");
int i;
+ int ret;
char *format_str = NULL;
char *fields_str = NULL;
- char *target_file = "/opt/usr/media/Downloads/pb.vcf";
+ char *target_file = NULL;
+ char *download_path = NULL;
char *vcard_handle = NULL;
char vcard[10] = { 0, };
GVariantBuilder builder;
BT_DBG("Handle: %s", vcard);
vcard_handle = g_strdup(vcard);
BT_DBG("vcard_handle: %s", vcard_handle);
+
+ ret = storage_get_directory(STORAGE_TYPE_INTERNAL,
+ STORAGE_DIRECTORY_DOWNLOADS, &download_path);
+
+ if (ret != STORAGE_ERROR_NONE) {
+ target_file = g_strdup_printf("%s/%s", PBAP_DEFAULT_DOWNLAOD_PATH,
+ PBAP_DEFAULT_FILE_NAME);
+ } else {
+ target_file = g_strdup_printf("%s/%s", download_path,
+ PBAP_DEFAULT_FILE_NAME);
+
+ if (download_path)
+ free(download_path);
+ }
+
+ DBG_SECURE("Target flie: %s", target_file);
+
GVariant *temp = g_variant_new("(ss@a{sv})", vcard_handle, target_file, filters);
g_dbus_proxy_call(proxy, "Pull",