X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fbt-internal-types.h;h=2fa871fcde8ba675fe3254757a10588e6ecf886e;hb=11a2146c5da78bd7a7dead1216646b4b18d5c701;hp=665aada975204debb0c58337a9b6dc7b15376992;hpb=41bfe957df119c7d3693451fe94b950bccf70904;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git diff --git a/include/bt-internal-types.h b/include/bt-internal-types.h old mode 100755 new mode 100644 index 665aada..f8e577a --- a/include/bt-internal-types.h +++ b/include/bt-internal-types.h @@ -1,11 +1,5 @@ /* - * Bluetooth-frwk - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Hocheol Seo - * Girishashok Joshi - * Chanyeol Park + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,15 +21,32 @@ #include #include +#include #include #include "bluetooth-api.h" +#define NUM_APP_MAX 30 + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ +typedef struct { + time_t session_start_time; + time_t session_end_time; + uint32_t tx_time; + uint32_t rx_time; + uint32_t idle_time; + uint16_t session_connected_time; + uint16_t session_scan_time; + int num_app; + bt_battery_app_data app_data[NUM_APP_MAX]; +} bt_battery_dbus_data_t; + +typedef void (*bt_adapter_disable_bm_data_cb)(bt_battery_data *data); + typedef enum { BT_NO_SERVER, BT_NATIVE_SERVER, @@ -69,9 +80,23 @@ typedef enum { BT_AVRCP_CONTROL_EVENT, BT_A2DP_SOURCE_EVENT, BT_HID_DEVICE_EVENT, + BT_MAP_CLIENT_EVENT, #ifdef GATT_NO_RELAY BT_GATT_BLUEZ_EVENT, /* GattValueChanged from bluez directly */ #endif +//#ifndef GATT_DIRECT + BT_GATT_SERVER_EVENT, +//#endif +#ifdef TIZEN_GATT_CLIENT + BT_GATT_CLIENT_EVENT, +#endif + BT_TDS_EVENT, + BT_OTP_EVENT, + BT_HDP_EVENT, +#ifdef TIZEN_FEATURE_BT_AVC_TARGET + BT_AUDIO_AVC_EVENT, +#endif + BT_MESH_EVENT, /* Will be added */ } bt_event_type_t; @@ -108,17 +133,21 @@ typedef enum { #define BT_SERVER_ACCEPT_TIMEOUT 2000 /* 2 seconds */ #define BT_FILE_PATH_MAX 256 #define BT_META_DATA_MAX_LEN 512 + 1 +#define BT_MAX_HANDLE_LENGTH 50 #define BT_HFP_AUDIO_GATEWAY_UUID "0000111f-0000-1000-8000-00805f9b34fb" +#define BT_HSP_AUDIO_GATEWAY_UUID "00001112-0000-1000-8000-00805f9b34fb" #define BT_A2DP_UUID "0000110D-0000-1000-8000-00805F9B34FB" #define BT_AVRCP_TARGET_UUID "0000110c-0000-1000-8000-00805f9b34fb" #define BT_OPP_UUID "00001105-0000-1000-8000-00805f9b34fb" #define BT_FTP_UUID "00001106-0000-1000-8000-00805f9b34fb" +#define BT_MAP_UUID "00001134-0000-1000-8000-00805f9b34fb" #define BT_SPP_UUID "00001101-0000-1000-8000-00805f9b34fb" #define BT_HID_UUID "00001124-0000-1000-8000-00805f9b34fb" #define BT_PAN_PANU_UUID "00001115-0000-1000-8000-00805f9b34fb" #define BT_PAN_NAP_UUID "00001116-0000-1000-8000-00805f9b34fb" #define BT_PAN_GN_UUID "00001117-0000-1000-8000-00805f9b34fb" +#define BT_OBEX_PSE_UUID "0000112f-0000-1000-8000-00805f9b34fb" #define BT_FUNC_BASE ((int)(0x0000)) #define BT_FUNC_DEVICE_BASE ((int)(BT_FUNC_BASE + 0x0050)) @@ -132,13 +161,20 @@ typedef enum { #define BT_FUNC_PBAP_BASE ((int)(BT_FUNC_RFCOMM_BASE + 0x0020)) #define BT_FUNC_HDP_BASE ((int)(BT_FUNC_PBAP_BASE + 0x0020)) #define BT_FUNC_GATT_BASE ((int)(BT_FUNC_HDP_BASE + 0x0020)) -#define BT_FUNC_IPSP_BASE ((int)(BT_FUNC_GATT_BASE + 0x0020)) +#define BT_FUNC_IPSP_BASE ((int)(BT_FUNC_GATT_BASE + 0x0040)) +#define BT_FUNC_DPM_BASE ((int)(BT_FUNC_IPSP_BASE + 0x0020)) +#define BT_FUNC_PXP_BASE ((int)(BT_FUNC_DPM_BASE + 0x0030)) /* Adding 0x0030 to base, as DPM has more use case */ +#define BT_FUNC_MAP_BASE ((int)(BT_FUNC_PXP_BASE + 0x0020)) +#define BT_FUNC_TDS_BASE ((int)(BT_FUNC_MAP_BASE + 0x0020)) +#define BT_FUNC_OTP_BASE ((int)(BT_FUNC_TDS_BASE + 0x0020)) +#define BT_FUNC_MESH_BASE ((int)(BT_FUNC_OTP_BASE + 0x0020)) typedef enum { BT_CHECK_ADAPTER = BT_FUNC_BASE, BT_ENABLE_ADAPTER, BT_DISABLE_ADAPTER, BT_RECOVER_ADAPTER, + BT_BATTERY_READ_DATA, BT_SET_DISCOVERABLE_TIME, BT_GET_DISCOVERABLE_TIME, BT_IGNORE_AUTO_PAIRING, @@ -160,6 +196,7 @@ typedef enum { BT_GET_RSSI, BT_IS_CONNECTABLE, BT_SET_CONNECTABLE, + BT_GET_CONNECTABLE, BT_GET_BONDED_DEVICES, BT_RESET_ADAPTER, BT_SET_ADVERTISING, @@ -171,6 +208,8 @@ typedef enum { BT_GET_SCAN_RESPONSE_DATA, BT_SET_SCAN_RESPONSE_DATA, BT_IS_ADVERTISING, + BT_IS_LE_2M_PHY_SUPPORTED, + BT_IS_LE_CODED_PHY_SUPPORTED, BT_SET_MANUFACTURER_DATA, BT_LE_CONN_UPDATE, BT_LE_READ_MAXIMUM_DATA_LENGTH, @@ -181,8 +220,11 @@ typedef enum { BT_REMOVE_WHITE_LIST, BT_CLEAR_WHITE_LIST, BT_REGISTER_SCAN_FILTER, - BT_UNREGISTER_SCAN_FILTER, - BT_UNREGISTER_ALL_SCAN_FILTERS, + BT_IS_SCAN_FILTER_SUPPORTED, + BT_GET_PROFILE_CONNECTED_DEVICES, + BT_ENABLE_FORCE_HCI_DUMP, + BT_SET_PASSKEY_NOTIFICATION, + BT_SET_SCAN_TYPE, BT_BOND_DEVICE = BT_FUNC_DEVICE_BASE, BT_BOND_DEVICE_BY_TYPE, BT_CANCEL_BONDING, @@ -192,6 +234,7 @@ typedef enum { BT_SEARCH_SERVICE, BT_CANCEL_SEARCH_SERVICE, BT_GET_BONDED_DEVICE, + BT_GET_IS_ALIAS_SET, BT_SET_ALIAS, BT_SET_AUTHORIZATION, BT_UNSET_AUTHORIZATION, @@ -200,6 +243,9 @@ typedef enum { BT_SET_PIN_CODE, BT_UNSET_PIN_CODE, BT_UPDATE_LE_CONNECTION_MODE, + BT_SET_PROFILE_TRUSTED, + BT_GET_PROFILE_TRUSTED, + BT_DISCONNECT_DEVICE, BT_HID_CONNECT = BT_FUNC_HID_BASE, BT_HID_DISCONNECT, BT_HID_DEVICE_ACTIVATE, @@ -208,7 +254,9 @@ typedef enum { BT_HID_DEVICE_DISCONNECT, BT_HID_DEVICE_SEND_MOUSE_EVENT, BT_HID_DEVICE_SEND_KEY_EVENT, + BT_HID_DEVICE_SEND_CUSTOM_EVENT, BT_HID_DEVICE_SEND_REPLY_TO_REPORT, + BT_HID_ENABLE_BARCODE_FEATURE, BT_NETWORK_ACTIVATE = BT_FUNC_NETWORK_BASE, BT_NETWORK_DEACTIVATE, BT_NETWORK_CONNECT, @@ -227,21 +275,41 @@ typedef enum { BT_GET_SPEAKER_GAIN, BT_SET_SPEAKER_GAIN, BT_SET_CONTENT_PROTECT, + BT_AUDIO_SELECT_ROLE, + BT_AUDIO_SET_ABSOLUTE_VOLUME, + BT_AUDIO_GET_ABSOLUTE_VOLUME, + BT_AUDIO_IS_AVC_ACTIVATED, BT_OOB_READ_LOCAL_DATA = BT_FUNC_OOB_BASE, BT_OOB_ADD_REMOTE_DATA, BT_OOB_REMOVE_REMOTE_DATA, + BT_LE_OOB_READ_LOCAL_DATA, + BT_LE_OOB_ADD_REMOTE_DATA, BT_AVRCP_SET_TRACK_INFO = BT_FUNC_AVRCP_BASE, BT_AVRCP_SET_PROPERTY, BT_AVRCP_SET_PROPERTIES, BT_AVRCP_CONTROL_CONNECT, BT_AVRCP_CONTROL_DISCONNECT, + BT_AVRCP_TARGET_CONNECT, + BT_AVRCP_TARGET_DISCONNECT, BT_AVRCP_HANDLE_CONTROL, + BT_AVRCP_HANDLE_CONTROL_TO_DEST, BT_AVRCP_CONTROL_SET_PROPERTY, BT_AVRCP_CONTROL_GET_PROPERTY, BT_AVRCP_GET_TRACK_INFO, + BT_AVRCP_TRANSPORT_SET_PROPERTY, BT_OPP_PUSH_FILES = BT_FUNC_OPP_BASE, BT_OPP_CANCEL_PUSH, BT_OPP_IS_PUSHING_FILES, + BT_OPP_GET_TRANSFER_PROGRESS, + BT_MAP_CREATE_SESSION = BT_FUNC_MAP_BASE, + BT_MAP_DESTROY_SESSION, + BT_MAP_SET_FOLDER, + BT_MAP_LIST_FOLDERS, + BT_MAP_LIST_FILTER_FIELDS, + BT_MAP_LIST_MESSAGES, + BT_MAP_UPDATE_INBOX, + BT_MAP_PUSH_MESSAGE, + BT_MAP_GET_MESSAGE, BT_OBEX_SERVER_ALLOCATE, BT_OBEX_SERVER_DEALLOCATE, BT_OBEX_SERVER_IS_ACTIVATED, @@ -261,12 +329,16 @@ typedef enum { BT_RFCOMM_SOCKET_WRITE, BT_RFCOMM_CREATE_SOCKET, BT_RFCOMM_REMOVE_SOCKET, + BT_RFCOMM_LISTEN_AND_ACCEPT, BT_RFCOMM_LISTEN, BT_RFCOMM_IS_UUID_AVAILABLE, BT_RFCOMM_ACCEPT_CONNECTION, BT_RFCOMM_REJECT_CONNECTION, BT_RFCOMM_CREATE_SOCKET_EX, BT_RFCOMM_REMOVE_SOCKET_EX, + BT_RFCOMM_SEND_RX_DETAILS, + BT_RFCOMM_SEND_TX_DETAILS, + BT_RFCOMM_UPDATE_CONNECTION_INFO, BT_PBAP_CONNECT = BT_FUNC_PBAP_BASE, BT_PBAP_DISCONNECT, BT_PBAP_GET_PHONEBOOK_SIZE, @@ -281,22 +353,162 @@ typedef enum { BT_CONNECT_LE, BT_DISCONNECT_LE, BT_SET_LE_PRIVACY, + BT_REQ_ATT_MTU, + BT_GET_ATT_MTU, + BT_GET_DEVICE_IDA, + BT_SET_LE_STATIC_RANDOM_ADDRESS, + + BT_GET_GATT_DATA_BATCHING_AVAILABLE_PACKETS, + BT_ENABLE_GATT_DATA_BATCHING, + BT_DISABLE_GATT_DATA_BATCHING, + BT_HDP_CONNECT = BT_FUNC_HDP_BASE, BT_HDP_DISCONNECT, BT_HDP_SEND_DATA, - BT_GATT_GET_PRIMARY_SERVICES = BT_FUNC_GATT_BASE, + BT_HDP_REGISTER_SINK_APP, + BT_HDP_UNREGISTER_SINK_APP, + BT_HDP_GET_FD, + + BT_GATT_GET_PRIMARY_SERVICES = BT_FUNC_GATT_BASE, /* GATT Client */ +#ifdef TIZEN_GATT_CLIENT + BT_GATT_CLIENT_REGISTER, /* GATT Client */ + BT_GATT_CLIENT_UNREGISTER, /* GATT Client */ + BT_GATT_GET_SERVICE_PROPERTIES, /* GATT Client */ + BT_GATT_GET_CHARACTERISTIC_PROPERTIES, /* GATT Client */ + BT_GATT_GET_INCLUDED_SERVICES, /* GATT Client */ +#endif BT_GATT_DISCOVER_CHARACTERISTICS, BT_GATT_SET_PROPERTY_REQUEST, - BT_GATT_READ_CHARACTERISTIC, + BT_GATT_READ_CHARACTERISTIC, /* GATT Client*/ +#ifdef TIZEN_GATT_CLIENT + BT_GATT_READ_DESCRIPTOR_VALUE, /* GATT Client */ + BT_GATT_WRITE_CHARACTERISTIC_VALUE_BY_TYPE, /* GATT Client */ + BT_GATT_WRITE_DESCRIPTOR_VALUE, /* GATT Client */ + BT_GATT_WATCH_SERVICE_CHANGED_INDICATION, /* GATT Client */ + BT_GATT_ACQUIRE_WRITE, /* GATT Client */ +#endif BT_GATT_DISCOVER_CHARACTERISTICS_DESCRIPTOR, #ifndef GATT_NO_RELAY BT_GATT_WATCH_CHARACTERISTIC, BT_GATT_UNWATCH_CHARACTERISTIC, #endif + BT_GATT_REGISTER_APPLICATION, + BT_GATT_REGISTER_SERVICE, + BT_GATT_SEND_RESPONSE, +//#ifndef GATT_DIRECT + BT_GATT_SERVER_REGISTER, + BT_GATT_SERVER_ADD_SERVICE, + BT_GATT_SERVER_ADD_CHARACTERISTIC, + BT_GATT_SERVER_ADD_DESCRIPTOR, + BT_GATT_SERVER_START_SERVICE, + BT_GATT_SERVER_STOP_SERVICE, + BT_GATT_SERVER_DELETE_SERVICE, + BT_GATT_SERVER_SEND_RESPONSE, + BT_GATT_SERVER_ACQURE_WRITE_RESPONSE, + BT_GATT_SERVER_ACQUIRE_NOTIFY_RESPONSE, + BT_GATT_SERVER_SEND_INDICATION, + BT_GATT_SERVER_UPDATE_VALUE, + BT_GATT_SERVER_DEREGISTER, +//#endif BT_LE_IPSP_INIT = BT_FUNC_IPSP_BASE, BT_LE_IPSP_DEINIT, BT_LE_IPSP_CONNECT, BT_LE_IPSP_DISCONNECT, + BT_DPM_SET_ALLOW_BT_MODE = BT_FUNC_DPM_BASE, + BT_DPM_GET_ALLOW_BT_MODE, + BT_DPM_SET_DEVICE_RESTRITION, + BT_DPM_GET_DEVICE_RESTRITION, + BT_DPM_SET_UUID_RESTRITION, + BT_DPM_GET_UUID_RESTRITION, + BT_DPM_ADD_DEVICES_BLACKLIST, + BT_DPM_ADD_DEVICES_WHITELIST, + BT_DPM_ADD_UUIDS_BLACKLIST, + BT_DPM_ADD_UUIDS_WHITELIST, + BT_DPM_CLEAR_DEVICES_BLACKLIST, + BT_DPM_CLEAR_DEVICES_WHITELIST, + BT_DPM_CLEAR_UUIDS_BLACKLIST, + BT_DPM_CLEAR_UUIDS_WHITELIST, + BT_DPM_REMOVE_DEVICE_BLACKLIST, + BT_DPM_REMOVE_DEVICE_WHITELIST, + BT_DPM_REMOVE_UUID_BLACKLIST, + BT_DPM_REMOVE_UUID_WHITELIST, + BT_DPM_GET_DEVICES_BLACKLIST, + BT_DPM_GET_DEVICES_WHITELIST, + BT_DPM_GET_UUIDS_BLACKLIST, + BT_DPM_GET_UUIDS_WHITELIST, + BT_DPM_SET_ALLOW_OUTGOING_CALL, + BT_DPM_GET_ALLOW_OUTGOING_CALL, + BT_DPM_SET_PAIRING_STATE, + BT_DPM_GET_PAIRING_STATE, + BT_DPM_SET_PROFILE_STATE, + BT_DPM_GET_PROFILE_STATE, + BT_DPM_SET_DESKROP_CONNECTIVITY_STATE, + BT_DPM_GET_DESKROP_CONNECTIVITY_STATE, + BT_DPM_SET_DISCOVERABLE_STATE, + BT_DPM_GET_DISCOVERABLE_STATE, + BT_DPM_SET_LIMITED_DISCOVERABLE_STATE, + BT_DPM_GET_LIMITED_DISCOVERABLE_STATE, + BT_DPM_SET_DATA_TRANSFER_STATE, + BT_DPM_GET_DATA_TRANSFER_STATE, + BT_PXP_MONITOR_SET_PROPERTY = BT_FUNC_PXP_BASE, + BT_PXP_MONITOR_GET_PROPERTY, + BT_PXP_MONITOR_GET_SUPPORTED_SERIVCES, + BT_PXP_REPORTER_REGISTER, + BT_PXP_REPORTER_UNREGISTER, + BT_PXP_REPORTER_GET_PROPERTY, + BT_TDS_PROVIDER_REGISTER = BT_FUNC_TDS_BASE, + BT_TDS_PROVIDER_UNREGISTER, + BT_TDS_PROVIDER_SET_MANUF_DATA, + BT_TDS_PROVIDER_CREATE, + BT_TDS_PROVIDER_DESTROY, + BT_TDS_PROVIDER_SET_TRANSPORT_DATA, + BT_TDS_SEND_ACTIVATION_RESPONSE, + BT_TDS_READ_TRANSPORT_DATA, + BT_TDS_ENABLE_CONTROL_POINT, + BT_TDS_ACTIVATE_CONTROL_POINT, + BT_OTP_SERVER_INIT = BT_FUNC_OTP_BASE, + BT_OTP_SERVER_DEINIT, + BT_OTP_READ_VALUE, + BT_OTP_ENABLE_NOTIFICATION, + BT_OTP_WRITE_VALUE, + BT_LE_OTC_CONNECT, + BT_LE_OTC_DISCONNECT, + /* BT Mesh */ + BT_MESH_INIT = BT_FUNC_MESH_BASE, + BT_MESH_DEINIT, + BT_MESH_NETWORK_CREATE, + BT_MESH_NETWORK_LOAD, + BT_MESH_NETWORK_SCAN, + BT_MESH_NETWORK_CANCEL_SCAN, + BT_MESH_NETWORK_SET_CAPABILITIES, + BT_MESH_NETWORK_PROVISION_DEVICE, + BT_MESH_AUTHENTICATION_REPLY, + BT_MESH_NETWORK_SET_NAME, + BT_MESH_NETWORK_ADD_NETKEY, + BT_MESH_NETWORK_DELETE_NETKEY, + BT_MESH_NETWORK_UPDATE_NETKEY, + BT_MESH_NETWORK_ADD_APPKEY, + BT_MESH_NETWORK_DELETE_APPKEY, + BT_MESH_NETWORK_UPDATE_APPKEY, + BT_MESH_NETWORK_GET_NETKEYS, + BT_MESH_NETWORK_GET_APPKEYS, + BT_MESH_NETWORK_GET_NODES, + BT_MESH_ELEMENT_GET_MODELS, + BT_MESH_NODE_BROWSE, + BT_MESH_NODE_GET_VENDOR_FEATURES, + BT_MESH_NODE_CONFIGURE_KEY, + BT_MESH_NODE_TTL_EXECUTE, + BT_MESH_NODE_GET_NETKEYS, + BT_MESH_NODE_GET_APPKEYS, + BT_MESH_MODEL_CONFIGURE_APPKEY, + BT_MESH_MODEL_GET_APPKEY_LIST, + BT_MESH_MODEL_GET_SUBSCRIPTION_LIST, + BT_MESH_MODEL_SET_PUBLICATION, + BT_MESH_MODEL_GET_PUBLICATION, + BT_MESH_NETWORK_CREATE_GROUP, + BT_MESH_NETWORK_GET_GROUPS, + BT_MESH_MODEL_CONFIG_GROUP_SUB, + BT_MESH_MODEL_CONFIG_VIRTUAL_GROUP_SUB } bt_function_t; typedef struct { @@ -314,13 +526,16 @@ typedef struct { /* Need to convert the design ID */ #define BT_STR_NOT_SUPPORT "Not support" -#ifndef TIZEN_WEARABLE -#define BT_FILE_VISIBLE_TIME "file/private/libug-setting-bluetooth-efl/visibility_time" +#ifdef TIZEN_FEATURE_BT_DPM +#define BT_DPM_SYSPOPUP "dpm-syspopup" #endif +#define BT_FILE_VISIBLE_TIME "file/private/libug-setting-bluetooth-efl/visibility_time" + #define BT_OFF_DUE_TO_FLIGHT_MODE "file/private/bt-core/flight_mode_deactivated" #define BT_OFF_DUE_TO_POWER_SAVING_MODE "file/private/bt-core/powersaving_mode_deactivated" #define BT_OFF_DUE_TO_TIMEOUT "file/private/bt-service/bt_off_due_to_timeout" +#define BT_LAST_CONNECTED_DEVICE "file/private/bt-service/last_connected_device" #define BT_EVENT_SERVICE "org.projectx.bt_event" #define BT_HF_AGENT_SERVICE "org.bluez.HandsfreeAgent" @@ -340,6 +555,7 @@ typedef struct { #define BT_NETWORK_PATH "/org/projectx/bt/newtork" #define BT_OPP_CLIENT_PATH "/org/projectx/bt/opp_client" #define BT_OPP_SERVER_PATH "/org/projectx/bt/opp_server" +#define BT_MAP_CLIENT_PATH "/org/projectx/bt/map_client" #define BT_PBAP_CLIENT_PATH "/org/projectx/bt/pbap_client" #define BT_RFCOMM_CLIENT_PATH "/org/projectx/bt/rfcomm_client" #define BT_RFCOMM_SERVER_PATH "/org/projectx/bt/rfcomm_server" @@ -349,9 +565,27 @@ typedef struct { #define BT_AVRCP_CONTROL_PATH "/org/projectx/bt/avrcp_control" #define BT_A2DP_SOURCE_PATH "/org/projectx/bt/a2dp_source" #define BT_HID_DEVICE_PATH "/org/projectx/bt/hid_device" +#define BT_TDS_PATH "/org/projectx/bt/tds" +#define BT_OTP_PATH "/org/projectx/bt/otp" +#define BT_HDP_DEVICE_PATH "/org/projectx/bt/hdp_device" + +#ifndef GATT_DIRECT +#define BT_GATT_SERVER_PATH "/org/projectx/bt/gatt_server" +#endif + +#ifdef TIZEN_GATT_CLIENT +#define BT_GATT_CLIENT_PATH "/org/projectx/bt/gatt_client" +#endif + +#ifdef TIZEN_FEATURE_BT_AVC_TARGET +#define BT_AUDIO_AVC_PATH "/org/projectx/bt/avc_mode" +#endif + +#define BT_MESH_PATH "/org/projectx/bt/mesh" #define BT_ENABLED "Enabled" #define BT_DISABLED "Disabled" +#define BT_DISABLED_BATTERY_DATA "AdapterDisabledBatteryData" #define BT_LE_ENABLED "LeEnabled" #define BT_LE_DISABLED "LeDisabled" #define BT_DISCOVERABLE_MODE_CHANGED "DiscoverableModeChanged" @@ -370,6 +604,7 @@ typedef struct { #define BT_ADVERTISING_MANUFACTURER_DATA_CHANGED "AdvertisingManufacturerDataChanged" #define BT_SCAN_RESPONSE_MANUFACTURER_DATA_CHANGED "ScanResponseManufacturerDataChanged" #define BT_MANUFACTURER_DATA_CHANGED "ManufacturerDataChanged" +#define BT_PASSKEY_NOTIFICATION "PasskeyNotification" #define BT_DEVICE_CONNECTED "DeviceConnected" #define BT_DEVICE_DISCONNECTED "DeviceDisconnected" #define BT_DEVICE_PROFILE_STATE_CHANGED "ProfileStateChanged" @@ -384,9 +619,12 @@ typedef struct { #define BT_RSSI_MONITORING_ENABLED "RssiMonitoringEnabled" #define BT_RSSI_ALERT "RssiMonitoringAlert" #define BT_RAW_RSSI_EVENT "RawRssiEvent" +#define BT_SUPPORTED_PROFILE_TRUSTED "SupportedProfileTrusted" #define BT_SERVICE_SEARCHED "ServiceSearched" #define BT_INPUT_CONNECTED "InputConnected" #define BT_INPUT_DISCONNECTED "InputDisconnected" +#define BT_INPUT_HID_DEVICE_CONNECTED "HidDeviceConnected" +#define BT_INPUT_HID_DEVICE_DISCONNECTED "HidDeviceDisconnected" #define BT_PBAP_CONNECTED "PbapConnected" #define BT_PBAP_DISCONNECTED "PbapDisconnected" #define BT_PBAP_PHONEBOOK_SIZE "PbapPhonebookSize" @@ -414,6 +652,13 @@ typedef struct { #define BT_NETWORK_SERVER_DISCONNECTED "NetworkServerDisconnected" #define BT_OPP_CONNECTED "OppConnected" #define BT_OPP_DISCONNECTED "OppDisconnected" +#define BT_MAP_CONNECTED "MapConnected" +#define BT_MAP_DISCONNECTED "MapDisconnected" +#define BT_MAP_LIST_FOLDERS_COMPLETE "ListFoldersComplete" +#define BT_MAP_FILTER_FIELDS_COMPLETE "MapListFiltersFieldComplete" +#define BT_MAP_LIST_MESSAGES_COMPLETE "MapListMessagesComplete" +#define BT_MAP_GET_MESSAGE_COMPLETE "MapGetMessageComplete" +#define BT_MAP_PUSH_MESSAGE_COMPLETE "MapPushMessageComplete" #define BT_TRANSFER_CONNECTED "TransferConnected" #define BT_TRANSFER_DISCONNECTED "TransferDisonnected" #define BT_TRANSFER_STARTED "TransferStarted" @@ -434,9 +679,39 @@ typedef struct { #define BT_MEDIA_PLAY_STATUS "MediaPlayStatus" #define BT_MEDIA_POSITION_STATUS "MediaPositionStatus" #define BT_MEDIA_TRACK_CHANGE "MediaTrackStatus" +#define BT_MEDIA_DELAY_CHANGE "MediaDelayStatus" +#define BT_MEDIA_VOLUME_CHANGE "MediaVolumeStatus" #define BT_NAME_OWNER_CHANGED "NameOwnerChanged" + +#ifdef TIZEN_GATT_CLIENT +#define BT_GATT_SERVER_CONNECTED "GattServerConnected" +#define BT_GATT_SERVER_DISCONNECTED "GattServerDisconnected" +#define BT_GATT_CLIENT_CONNECTED "GattClientConnected" +#define BT_GATT_CLIENT_DISCONNECTED "GattClientDisconnected" +#else #define BT_GATT_CONNECTED "GattConnected" #define BT_GATT_DISCONNECTED "GattDisconnected" +#endif + +#ifndef GATT_DIRECT +#define BT_GATT_VALUE_CHANGED "GattValueChanged" +#define BT_GATT_SERVER_READ_REQ "GattServerReadReq" +#define BT_GATT_SERVER_NOTIFICATION_COMPLETED "GattServerNotification" +#define BT_GATT_SERVER_NOTIFICATION_CHANGED "GattServerNotifChanged" +#define BT_GATT_SERVER_ACQUIRE_WRITE "GattServerACquireWrite" +#define BT_GATT_SERVER_ACQUIRE_NOTIFICATION "GattServerAcquireNotify" +#endif + +#ifdef TIZEN_GATT_CLIENT +#define BT_GATT_CLIENT_READ_CHAR "GattReadCharValue" +#define BT_GATT_CLIENT_WRITE_CHAR "GattWriteCharValue" +#define BT_GATT_CLIENT_READ_DESC "GattReadDescriptor" +#define BT_GATT_CLIENT_WRITE_DESC "GattWriteDescriptor" +#define BT_GATT_CLIENT_SERVICE_CHANGED "GattServiceChanged" +#endif + +#define BT_GATT_REQ_ATT_MTU_CHANGED "GattReqAttMtuChanged" +#define BT_GATT_SERVER_ATT_MTU_CHANGED "GattServerAttMtuChanged" #define BT_GATT_CHAR_VAL_CHANGED "GattCharValueChanged" #ifdef GATT_NO_RELAY #define BT_GATT_BLUEZ_CHAR_VAL_CHANGED "GattValueChanged" @@ -450,6 +725,206 @@ typedef struct { #define BT_IPSP_CONNECTED "IpspConnected" #define BT_IPSP_DISCONNECTED "IpspDisconnected" #define BT_LE_DATA_LENGTH_CHANGED "LEDataLengthChanged" +#define BT_HDP_CONNECTED "HDPConnected" +#define BT_HDP_DISCONNECTED "HDPDisconnected" +#define BT_IBEACON_DEVICE_FOUND "iBeaconDeviceFound" +#define BT_PXP_PROPERTY_CHANGED "PxpValueChanged" + +/* TDS */ +#define BT_TDS_ACTIVATION_REQUESTED "TdsActivationRequested" +#define BT_TDS_TRANSPORT_DATA_RECEIVED "TdsBlockDataReceived" +#define BT_TDS_ACTIVATION_RESULT "TdsActivationResult" +#define BT_TDS_CONTROL_POINT_ENABLED "TdsControlPointEnabled" +#define BT_TDS_ACTIVATION_INDICATION "TdsActivationIndication" + +/* OTP */ +#define BT_OTP_SERVER_STATE_CHANGED "OtpServerStateChanged" +#define BT_OTP_READ_CHAR_VAL "OtpReadCharVal" +#define BT_OTP_NOTIFICATION_ENABLED "OtpNotificationEnabled" +#define BT_OTP_WRITE_CHAR_VAL "OtpWriteCharVal" +#define BT_OTP_INDICATION "OtpIndication" +#define BT_OTC_STATE_CHANGED "OtcStateChanged" + +#ifdef TIZEN_FEATURE_BT_AVC_TARGET +#define BT_AUDIO_AVC_MODE_CHANGED "AvcModeChanged" +#endif + +#define HEADED_PLUGIN_FILEPATH "/usr/lib/bt-plugin-headed.so" +#define HEADED_PLUGIN_FILEPATH64 "/usr/lib64/bt-plugin-headed.so" +#define FILEPATH_ARCH_64 "/usr/lib64" + +#define BT_MESH_SCAN_STARTED "MeshScanStarted" +#define BT_MESH_SCAN_FINISHED "MeshScanFinished" +#define BT_MESH_SCAN_RESULT "MeshScanResult" +#define BT_MESH_AUTHENTICATION_REQ "MeshAuthReq" +#define BT_MESH_PROVISIONING_RESULT "MeshProvResult" +#define BT_MESH_NODE_BROWSED "MeshNodeBrowsed" +#define BT_MESH_NODE_VEND_FEATS "MeshNodeVendorFeatures" +#define BT_MESH_NODE_KEY_CONFIGURED "MeshNodeKeyConfigured" +#define BT_MESH_NODE_TTL_CONFIGURED "MeshNodeTTLConfigured" +#define BT_MESH_MODEL_APPKEY_CONFIGURED "MeshModelAppKeyConfigured" +#define BT_MESH_MODEL_APPKEY_LIST "MeshModelAppKeyList" +#define BT_MESH_MODEL_SUB_LIST "MeshModelSubscriptionList" +#define BT_MESH_MODEL_SUB_CONF "MeshModelSubConfiguration" +#define BT_MESH_MODEL_VIR_SUB_CONF "MeshModelVirSubConfiguration" +#define BT_MESH_MODEL_PUB_STATUS "MeshModelPublicationStatus" + +#define BT_FEATURE_COMMON "http://tizen.org/feature/network.bluetooth" +#define BT_FEATURE_OPP "http://tizen.org/feature/network.bluetooth.opp" + +struct bluetooth_headed_plugin_t { + int (*bt_launch_dpmpopup) (char *mode); + int (*bt_launch_system_popup)(int event_type, + const char *device_name, + const char *remote_address, + const unsigned char *auth_info, + char *passkey, + const char *filename, + const char *agent_path); + void (*bt_destroy_popup_all)(void); + bool (*bt_launch_unable_to_pairing_syspopup)(int result); + bool (*bt_is_tethering_enabled)(void); + int (*bt_get_mime_type)(char *file_name, char **mime_type); +}; + +typedef struct { + gboolean plugin_headed_enabled; + void *handle_headed; + struct bluetooth_headed_plugin_t *headed_plugin; +} bt_plugin_info_t; + +typedef enum { + _PROFILE_UNKNOWN = 0, + _PROFILE_MOBILE = 0x1, + _PROFILE_WEARABLE = 0x2, + _PROFILE_TV = 0x4, + _PROFILE_IVI = 0x8, + _PROFILE_IOT = 0x10, + _PROFILE_COMMON = 0x20, +} tizen_profile_t; + +typedef enum { + _MODEL_UNKNOWN = 0, + _MODEL_COMMON = 0x1, + _MODEL_TM1 = 0x2, + _MODEL_TM2 = 0x4, + _MODEL_TW1 = 0x8, + _MODEL_TW2 = 0x10, + _MODEL_TW3 = 0x20, + _MODEL_RPI3 = 0x40, +} tizen_model_t; + +/* For optimization, make this extern and define in a shared C file */ +extern tizen_profile_t profile; +static tizen_model_t model = _MODEL_UNKNOWN; +extern bt_plugin_info_t *headed_plugin_info; + +/* Accessing system info */ +int system_info_get_platform_string(const char *key, char **value); +bool system_info_get_platform_bool(const char *key, bool *value); + +void bluetooth_plugin_init(); +void bluetooth_plugin_deinit(); + +static inline tizen_profile_t get_tizen_profile() +{ + char *profileName = NULL; + + if (__builtin_expect(profile != _PROFILE_UNKNOWN, 1)) + return profile; + + system_info_get_platform_string("http://tizen.org/feature/profile", &profileName); + + /* To pass the checking of g_ir */ + if (!profileName) + return _PROFILE_UNKNOWN; + + switch (*profileName) { + case 'm': + case 'M': + profile = _PROFILE_MOBILE; + break; + case 'w': + case 'W': + profile = _PROFILE_WEARABLE; + break; + case 't': + case 'T': + profile = _PROFILE_TV; + break; + case 'i': + case 'I': + if (!strncasecmp(profileName, "ivi", 3)) + profile = _PROFILE_IVI; + else if (!strncasecmp(profileName, "iot", 3)) + profile = _PROFILE_IOT; + else + profile = _PROFILE_COMMON; + break; + default: // common or unknown ==> ALL ARE COMMON. + profile = _PROFILE_COMMON; + } + free(profileName); + + return profile; +} + +static inline tizen_model_t get_tizen_model(void) +{ + char *model_name = NULL; + + if (__builtin_expect(model != _MODEL_UNKNOWN, 1)) + return model; + + system_info_get_platform_string("http://tizen.org/system/model_name", &model_name); + + if (model_name == NULL) { + model = _MODEL_COMMON; + return model; + } + + if (!strcasecmp(model_name, "TM1")) + model = _MODEL_TM1; + else if (!strcasecmp(model_name, "TM2")) + model = _MODEL_TM2; + else if (!strcasecmp(model_name, "TW1")) + model = _MODEL_TW1; + else if (!strcasecmp(model_name, "TW2")) + model = _MODEL_TW2; + else if (!strcasecmp(model_name, "TW3")) + model = _MODEL_TW3; + else if (!strcasecmp(model_name, "rpi3")) + model = _MODEL_RPI3; + else + model = _MODEL_COMMON; + + free(model_name); + + return model; +} + +static inline bool get_tizen_feature_supported(char *feature) +{ + bool is_supported = false; + + system_info_get_platform_bool(feature, &is_supported); + + return is_supported ? true : false; +} + +#define TIZEN_PROFILE_WEARABLE (get_tizen_profile() == _PROFILE_WEARABLE) +#define TIZEN_PROFILE_IVI (get_tizen_profile() == _PROFILE_IVI) +#define TIZEN_PROFILE_TV (get_tizen_profile() == _PROFILE_TV) +#define TIZEN_PROFILE_MOBILE (get_tizen_profile() == _PROFILE_MOBILE) +#define TIZEN_PROFILE_IOT (get_tizen_profile() == _PROFILE_IOT) + +#define TIZEN_FEATURE_NETWORK_TETHERING_ENABLE (get_tizen_profile() & (_PROFILE_MOBILE)) +#define TIZEN_FEATURE_TELEPHONY_ENABLED (get_tizen_profile() & (_PROFILE_MOBILE)) +#define TIZEN_FEATURE_FLIGHTMODE_ENABLED (get_tizen_profile() & (_PROFILE_MOBILE | _PROFILE_WEARABLE)) +#define TIZEN_FEATURE_BT_USB_DONGLE ((get_tizen_model()) == _MODEL_COMMON && (get_tizen_profile()) == _PROFILE_TV) +#define TIZEN_FEATURE_BLUEZ_SPEAKER_REFERENCE ((get_tizen_model()) == _MODEL_RPI3 && (get_tizen_profile()) == _PROFILE_COMMON) +#define TIZEN_FEATURE_BT_SUPPORTED (get_tizen_feature_supported(BT_FEATURE_COMMON) == true) +#define TIZEN_FEATURE_OPP_SUPPORTED (get_tizen_feature_supported(BT_FEATURE_OPP) == true) #ifdef __cplusplus }