X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fbt-internal-types.h;h=2a47799d462c15091791d0ba9036e617cc56423c;hb=refs%2Ftags%2Faccepted%2Ftizen%2Funified%2F20190904.110659;hp=159268940d1d75e04321ffd40b68c0b07d7a4a11;hpb=b18d97b4a3f3860e54edc5d82bd18803110ac0a6;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git diff --git a/include/bt-internal-types.h b/include/bt-internal-types.h index 1592689..2a47799 100644 --- a/include/bt-internal-types.h +++ b/include/bt-internal-types.h @@ -21,6 +21,7 @@ #include #include +#include #include @@ -64,9 +65,18 @@ typedef enum { 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, /* Will be added */ } bt_event_type_t; @@ -103,6 +113,7 @@ 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" @@ -130,7 +141,7 @@ 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)) @@ -174,6 +185,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, @@ -210,8 +223,7 @@ typedef enum { BT_UPDATE_LE_CONNECTION_MODE, BT_SET_PROFILE_TRUSTED, BT_GET_PROFILE_TRUSTED, - BT_SET_PROFILE_RESTRICTED, - BT_GET_PROFILE_RESTRICTED, + BT_DISCONNECT_DEVICE, BT_HID_CONNECT = BT_FUNC_HID_BASE, BT_HID_DISCONNECT, BT_HID_DEVICE_ACTIVATE, @@ -253,6 +265,7 @@ typedef enum { 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, @@ -289,6 +302,7 @@ 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, @@ -318,14 +332,49 @@ typedef enum { BT_HDP_SEND_DATA, BT_HDP_REGISTER_SINK_APP, BT_HDP_UNREGISTER_SINK_APP, - BT_GATT_GET_PRIMARY_SERVICES = BT_FUNC_GATT_BASE, + 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, @@ -422,7 +471,9 @@ typedef struct { #define BT_HF_SERVICE_INTERFACE "org.tizen.HfApp" #define BT_CORE_EVENT_INTERFACE "org.projectx.bt_core_event" #define BT_HF_LOCAL_TERM_EVENT_INTERFACE "org.projectx.bt_hf_local_term" +#ifdef GATT_NO_RELAY #define BT_GATT_CHARACTERISTIC_INTERFACE "org.bluez.GattCharacteristic1" +#endif #define BT_ADAPTER_PATH "/org/projectx/bt/adapter" #define BT_LE_ADAPTER_PATH "/org/projectx/bt/le/adapter" @@ -445,6 +496,15 @@ typedef struct { #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 #define BT_ENABLED "Enabled" #define BT_DISABLED "Disabled" @@ -541,12 +601,40 @@ 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_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" +#endif + #define BT_GATT_REQ_ATT_MTU_CHANGED "GattReqAttMtuChanged" #define BT_GATT_CHAR_VAL_CHANGED "GattCharValueChanged" +#ifdef GATT_NO_RELAY #define BT_GATT_BLUEZ_CHAR_VAL_CHANGED "GattValueChanged" +#endif #define BT_HARDWARE_ERROR "HardwareError" #define BT_TX_TIMEOUT_ERROR "TxTimeoutError" #define BT_HF_LOCAL_TERM "HandsfreeLocalTermination" @@ -556,6 +644,9 @@ 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 */ @@ -573,21 +664,62 @@ typedef struct { #define BT_OTP_INDICATION "OtpIndication" #define BT_OTC_STATE_CHANGED "OtcStateChanged" +#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" + +struct bluetooth_headed_plugin_t { + int (*bt_launch_dpmpopup) (char *mode); + int (*bt_launch_system_popup)(int event_type, + const char *device_name, + 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_COMMON = 0x10, + _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); +void bluetooth_plugin_init(); +void bluetooth_plugin_deinit(); + static inline tizen_profile_t get_tizen_profile() { char *profileName = NULL; @@ -616,7 +748,12 @@ static inline tizen_profile_t get_tizen_profile() break; case 'i': case 'I': - profile = _PROFILE_IVI; + 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; @@ -625,6 +762,41 @@ static inline tizen_profile_t get_tizen_profile() 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; +} + #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) @@ -634,6 +806,7 @@ static inline tizen_profile_t get_tizen_profile() #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_profile() & (_PROFILE_TV)) +#define TIZEN_FEATURE_BLUEZ_SPEAKER_REFERENCE ((get_tizen_model()) == _MODEL_RPI3 && (get_tizen_profile()) == _PROFILE_COMMON) #ifdef __cplusplus }