From: DoHyun Pyun Date: Wed, 26 Jun 2019 06:36:52 +0000 (+0900) Subject: Clean up the common functions X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0c16f41f7ca419995699c89b4576ee0bdeb04966;p=platform%2Fcore%2Fapi%2Fbluetooth.git Clean up the common functions Change-Id: Ib7483bd62d4a890644b8119df5a6fe5176e9a1ae Signed-off-by: DoHyun Pyun --- diff --git a/include/bluetooth_private.h b/include/bluetooth_private.h index 47c562d..0de81e4 100644 --- a/include/bluetooth_private.h +++ b/include/bluetooth_private.h @@ -20,6 +20,7 @@ #include #include +#include #include #include #include diff --git a/src/bluetooth-adapter.c b/src/bluetooth-adapter.c index a969d66..25b26ed 100644 --- a/src/bluetooth-adapter.c +++ b/src/bluetooth-adapter.c @@ -1735,7 +1735,6 @@ int bt_adapter_le_start_scan(bt_adapter_le_scan_result_cb cb, void *user_data) BT_CHECK_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(cb); - _bt_le_adapter_init(); _bt_set_cb(BT_EVENT_LE_SCAN_RESULT_UPDATED, cb, user_data); error_code = _bt_get_error_code(bluetooth_start_le_discovery()); @@ -1760,7 +1759,6 @@ int bt_adapter_le_stop_scan(void) } _bt_unset_cb(BT_EVENT_LE_SCAN_RESULT_UPDATED); - _bt_le_adapter_deinit(); return error_code; } diff --git a/src/bluetooth-common.c b/src/bluetooth-common.c index a3e5b5c..0592c71 100644 --- a/src/bluetooth-common.c +++ b/src/bluetooth-common.c @@ -18,22 +18,20 @@ #include #include #include -#include -#include #include #include "bluetooth.h" #include "bluetooth_internal.h" #include "bluetooth_extension.h" #include "bluetooth_private.h" -#include "bluetooth-media-control.h" -#include "bluetooth-telephony-api.h" static bool is_initialized = false; -static bool is_le_initialized = false; + +/* These structs will be used in later */ static bt_event_sig_event_slot_s bt_event_slot_container[BT_EVENT_MAX] = { {NULL, NULL}, }; + typedef struct { int err; char *str; @@ -67,266 +65,26 @@ static bt_err2str_table_t err2str[] = { { 0, "UNKNOWN" } }; -typedef struct { - int origin_err; - int public_err; -} bt_err2pub_table_t; - -static bt_err2pub_table_t err2pub[] = { - { BLUETOOTH_ERROR_NONE, BT_ERROR_NONE }, - { BLUETOOTH_ERROR_INVALID_DATA, BT_ERROR_INVALID_PARAMETER }, - { BLUETOOTH_ERROR_INVALID_PARAM, BT_ERROR_INVALID_PARAMETER }, - { BLUETOOTH_ERROR_NOT_CONNECTED, BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED }, - { BLUETOOTH_ERROR_NOT_SUPPORT, BT_ERROR_NOT_SUPPORTED }, - { BLUETOOTH_ERROR_MEMORY_ALLOCATION, BT_ERROR_OUT_OF_MEMORY }, - { BLUETOOTH_ERROR_OUT_OF_MEMORY, BT_ERROR_OUT_OF_MEMORY }, - { BLUETOOTH_ERROR_TIMEOUT, BT_ERROR_TIMED_OUT }, - { BLUETOOTH_ERROR_DEVICE_NOT_ENABLED, BT_ERROR_NOT_ENABLED }, - { BLUETOOTH_ERROR_DEVICE_ALREADY_ENABLED, BT_ERROR_ALREADY_DONE }, - { BLUETOOTH_ERROR_ALREADY_INITIALIZED, BT_ERROR_ALREADY_DONE }, - { BLUETOOTH_ERROR_AGENT_DOES_NOT_EXIST, BT_ERROR_ALREADY_DONE }, - { BLUETOOTH_ERROR_ALREADY_DEACTIVATED, BT_ERROR_ALREADY_DONE }, - { BLUETOOTH_ERROR_ALREADY_CONNECT, BT_ERROR_ALREADY_DONE }, - { BLUETOOTH_ERROR_NOT_PAIRED, BT_ERROR_REMOTE_DEVICE_NOT_BONDED }, - { BLUETOOTH_ERROR_NOT_IN_OPERATION, BT_ERROR_NOT_IN_PROGRESS }, - { BLUETOOTH_ERROR_IN_PROGRESS, BT_ERROR_NOW_IN_PROGRESS }, - { BLUETOOTH_ERROR_DEVICE_BUSY, BT_ERROR_RESOURCE_BUSY }, - { BLUETOOTH_ERROR_CANCEL, BT_ERROR_CANCELLED }, - { BLUETOOTH_ERROR_CANCEL_BY_USER, BT_ERROR_CANCELLED }, - { BLUETOOTH_ERROR_AUTHENTICATION_FAILED, BT_ERROR_AUTH_FAILED }, - { BLUETOOTH_ERROR_HOST_DOWN, BT_ERROR_REMOTE_DEVICE_NOT_FOUND }, - { BLUETOOTH_ERROR_SERVICE_SEARCH_ERROR, BT_ERROR_SERVICE_SEARCH_FAILED }, - { BLUETOOTH_ERROR_PERMISSION_DEINED, BT_ERROR_PERMISSION_DENIED }, - { BLUETOOTH_ERROR_SERVICE_NOT_FOUND, BT_ERROR_SERVICE_NOT_FOUND }, - { BLUETOOTH_ERROR_NOT_INITIALIZED, BT_ERROR_NOT_INITIALIZED }, - { BLUETOOTH_ERROR_NO_RESOURCES, BT_ERROR_QUOTA_EXCEEDED }, - { BLUETOOTH_ERROR_AUTHENTICATION_REJECTED, BT_ERROR_AUTH_REJECTED }, - { BLUETOOTH_ERROR_AUTHORIZATION_REJECTED, BT_ERROR_AUTHORIZATION_REJECTED }, - { BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION, BT_ERROR_DEVICE_POLICY_RESTRICTION }, - { BLUETOOTH_ERROR_NO_DATA, BT_ERROR_NO_DATA }, - { BLUETOOTH_ERROR_PARING_FAILED, BT_ERROR_OPERATION_FAILED }, - { BLUETOOTH_ERROR_MAX_CONNECTION, BT_ERROR_OPERATION_FAILED }, - { BLUETOOTH_ERROR_REGISTRATION_FAILED, BT_ERROR_OPERATION_FAILED }, - { BLUETOOTH_ERROR_CONNECTION_BUSY, BT_ERROR_OPERATION_FAILED }, - { BLUETOOTH_ERROR_MAX_CLIENT, BT_ERROR_OPERATION_FAILED }, - { BLUETOOTH_ERROR_INVALID_CALLBACK, BT_ERROR_OPERATION_FAILED }, - { BLUETOOTH_ERROR_NOT_FOUND, BT_ERROR_OPERATION_FAILED }, - { BLUETOOTH_ERROR_INTERNAL, BT_ERROR_OPERATION_FAILED }, - { BLUETOOTH_ERROR_CONNECTION_ERROR, BT_ERROR_OPERATION_FAILED }, - { BLUETOOTH_ERROR_ACCESS_DENIED, BT_ERROR_OPERATION_FAILED }, - { 0xFF, BT_ERROR_OPERATION_FAILED } -}; - typedef struct { int event; int index; } bt_event2index_table_t; -static bt_event2index_table_t event2index[] = { - { BLUETOOTH_EVENT_ENABLED, BT_EVENT_STATE_CHANGED }, - { BLUETOOTH_EVENT_DISABLED, BT_EVENT_STATE_CHANGED }, - { BLUETOOTH_EVENT_LE_ENABLED, BT_EVENT_LE_STATE_CHANGED }, - { BLUETOOTH_EVENT_LE_DISABLED, BT_EVENT_LE_STATE_CHANGED }, - { BLUETOOTH_EVENT_LOCAL_NAME_CHANGED, BT_EVENT_NAME_CHANGED }, - { BLUETOOTH_EVENT_DISCOVERABLE_MODE_CHANGED, BT_EVENT_VISIBILITY_MODE_CHANGED }, - { BLUETOOTH_EVENT_DISCOVERABLE_TIMEOUT_CHANGED, BT_EVENT_VISIBILITY_DURATION_CHANGED }, - { BLUETOOTH_EVENT_DISCOVERY_STARTED, BT_EVENT_DEVICE_DISCOVERY_STATE_CHANGED }, - { BLUETOOTH_EVENT_DISCOVERY_FINISHED, BT_EVENT_DEVICE_DISCOVERY_STATE_CHANGED }, - { BLUETOOTH_EVENT_REMOTE_DEVICE_NAME_UPDATED, BT_EVENT_DEVICE_DISCOVERY_STATE_CHANGED }, - { BLUETOOTH_EVENT_BONDING_FINISHED, BT_EVENT_BOND_CREATED }, - { BLUETOOTH_EVENT_BONDED_DEVICE_REMOVED, BT_EVENT_BOND_DESTROYED }, - { BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY, BT_EVENT_AUTHENTICATION_REQUEST }, - { BLUETOOTH_EVENT_PASSKEY_REQUEST, BT_EVENT_AUTHENTICATION_REQUEST}, - { BLUETOOTH_EVENT_PIN_REQUEST, BT_EVENT_AUTHENTICATION_REQUEST }, - { BLUETOOTH_EVENT_PASSKEY_CONFIRM_REQUEST, BT_EVENT_AUTHENTICATION_REQUEST }, - { BLUETOOTH_EVENT_DEVICE_AUTHORIZED, BT_EVENT_AUTHORIZATION_CHANGED }, - { BLUETOOTH_EVENT_DEVICE_UNAUTHORIZED, BT_EVENT_AUTHORIZATION_CHANGED }, - { BLUETOOTH_EVENT_DEVICE_CONNECTED, BT_EVENT_DEVICE_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_DEVICE_DISCONNECTED, BT_EVENT_DEVICE_CONNECTION_STATUS }, -#ifdef TIZEN_GATT_CLIENT - { BLUETOOTH_EVENT_GATT_CLIENT_CONNECTED, BT_EVENT_GATT_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_GATT_CLIENT_DISCONNECTED, BT_EVENT_GATT_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_GATT_SERVER_CONNECTED, BT_EVENT_GATT_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_GATT_SERVER_DISCONNECTED, BT_EVENT_GATT_CONNECTION_STATUS }, -#else - { BLUETOOTH_EVENT_GATT_CONNECTED, BT_EVENT_GATT_CONNECTION_STATUS; }, - { BLUETOOTH_EVENT_GATT_DISCONNECTED, BT_EVENT_GATT_CONNECTION_STATUS; }, -#endif - { BLUETOOTH_EVENT_SERVICE_SEARCHED, BT_EVENT_SERVICE_SEARCHED }, - { BLUETOOTH_EVENT_RFCOMM_DATA_RECEIVED, BT_EVENT_DATA_RECEIVED }, - { BLUETOOTH_EVENT_RFCOMM_CONNECTED, BT_EVENT_CONNECTION_STATE_CHANGED }, - { BLUETOOTH_EVENT_RFCOMM_DISCONNECTED, BT_EVENT_CONNECTION_STATE_CHANGED }, - { BLUETOOTH_EVENT_RFCOMM_AUTHORIZE, BT_EVENT_RFCOMM_CONNECTION_REQUESTED }, - { BLUETOOTH_EVENT_OBEX_SERVER_CONNECTION_AUTHORIZE, BT_EVENT_OPP_CONNECTION_REQUESTED }, - { BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_AUTHORIZE, BT_EVENT_OPP_PUSH_REQUESTED }, - { BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_STARTED, BT_EVENT_OPP_SERVER_TRANSFER_PROGRESS }, - { BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_PROGRESS, BT_EVENT_OPP_SERVER_TRANSFER_PROGRESS }, - { BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_COMPLETED, BT_EVENT_OPP_SERVER_TRANSFER_FINISHED }, - { BLUETOOTH_EVENT_OPC_CONNECTED, BT_EVENT_OPP_CLIENT_PUSH_RESPONSED }, - { BLUETOOTH_EVENT_OPC_TRANSFER_STARTED, BT_EVENT_OPP_CLIENT_PUSH_PROGRESS }, - { BLUETOOTH_EVENT_OPC_TRANSFER_PROGRESS, BT_EVENT_OPP_CLIENT_PUSH_PROGRESS }, - { BLUETOOTH_EVENT_OPC_TRANSFER_COMPLETE, BT_EVENT_OPP_CLIENT_PUSH_PROGRESS }, - { BLUETOOTH_EVENT_OPC_DISCONNECTED, BT_EVENT_OPP_CLIENT_PUSH_FINISHED }, - { BLUETOOTH_EVENT_MAP_LIST_FOLDERS_COMPLETE, BT_EVENT_MAP_CLIENT_LIST_FOLDERS }, - { BLUETOOTH_EVENT_MAP_LIST_FILTER_FIELD_COMPLETE, BT_EVENT_MAP_CLIENT_LIST_FILTER_FIELDS }, - { BLUETOOTH_EVENT_MAP_LIST_MESSAGES_COMPLETE, BT_EVENT_MAP_CLIENT_LIST_MESSAGES }, - { BLUETOOTH_EVENT_MAP_GET_MESSAGE_COMPLETE, BT_EVENT_MAP_CLIENT_GET_MESSAGE }, - { BLUETOOTH_EVENT_MAP_PUSH_MESSAGE_COMPLETE, BT_EVENT_MAP_CLIENT_PUSH_MESSAGE }, - { BLUETOOTH_EVENT_NETWORK_SERVER_CONNECTED, BT_EVENT_NAP_CONNECTION_STATE_CHANGED }, - { BLUETOOTH_EVENT_NETWORK_SERVER_DISCONNECTED, BT_EVENT_NAP_CONNECTION_STATE_CHANGED }, - { BLUETOOTH_EVENT_NETWORK_CONNECTED, BT_EVENT_PAN_CONNECTION_STATE_CHANGED }, - { BLUETOOTH_EVENT_NETWORK_DISCONNECTED, BT_EVENT_PAN_CONNECTION_STATE_CHANGED }, - { BLUETOOTH_EVENT_HDP_DATA_RECEIVED, BT_EVENT_HDP_DATA_RECEIVED }, - { BLUETOOTH_EVENT_HDP_CONNECTED, BT_EVENT_HDP_CONNECTED }, - { BLUETOOTH_EVENT_HDP_DISCONNECTED, BT_EVENT_HDP_DISCONNECTED }, - { BLUETOOTH_EVENT_AG_CONNECTED, BT_EVENT_AUDIO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_AG_DISCONNECTED, BT_EVENT_AUDIO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_AG_SPEAKER_GAIN, BT_EVENT_AG_SPEAKER_GAIN_CHANGE }, - { BLUETOOTH_EVENT_AG_MIC_GAIN, BT_EVENT_AG_MICROPHONE_GAIN_CHANGE }, - { BLUETOOTH_EVENT_AG_AUDIO_CONNECTED, BT_EVENT_AUDIO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_AG_AUDIO_DISCONNECTED, BT_EVENT_AUDIO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_TELEPHONY_AUDIO_CONNECTED, BT_EVENT_AG_SCO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_TELEPHONY_AUDIO_DISCONNECTED, BT_EVENT_AG_SCO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_TELEPHONY_ANSWER_CALL, BT_EVENT_AG_CALL_HANDLING_EVENT }, - { BLUETOOTH_EVENT_TELEPHONY_RELEASE_CALL, BT_EVENT_AG_CALL_HANDLING_EVENT }, - { BLUETOOTH_EVENT_TELEPHONY_REJECT_CALL, BT_EVENT_AG_CALL_HANDLING_EVENT }, - { BLUETOOTH_EVENT_TELEPHONY_CHLD_0_RELEASE_ALL_HELD_CALL, BT_EVENT_AG_MULTI_CALL_HANDLING_EVENT }, - { BLUETOOTH_EVENT_TELEPHONY_CHLD_1_RELEASE_ALL_ACTIVE_CALL, BT_EVENT_AG_MULTI_CALL_HANDLING_EVENT }, - { BLUETOOTH_EVENT_TELEPHONY_CHLD_2_ACTIVE_HELD_CALL, BT_EVENT_AG_MULTI_CALL_HANDLING_EVENT }, - { BLUETOOTH_EVENT_TELEPHONY_CHLD_3_MERGE_CALL, BT_EVENT_AG_MULTI_CALL_HANDLING_EVENT }, - { BLUETOOTH_EVENT_TELEPHONY_CHLD_4_EXPLICIT_CALL_TRANSFER, BT_EVENT_AG_MULTI_CALL_HANDLING_EVENT }, - { BLUETOOTH_EVENT_TELEPHONY_SEND_DTMF, BT_EVENT_AG_DTMF_TRANSMITTED }, - { BLUETOOTH_EVENT_AV_CONNECTED, BT_EVENT_AUDIO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_AV_DISCONNECTED, BT_EVENT_AUDIO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_AV_SOURCE_CONNECTED, BT_EVENT_AUDIO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_AV_SOURCE_DISCONNECTED, BT_EVENT_AUDIO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_AVRCP_CONNECTED, BT_EVENT_AVRCP_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_AVRCP_DISCONNECTED, BT_EVENT_AVRCP_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_AVRCP_CONTROL_CONNECTED, BT_EVENT_AVRCP_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_AVRCP_CONTROL_DISCONNECTED, BT_EVENT_AVRCP_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_AVRCP_SETTING_SHUFFLE_STATUS, BT_EVENT_AVRCP_SHUFFLE_MODE_CHANGED }, - { BLUETOOTH_EVENT_AVRCP_CONTROL_SHUFFLE_STATUS, BT_EVENT_AVRCP_SHUFFLE_MODE_CHANGED }, - { BLUETOOTH_EVENT_AVRCP_SETTING_EQUALIZER_STATUS, BT_EVENT_AVRCP_EQUALIZER_STATE_CHANGED }, - { BLUETOOTH_EVENT_AVRCP_CONTROL_EQUALIZER_STATUS, BT_EVENT_AVRCP_EQUALIZER_STATE_CHANGED }, - { BLUETOOTH_EVENT_AVRCP_SETTING_REPEAT_STATUS, BT_EVENT_AVRCP_REPEAT_MODE_CHANGED }, - { BLUETOOTH_EVENT_AVRCP_CONTROL_REPEAT_STATUS, BT_EVENT_AVRCP_REPEAT_MODE_CHANGED }, - { BLUETOOTH_EVENT_AVRCP_SETTING_SCAN_STATUS, BT_EVENT_AVRCP_SCAN_MODE_CHANGED }, - { BLUETOOTH_EVENT_AVRCP_CONTROL_SCAN_STATUS, BT_EVENT_AVRCP_SCAN_MODE_CHANGED }, - { BLUETOOTH_EVENT_AVRCP_SONG_POSITION_STATUS, BT_EVENT_AVRCP_SONG_POSITION_CHANGED }, - { BLUETOOTH_EVENT_AVRCP_PLAY_STATUS_CHANGED, BT_EVENT_AVRCP_PLAY_STATUS_CHANGED }, - { BLUETOOTH_EVENT_AVRCP_TRACK_CHANGED, BT_EVENT_AVRCP_TRACK_INFO_CHANGED }, - { BLUETOOTH_EVENT_AVRCP_DELAY_CHANGED, BT_EVENT_AVRCP_DELAY_CHANGED }, - { BLUETOOTH_HID_CONNECTED, BT_EVENT_HID_CONNECTION_STATUS }, - { BLUETOOTH_HID_DISCONNECTED, BT_EVENT_HID_CONNECTION_STATUS }, - { BLUETOOTH_HID_DEVICE_CONNECTED, BT_EVENT_HID_DEVICE_CONNECTION_STATUS }, - { BLUETOOTH_HID_DEVICE_DISCONNECTED, BT_EVENT_HID_DEVICE_CONNECTION_STATUS }, - { BLUETOOTH_HID_DEVICE_DATA_RECEIVED, BT_EVENT_HID_DEVICE_DATA_RECEIVED }, - { BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED, BT_EVENT_GATT_CLIENT_VALUE_CHANGED }, - { BLUETOOTH_EVENT_GATT_READ_CHAR, BT_EVENT_GATT_CLIENT_READ_CHARACTERISTIC }, - { BLUETOOTH_EVENT_GATT_WRITE_CHAR, BT_EVENT_GATT_CLIENT_WRITE_CHARACTERISTIC }, - { BLUETOOTH_EVENT_GATT_READ_DESC, BT_EVENT_GATT_CLIENT_READ_DESCRIPTOR }, - { BLUETOOTH_EVENT_GATT_WRITE_DESC, BT_EVENT_GATT_CLIENT_WRITE_DESCRIPTOR }, - { BLUETOOTH_EVENT_GATT_ATT_MTU_CHANGED, BT_EVENT_GATT_ATT_MTU_CHANGE_STATUS }, - { BLUETOOTH_EVENT_MANUFACTURER_DATA_CHANGED, BT_EVENT_MANUFACTURER_DATA_CHANGED }, - { BLUETOOTH_EVENT_PASSKEY_NOTIFICATION, BT_EVENT_PASSKEY_NOTIFICATION_EVENT }, - { BLUETOOTH_EVENT_CONNECTABLE_CHANGED, BT_EVENT_CONNECTABLE_CHANGED_EVENT }, - { BLUETOOTH_EVENT_TELEPHONY_VENDOR_AT_CMD, BT_EVENT_AG_VENDOR_CMD }, - { BLUETOOTH_EVENT_RSSI_ENABLED, BT_EVENT_RSSI_ENABLED_EVENT }, - { BLUETOOTH_EVENT_RSSI_ALERT, BT_EVENT_RSSI_ALERT_EVENT }, - { BLUETOOTH_EVENT_RAW_RSSI, BT_EVENT_GET_RSSI_EVENT }, - { BLUETOOTH_EVENT_IPSP_CONNECTED, BT_EVENT_IPSP_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_IPSP_DISCONNECTED, BT_EVENT_IPSP_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_SUPPORTED_PROFILE_TRUSTED, BT_EVENT_SUPPORTED_TRUSTED_PROFILE_EVENT }, - { BLUETOOTH_EVENT_LE_DATA_LENGTH_CHANGED, BT_EVENT_LE_DATA_LENGTH_CHANGED }, - { BLUETOOTH_PBAP_CONNECTED, BT_EVENT_PBAP_CONNECTION_STATUS }, - { BLUETOOTH_PBAP_DISCONNECTED, BT_EVENT_PBAP_CONNECTION_STATUS }, - { BLUETOOTH_PBAP_PHONEBOOK_SIZE, BT_EVENT_PBAP_PHONEBOOK_SIZE }, - { BLUETOOTH_PBAP_PHONEBOOK_PULL, BT_EVENT_PBAP_PHONEBOOK_PULL }, - { BLUETOOTH_PBAP_VCARD_LIST, BT_EVENT_PBAP_VCARD_LIST }, - { BLUETOOTH_PBAP_VCARD_PULL, BT_EVENT_PBAP_VCARD_PULL }, - { BLUETOOTH_PBAP_PHONEBOOK_SEARCH, BT_EVENT_PBAP_PHONEBOOK_SEARCH }, - { BLUETOOTH_EVENT_HF_CONNECTED, BT_EVENT_AUDIO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_HF_DISCONNECTED, BT_EVENT_AUDIO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_HF_AUDIO_CONNECTED, BT_EVENT_HF_SCO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_HF_AUDIO_DISCONNECTED, BT_EVENT_HF_SCO_CONNECTION_STATUS }, - { BLUETOOTH_EVENT_HF_RING_INDICATOR, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALL_TERMINATED, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALL_STARTED, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALL_ENDED, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALL_WAITING, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALL_ON_HOLD, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALL_UNHOLD, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALL_SWAPPED, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALL_FAILED_TO_DIAL, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALL_IDLE, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALLSETUP_INCOMING, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALLSETUP_DIALING, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_CALLSETUP_ALERTING, BT_EVENT_HF_REMOTE_CALL_EVENT }, - { BLUETOOTH_EVENT_HF_VENDOR_DEP_CMD, BT_EVENT_HF_VENDOR_DEP_CMD_EVENT }, - { BLUETOOTH_EVENT_HF_VOLUME_SPEAKER, BT_EVENT_HF_SPEAKER_GAIN_CHANGE }, - { BLUETOOTH_EVENT_HF_CALL_STATUS, BT_EVENT_HF_CALL_STATUS_UPDATED_EVENT }, - { BLUETOOTH_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED, BT_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED }, - { BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_ENABLED, BT_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED }, - { BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_DISABLED, BT_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED }, - { BLUETOOTH_EVENT_IPSP_INIT_STATE_CHANGED, BT_EVENT_IPSP_INIT_STATE_CHANGED }, - { BLUETOOTH_EVENT_PXP_PROPERTY_CHANGED, BT_EVENT_PROXIMITY_REPORTER_PROPERTY_CHANGED }, - { BLUETOOTH_EVENT_TDS_ACTIVATION_REQUESTED, BT_EVENT_TDS_ACTIVATION_REQUESTED }, - { BLUETOOTH_EVENT_OTP_SERVER_STATE_CHANGED, BT_EVENT_OTP_SERVER_STATE_CHANGED }, - { 0, -1 } -}; - -/* - * Internal Functions - */ -static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *user_data); -static void __bt_le_event_proxy(int event, bluetooth_event_param_t *param, void *user_data); -static int __bt_get_cb_index(int event); -static void __bt_convert_lower_to_upper(char *origin); -static int __bt_get_bt_device_sdp_info_s(bt_device_sdp_info_s **dest, bt_sdp_info_t *source, int error); -static void __bt_free_bt_device_sdp_info_s(bt_device_sdp_info_s *sdp_info); -static int __bt_get_bt_device_connection_info_s(bt_device_connection_info_s **dest, bt_connection_info_t *source); -static void __bt_free_bt_device_connection_info_s(bt_device_connection_info_s *conn_info); -static int __bt_get_bt_adapter_device_discovery_info_s(bt_adapter_device_discovery_info_s **discovery_info, bluetooth_device_info_t *source_info); -static void __bt_free_bt_adapter_device_discovery_info_s(bt_adapter_device_discovery_info_s *discovery_info); -static int __bt_get_bt_adapter_le_device_scan_info_s(bt_adapter_le_device_scan_result_info_s **scan_info, bluetooth_le_device_info_t *source_info); -static void __bt_free_bt_adapter_le_device_scan_info_s(bt_adapter_le_device_scan_result_info_s *scan_info); - /* * Public Functions */ int bt_initialize(void) { - int ret; + is_initialized = true; - BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); - if (is_initialized != true) { - ret = bluetooth_register_callback(&__bt_event_proxy, NULL); - if (ret != BLUETOOTH_ERROR_NONE && ret != BLUETOOTH_ERROR_ALREADY_INITIALIZED) { - BT_ERR("OPERATION_FAILED(0x%08x)", BT_ERROR_OPERATION_FAILED); /* LCOV_EXCL_LINE */ -#ifdef TIZEN_FEATURE_TCT_TMP_SUPPORT - return BT_ERROR_NONE; /* LCOV_EXCL_LINE */ -#else - return BT_ERROR_OPERATION_FAILED; /* LCOV_EXCL_LINE */ -#endif - } - is_initialized = true; - } return BT_ERROR_NONE; } int bt_deinitialize(void) { - BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); BT_CHECK_INIT_STATUS(); - if (bluetooth_unregister_callback() != BLUETOOTH_ERROR_NONE) { - BT_ERR("OPERATION_FAILED(0x%08x)", BT_ERROR_OPERATION_FAILED); /* LCOV_EXCL_LINE */ -#ifdef TIZEN_FEATURE_TCT_TMP_SUPPORT - return BT_ERROR_NONE; /* LCOV_EXCL_LINE */ -#else - return BT_ERROR_OPERATION_FAILED; /* LCOV_EXCL_LINE */ -#endif - } + is_initialized = false; return BT_ERROR_NONE; @@ -334,11 +92,7 @@ int bt_deinitialize(void) int bt_get_uuid_name(const char *uuid, char **name) { - BT_CHECK_SUPPORTED_FEATURE(BT_FEATURE_COMMON); - BT_CHECK_INPUT_PARAMETER(uuid); - BT_CHECK_INPUT_PARAMETER(name); - - return _bt_get_error_code(bluetooth_get_uuid_name(uuid, name)); + return BT_ERROR_NOT_SUPPORTED; } /* @@ -373,53 +127,91 @@ bool _bt_check_cb(int events) return (bt_event_slot_container[events].callback != NULL) ? true : false; } -int _bt_le_adapter_init(void) +void _bt_convert_address_to_hex(bluetooth_device_address_t *addr_hex, const char *addr_str) { - if (is_le_initialized) - return BT_ERROR_NONE; + char *ptr1, *ptr2, *ptr3, *ptr4, *ptr5; - if (bluetooth_le_register_callback(&__bt_le_event_proxy, NULL) != BLUETOOTH_ERROR_NONE) { - BT_ERR("OPERATION_FAILED(0x%08x)", BT_ERROR_OPERATION_FAILED); /* LCOV_EXCL_LINE */ - return BT_ERROR_OPERATION_FAILED; /* LCOV_EXCL_LINE */ - } - is_le_initialized = true; + if (addr_str == NULL || addr_str[0] == '\0') + return; - return BT_ERROR_NONE; + addr_hex->addr[0] = strtol(addr_str, &ptr5, 16); + addr_hex->addr[1] = strtol(ptr5 + 1, &ptr4, 16); + addr_hex->addr[2] = strtol(ptr4 + 1, &ptr3, 16); + addr_hex->addr[3] = strtol(ptr3 + 1, &ptr2, 16); + addr_hex->addr[4] = strtol(ptr2 + 1, &ptr1, 16); + addr_hex->addr[5] = strtol(ptr1 + 1, NULL, 16); } -/* LCOV_EXCL_START */ -int _bt_le_adapter_deinit(void) +int _bt_convert_address_to_string(char **addr_str, bluetooth_device_address_t *addr_hex) { - if (!is_le_initialized) { - BT_ERR("NOT_INITIALIZED(0x%08x)", BT_ERROR_NOT_INITIALIZED); - return BT_ERROR_NOT_INITIALIZED; - } + char address[18] = { 0, }; - if (!_bt_check_cb(BT_EVENT_LE_STATE_CHANGED)) { - if (bluetooth_le_unregister_callback() != BLUETOOTH_ERROR_NONE) { - BT_ERR("OPERATION_FAILED(0x%08x)", BT_ERROR_OPERATION_FAILED); - return BT_ERROR_OPERATION_FAILED; - } - is_le_initialized = false; - } + BT_CHECK_INPUT_PARAMETER(addr_hex); - return BT_ERROR_NONE; + snprintf(address, 18, "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X", addr_hex->addr[0], addr_hex->addr[1], addr_hex->addr[2], addr_hex->addr[3], addr_hex->addr[4], addr_hex->addr[5]); + *addr_str = strdup(address); + + if (*addr_str != NULL) + return BT_ERROR_NONE; + else + return BT_ERROR_OUT_OF_MEMORY; /* LCOV_EXCL_LINE */ } -/* LCOV_EXCL_STOP */ int _bt_get_error_code(int origin_error) { - int i; + return BT_ERROR_OPERATION_FAILED; +} + +char *_bt_convert_uuid_to_uuid128(const char *uuid) +{ + int len; + char *uuid128; + + len = strlen(uuid); + + switch (len) { + case 4: /* UUID 16bits */ + uuid128 = g_strdup_printf("0000%s-0000-1000-8000-00805f9b34fb", uuid); + break; + + case 8: /* UUID 32bits */ + uuid128 = g_strdup_printf("%s-0000-1000-8000-00805f9b34fb", uuid); /* LCOV_EXCL_LINE */ + break; /* LCOV_EXCL_LINE */ + + case 36: /* UUID 128bits */ + uuid128 = strdup(uuid); /* LCOV_EXCL_LINE */ + break; /* LCOV_EXCL_LINE */ + + default: + return NULL; + } + + return uuid128; +} - for (i = 0; err2pub[i].origin_err != 0xFF; i++) { - if (err2pub[i].origin_err == origin_error) - return err2pub[i].public_err; +bt_adapter_visibility_mode_e _bt_get_bt_visibility_mode_e(bluetooth_discoverable_mode_t mode) +{ + switch (mode) { + case BLUETOOTH_DISCOVERABLE_MODE_TIME_LIMITED_DISCOVERABLE: + return BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE; + case BLUETOOTH_DISCOVERABLE_MODE_GENERAL_DISCOVERABLE: + return BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE; /* LCOV_EXCL_LINE */ + default: + return BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE; } +} + +static void __bt_convert_lower_to_upper(char *origin) +{ + int length = strlen(origin); + int i = 0; - return BT_ERROR_OPERATION_FAILED; /* LCOV_EXCL_LINE */ + for (i = 0; i < length; i++) { + if (islower(origin[i])) + origin[i] = toupper(origin[i]); + } } -/* LCOV_EXCL_START */ int _bt_get_bt_device_info_s(bt_device_info_s **dest_dev, bluetooth_device_info_t *source_dev) { int i = 0; @@ -444,9 +236,7 @@ int _bt_get_bt_device_info_s(bt_device_info_s **dest_dev, bluetooth_device_info_ (*dest_dev)->service_uuid = (char **)malloc(sizeof(char *) *source_dev->service_index); if ((*dest_dev)->service_uuid != NULL) { for (i = 0; i < source_dev->service_index; i++) { - (*dest_dev)->service_uuid[i] = - g_strndup(source_dev->uuids[i], - BLUETOOTH_UUID_STRING_MAX - 1); + (*dest_dev)->service_uuid[i] = g_strndup(source_dev->uuids[i], BLUETOOTH_UUID_STRING_MAX - 1); if ((*dest_dev)->service_uuid[i] != NULL) __bt_convert_lower_to_upper((*dest_dev)->service_uuid[i]); } @@ -458,13 +248,11 @@ int _bt_get_bt_device_info_s(bt_device_info_s **dest_dev, bluetooth_device_info_ (*dest_dev)->is_bonded = (bool)source_dev->paired; (*dest_dev)->is_connected = source_dev->connected != BLUETOOTH_CONNECTED_LINK_NONE ? TRUE : FALSE; (*dest_dev)->is_authorized = (bool)source_dev->trust; - (*dest_dev)->manufacturer_data_len = source_dev->manufacturer_data.data_len; if (source_dev->manufacturer_data.data_len > 0) { (*dest_dev)->manufacturer_data = (char *)malloc(source_dev->manufacturer_data.data_len); if ((*dest_dev)->manufacturer_data) - memcpy((*dest_dev)->manufacturer_data, source_dev->manufacturer_data.data, - source_dev->manufacturer_data.data_len); + memcpy((*dest_dev)->manufacturer_data, source_dev->manufacturer_data.data, source_dev->manufacturer_data.data_len); else return BT_ERROR_OUT_OF_MEMORY; } else { @@ -494,7 +282,7 @@ void _bt_free_bt_device_info_s(bt_device_info_s *device_info) if (device_info->service_uuid != NULL) { for (i = 0; i < device_info->service_count; i++) { if (device_info->service_uuid[i] != NULL) - g_free(device_info->service_uuid[i]); + g_free(device_info->service_uuid[i]); } free(device_info->service_uuid); } @@ -506,2769 +294,17 @@ void _bt_free_bt_device_info_s(bt_device_info_s *device_info) device_info = NULL; } -int _bt_get_ad_data_by_type(char *in_data, int in_len, - char in_type, char **data, int *data_len) -{ - if (in_data == NULL || data == NULL || data_len == NULL) - return BLUETOOTH_ERROR_INTERNAL; - - if (in_len < 0) - return BLUETOOTH_ERROR_INTERNAL; - - int i; - int len = 0; - int type = 0; - - for (i = 0; i < in_len; i++) { - len = in_data[i]; - if (len <= 0 || i + 1 >= in_len) { - BT_ERR("Invalid advertising data"); - return BLUETOOTH_ERROR_INTERNAL; - } - - type = in_data[i + 1]; - if (type == in_type) { - i = i + 2; - len--; - break; - } - - i += len; - len = 0; - } - - if (i + len > in_len) { - BT_ERR("Invalid advertising data"); - return BLUETOOTH_ERROR_INTERNAL; - } else if (len == 0) { - BT_DBG("AD Type 0x%02x data is not set", in_type); - *data = NULL; - *data_len = 0; - return BLUETOOTH_ERROR_NONE; - } - - *data = g_memdup(&in_data[i], len); - if (*data == NULL) - return BLUETOOTH_ERROR_OUT_OF_MEMORY; - *data_len = len; - - return BLUETOOTH_ERROR_NONE; -} -/* LCOV_EXCL_STOP */ - -int _bt_convert_address_to_string(char **addr_str, bluetooth_device_address_t *addr_hex) -{ - char address[18] = { 0, }; - - BT_CHECK_INPUT_PARAMETER(addr_hex); - - snprintf(address, 18, "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X", addr_hex->addr[0], addr_hex->addr[1], addr_hex->addr[2], addr_hex->addr[3], addr_hex->addr[4], addr_hex->addr[5]); - *addr_str = strdup(address); - - if (*addr_str != NULL) - return BT_ERROR_NONE; - else - return BT_ERROR_OUT_OF_MEMORY; /* LCOV_EXCL_LINE */ -} - -void _bt_convert_address_to_hex(bluetooth_device_address_t *addr_hex, const char *addr_str) -{ - char *ptr1, *ptr2, *ptr3, *ptr4, *ptr5; - - if (addr_str == NULL || addr_str[0] == '\0') - return; - - addr_hex->addr[0] = strtol(addr_str, &ptr5, 16); - addr_hex->addr[1] = strtol(ptr5 + 1, &ptr4, 16); - addr_hex->addr[2] = strtol(ptr4 + 1, &ptr3, 16); - addr_hex->addr[3] = strtol(ptr3 + 1, &ptr2, 16); - addr_hex->addr[4] = strtol(ptr2 + 1, &ptr1, 16); - addr_hex->addr[5] = strtol(ptr1 + 1, NULL, 16); -} - char *_bt_convert_error_to_string(int error) { int i; for (i = 0; err2str[i].err != 0; i++) { if (err2str[i].err == error) - return err2str[i].str; + return err2str[i].str; } return "UNKNOWN"; /* LCOV_EXCL_LINE */ } -char *_bt_convert_uuid_to_uuid128(const char *uuid) -{ - int len; - char *uuid128; - - len = strlen(uuid); - - switch (len) { - case 4: /* UUID 16bits */ - uuid128 = g_strdup_printf("0000%s-0000-1000-8000-00805f9b34fb", uuid); - break; - - case 8: /* UUID 32bits */ - uuid128 = g_strdup_printf("%s-0000-1000-8000-00805f9b34fb", uuid); /* LCOV_EXCL_LINE */ - break; /* LCOV_EXCL_LINE */ - - case 36: /* UUID 128bits */ - uuid128 = strdup(uuid); /* LCOV_EXCL_LINE */ - break; /* LCOV_EXCL_LINE */ - - default: - return NULL; - } - - return uuid128; -} - -bt_adapter_visibility_mode_e _bt_get_bt_visibility_mode_e(bluetooth_discoverable_mode_t mode) -{ - switch (mode) { - case BLUETOOTH_DISCOVERABLE_MODE_TIME_LIMITED_DISCOVERABLE: - return BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE; - case BLUETOOTH_DISCOVERABLE_MODE_GENERAL_DISCOVERABLE: - return BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE; /* LCOV_EXCL_LINE */ - default: - return BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE; - } -} - -/* - * Internal Functions - */ - -/* LCOV_EXCL_START */ -static int __bt_get_bt_device_sdp_info_s(bt_device_sdp_info_s **dest, bt_sdp_info_t *source, int error) -{ - int i = 0; - - *dest = (bt_device_sdp_info_s *)g_malloc0(sizeof(bt_device_sdp_info_s)); - - if (_bt_convert_address_to_string(&((*dest)->remote_address), &(source->device_addr)) != BT_ERROR_NONE) { - __bt_free_bt_device_sdp_info_s(*dest); - return BT_ERROR_OUT_OF_MEMORY; - } - if (error != BT_ERROR_NONE) { - BT_DBG("In error case, ignore other fields of service search"); - return BT_ERROR_NONE; - } - - if (source->service_index > 0) { - (*dest)->service_uuid = (char **)malloc(sizeof(char *) *source->service_index); - if ((*dest)->service_uuid == NULL) { - __bt_free_bt_device_sdp_info_s(*dest); - return BT_ERROR_OUT_OF_MEMORY; - } - - for (i = 0; i < source->service_index; i++) { - (*dest)->service_uuid[i] = strdup(source->uuids[i]); - if ((*dest)->service_uuid[i] == NULL) { - __bt_free_bt_device_sdp_info_s(*dest); - return BT_ERROR_OUT_OF_MEMORY; - } - __bt_convert_lower_to_upper((*dest)->service_uuid[i]); - } - } else { - (*dest)->service_uuid = NULL; - } - (*dest)->service_count = source->service_index; - - return BT_ERROR_NONE; -} - -static void __bt_free_bt_device_sdp_info_s(bt_device_sdp_info_s *sdp_info) -{ - int i = 0; - - if (sdp_info == NULL) - return; - - if (sdp_info->remote_address != NULL) - free(sdp_info->remote_address); - - if (sdp_info->service_uuid != NULL) { - for (i = 0; i < sdp_info->service_count; i++) { - if (sdp_info->service_uuid[i] != NULL) - free(sdp_info->service_uuid[i]); - } - free(sdp_info->service_uuid); - } - - g_free(sdp_info); - sdp_info = NULL; -} - -static int __bt_get_bt_gatt_client_att_mtu_info_s(bt_gatt_client_att_mtu_info_s **dest, bluetooth_le_att_mtu_info_t *source) -{ - *dest = (bt_gatt_client_att_mtu_info_s *)g_malloc0(sizeof(bt_gatt_client_att_mtu_info_s)); - - if (_bt_convert_address_to_string(&((*dest)->remote_address), &(source->device_address)) != BT_ERROR_NONE) { - g_free(*dest); - *dest = NULL; - - return BT_ERROR_OUT_OF_MEMORY; - } - - (*dest)->mtu = source->mtu; - (*dest)->status = source->status; - - return BT_ERROR_NONE; -} - -static int __bt_get_bt_device_connection_info_s(bt_device_connection_info_s **dest, bt_connection_info_t *source) -{ - *dest = (bt_device_connection_info_s *)g_malloc0(sizeof(bt_device_connection_info_s)); - - if (_bt_convert_address_to_string(&((*dest)->remote_address), &(source->device_addr)) != BT_ERROR_NONE) { - __bt_free_bt_device_connection_info_s(*dest); - return BT_ERROR_OUT_OF_MEMORY; - } - - switch (source->addr_type) { - case 0: - (*dest)->link = BT_DEVICE_CONNECTION_LINK_BREDR; - break; - case 1: - case 2: - (*dest)->link = BT_DEVICE_CONNECTION_LINK_LE; - break; - default: - (*dest)->link = BT_DEVICE_CONNECTION_LINK_BREDR; - break; - } - - BT_INFO("Disconnect reason from FRWK[0x%x]", source->disc_reason); - - switch (source->disc_reason) { -/* After ACR for BT_DEVICE_DISCONNECT_REASON_AUTH_FAILED, will enable this code */ -#if 0 - case (int)BLUETOOTH_ERROR_AUTH_FAILURE: - (*dest)->disconn_reason = BT_DEVICE_DISCONNECT_REASON_AUTH_FAILED; - break; -#endif - case (int)BLUETOOTH_ERROR_CONNECTION_TIMEOUT: - BT_INFO("Disconnected due to Timeout"); - (*dest)->disconn_reason = BT_DEVICE_DISCONNECT_REASON_TIMEOUT; - break; - case (int)BLUETOOTH_ERROR_REMOTE_USER_TERM: - case (int)BLUETOOTH_ERROR_REMOTE_LOW_RESOURCES: - case (int)BLUETOOTH_ERROR_REMOTE_POWER_OFF: - (*dest)->disconn_reason = BT_DEVICE_DISCONNECT_REASON_REMOTE; - break; - case (int)BLUETOOTH_ERROR_LOCAL_HOST_TERM: - (*dest)->disconn_reason = BT_DEVICE_DISCONNECT_REASON_LOCAL_HOST; - break; - default: - (*dest)->disconn_reason = BT_DEVICE_DISCONNECT_REASON_UNKNOWN; - break; - } - - BT_INFO("Disconnected reason to app [0x%x]", (*dest)->disconn_reason); - return BT_ERROR_NONE; -} - -#ifdef TIZEN_FEATURE_GATT_RELAY -/* Search for handle */ -static bt_gatt_server_read_value_requested_cb __bt_gatt_attribute_get_read_cb(int att_handle, bt_gatt_server_h *server, - bt_gatt_h *gatt_handle, void **user_data) -{ - const GSList *gatt_server_list = NULL; - const GSList *l1, *l2, *l3, *l4; - - gatt_server_list = _bt_gatt_get_server_list(); - - for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) { - bt_gatt_server_s *serv = l1->data; - - if (!serv) - return NULL; - - for (l2 = serv->services; l2 != NULL; l2 = l2->next) { - bt_gatt_service_s *svc = l2->data; - for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) { - bt_gatt_characteristic_s *chr = l3->data; - - if (chr) { - if (chr->handle == att_handle) { - if (chr->read_requested_cb) { - BT_INFO("GATT Server: Handle search match found! Its a characteristic: UUID [%s]", chr->uuid); - *user_data = chr->read_requested_user_data; - *gatt_handle = chr; - *server = serv; - return chr->read_requested_cb; - } else - return NULL; - } else { - for (l4 = chr->descriptors; l4 != NULL; l4 = l4->next) { - bt_gatt_descriptor_s *desc = l4->data; - - if (desc && desc->handle == att_handle) { - if (desc->read_requested_cb) { - *user_data = desc->read_requested_user_data; - *gatt_handle = desc; - *server = serv; - BT_INFO("GATT Server: Handle search match found! Its a Desc UUID [%s]", desc->uuid); - return desc->read_requested_cb; - } else - return NULL; - } - } - } - } - } - } - } - return NULL; -} - -static bt_gatt_server_write_value_requested_cb __bt_gatt_attribute_get_value_change_cb(int att_handle, bt_gatt_h *server, - bt_gatt_h *gatt_handle, void **user_data) -{ - const GSList *gatt_server_list = NULL; - const GSList *l1, *l2, *l3, *l4; - - gatt_server_list = _bt_gatt_get_server_list(); - - for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) { - bt_gatt_server_s *serv = l1->data; - if (!serv) - return NULL; - - for (l2 = serv->services; l2 != NULL; l2 = l2->next) { - bt_gatt_service_s *svc = l2->data; - for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) { - bt_gatt_characteristic_s *chr = l3->data; - - if (chr) { - if (chr->handle == att_handle) { - if (chr->write_value_requested_cb) { - BT_INFO("GATT Server: Handle search match found! Its a characteristic: UUID [%s]", chr->uuid); - *user_data = chr->write_value_requested_user_data; - *gatt_handle = chr; - *server = svc; - return chr->write_value_requested_cb; - } else - return NULL; - } else { - for (l4 = chr->descriptors; l4 != NULL; l4 = l4->next) { - bt_gatt_descriptor_s *desc = l4->data; - - if (desc && desc->handle == att_handle) { - if (desc->write_value_requested_cb) { - *user_data = desc->write_value_requested_user_data; - *gatt_handle = desc; - *server = svc; - BT_INFO("GATT Server: Handle search match found! Its a Desc UUID [%s]", desc->uuid); - return desc->write_value_requested_cb; - } else - return NULL; - } - } - } - } - } - } - } - return NULL; -} - -static bt_gatt_server_characteristic_notification_state_changed_cb - __bt_gatt_attribute_get_notification_change_cb( - bt_gatt_server_h *server, int handle, bt_gatt_h *char_handle, void **user_data) -{ - const GSList *gatt_server_list = NULL; - const GSList *l1, *l2, *l3; - - gatt_server_list = _bt_gatt_get_server_list(); - - for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) { - bt_gatt_server_s *serv = l1->data; - - if (!serv) - return NULL; - - for (l2 = serv->services; l2 != NULL; l2 = l2->next) { - bt_gatt_service_s *svc = l2->data; - - for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) { - bt_gatt_characteristic_s *chr = l3->data; - - if (chr && chr->handle == handle) { - if (chr->notification_changed_cb) { - *user_data = chr->notification_changed_user_data; - *char_handle = (bt_gatt_h*) chr; - *server = serv; - return chr->notification_changed_cb; - } else - return NULL; - } - } - } - } - return NULL; -} - -static bt_gatt_server_notification_sent_cb __bt_gatt_attribute_get_notification_completed_cb( - bt_gatt_server_h *server, int handle, bt_gatt_h *char_handle, void **user_data) -{ - const GSList *gatt_server_list = NULL; - const GSList *l1, *l2, *l3; - - gatt_server_list = _bt_gatt_get_server_list(); - - for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) { - bt_gatt_server_s *serv = l1->data; - - if (!serv) - return NULL; - - for (l2 = serv->services; l2 != NULL; l2 = l2->next) { - bt_gatt_service_s *svc = l2->data; - - for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) { - bt_gatt_characteristic_s *chr = l3->data; - - if (chr && chr->handle == handle) { - if (chr->notified_cb) { - *user_data = chr->notified_user_data; - *char_handle = (bt_gatt_h*) chr; - *server = serv; - return chr->notified_cb; - } else - return NULL; - } - } - } - } - return NULL; -} - -void _bt_gatt_server_event_proxy(int event, gatt_server_event_param_t *param, void *user_data) -{ - bluetooth_event_param_t new_param; - new_param.event = param->event; - new_param.param_data = param->param_data; - new_param.result = param->result; - new_param.user_data = NULL; - __bt_event_proxy(event, &new_param, user_data); -} -#else -static bt_gatt_server_read_value_requested_cb __bt_gatt_attribute_get_read_cb( - bt_gatt_h service, bt_gatt_h attribute, bt_gatt_h *gatt_handle, void **user_data) -{ - gchar *svc_path = (gchar *)service; - gchar *att_path = (gchar *)attribute; - const GSList *gatt_server_list = NULL; - const GSList *l1, *l2, *l3, *l4; - - gatt_server_list = _bt_gatt_get_server_list(); - - for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) { - bt_gatt_server_s *serv = l1->data; - - if (!serv) - return NULL; - - for (l2 = serv->services; l2 != NULL; l2 = l2->next) { - bt_gatt_service_s *svc = l2->data; - - if (!svc) - return NULL; - - if (g_strcmp0(svc->path, svc_path) == 0) { - for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) { - bt_gatt_characteristic_s *chr = l3->data; - - if (chr) { - if (g_strcmp0(chr->path, att_path) == 0) { - if (chr->read_requested_cb) { - *user_data = chr->read_requested_user_data; - *gatt_handle = chr; - return chr->read_requested_cb; - } else - return NULL; - } else { - for (l4 = chr->descriptors; l4 != NULL; l4 = l4->next) { - bt_gatt_descriptor_s *desc = l4->data; - - if (desc && g_strcmp0(desc->path, att_path) == 0) { - if (desc->read_requested_cb) { - *user_data = desc->read_requested_user_data; - *gatt_handle = desc; - return desc->read_requested_cb; - } else - return NULL; - } - } - } - } - } - } - } - } - return NULL; -} - - -static bt_gatt_server_write_value_requested_cb __bt_gatt_attribute_get_value_change_cb( - bt_gatt_h service, bt_gatt_h attribute, bt_gatt_h *gatt_handle, void **user_data) -{ - gchar *svc_path = (gchar *)service; - gchar *att_path = (gchar *)attribute; - const GSList *gatt_server_list = NULL; - const GSList *l1, *l2, *l3, *l4; - - gatt_server_list = _bt_gatt_get_server_list(); - - for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) { - bt_gatt_server_s *serv = l1->data; - - if (!serv) - return NULL; - - for (l2 = serv->services; l2 != NULL; l2 = l2->next) { - bt_gatt_service_s *svc = l2->data; - - if (!svc) - return NULL; - - if (g_strcmp0(svc->path, svc_path) == 0) { - for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) { - bt_gatt_characteristic_s *chr = l3->data; - - if (chr) { - if (g_strcmp0(chr->path, att_path) == 0) { - if (chr->write_value_requested_cb) { - *user_data = chr->write_value_requested_user_data; - *gatt_handle = chr; - return chr->write_value_requested_cb; - } else - return NULL; - } else { - for (l4 = chr->descriptors; l4 != NULL; l4 = l4->next) { - bt_gatt_descriptor_s *desc = l4->data; - - if (desc && g_strcmp0(desc->path, att_path) == 0) { - if (desc->write_value_requested_cb) { - *user_data = desc->write_value_requested_user_data; - *gatt_handle = desc; - return desc->write_value_requested_cb; - } else - return NULL; - } - } - } - } - } - } - } - } - return NULL; -} - -static bt_gatt_server_characteristic_notification_state_changed_cb - __bt_gatt_attribute_get_notification_change_cb( - bt_gatt_h service, bt_gatt_h attribute, bt_gatt_h *gatt_handle, void **user_data) -{ - gchar *svc_path = (gchar *)service; - gchar *att_path = (gchar *)attribute; - const GSList *gatt_server_list = NULL; - const GSList *l1, *l2, *l3; - - gatt_server_list = _bt_gatt_get_server_list(); - - for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) { - bt_gatt_server_s *serv = l1->data; - - if (!serv) - return NULL; - - for (l2 = serv->services; l2 != NULL; l2 = l2->next) { - bt_gatt_service_s *svc = l2->data; - - if (g_strcmp0(svc->path, svc_path) == 0) { - for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) { - bt_gatt_characteristic_s *chr = l3->data; - - if (chr && g_strcmp0(chr->path, att_path) == 0) { - if (chr->notification_changed_cb) { - *user_data = chr->notification_changed_user_data; - *gatt_handle = chr; - return chr->notification_changed_cb; - } else - return NULL; - } - } - } - } - } - return NULL; -} - -static bt_gatt_server_notification_sent_cb __bt_gatt_attribute_get_notification_completed_cb( - bt_gatt_h service, bt_gatt_h attribute, void **user_data) -{ - gchar *svc_path = (gchar *)service; - gchar *att_path = (gchar *)attribute; - const GSList *gatt_server_list = NULL; - const GSList *l1, *l2, *l3; - - gatt_server_list = _bt_gatt_get_server_list(); - - for (l1 = gatt_server_list; l1 != NULL; l1 = l1->next) { - bt_gatt_server_s *serv = l1->data; - - if (!serv) - return NULL; - - for (l2 = serv->services; l2 != NULL; l2 = l2->next) { - bt_gatt_service_s *svc = l2->data; - - if (g_strcmp0(svc->path, svc_path) == 0) { - for (l3 = svc->characteristics; l3 != NULL; l3 = l3->next) { - bt_gatt_characteristic_s *chr = l3->data; - - if (chr && g_strcmp0(chr->path, att_path) == 0) { - if (chr->notified_cb) { - *user_data = chr->notified_user_data; - return chr->notified_cb; - } else - return NULL; - } - } - } - } - } - return NULL; -} -#endif - -static void __bt_free_bt_device_connection_info_s(bt_device_connection_info_s *conn_info) -{ - if (conn_info == NULL) - return; - - if (conn_info->remote_address != NULL) - free(conn_info->remote_address); - - g_free(conn_info); - conn_info = NULL; -} - -void _bt_audio_event_proxy(int event, bt_audio_event_param_t *param, void *user_data) -{ - bluetooth_event_param_t new_param; - new_param.event = param->event; - new_param.param_data = param->param_data; - new_param.result = param->result; - new_param.user_data = NULL; - __bt_event_proxy(event, &new_param, user_data); -} - -void _bt_hf_event_proxy(int event, bt_hf_event_param_t *param, void *user_data) -{ - bluetooth_event_param_t new_param; - new_param.event = param->event; - new_param.param_data = param->param_data; - new_param.result = param->result; - new_param.user_data = NULL; - __bt_event_proxy(event, &new_param, user_data); -} - -void _bt_telephony_event_proxy(int event, telephony_event_param_t *param, void *user_data) -{ - bluetooth_event_param_t new_param; - new_param.event = param->event; - new_param.param_data = param->param_data; - new_param.result = param->result; - new_param.user_data = NULL; - __bt_event_proxy(event, &new_param, user_data); -} - -void _bt_avrcp_event_proxy(int event, media_event_param_t *param, void *user_data) -{ - bluetooth_event_param_t new_param; - new_param.event = param->event; - new_param.param_data = param->param_data; - new_param.result = param->result; - new_param.user_data = param->user_data; - __bt_event_proxy(event, &new_param, user_data); -} - -void _bt_hid_event_proxy(int event, hid_event_param_t *param, void *user_data) -{ - bluetooth_event_param_t new_param; - new_param.event = param->event; - new_param.param_data = param->param_data; - new_param.result = param->result; - new_param.user_data = param->user_data; - __bt_event_proxy(event, &new_param, user_data); -} - -#ifdef TIZEN_GATT_CLIENT -void _bt_gatt_client_event_proxy(int event, - gatt_client_event_param_t *param, void *user_data) -{ - bluetooth_event_param_t new_param; - new_param.event = param->event; - new_param.param_data = param->param_data; - new_param.result = param->result; - new_param.user_data = NULL; - __bt_event_proxy(event, &new_param, user_data); -} -#endif - -/* LCOV_EXCL_STOP */ - -static bool __bt_need_to_handle(int event) -{ - int event_index = -1; - - switch (event) { - case BLUETOOTH_EVENT_ADVERTISING_STARTED: - case BLUETOOTH_EVENT_ADVERTISING_STOPPED: -#ifdef TIZEN_GATT_CLIENT - case BLUETOOTH_EVENT_GATT_CLIENT_CONNECTED: - case BLUETOOTH_EVENT_GATT_CLIENT_DISCONNECTED: - case BLUETOOTH_EVENT_GATT_SERVER_CONNECTED: - case BLUETOOTH_EVENT_GATT_SERVER_DISCONNECTED: -#else - case BLUETOOTH_EVENT_GATT_CONNECTED: - case BLUETOOTH_EVENT_GATT_DISCONNECTED: -#endif - case BLUETOOTH_EVENT_GATT_SERVER_VALUE_CHANGED: - case BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_STATE_CHANGED: - case BLUETOOTH_EVENT_GATT_SERVER_READ_REQUESTED: - case BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_COMPLETED: - case BLUETOOTH_EVENT_GATT_CLIENT_SERVICE_CHANGED: - case BLUETOOTH_EVENT_GATT_ATT_MTU_CHANGED: - case BLUETOOTH_EVENT_TDS_TRANSPORT_DATA_RECEIVED: - case BLUETOOTH_EVENT_TDS_ACTIVATION_RESULT: - case BLUETOOTH_EVENT_TDS_CONTROL_POINT_ENABLED: - case BLUETOOTH_EVENT_TDS_ACTIVATION_INDICATION: - case BLUETOOTH_EVENT_OTP_READ_CHAR_VAL: - case BLUETOOTH_EVENT_OTP_NOTIFICATION_ENABLED: - case BLUETOOTH_EVENT_OTP_WRITE_CHAR_VAL: - case BLUETOOTH_EVENT_OTP_INDICATION: - case BLUETOOTH_EVENT_OTC_STATE_CHANGED: - case BLUETOOTH_EVENT_GATT_READ_CHAR: - case BLUETOOTH_EVENT_GATT_WRITE_CHAR: - case BLUETOOTH_EVENT_GATT_READ_DESC: - case BLUETOOTH_EVENT_GATT_WRITE_DESC: - return true; - default: - break; - } - - event_index = __bt_get_cb_index(event); - if (event_index != -1 && bt_event_slot_container[event_index].callback) - return true; - - return false; -} - -static void __bt_event_proxy(int event, bluetooth_event_param_t *param, void *user_data) -{ - int call_id; - int *avrcp_mode; - int *discoverable_timeout; - int *adv_handle; - bluetooth_rfcomm_connection_t *connection_ind = NULL; - bluetooth_rfcomm_disconnection_t *disconnection_ind = NULL; - bt_socket_connection_s rfcomm_connection; - bt_device_sdp_info_s *sdp_info = NULL; - bt_device_connection_info_s *conn_info = NULL; - bt_adapter_device_discovery_info_s *discovery_info = NULL; - bt_device_info_s *bonded_device = NULL; - bluetooth_rfcomm_connection_request_t *reqeust_ind = NULL; - bt_obex_server_authorize_into_t *auth_info = NULL; - bt_obex_server_transfer_info_t *transfer_info = NULL; - bt_opc_transfer_info_t *client_info = NULL; - bluetooth_device_address_t *bd_addr = NULL; - telephony_event_callid_t *call_data = NULL; - char *device_addr = NULL; - char *phone_number = NULL; - int error_code = BT_ERROR_NONE; - int event_index = -1; - bt_gatt_char_value_t *char_val = NULL; - media_metadata_attributes_t *metadata = NULL; - bluetooth_authentication_request_info_t *auth_information = NULL; - bt_le_data_length_params_t *data_length_info = NULL; - -#ifdef TIZEN_GATT_CLIENT - bt_gatt_char_property_t *char_prop = NULL; -#endif - if (!__bt_need_to_handle(event)) - return; - - event_index = __bt_get_cb_index(event); - - switch (event) { - case BLUETOOTH_EVENT_ENABLED: - BT_INFO("bt_adapter_state_changed_cb() will be called with BT_ADAPTER_ENABLED"); /* LCOV_EXCL_LINE */ - ((bt_adapter_state_changed_cb) bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), BT_ADAPTER_ENABLED, bt_event_slot_container[event_index].user_data); - break; -/* LCOV_EXCL_START */ - case BLUETOOTH_EVENT_DISABLED: - BT_INFO("bt_adapter_state_changed_cb() will be called with BT_ADAPTER_DISABLED"); - ((bt_adapter_state_changed_cb) bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), BT_ADAPTER_DISABLED, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_LOCAL_NAME_CHANGED: - BT_INFO("bt_adapter_name_changed_cb() will be called"); - ((bt_adapter_name_changed_cb)bt_event_slot_container[event_index].callback) - ((char *)(param->param_data), bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_DISCOVERABLE_MODE_CHANGED: - BT_INFO("bt_adapter_visibility_mode_changed_cb() will be called"); - ((bt_adapter_visibility_mode_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), _bt_get_bt_visibility_mode_e(*(bt_adapter_visibility_mode_e *)(param->param_data)), bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_DISCOVERABLE_TIMEOUT_CHANGED: - BT_INFO("bt_adapter_visibility_duration_changed_cb() will be called"); - discoverable_timeout = (int *)(param->param_data); - ((bt_adapter_visibility_duration_changed_cb)bt_event_slot_container[event_index].callback) - (*discoverable_timeout, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_CONNECTABLE_CHANGED: - BT_INFO("bt_adapter_connectable_changed_cb() will be called"); - ((bt_adapter_connectable_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), *(bool *)(param->param_data), bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_SUPPORTED_PROFILE_TRUSTED: { - BT_INFO("bt_device_trusted_profile_cb() will be called"); - bt_supported_profile_trusted_t *parameter = param->param_data; - ((bt_device_trusted_profiles_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), parameter->address, parameter->profile, parameter->supported, parameter->trusted, bt_event_slot_container[event_index].user_data); - break; - } - case BLUETOOTH_EVENT_DISCOVERY_STARTED: - BT_INFO("bt_adapter_device_discovery_state_changed_cb() will be called with BT_ADAPTER_DEVICE_DISCOVERY_STARTED"); - ((bt_adapter_device_discovery_state_changed_cb) bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), BT_ADAPTER_DEVICE_DISCOVERY_STARTED, NULL, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_DISCOVERY_FINISHED: - BT_INFO("bt_adapter_device_discovery_state_changed_cb() will be called with BT_ADAPTER_DEVICE_DISCOVERY_FINISHED"); - ((bt_adapter_device_discovery_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, NULL, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_REMOTE_DEVICE_NAME_UPDATED: - BT_INFO("bt_adapter_device_discovery_state_changed_cb() will be called with BT_ADAPTER_DEVICE_DISCOVERY_FOUND"); - if (__bt_get_bt_adapter_device_discovery_info_s(&discovery_info, (bluetooth_device_info_t *)(param->param_data)) == BT_ERROR_NONE) { - ((bt_adapter_device_discovery_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), BT_ADAPTER_DEVICE_DISCOVERY_FOUND, discovery_info, bt_event_slot_container[event_index].user_data); - __bt_free_bt_adapter_device_discovery_info_s(discovery_info); - } else { - ((bt_adapter_device_discovery_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), BT_ADAPTER_DEVICE_DISCOVERY_FOUND, NULL, bt_event_slot_container[event_index].user_data); - } - break; - case BLUETOOTH_EVENT_BONDING_FINISHED: - BT_INFO("bt_device_bond_created_cb() will be called"); - _bt_get_bt_device_info_s(&bonded_device, (bluetooth_device_info_t *)(param->param_data)); - - ((bt_device_bond_created_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), bonded_device, bt_event_slot_container[event_index].user_data); - _bt_free_bt_device_info_s(bonded_device); - bonded_device = NULL; - break; - case BLUETOOTH_EVENT_BONDED_DEVICE_REMOVED: - BT_INFO("bt_device_bond_destroyed_cb() will be called"); - _bt_convert_address_to_string(&device_addr, (bluetooth_device_address_t *)(param->param_data)); - ((bt_device_bond_destroyed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), device_addr, bt_event_slot_container[event_index].user_data); - if (device_addr != NULL) - free(device_addr); - device_addr = NULL; - break; - case BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY: - BT_INFO("bt_adapter_authentication_req_cb() will be called with \ - BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY"); - auth_information = (bluetooth_authentication_request_info_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, &auth_information->device_address); - BT_DBG("BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY: name = %s address = %s passkey = %s", auth_information->device_name.name, - device_addr, auth_information->str_passkey); - - ((bt_adapter_authentication_req_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), BT_AUTH_KEYBOARD_PASSKEY_DISPLAY, auth_information->device_name.name, - device_addr, auth_information->str_passkey, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_EVENT_PIN_REQUEST: - BT_INFO("bt_adapter_authentication_req_cb() will be called with \ - BLUETOOTH_EVENT_PIN_REQUEST"); - auth_information = (bluetooth_authentication_request_info_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, &auth_information->device_address); - - BT_DBG("BUETOOTH_EVENT_PIN_REQUEST: name = %s address = %s", auth_information->device_name.name, - device_addr); - - ((bt_adapter_authentication_req_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), BT_AUTH_PIN_REQUEST, auth_information->device_name.name, device_addr, - auth_information->str_passkey, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_EVENT_PASSKEY_REQUEST: - BT_INFO("bt_adapter_authentication_req_cb will be called with \ - BLUETOOTH_EVENT_PASSKEY_REQUEST"); - - auth_information = (bluetooth_authentication_request_info_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, &auth_information->device_address); - - BT_DBG("BLUETOOTH_EVENT_PASSKEY_REQUEST: name = %s address = %s", auth_information->device_name.name, - device_addr); - - ((bt_adapter_authentication_req_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), BT_AUTH_PIN_REQUEST, auth_information->device_name.name, device_addr, - auth_information->str_passkey, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_EVENT_PASSKEY_CONFIRM_REQUEST: - BT_INFO("bt_adapter_authentication_req_cb will be called with \ - BLUETOOTH_EVENT_PASSKEY_CONFIRM_REQUEST"); - - auth_information = (bluetooth_authentication_request_info_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, &auth_information->device_address); - - BT_DBG("BLUETOOTH_EVENT_PASSKEY_CONFIRM_REQUEST: name = %s address = %s passkey = %s ", - auth_information->device_name.name, device_addr, auth_information->str_passkey); - ((bt_adapter_authentication_req_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), BT_AUTH_PASSKEY_CONFIRM_REQUEST, auth_information->device_name.name, device_addr, - auth_information->str_passkey, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_EVENT_DEVICE_AUTHORIZED: - BT_INFO("bt_device_authorization_changed_cb() will be called with BT_DEVICE_AUTHORIZED"); - _bt_convert_address_to_string(&device_addr, (bluetooth_device_address_t *)(param->param_data)); - ((bt_device_authorization_changed_cb)bt_event_slot_container[event_index].callback) - (BT_DEVICE_AUTHORIZED, device_addr, bt_event_slot_container[event_index].user_data); - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_EVENT_DEVICE_UNAUTHORIZED: - BT_INFO("bt_device_authorization_changed_cb() will be called with BT_DEVICE_UNAUTHORIZED"); - _bt_convert_address_to_string(&device_addr, (bluetooth_device_address_t *)(param->param_data)); - ((bt_device_authorization_changed_cb)bt_event_slot_container[event_index].callback) - (BT_DEVICE_UNAUTHORIZED, device_addr, bt_event_slot_container[event_index].user_data); - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_EVENT_DEVICE_CONNECTED: - BT_INFO("bt_device_connection_state_changed_cb() will be called"); - if (__bt_get_bt_device_connection_info_s(&conn_info, (bt_connection_info_t *)(param->param_data)) - == BT_ERROR_NONE) { - ((bt_device_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (true, conn_info, bt_event_slot_container[event_index].user_data); - __bt_free_bt_device_connection_info_s(conn_info); - } - break; - case BLUETOOTH_EVENT_DEVICE_DISCONNECTED: - BT_INFO("bt_device_connection_state_changed_cb() will be called"); - if (__bt_get_bt_device_connection_info_s(&conn_info, (bt_connection_info_t *)(param->param_data)) - == BT_ERROR_NONE) { - ((bt_device_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (false, conn_info, bt_event_slot_container[event_index].user_data); - __bt_free_bt_device_connection_info_s(conn_info); - } - break; - case BLUETOOTH_EVENT_RSSI_ENABLED: - BT_INFO("bt_rssi_monitor_enabled_cb() will be called"); - bt_rssi_enabled_t *enabled = (bt_rssi_enabled_t *)(param->param_data); - - if (_bt_check_cb(event_index)) { - ((bt_rssi_monitor_enabled_cb)bt_event_slot_container[event_index].callback) - (enabled->address, enabled->link_type, enabled->rssi_enabled, - bt_event_slot_container[event_index].user_data); - _bt_unset_cb(BT_EVENT_RSSI_ENABLED_EVENT); - } - break; - case BLUETOOTH_EVENT_RSSI_ALERT: { - BT_INFO("bt_rssi_alert_cb() will be called"); - int alert_type; - int rssi_dbm; - int link_type; - char *address; - bt_rssi_alert_t *rssi_alert = (bt_rssi_alert_t *)(param->param_data);; - - alert_type = rssi_alert->alert_type; - rssi_dbm = rssi_alert->rssi_dbm; - address = rssi_alert->address; - link_type = rssi_alert->link_type; - if (_bt_check_cb(event_index)) { - ((bt_rssi_alert_cb)bt_event_slot_container[event_index].callback) - (address, link_type, alert_type, rssi_dbm, - bt_event_slot_container[event_index].user_data); - } - break; - } - case BLUETOOTH_EVENT_RAW_RSSI: { - BT_INFO("bt_rssi_strength_cb() will be called"); - int rssi_dbm; - int link_type; - char *address; - bt_raw_rssi_t *raw_rssi = (bt_raw_rssi_t *)(param->param_data);; - - rssi_dbm = raw_rssi->rssi_dbm; - address = raw_rssi->address; - link_type = raw_rssi->link_type; - - if (_bt_check_cb(event_index)) { - BT_INFO("BT Address [%s] Link Type[%d] RSSI dBm[%d]", - address, link_type, rssi_dbm); - ((bt_rssi_strength_cb)bt_event_slot_container[event_index].callback) - (address, link_type, rssi_dbm, bt_event_slot_container[event_index].user_data); - _bt_unset_cb(BT_EVENT_GET_RSSI_EVENT); - } - break; - } - case BLUETOOTH_EVENT_SERVICE_SEARCHED: - BT_INFO("bt_device_service_searched_cb() will be called"); - error_code = _bt_get_error_code(param->result); - /* In service search, BT_ERROR_SERVICE_SEARCH_FAILED is returned instead of BT_ERROR_OPERATION_FAILED. */ - if (error_code == BT_ERROR_OPERATION_FAILED) - error_code = BT_ERROR_SERVICE_SEARCH_FAILED; - - if (__bt_get_bt_device_sdp_info_s(&sdp_info, (bt_sdp_info_t *)(param->param_data), error_code) - == BT_ERROR_NONE) { - ((bt_device_service_searched_cb)bt_event_slot_container[event_index].callback) - (error_code, sdp_info, bt_event_slot_container[event_index].user_data); - __bt_free_bt_device_sdp_info_s(sdp_info); - } - break; - case BLUETOOTH_EVENT_RFCOMM_DATA_RECEIVED: - /* BT_INFO("bt_socket_data_received_cb() will be * called"); */ - ((bt_socket_data_received_cb)bt_event_slot_container[event_index].callback) - ((bt_socket_received_data_s *)(param->param_data), bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_RFCOMM_CONNECTED: - BT_INFO("bt_socket_connection_state_changed_cb() will be called with BT_SOCKET_CONNECTED"); - if (param->result == BLUETOOTH_ERROR_INVALID_PARAM) - error_code = BT_ERROR_OPERATION_FAILED; - else - error_code = _bt_get_error_code(param->result); - - memset(&rfcomm_connection, 0x00, sizeof(bt_socket_connection_s)); - connection_ind = (bluetooth_rfcomm_connection_t *)(param->param_data); - - if (connection_ind) { - rfcomm_connection.socket_fd = connection_ind->socket_fd; - rfcomm_connection.local_role = connection_ind->device_role; - rfcomm_connection.server_fd = connection_ind->server_id; - - if (strlen(connection_ind->uuid) > 0) { - rfcomm_connection.service_uuid = strdup(connection_ind->uuid); - BT_INFO("uuid: [%s]", rfcomm_connection.service_uuid); - } - - _bt_convert_address_to_string(&(rfcomm_connection.remote_address), - &(connection_ind->device_addr)); - } - - ((bt_socket_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (error_code, BT_SOCKET_CONNECTED, &rfcomm_connection, bt_event_slot_container[event_index].user_data); - - if (rfcomm_connection.remote_address != NULL) { - free(rfcomm_connection.remote_address); - rfcomm_connection.remote_address = NULL; - } - - if (rfcomm_connection.service_uuid != NULL) { - free(rfcomm_connection.service_uuid); - rfcomm_connection.service_uuid = NULL; - } - - break; - case BLUETOOTH_EVENT_RFCOMM_DISCONNECTED: - BT_INFO("bt_socket_connection_state_changed_cb() will be called with BT_SOCKET_DISCONNECTED"); - - memset(&rfcomm_connection, 0x00, sizeof(bt_socket_connection_s)); - disconnection_ind = (bluetooth_rfcomm_disconnection_t *)(param->param_data); - - if (disconnection_ind) { - rfcomm_connection.socket_fd = disconnection_ind->socket_fd; - rfcomm_connection.local_role = disconnection_ind->device_role; - - if (strlen(disconnection_ind->uuid) > 0) { - rfcomm_connection.service_uuid = strdup(disconnection_ind->uuid); - BT_INFO("uuid: [%s]", rfcomm_connection.service_uuid); - } - - _bt_convert_address_to_string(&(rfcomm_connection.remote_address), - &(disconnection_ind->device_addr)); - } - - ((bt_socket_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), BT_SOCKET_DISCONNECTED, &rfcomm_connection, bt_event_slot_container[event_index].user_data); - - if (rfcomm_connection.remote_address != NULL) { - free(rfcomm_connection.remote_address); - rfcomm_connection.remote_address = NULL; - } - - if (rfcomm_connection.service_uuid != NULL) { - free(rfcomm_connection.service_uuid); - rfcomm_connection.service_uuid = NULL; - } - - break; - case BLUETOOTH_EVENT_RFCOMM_AUTHORIZE: - BT_INFO("bt_socket_connection_requested_cb() will be called"); - reqeust_ind = (bluetooth_rfcomm_connection_request_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, &(reqeust_ind->device_addr)); - ((bt_socket_connection_requested_cb)bt_event_slot_container[event_index].callback) - (reqeust_ind->socket_fd, device_addr, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_EVENT_OBEX_SERVER_CONNECTION_AUTHORIZE: - BT_INFO("bt_opp_server_connection_requested_cb() will be called"); - bd_addr = (bluetooth_device_address_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, bd_addr); - ((bt_opp_server_connection_requested_cb)bt_event_slot_container[event_index].callback) - (device_addr, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_AUTHORIZE: - BT_INFO("bt_opp_server_push_requested_cb() will be called"); - auth_info = (bt_obex_server_authorize_into_t *)(param->param_data); - ((bt_opp_server_push_requested_cb)bt_event_slot_container[event_index].callback) - (auth_info->filename, auth_info->length, bt_event_slot_container[event_index].user_data); - break; - - case BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_STARTED: - BT_INFO("bt_opp_server_transfer_started_cb() will be called"); - transfer_info = (bt_obex_server_transfer_info_t *)(param->param_data); - ((bt_opp_server_transfer_progress_cb)bt_event_slot_container[event_index].callback) - (transfer_info->filename, transfer_info->file_size, 0, bt_event_slot_container[event_index].user_data); - break; - - case BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_PROGRESS: - BT_INFO("bt_opp_server_transfer_in_progress_cb() will be called"); - transfer_info = (bt_obex_server_transfer_info_t *)(param->param_data); - ((bt_opp_server_transfer_progress_cb)bt_event_slot_container[event_index].callback) - (transfer_info->filename, transfer_info->file_size, transfer_info->percentage, bt_event_slot_container[event_index].user_data); - break; - - case BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_COMPLETED: - BT_INFO("bt_opp_server_transfer_completed_cb() will be called"); - transfer_info = (bt_obex_server_transfer_info_t *)(param->param_data); - - ((bt_opp_server_transfer_finished_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), transfer_info->filename, transfer_info->file_size, bt_event_slot_container[event_index].user_data); - - break; - - case BLUETOOTH_EVENT_OPC_CONNECTED: - BT_INFO("bt_opp_client_push_responded_cb() will be called"); - bd_addr = (bluetooth_device_address_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, bd_addr); - - ((bt_opp_client_push_responded_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), device_addr, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - - case BLUETOOTH_EVENT_OPC_DISCONNECTED: - BT_INFO("bt_opp_client_push_finished_cb() will be called"); - bd_addr = (bluetooth_device_address_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, bd_addr); - - ((bt_opp_client_push_finished_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), device_addr, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - - case BLUETOOTH_EVENT_OPC_TRANSFER_STARTED: - BT_INFO("BLUETOOTH_EVENT_OPC_TRANSFER_STARTED"); - /* This event don't be used in CAPI */ - break; - - case BLUETOOTH_EVENT_OPC_TRANSFER_PROGRESS: - BT_INFO("bt_opp_client_transfer_in_progress_cb() will be called"); - client_info = (bt_opc_transfer_info_t *)(param->param_data); - - /* Progress 100% event will be invoked by BLUETOOTH_EVENT_OPC_TRANSFER_COMPLETE*/ - if (client_info->percentage != 100) - ((bt_opp_client_push_progress_cb)bt_event_slot_container[event_index].callback) - (client_info->filename, client_info->size, client_info->percentage, bt_event_slot_container[event_index].user_data); - break; - - case BLUETOOTH_EVENT_OPC_TRANSFER_COMPLETE: - BT_INFO("BLUETOOTH_EVENT_OPC_TRANSFER_COMPLETE"); - client_info = (bt_opc_transfer_info_t *)(param->param_data); - - if (param->result == BLUETOOTH_ERROR_NONE) - ((bt_opp_client_push_progress_cb)bt_event_slot_container[event_index].callback) - (client_info->filename, client_info->size, 100, bt_event_slot_container[event_index].user_data); - break; - - case BLUETOOTH_EVENT_MAP_CONNECTED: - BT_INFO("bt_map_client_??????????_cb() will be called"); - break; - - case BLUETOOTH_EVENT_MAP_DISCONNECTED: - BT_INFO("bt_map_client_??????????_cb() will be called"); - break; - case BLUETOOTH_EVENT_MAP_LIST_FOLDERS_COMPLETE: - BT_INFO("BLUETOOTH_EVENT_MAP_LIST_FOLDERS_COMPLETE event"); - break; - - case BLUETOOTH_EVENT_MAP_LIST_FILTER_FIELD_COMPLETE: - BT_INFO(" BLUETOOTH_EVENT_MAP_LIST_FILTER_FIELD_COMPLETE event"); - break; - - case BLUETOOTH_EVENT_MAP_LIST_MESSAGES_COMPLETE: - BT_INFO("BLUETOOTH_EVENT_MAP_LIST_MESSAGES_COMPLETE event"); - break; - - case BLUETOOTH_EVENT_MAP_GET_MESSAGE_COMPLETE: - BT_INFO("BLUETOOTH_EVENT_MAP_GET_MESSAGE_COMPLETE event"); - break; - - case BLUETOOTH_EVENT_MAP_PUSH_MESSAGE_COMPLETE: - BT_INFO("BLUETOOTH_EVENT_MAP_PUSH_MESSAGE_COMPLETE event"); - break; - - case BLUETOOTH_EVENT_NETWORK_SERVER_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_NETWORK_SERVER_CONNECTED"); - break; - - case BLUETOOTH_EVENT_NETWORK_SERVER_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_NETWORK_SERVER_DISCONNECTED"); - break; - case BLUETOOTH_EVENT_NETWORK_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_NETWORK_DISCONNECTED"); - break; - - case BLUETOOTH_EVENT_NETWORK_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_NETWORK_CONNECTED"); - break; - - case BLUETOOTH_EVENT_HDP_CONNECTED: - BT_INFO("HDP Connected "); - break; - - case BLUETOOTH_EVENT_HDP_DISCONNECTED: - BT_INFO("HDP disconnected callback will be "); - break; - case BLUETOOTH_EVENT_HDP_DATA_RECEIVED: - BT_INFO("HDP data received callback will be "); - break; - case BLUETOOTH_EVENT_AG_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_AG_CONNECTED "); - device_addr = (char *)(param->param_data); - ((bt_audio_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), TRUE, device_addr, BT_AUDIO_PROFILE_TYPE_HSP_HFP, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AG_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_AG_DISCONNECTED "); - device_addr = (char *)(param->param_data); - ((bt_audio_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), FALSE, device_addr, BT_AUDIO_PROFILE_TYPE_HSP_HFP, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_TELEPHONY_AUDIO_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_AUDIO_CONNECTED "); - ((bt_ag_sco_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), TRUE, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_TELEPHONY_AUDIO_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_AUDIO_DISCONNECTED "); - ((bt_ag_sco_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), FALSE, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_TELEPHONY_ANSWER_CALL: - call_data = (telephony_event_callid_t *)param->param_data; - call_id = call_data->callid; - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_ANSWER_CALL "); - ((bt_ag_call_handling_event_cb)bt_event_slot_container[event_index].callback) - (BT_AG_CALL_HANDLING_EVENT_ANSWER, call_id, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_TELEPHONY_RELEASE_CALL: - call_data = (telephony_event_callid_t *)param->param_data; - call_id = call_data->callid; - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_RELEASE_CALL "); - ((bt_ag_call_handling_event_cb)bt_event_slot_container[event_index].callback) - (BT_AG_CALL_HANDLING_EVENT_RELEASE, call_id, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_TELEPHONY_REJECT_CALL: - call_data = (telephony_event_callid_t *)param->param_data; - call_id = call_data->callid; - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_REJECT_CALL "); - ((bt_ag_call_handling_event_cb)bt_event_slot_container[event_index].callback) - (BT_AG_CALL_HANDLING_EVENT_REJECT, call_id, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_TELEPHONY_CHLD_0_RELEASE_ALL_HELD_CALL: - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_CHLD_0_RELEASE_ALL_HELD_CALL "); - ((bt_ag_multi_call_handling_event_cb)bt_event_slot_container[event_index].callback) - (BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_HELD_CALLS, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_TELEPHONY_CHLD_1_RELEASE_ALL_ACTIVE_CALL: - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_CHLD_1_RELEASE_ALL_ACTIVE_CALL "); - ((bt_ag_multi_call_handling_event_cb)bt_event_slot_container[event_index].callback) - (BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_ACTIVE_CALLS, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_TELEPHONY_CHLD_2_ACTIVE_HELD_CALL: - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_CHLD_2_ACTIVE_HELD_CALL "); - ((bt_ag_multi_call_handling_event_cb)bt_event_slot_container[event_index].callback) - (BT_AG_MULTI_CALL_HANDLING_EVENT_ACTIVATE_HELD_CALL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_TELEPHONY_CHLD_3_MERGE_CALL: - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_CHLD_3_MERGE_CALL "); - ((bt_ag_multi_call_handling_event_cb)bt_event_slot_container[event_index].callback) - (BT_AG_MULTI_CALL_HANDLING_EVENT_MERGE_CALLS, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_TELEPHONY_CHLD_4_EXPLICIT_CALL_TRANSFER: - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_CHLD_4_EXPLICIT_CALL_TRANSFER "); - ((bt_ag_multi_call_handling_event_cb)bt_event_slot_container[event_index].callback) - (BT_AG_MULTI_CALL_HANDLING_EVENT_EXPLICIT_CALL_TRANSFER, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_TELEPHONY_SEND_DTMF: { - telephony_event_dtmf_t *call_data = param->param_data; - - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_SEND_DTMF "); - ((bt_ag_dtmf_transmitted_cb)bt_event_slot_container[event_index].callback) - (call_data->dtmf, bt_event_slot_container[event_index].user_data); - break; - } - case BLUETOOTH_EVENT_TELEPHONY_VENDOR_AT_CMD: { - char *vendor_cmd = param->param_data; - - BT_INFO("BLUETOOTH_EVENT_TELEPHONY_VENDOR_AT_CMD"); - ((bt_ag_vendor_cmd_cb)bt_event_slot_container[event_index].callback) - (vendor_cmd, bt_event_slot_container[event_index].user_data); - break; - } - case BLUETOOTH_EVENT_AG_SPEAKER_GAIN: - BT_INFO("BLUETOOTH_EVENT_AG_SPEAKER_GAIN"); - int *spk_gain = (int *)(param->param_data); - ((bt_ag_speaker_gain_changed_cb)bt_event_slot_container[event_index].callback) - (*spk_gain, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AG_MIC_GAIN: - BT_INFO("BLUETOOTH_EVENT_AG_MIC_GAIN"); - int *mik_gain = (int *)(param->param_data); - ((bt_ag_microphone_gain_changed_cb)bt_event_slot_container[event_index].callback) - (*mik_gain, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AG_AUDIO_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_AG_AUDIO_CONNECTED"); - ((bt_audio_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), TRUE, NULL, BT_AUDIO_PROFILE_TYPE_HSP_HFP, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AG_AUDIO_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_AG_AUDIO_DISCONNECTED"); - device_addr = (char *)(param->param_data); - - ((bt_audio_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), FALSE, device_addr, BT_AUDIO_PROFILE_TYPE_HSP_HFP, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AV_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_AV_CONNECTED "); - device_addr = (char *)(param->param_data); - ((bt_audio_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), TRUE, device_addr, BT_AUDIO_PROFILE_TYPE_A2DP, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AV_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_AV_DISCONNECTED "); - device_addr = (char *)(param->param_data); - ((bt_audio_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), FALSE, device_addr, BT_AUDIO_PROFILE_TYPE_A2DP, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AV_SOURCE_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_AV_SOURCE_CONNECTED"); - device_addr = (char *)(param->param_data); - ((bt_audio_connection_state_changed_cb) bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), TRUE, device_addr, BT_AUDIO_PROFILE_TYPE_A2DP_SINK, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AV_SOURCE_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_AV_SOURCE_DISCONNECTED"); - device_addr = (char *)(param->param_data); - ((bt_audio_connection_state_changed_cb) bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), FALSE, device_addr, BT_AUDIO_PROFILE_TYPE_A2DP_SINK, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_AVRCP_CONNECTED "); - device_addr = (char *)(param->param_data); - ((bt_avrcp_target_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (TRUE, device_addr, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_AVRCP_DISCONNECTED "); - device_addr = (char *)(param->param_data); - ((bt_avrcp_target_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (FALSE, device_addr, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_SETTING_SHUFFLE_STATUS: - BT_INFO("BLUETOOTH_EVENT_AVRCP_SETTING_SHUFFLE_STATUS "); - avrcp_mode = (int *)(param->param_data); - ((bt_avrcp_shuffle_mode_changed_cb)bt_event_slot_container[event_index].callback) - ((bt_avrcp_shuffle_mode_e)*avrcp_mode, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_SETTING_EQUALIZER_STATUS: - BT_INFO("BLUETOOTH_EVENT_AVRCP_SETTING_EQUALIZER_STATUS "); - avrcp_mode = (int *)(param->param_data); - ((bt_avrcp_equalizer_state_changed_cb)bt_event_slot_container[event_index].callback) - ((bt_avrcp_equalizer_state_e)*avrcp_mode, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_SETTING_REPEAT_STATUS: - BT_INFO("BLUETOOTH_EVENT_AVRCP_SETTING_REPEAT_STATUS "); - avrcp_mode = (int *)(param->param_data); - ((bt_avrcp_repeat_mode_changed_cb)bt_event_slot_container[event_index].callback) - ((bt_avrcp_repeat_mode_e)*avrcp_mode, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_SETTING_SCAN_STATUS: - BT_INFO("BLUETOOTH_EVENT_AVRCP_SETTING_SCAN_STATUS "); - avrcp_mode = (int *)(param->param_data); - ((bt_avrcp_scan_mode_changed_cb)bt_event_slot_container[event_index].callback) - ((bt_avrcp_scan_mode_e)*avrcp_mode, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_CONTROL_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_AVRCP_CONTROL_CONNECTED "); - device_addr = (char *)(param->param_data); - ((bt_avrcp_target_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (TRUE, device_addr, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_CONTROL_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_AVRCP_CONTROL_DISCONNECTED "); - device_addr = (char *)(param->param_data); - ((bt_avrcp_target_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (FALSE, device_addr, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_CONTROL_SHUFFLE_STATUS: - BT_INFO("BLUETOOTH_EVENT_AVRCP_CONTROL_SHUFFLE_STATUS "); - avrcp_mode = (int *)(param->param_data); - ((bt_avrcp_shuffle_mode_changed_cb)bt_event_slot_container[event_index].callback) - ((bt_avrcp_shuffle_mode_e)*avrcp_mode, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_CONTROL_EQUALIZER_STATUS: - BT_INFO("BLUETOOTH_EVENT_AVRCP_CONTROL_EQUALIZER_STATUS "); - avrcp_mode = (int *)(param->param_data); - ((bt_avrcp_equalizer_state_changed_cb)bt_event_slot_container[event_index].callback) - ((bt_avrcp_equalizer_state_e)*avrcp_mode, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_CONTROL_REPEAT_STATUS: - BT_INFO("BLUETOOTH_EVENT_AVRCP_CONTROL_REPEAT_STATUS "); - avrcp_mode = (int *)(param->param_data); - ((bt_avrcp_repeat_mode_changed_cb)bt_event_slot_container[event_index].callback) - ((bt_avrcp_repeat_mode_e)*avrcp_mode, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_CONTROL_SCAN_STATUS: - BT_INFO("BLUETOOTH_EVENT_AVRCP_CONTROL_SCAN_STATUS "); - avrcp_mode = (int *)(param->param_data); - ((bt_avrcp_scan_mode_changed_cb)bt_event_slot_container[event_index].callback) - ((bt_avrcp_scan_mode_e)*avrcp_mode, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_PLAY_STATUS_CHANGED: - BT_INFO("BLUETOOTH_EVENT_AVRCP_PLAY_STATUS_CHANGED "); - avrcp_mode = (int *)(param->param_data); - ((bt_avrcp_play_status_changed_cb)bt_event_slot_container[event_index].callback) - ((bt_avrcp_player_state_e)*avrcp_mode, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_SONG_POSITION_STATUS: - BT_INFO("BLUETOOTH_EVENT_AVRCP_SONG_POSITION_STATUS "); - unsigned int *postion = (unsigned int *)(param->param_data); - ((bt_avrcp_position_changed_cb)bt_event_slot_container[event_index].callback) - (*postion, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_DELAY_CHANGED: - BT_INFO("BLUETOOTH_EVENT_AVRCP_DELAY_CHANGED "); - unsigned int *delay = (unsigned int *)(param->param_data); - ((bt_avrcp_delay_changed_cb)bt_event_slot_container[event_index].callback) - (*delay, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_AVRCP_TRACK_CHANGED: - BT_INFO("BLUETOOTH_EVENT_AVRCP_TRACK_CHANGED "); - bt_avrcp_metadata_attributes_info_s meta_info = {0, }; - metadata = (media_metadata_attributes_t *)(param->param_data); - meta_info.title = metadata->title; /* No need to allocate memory*/ - meta_info.artist = metadata->artist; /* No need to allocate memory*/ - meta_info.album = metadata->album; /* No need to allocate memory*/ - meta_info.genre = metadata->genre; /* No need to allocate memory*/ - meta_info.total_tracks = metadata->total_tracks; - meta_info.number = metadata->number; - meta_info.duration = metadata->duration; - ((bt_avrcp_track_info_changed_cb)bt_event_slot_container[event_index].callback) - (&meta_info, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_HID_CONNECTED: - BT_INFO("BLUETOOTH_HID_CONNECTED"); - bd_addr = (bluetooth_device_address_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, bd_addr); - ((bt_hid_host_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), TRUE, device_addr, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_HID_DISCONNECTED: - BT_INFO("BLUETOOTH_HID_DISCONNECTED"); - bd_addr = (bluetooth_device_address_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, bd_addr); - ((bt_hid_host_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), FALSE, device_addr, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_HID_DEVICE_CONNECTED: - BT_INFO("BLUETOOTH_HID_DEVICE_CONNECTED"); - bd_addr = (bluetooth_device_address_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, bd_addr); - ((bt_hid_device_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), TRUE, device_addr, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_HID_DEVICE_DISCONNECTED: - BT_INFO("BLUETOOTH_HID_DEVICE_DISCONNECTED"); - bd_addr = (bluetooth_device_address_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, bd_addr); - ((bt_hid_device_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), FALSE, device_addr, bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_HID_DEVICE_DATA_RECEIVED: - BT_INFO("HID Device Data"); - ((bt_hid_device_data_received_cb)bt_event_slot_container[event_index].callback) - ((bt_hid_device_received_data_s *)(param->param_data), bt_event_slot_container[event_index].user_data); - break; -#ifdef TIZEN_GATT_CLIENT - /* Local is GATT server */ - case BLUETOOTH_EVENT_GATT_SERVER_CONNECTED: { - bt_gatt_connection_state_changed_cb cb = NULL; - BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_CONNECTED"); - _bt_convert_address_to_string(&device_addr, - (bluetooth_device_address_t *)(param->param_data)); - BT_INFO("GATT Server Connected address[%s]", device_addr); - if (event_index >= 0) - cb = bt_event_slot_container[event_index].callback; - if (cb) - cb(_bt_get_error_code(param->result), TRUE, device_addr, - bt_event_slot_container[event_index].user_data); - - g_free(device_addr); - device_addr = NULL; - break; - } - case BLUETOOTH_EVENT_GATT_SERVER_DISCONNECTED: { - bt_gatt_connection_state_changed_cb cb = NULL; - BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_DISCONNECTED"); - _bt_convert_address_to_string(&device_addr, - (bluetooth_device_address_t *)(param->param_data)); - if (event_index >= 0) - cb = bt_event_slot_container[event_index].callback; - if (cb) - cb(_bt_get_error_code(param->result), FALSE, device_addr, - bt_event_slot_container[event_index].user_data); - - g_free(device_addr); - device_addr = NULL; - break; - } - /* Local is GATT client */ - case BLUETOOTH_EVENT_GATT_CLIENT_CONNECTED: { - bt_gatt_client_s *client_s; - bt_gatt_connection_state_changed_cb cb = NULL; - BT_INFO("BLUETOOTH_EVENT_GATT_CLIENT_CONNECTED"); - _bt_convert_address_to_string(&device_addr, - (bluetooth_device_address_t *)(param->param_data)); - BT_INFO("GATT Connected address[%s] result [%d]", device_addr, - _bt_get_error_code(param->result)); - client_s = (bt_gatt_client_s *)_bt_gatt_get_client(device_addr); - - if (BT_ERROR_NONE == _bt_get_error_code(param->result)) { - if (client_s && !client_s->services_discovered) { - BT_INFO("GATT Connected but services are not discovered yet, start browse client id [%d]", - client_s->client_id); - BT_INFO("GATT Client Connected address[%s]", device_addr); - if (client_s) - client_s->connected = true; - _bt_gatt_client_update_services(client_s); - } - } - - if (event_index >= 0) - cb = bt_event_slot_container[event_index].callback; - if (cb) - cb(_bt_get_error_code(param->result), TRUE, device_addr, - bt_event_slot_container[event_index].user_data); - g_free(device_addr); - device_addr = NULL; - break; - } - case BLUETOOTH_EVENT_GATT_CLIENT_DISCONNECTED: { - bt_gatt_client_s *client_s; - bt_gatt_connection_state_changed_cb cb = NULL; - BT_INFO("BLUETOOTH_EVENT_GATT_CLIENT_DISCONNECTED"); - _bt_convert_address_to_string(&device_addr, - (bluetooth_device_address_t *)(param->param_data)); - client_s = (bt_gatt_client_s *)_bt_gatt_get_client(device_addr); - BT_INFO("GATT DisConnected address[%s] result [%d]", device_addr, - _bt_get_error_code(param->result)); - if (client_s) { - BT_INFO("GATT CLient instance present for addr [%s] client ID [%d]", - client_s->remote_address, client_s->client_id); - client_s->connected = false; - /* Mark services not discovered */ - client_s->services_discovered = false; - } - - if (event_index >= 0) - cb = bt_event_slot_container[event_index].callback; - if (cb) - cb(_bt_get_error_code(param->result), FALSE, device_addr, - bt_event_slot_container[event_index].user_data); - g_free(device_addr); - device_addr = NULL; - break; - } -#else - case BLUETOOTH_EVENT_GATT_CONNECTED: { - bt_gatt_client_s *client_s; - bt_gatt_connection_state_changed_cb cb = NULL; - - BT_INFO("BLUETOOTH_EVENT_GATT_CONNECTED"); - _bt_convert_address_to_string(&device_addr, - (bluetooth_device_address_t *)(param->param_data)); - client_s = (bt_gatt_client_s *)_bt_gatt_get_client(device_addr); - if (client_s) { - client_s->connected = true; - _bt_gatt_client_update_services(client_s); - } - if (event_index >= 0) - cb = bt_event_slot_container[event_index].callback; - if (cb) - cb(_bt_get_error_code(param->result), TRUE, device_addr, - bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - device_addr = NULL; - break; - } - case BLUETOOTH_EVENT_GATT_DISCONNECTED: { - bt_gatt_client_s *client_s; - bt_gatt_connection_state_changed_cb cb = NULL; - - BT_INFO("BLUETOOTH_EVENT_GATT_DISCONNECTED"); - _bt_convert_address_to_string(&device_addr, - (bluetooth_device_address_t *)(param->param_data)); - client_s = (bt_gatt_client_s *)_bt_gatt_get_client(device_addr); - if (client_s) - client_s->connected = false; - if (event_index >= 0) - cb = bt_event_slot_container[event_index].callback; - if (cb) - cb(_bt_get_error_code(param->result), FALSE, device_addr, - bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - device_addr = NULL; - break; - } -#endif - case BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED: - BT_INFO("BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED"); -#ifdef TIZEN_GATT_CLIENT - char_prop = (bt_gatt_char_property_t*)(param->param_data); - - if (char_prop == NULL) - return; - BT_INFO("Address [%s]", char_prop->address); - BT_INFO("Val len [%d]", char_prop->val_len); - BT_INFO("Event index [%d]", event_index); - - ((_bt_gatt_client_val_changed_cb)bt_event_slot_container[event_index].callback) - (char_prop->prop.uuid, char_prop->address, char_prop->value, char_prop->val_len, - bt_event_slot_container[event_index].user_data); -#else - char_val = (bt_gatt_char_value_t *)(param->param_data); - - if (char_val == NULL) - return; - - ((_bt_gatt_client_value_changed_cb)bt_event_slot_container[event_index].callback) - (char_val->char_handle, char_val->char_value, char_val->val_len, - bt_event_slot_container[event_index].user_data); -#endif - break; -#ifdef TIZEN_GATT_CLIENT - case BLUETOOTH_EVENT_GATT_READ_CHAR: - BT_INFO("BLUETOOTH_EVENT_GATT_READ_CHAR"); - _bt_handle_gatt_client_char_read_completed_event(param->result, param->param_data); - break; - case BLUETOOTH_EVENT_GATT_WRITE_CHAR: - BT_INFO("BLUETOOTH_EVENT_GATT_WRITE_CHAR"); - _bt_handle_gatt_client_char_write_completed_event(param->result, param->param_data); - break; - case BLUETOOTH_EVENT_GATT_READ_DESC: - BT_INFO("BLUETOOTH_EVENT_GATT_READ_DESC"); - _bt_handle_gatt_client_desc_read_completed_event(param->result, param->param_data); - break; - case BLUETOOTH_EVENT_GATT_WRITE_DESC: - BT_INFO("BLUETOOTH_EVENT_GATT_WRITE_DESC"); - _bt_handle_gatt_client_desc_write_completed_event(param->result, param->param_data); - break; -#else - case BLUETOOTH_EVENT_GATT_READ_CHAR: - BT_INFO("BLUETOOTH_EVENT_GATT_READ_CHAR"); - _handle_gatt_client_read_completed_event(param->result, - param->param_data); - break; - case BLUETOOTH_EVENT_GATT_WRITE_CHAR: - BT_INFO("BLUETOOTH_EVENT_GATT_WRITE_CHAR"); - _handle_gatt_client_write_completed_event(param->result, - param->param_data); - break; - case BLUETOOTH_EVENT_GATT_READ_DESC: - BT_INFO("BLUETOOTH_EVENT_GATT_READ_DESC"); - _handle_gatt_client_read_completed_event(param->result, - param->param_data); - break; - case BLUETOOTH_EVENT_GATT_WRITE_DESC: - BT_INFO("BLUETOOTH_EVENT_GATT_WRITE_DESC"); - _handle_gatt_client_write_completed_event(param->result, - param->param_data); - break; -#endif - case BLUETOOTH_EVENT_GATT_SERVER_READ_REQUESTED: { -#ifdef TIZEN_FEATURE_GATT_RELAY - bluetooth_gatt_server_read_requested_info_t *read_req = - (bluetooth_gatt_server_read_requested_info_t *)(param->param_data); - bt_gatt_server_read_value_requested_cb cb_read; - void *user_data_read = NULL; - bt_gatt_h gatt_handle = NULL; - bt_gatt_server_h serv = NULL; - - cb_read = __bt_gatt_attribute_get_read_cb(read_req->attribute_handle, - &serv, &gatt_handle, &user_data_read); - - /* Copy data */ - _bt_convert_address_to_string(&device_addr, &read_req->device_address); - - BT_INFO("GATT Server Read Req: Addr [%s]", device_addr); - BT_INFO("GATT Server Read Req: Att handle[%d]", read_req->attribute_handle); - BT_INFO("GATT Server Read Req: Conn ID [%d]", read_req->connection_id); - BT_INFO("GATT Server Read Req: Trans ID [%d]", read_req->request_id); - BT_INFO("GATT Server Read Req: Offset [%d]", read_req->offset); - BT_INFO("GATT Server Read Req: Is Long [%d]", read_req->is_long); - - if (cb_read == NULL) { - BT_INFO("GATT Server: App has not set the Read requested callback..for the current handle"); - - bt_gatt_server_send_response(read_req->request_id, - BT_GATT_REQUEST_TYPE_READ, 0, - BLUETOOTH_ERROR_INTERNAL, NULL, 0); - - BT_INFO("GATT Server: Internal response sent for Read Request"); - if (device_addr != NULL) - free(device_addr); - return; - } - - cb_read(device_addr, read_req->request_id, serv, gatt_handle, read_req->offset, user_data_read); - - if (device_addr != NULL) - free(device_addr); -#else - bt_gatt_read_req_t *read_req = param->param_data; - bt_gatt_server_read_value_requested_cb cb; - void *user_data_read = NULL; - bt_gatt_h gatt_handle = NULL; - - cb = __bt_gatt_attribute_get_read_cb(read_req->service_handle, - read_req->att_handle, &gatt_handle, &user_data_read); - - BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_READ_REQUESTED"); - if (cb == NULL) { - bluetooth_gatt_send_response(read_req->req_id, - BLUETOOTH_GATT_ATT_REQUEST_TYPE_READ, - BLUETOOTH_ATT_ERROR_INTERNAL, 0, NULL, 0); - return; - } - - cb(read_req->address, read_req->req_id, read_req->service_handle, - gatt_handle, read_req->offset, - user_data_read); -#endif - break; - } - case BLUETOOTH_EVENT_GATT_SERVER_VALUE_CHANGED: { -#ifdef TIZEN_FEATURE_GATT_RELAY - BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_WRITE_REQUESTED"); - bt_gatt_server_write_value_requested_cb cb_wr; - void *user_data_write = NULL; - bt_gatt_h gatt_handle = NULL; - bt_gatt_h server = NULL; - bluetooth_gatt_server_write_requested_info_t *write_req = - (bluetooth_gatt_server_write_requested_info_t *)(param->param_data); - - char *val = g_malloc0(write_req->length); - - memcpy(val, write_req->data.data, write_req->length); - cb_wr = __bt_gatt_attribute_get_value_change_cb(write_req->attribute_handle, - &server, &gatt_handle, &user_data_write); - - /* Copy data */ - _bt_convert_address_to_string(&device_addr, &write_req->device_address); - - BT_INFO("GATT Server Write Req: Address [%s]", device_addr); - BT_INFO("GATT Server Write Req: Att handle [%d]", write_req->attribute_handle); - BT_INFO("GATT Server Write Req: Conn ID [%d]", write_req->connection_id); - BT_INFO("GATT Server Write Req: Trans ID [%d]", write_req->request_id); - BT_INFO("GATT Server Write Req: Offset [%d]", write_req->offset); - BT_INFO("GATT Server Write Req: Length [%d]", write_req->length); - BT_INFO("GATT Server Write Req: Need Resp [%d]", write_req->need_resp); - - if (cb_wr == NULL) { - BT_INFO("GATT Server: App has not set the Write requested callback..for the current handle"); - - if (write_req->need_resp) { - BT_INFO("GATT Server: Send Response to Remote GATT client"); - - bt_gatt_server_send_response(write_req->request_id, - BT_GATT_REQUEST_TYPE_WRITE, 0, - BLUETOOTH_ERROR_INTERNAL, NULL, 0); - - BT_INFO("GATT Server: Internal response sent for Write Request"); - } - - /* Free Data */ - if (val != NULL) - g_free(val); - if (device_addr != NULL) - free(device_addr); - return; - } - - cb_wr(device_addr, write_req->request_id, server, gatt_handle, - write_req->need_resp, write_req->offset, - val, write_req->length, user_data_write); - - /* Free Data */ - if (val != NULL) - g_free(val); - - if (device_addr != NULL) - free(device_addr); -#else - bt_gatt_value_change_t *value_change = param->param_data; - bt_gatt_server_write_value_requested_cb cb; - void *user_data_write = NULL; - bt_gatt_h gatt_handle = NULL; - cb = __bt_gatt_attribute_get_value_change_cb(value_change->service_handle, - value_change->att_handle, &gatt_handle, &user_data_write); - - BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_VALUE_CHANGE"); - if (cb == NULL) { - if (value_change->response_needed == FALSE) - return; - - bluetooth_gatt_send_response(value_change->req_id, - BLUETOOTH_GATT_ATT_REQUEST_TYPE_WRITE, - BLUETOOTH_ATT_ERROR_INTERNAL, 0, NULL, 0); - return; - } - - cb(value_change->address, value_change->req_id, value_change->service_handle, - gatt_handle, (bool)value_change->response_needed, value_change->offset, - (char *)value_change->att_value, value_change->val_len, user_data_write); -#endif - break; - } - case BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_STATE_CHANGED: { - BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_STATE_CHANGED"); -#ifdef TIZEN_FEATURE_GATT_RELAY - bluetooth_gatt_server_notification_changed_t *notif_info = - (bluetooth_gatt_server_notification_changed_t*)(param->param_data); - - bt_gatt_server_characteristic_notification_state_changed_cb cb; - bt_gatt_server_h server_handle = NULL; - bt_gatt_h char_handle = NULL; - void *user_data_cfm = NULL; - - cb = __bt_gatt_attribute_get_notification_change_cb(&server_handle, - notif_info->handle, &char_handle, &user_data_cfm); - - if (cb == NULL) { - BT_INFO("cb is NULL"); - return; - } - - cb(notif_info->notification, server_handle, char_handle, user_data_cfm); -#else - bt_gatt_char_notify_change_t *value_change = param->param_data; - bt_gatt_server_characteristic_notification_state_changed_cb cb; - void *user_data_cfm = NULL; - bt_gatt_h gatt_handle = NULL; - cb = __bt_gatt_attribute_get_notification_change_cb(value_change->service_handle, - value_change->att_handle, &gatt_handle, &user_data_cfm); - - BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_STATE_CHANGED"); - if (cb == NULL) - return; - - cb(value_change->att_notify, value_change->service_handle, - gatt_handle, user_data_cfm); -#endif - break; - } - case BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_COMPLETED: { -#ifdef TIZEN_FEATURE_GATT_RELAY - bluetooth_gatt_server_indicate_confirmed_info_t *cfm_info = - (bluetooth_gatt_server_indicate_confirmed_info_t*)(param->param_data); - bt_gatt_server_notification_sent_cb cb; - bt_gatt_server_h server_handle = NULL; - bt_gatt_h char_handle = NULL; - - BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_COMPLETED"); - - void *user_data_cfm = NULL; - - cb = __bt_gatt_attribute_get_notification_completed_cb(&server_handle, - cfm_info->handle, &char_handle, &user_data_cfm); - - if (cb == NULL) - return; - - /* Copy data */ - _bt_convert_address_to_string(&device_addr, &cfm_info->device_address); - - cb(_bt_get_error_code(param->result), device_addr, - server_handle, char_handle, - cfm_info->completed, user_data_cfm); - - /* Free Data */ - if (device_addr != NULL) - free(device_addr); -#else - bt_gatt_indicate_confirm_t *confrim_status = param->param_data; - bt_gatt_server_notification_sent_cb cb; - void *local_user_data = NULL; - cb = __bt_gatt_attribute_get_notification_completed_cb(confrim_status->service_handle, - confrim_status->att_handle, &local_user_data); - - BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_NOTIFICATION_COMPLETED"); - if (cb == NULL) - return; - - cb(_bt_get_error_code(param->result), confrim_status->address, - confrim_status->service_handle, - confrim_status->att_handle, confrim_status->complete, local_user_data); -#endif - break; - } - case BLUETOOTH_EVENT_GATT_SERVER_CHARACTERISTIC_VALUE_CHANGED: { - const GSList *server_list = NULL; - BT_INFO("BLUETOOTH_EVENT_GATT_SERVER_CHARACTERISTIC_VALUE_CHANGED"); - - char_val = (bt_gatt_char_value_t *)(param->param_data); - - if (char_val == NULL) - return; - - for (server_list = _bt_gatt_get_server_list() ; server_list; server_list = g_slist_next(server_list)) { - bt_gatt_server_s *serv = (bt_gatt_server_s *)server_list->data; - GSList *service_list = NULL; - - for (service_list = serv->services; service_list; service_list = g_slist_next(service_list)) { - bt_gatt_service_s *svc = (bt_gatt_service_s *)service_list->data; - GSList *char_list = NULL; - - for (char_list = svc->characteristics; char_list; char_list = g_slist_next(char_list)) { - bt_gatt_characteristic_s *chr = (bt_gatt_characteristic_s *)char_list->data; - - if (chr && g_strcmp0(char_val->char_handle, chr->path) == 0) { - g_free(chr->value); - chr->value = NULL; - if (char_val->val_len > 0) - chr->value = g_memdup(char_val->char_value, char_val->val_len); - chr->value_length = char_val->val_len; - /* TODO : Fix build error temporary */ - if (chr->write_value_requested_cb) - chr->write_value_requested_cb(NULL, 0, (bt_gatt_server_h)serv, (bt_gatt_h)chr, - TRUE, 0, (char *)char_val->char_value, char_val->val_len, - chr->write_value_requested_user_data); - } - } - } - } - break; - } - case BLUETOOTH_EVENT_GATT_CLIENT_SERVICE_CHANGED: { - bt_gatt_service_change_t *service_change = - (bt_gatt_service_change_t *)(param->param_data); - const GSList *l = NULL; - bt_gatt_client_s *client = NULL; - bt_gatt_service_s *svc = NULL; - - BT_INFO("BLUETOOTH_EVENT_GATT_CLIENT_SERVICE_CHANGED"); - - if (service_change == NULL) { - BT_ERR("service_change is NULL"); - return; - } - - _bt_convert_address_to_string(&device_addr, - &service_change->device_addr); - - client = _bt_gatt_get_client(device_addr); - if (device_addr != NULL) - free(device_addr); - device_addr = NULL; - - if (client == NULL) { - BT_ERR("There is NO matched client"); - break; - } - - if (service_change->change_type - == BLUETOOTH_GATT_SERVICE_CHANGE_TYPE_ADD) { - for (l = client->services; l; l = g_slist_next(l)) { - svc = l->data; - if (!g_strcmp0(svc->path, service_change->svc_path)) - break; - } - if (l) { - BT_INFO("already added service : %s", svc->path); - break; - } -#ifdef TIZEN_GATT_CLIENT - BT_INFO("TODO this task"); -#else - svc = _bt_gatt_client_add_service(client, - service_change->svc_path); -#endif - if (svc == NULL) { - BT_ERR("_bt_gatt_client_add_service is failed"); - break; - } - - if (client->connected && client->service_changed_cb) - client->service_changed_cb(client, - BT_GATT_CLIENT_SERVICE_ADDED, - svc->uuid, - client->service_changed_user_data); - } else { - char *removed_uuid = NULL; - - for (l = client->services; l; l = g_slist_next(l)) { - svc = l->data; - if (!g_strcmp0(svc->path, service_change->svc_path)) - break; - } - if (!l) { - BT_ERR("There is NO matched service"); - break; - } - - removed_uuid = g_strdup(svc->uuid); - bt_gatt_service_destroy((bt_gatt_h)svc); - - if (client->connected && client->service_changed_cb) - client->service_changed_cb(client, - BT_GATT_CLIENT_SERVICE_REMOVED, - removed_uuid, - client->service_changed_user_data); - g_free(removed_uuid); - } - break; - } -/* LCOV_EXCL_STOP */ - case BLUETOOTH_EVENT_ADVERTISING_STARTED: - BT_INFO("BLUETOOTH_EVENT_ADVERTISING_STARTED"); - adv_handle = (int *)(param->param_data); - - _bt_adapter_le_invoke_advertising_state_cb(*adv_handle, - _bt_get_error_code(param->result), BT_ADAPTER_LE_ADVERTISING_STARTED); - - break; - case BLUETOOTH_EVENT_ADVERTISING_STOPPED: - BT_INFO("BLUETOOTH_EVENT_ADVERTISING_STOPPED"); /* LCOV_EXCL_START */ - adv_handle = (int *)(param->param_data); - - _bt_adapter_le_invoke_advertising_state_cb(*adv_handle, - _bt_get_error_code(param->result), BT_ADAPTER_LE_ADVERTISING_STOPPED); /* LCOV_EXCL_STOP */ - - break; - case BLUETOOTH_EVENT_MANUFACTURER_DATA_CHANGED: /* LCOV_EXCL_START */ - BT_INFO("BLUETOOTH_EVENT_MANUFACTURER_DATA_CHANGED"); - - ((bt_adapter_manufacturer_data_changed_cb)bt_event_slot_container[event_index].callback) - (param->param_data, param->result, - bt_event_slot_container[event_index].user_data); - - break; - - case BLUETOOTH_EVENT_PASSKEY_NOTIFICATION: { - const char *address = NULL; - const char *passkey = NULL; - const char **passkey_info = param->param_data; - BT_INFO("BLUETOOTH_EVENT_PASSKEY_NOTIFICATION"); - - address = passkey_info[0]; - passkey = passkey_info[1]; - - ((bt_adapter_passkey_notification_cb)bt_event_slot_container[event_index].callback) - (address, passkey, bt_event_slot_container[event_index].user_data); - - break; - } - case BLUETOOTH_EVENT_IPSP_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_IPSP_CONNECTED"); - break; - case BLUETOOTH_EVENT_IPSP_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_IPSP_DISCONNECTED"); - break; - case BLUETOOTH_EVENT_GATT_ATT_MTU_CHANGED: { - bt_gatt_client_att_mtu_info_s *mtu_info = NULL; - bt_gatt_client_s *client = NULL; - - BT_INFO("BLUETOOTH_EVENT_GATT_ATT_MTU_CHANGED"); - __bt_get_bt_gatt_client_att_mtu_info_s(&mtu_info, (bluetooth_le_att_mtu_info_t *)(param->param_data)); - - client = _bt_gatt_get_client(mtu_info->remote_address); - - if (client && client->connected && client->att_mtu_changed_cb) - client->att_mtu_changed_cb(client, - (const bt_gatt_client_att_mtu_info_s *)mtu_info, - client->att_mtu_changed_user_data); - - if (bt_event_slot_container[event_index].callback) - ((bt_device_att_mtu_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), (bt_device_att_mtu_info_s *)mtu_info, - bt_event_slot_container[event_index].user_data); - - g_free(mtu_info); - - break; - } - case BLUETOOTH_EVENT_LE_DATA_LENGTH_CHANGED: - BT_INFO("__bt_le_set_data_length_changed_cb() will be called"); - data_length_info = (bt_le_data_length_params_t *)(param->param_data); - _bt_convert_address_to_string(&device_addr, &data_length_info->device_address); - - ((_bt_le_set_data_length_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), device_addr, data_length_info->max_tx_octets, - data_length_info->max_tx_time, data_length_info->max_rx_octets, data_length_info->max_rx_time, - bt_event_slot_container[event_index].user_data); - - if (device_addr != NULL) - free(device_addr); - break; - case BLUETOOTH_PBAP_CONNECTED: { - bt_pbap_connection_state_changed_cb cb = bt_event_slot_container[event_index].callback; - void *user_data_pbap = bt_event_slot_container[event_index].user_data; - bt_pbap_connected_t *connected = (bt_pbap_connected_t *)param->param_data; - - BT_INFO("BLUETOOTH_PBAP_CONNECTED"); - - _bt_convert_address_to_string(&device_addr, &connected->btaddr); - cb(_bt_get_error_code(param->result), true, device_addr, user_data_pbap); - - if (device_addr != NULL) - free(device_addr); - - break; - } - case BLUETOOTH_PBAP_DISCONNECTED: { - bt_pbap_connection_state_changed_cb cb = bt_event_slot_container[event_index].callback; - void *user_data_pbap = bt_event_slot_container[event_index].user_data; - bt_pbap_connected_t *connected = (bt_pbap_connected_t *)param->param_data; - - BT_INFO("BLUETOOTH_PBAP_DISCONNECTED"); - - _bt_convert_address_to_string(&device_addr, &connected->btaddr); - cb(_bt_get_error_code(param->result), false, device_addr, user_data_pbap); - - if (device_addr != NULL) - free(device_addr); - - break; - } - case BLUETOOTH_PBAP_PHONEBOOK_SIZE: { - bt_pbap_phone_book_size_cb cb = bt_event_slot_container[event_index].callback; - void *user_data_pbap = bt_event_slot_container[event_index].user_data; - bt_pbap_phonebook_size_t *pb_size = (bt_pbap_phonebook_size_t *)param->param_data; - - BT_INFO("BLUETOOTH_PBAP_PHONEBOOK_SIZE"); - - _bt_unset_cb(BT_EVENT_PBAP_PHONEBOOK_SIZE); - _bt_convert_address_to_string(&device_addr, &pb_size->btaddr); - cb(_bt_get_error_code(param->result), device_addr, pb_size->size, user_data_pbap); - - if (device_addr != NULL) - free(device_addr); - - break; - } - case BLUETOOTH_PBAP_PHONEBOOK_PULL: { - bt_pbap_phone_book_received_cb cb = bt_event_slot_container[event_index].callback; - void *user_data_pbap = bt_event_slot_container[event_index].user_data; - bt_pbap_phonebook_pull_t *pb_pull = (bt_pbap_phonebook_pull_t *)(param->param_data); - - BT_INFO("BLUETOOTH_PBAP_PHONEBOOK_PULL"); - - _bt_unset_cb(BT_EVENT_PBAP_PHONEBOOK_PULL); - _bt_convert_address_to_string(&device_addr, &pb_pull->btaddr); - cb(_bt_get_error_code(param->result), device_addr, - (const char *)pb_pull->vcf_file, user_data_pbap); - - if (device_addr != NULL) - free(device_addr); - - break; - } - case BLUETOOTH_PBAP_VCARD_LIST: { - int i; - bt_pbap_list_vcards_cb cb = bt_event_slot_container[event_index].callback; - void *user_data_pbap = bt_event_slot_container[event_index].user_data; - bt_pbap_vcard_list_t *vc_list = (bt_pbap_vcard_list_t *)(param->param_data); - bt_pbap_vcard_info_s *vcard_info = NULL; - - BT_INFO("BLUETOOTH_PBAP_VCARD_LIST"); - - if (vc_list->length > 0) { - vcard_info = g_malloc0(vc_list->length * sizeof(bt_pbap_vcard_info_s)); - for (i = 0; i < vc_list->length; i++) { - vcard_info[i].contact_name = g_strdup(vc_list->vcards[i]); - } - } - - _bt_unset_cb(BT_EVENT_PBAP_VCARD_LIST); - _bt_convert_address_to_string(&device_addr, &vc_list->btaddr); - cb(_bt_get_error_code(param->result), device_addr, - (const bt_pbap_vcard_info_s *)vcard_info, vc_list->length, - user_data_pbap); - - if (device_addr != NULL) - free(device_addr); - - if (vcard_info != NULL) { - for (i = 0; i < vc_list->length; i++) - g_free((char *)vcard_info[i].contact_name); - g_free(vcard_info); - } - break; - } - case BLUETOOTH_PBAP_VCARD_PULL: { - bt_pbap_phone_book_received_cb cb = bt_event_slot_container[event_index].callback; - void *user_data_pbap = bt_event_slot_container[event_index].user_data; - bt_pbap_vcard_pull_t *vc_pull = (bt_pbap_vcard_pull_t *)(param->param_data); - - BT_INFO("BLUETOOTH_PBAP_VCARD_PULL"); - - _bt_unset_cb(BT_EVENT_PBAP_VCARD_PULL); - _bt_convert_address_to_string(&device_addr, &vc_pull->btaddr); - cb(_bt_get_error_code(param->result), device_addr, - (const char *)vc_pull->vcf_file, user_data_pbap); - - if (device_addr != NULL) - free(device_addr); - - break; - } - case BLUETOOTH_PBAP_PHONEBOOK_SEARCH: { - int i; - bt_pbap_list_vcards_cb cb = bt_event_slot_container[event_index].callback; - void *local_user_data = bt_event_slot_container[event_index].user_data; - bt_pbap_phonebook_search_list_t *vc_list = (bt_pbap_phonebook_search_list_t *)(param->param_data); - bt_pbap_vcard_info_s *vcard_info = NULL; - - if (vc_list->length > 0) { - vcard_info = g_malloc0(vc_list->length * sizeof(bt_pbap_vcard_info_s)); - for (i = 0; i < vc_list->length; i++) { - vcard_info[i].contact_name = g_strdup(vc_list->vcards[i]); - } - } - - BT_INFO("BLUETOOTH_PBAP_PHONEBOOK_SEARCH"); - - _bt_unset_cb(BT_EVENT_PBAP_PHONEBOOK_SEARCH); - _bt_convert_address_to_string(&device_addr, &vc_list->btaddr); - cb(_bt_get_error_code(param->result), device_addr, - (const bt_pbap_vcard_info_s *)vcard_info, vc_list->length, - local_user_data); - - if (device_addr != NULL) - free(device_addr); - - if (vcard_info != NULL) { - for (i = 0; i < vc_list->length; i++) - g_free((char *)vcard_info[i].contact_name); - g_free(vcard_info); - } - break; - } - case BLUETOOTH_EVENT_HF_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_HF_CONNECTED"); - device_addr = (char *)(param->param_data); - ((bt_audio_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), TRUE, device_addr, BT_AUDIO_PROFILE_TYPE_AG, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_HF_DISCONNECTED"); - device_addr = (char *)(param->param_data); - ((bt_audio_connection_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), FALSE, device_addr, BT_AUDIO_PROFILE_TYPE_AG, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_AUDIO_CONNECTED: - BT_INFO("BLUETOOTH_EVENT_HF_AUDIO_CONNECTED"); - device_addr = (char *)(param->param_data); - ((bt_hf_sco_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), TRUE, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_AUDIO_DISCONNECTED: - BT_INFO("BLUETOOTH_EVENT_HF_AUDIO_DISCONNECTED"); - device_addr = (char *)(param->param_data); - ((bt_hf_sco_state_changed_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), FALSE, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_RING_INDICATOR: - BT_INFO("BLUETOOTH_EVENT_HF_RING_INDICATOR"); - phone_number = (char *)(param->param_data); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_RINGING, phone_number, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALL_TERMINATED: - BT_INFO("BLUETOOTH_EVENT_HF_CALL_TERMINATED"); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_CALL_TERMINATED, NULL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALL_FAILED_TO_DIAL: - BT_INFO("BLUETOOTH_EVENT_HF_CALL_FAILED_TO_DIAL"); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_FAILED_TO_DIALING, NULL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALL_IDLE: - BT_INFO("BLUETOOTH_EVENT_HF_CALL_IDLE"); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_IDLE, NULL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALLSETUP_INCOMING: - BT_INFO("BLUETOOTH_EVENT_HF_CALLSETUP_INCOMING"); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_INCOMING, NULL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALLSETUP_DIALING: - BT_INFO("BLUETOOTH_EVENT_HF_CALLSETUP_DIALING"); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_DIALING, NULL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALLSETUP_ALERTING: - BT_INFO("BLUETOOTH_EVENT_HF_CALLSETUP_ALERTING"); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_ALERTING, NULL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALL_STARTED: - BT_INFO("BLUETOOTH_EVENT_HF_CALL_STARTED"); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_CALL_STARTED, NULL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALL_ENDED: - BT_INFO("BLUETOOTH_EVENT_HF_CALL_ENDED"); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_CALL_ENDED, NULL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_ENABLED: - BT_INFO("BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_ENABLED"); - ((bt_hf_remote_device_state_changed_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_DEVICE_STATE_VOICE_RECOGNITON, TRUE, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_DISABLED: - BT_INFO("BLUETOOTH_EVENT_HF_VOICE_RECOGNITION_DISABLED"); - ((bt_hf_remote_device_state_changed_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_DEVICE_STATE_VOICE_RECOGNITON, FALSE, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALL_WAITING: - BT_INFO("BLUETOOTH_EVENT_HF_CALL_WAITING"); - phone_number = (char *)(param->param_data); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_WAITING, phone_number, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALL_ON_HOLD: - BT_INFO("BLUETOOTH_EVENT_HF_CALL_ON_HOLD"); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_HELD, NULL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALL_UNHOLD: - BT_INFO("BLUETOOTH_EVENT_HF_CALL_UNHOLD"); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_UNHELD, NULL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_CALL_SWAPPED: - BT_INFO("BLUETOOTH_EVENT_HF_CALL_SWAPPED"); - ((bt_hf_remote_call_event_cb)bt_event_slot_container[event_index].callback) - (BT_HF_REMOTE_CALL_EVENT_SWAPPED, NULL, - bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_HF_VENDOR_DEP_CMD: { - BT_INFO("BLUETOOTH_EVENT_HF_VENDOR_DEP_CMD"); - bluetooth_vendor_dep_at_cmd_t *cmd = (bluetooth_vendor_dep_at_cmd_t *)(param->param_data); - bt_hf_vendor_dep_at_cmd_s command = {0, }; - command.app_id = cmd->app_id; - command.message = strdup(cmd->message); - ((bt_hf_vendor_dep_cmd_event_cb)bt_event_slot_container[event_index].callback) - (command, bt_event_slot_container[event_index].user_data); - break; - } - case BLUETOOTH_EVENT_HF_VOLUME_SPEAKER: { - BT_INFO("BLUETOOTH_EVENT_HF_VOLUME_SPEAKER"); - int *spk_gain = (int *)(param->param_data); - ((bt_hf_speaker_gain_changed_cb)bt_event_slot_container[event_index].callback) - (*spk_gain, bt_event_slot_container[event_index].user_data); - break; - } - case BLUETOOTH_EVENT_HF_CALL_STATUS: { - BT_INFO("BLUETOOTH_EVENT_HF_CALL_STATUS"); - bt_hf_call_list_s *handle = (bt_hf_call_list_s *)(param->param_data); - GList *l = NULL; - GSList *call_list = NULL; - - for (l = g_list_first(handle->list); l; l = g_list_next(l)) { - bt_hf_call_status_info_t *hf_call_info = l->data; - bt_hf_call_status_info_s *call_info = NULL; - - call_info = g_malloc0(sizeof(bt_hf_call_status_info_s)); - call_info->number = strdup(hf_call_info->number); - call_info->direction = hf_call_info->direction; - call_info->status = hf_call_info->status; - call_info->multi_party = hf_call_info->mpart; - call_info->index = hf_call_info->idx; - call_list = g_slist_append(call_list, call_info); - } - - ((bt_hf_call_status_updated_event_cb)bt_event_slot_container[event_index].callback) - (call_list, bt_event_slot_container[event_index].user_data); - break; - } - case BLUETOOTH_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED: { - bluetooth_hf_ciev_device_event_t *device_event = (bluetooth_hf_ciev_device_event_t *)(param->param_data); - - BT_INFO("BLUETOOTH_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED (status %d)(value %d)", - device_event->event, device_event->value); - - ((bt_hf_remote_device_state_changed_cb)bt_event_slot_container[event_index].callback) - ((bt_hf_remote_device_state_e) device_event->event, device_event->value, - bt_event_slot_container[event_index].user_data); - break; - } - case BLUETOOTH_EVENT_IPSP_INIT_STATE_CHANGED: { - BT_DBG("BLUETOOTH_EVENT_IPSP_INIT_STATE_CHANGED"); /* LCOV_EXCL_LINE */ - break; - } - case BLUETOOTH_EVENT_PXP_PROPERTY_CHANGED: { - BT_DBG("BLUETOOTH_EVENT_PXP_PROPERTY_CHANGED"); /* LCOV_EXCL_LINE */ - break; - } - case BLUETOOTH_EVENT_TDS_ACTIVATION_REQUESTED: { - BT_DBG("BLUETOOTH_EVENT_TDS_ACTIVATION_REQUESTED"); /* LCOV_EXCL_LINE */ - break; - } - case BLUETOOTH_EVENT_TDS_TRANSPORT_DATA_RECEIVED: { - BT_DBG("BLUETOOTH_EVENT_TDS_TRANSPORT_DATA_RECEIVED"); /* LCOV_EXCL_LINE */ - break; - } - case BLUETOOTH_EVENT_TDS_ACTIVATION_RESULT: { - BT_DBG("BLUETOOTH_EVENT_TDS_ACTIVATION_RESULT"); /* LCOV_EXCL_LINE */ - break; - } - case BLUETOOTH_EVENT_TDS_CONTROL_POINT_ENABLED: { - BT_DBG("BLUETOOTH_EVENT_TDS_CONTROL_POINT_ENABLED"); /* LCOV_EXCL_LINE */ - break; - } - case BLUETOOTH_EVENT_TDS_ACTIVATION_INDICATION: { - BT_DBG("BLUETOOTH_EVENT_TDS_ACTIVATION_INDICATION"); /* LCOV_EXCL_LINE */ - break; - } - case BLUETOOTH_EVENT_OTP_SERVER_STATE_CHANGED: { - break; - } - case BLUETOOTH_EVENT_OTP_READ_CHAR_VAL: { - break; - } - case BLUETOOTH_EVENT_OTP_WRITE_CHAR_VAL: { - break; - } - case BLUETOOTH_EVENT_OTP_NOTIFICATION_ENABLED: { - break; - } - case BLUETOOTH_EVENT_OTP_INDICATION: { - break; - } - case BLUETOOTH_EVENT_OTC_STATE_CHANGED: { - break; - } - default: - BT_INFO("Unknown function"); - break; - } -} -/* LCOV_EXCL_STOP */ - -static void __bt_le_event_proxy(int event, bluetooth_event_param_t *param, void *user_data) -{ - bt_adapter_le_device_scan_result_info_s *scan_info = NULL; - int event_index = -1; - - event_index = __bt_get_cb_index(event); - if (event == BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND) - BT_INFO("Need to check 2 slots in the case"); - else if (event_index == -1 || bt_event_slot_container[event_index].callback == NULL) - return; - - switch (event) { - case BLUETOOTH_EVENT_LE_ENABLED: - BT_INFO("BLUETOOTH_EVENT_LE_ENABLED"); /* LCOV_EXCL_LINE */ - ((bt_adapter_le_state_changed_cb) bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */ - (_bt_get_error_code(param->result), BT_ADAPTER_LE_ENABLED, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_LE_DISABLED: - BT_INFO("BLUETOOTH_EVENT_LE_DISABLED"); /* LCOV_EXCL_LINE */ - ((bt_adapter_le_state_changed_cb) bt_event_slot_container[event_index].callback) /* LCOV_EXCL_LINE */ - (_bt_get_error_code(param->result), BT_ADAPTER_LE_DISABLED, bt_event_slot_container[event_index].user_data); - break; - case BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND: /* LCOV_EXCL_START */ - BT_INFO("BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND"); - event_index = BT_EVENT_LE_SCAN_RESULT_UPDATED; - if (bt_event_slot_container[event_index].callback != NULL) { - if (__bt_get_bt_adapter_le_device_scan_info_s(&scan_info, (bluetooth_le_device_info_t *)(param->param_data)) == BT_ERROR_NONE) { - ((bt_adapter_le_scan_result_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), scan_info, bt_event_slot_container[event_index].user_data); - } else { - ((bt_adapter_le_scan_result_cb)bt_event_slot_container[event_index].callback) - (_bt_get_error_code(param->result), NULL, bt_event_slot_container[event_index].user_data); - } - } - - if (scan_info) - __bt_free_bt_adapter_le_device_scan_info_s(scan_info); - break; - default: - break; - } -} -/* LCOV_EXCL_STOP */ - -/* LCOV_EXCL_START */ -static int __bt_get_bt_adapter_device_discovery_info_s(bt_adapter_device_discovery_info_s **discovery_info, bluetooth_device_info_t *source_info) -{ - int i; - - BT_CHECK_INPUT_PARAMETER(source_info); - - *discovery_info = (bt_adapter_device_discovery_info_s *)malloc(sizeof(bt_adapter_device_discovery_info_s)); - if (*discovery_info == NULL) - return BT_ERROR_OUT_OF_MEMORY; - - if (strlen(source_info->device_name.name) > 0) - (*discovery_info)->remote_name = strdup(source_info->device_name.name); - else - (*discovery_info)->remote_name = NULL; - - _bt_convert_address_to_string(&((*discovery_info)->remote_address), &(source_info->device_address)); - - (*discovery_info)->bt_class.major_device_class = source_info->device_class.major_class; - (*discovery_info)->bt_class.minor_device_class = source_info->device_class.minor_class; - (*discovery_info)->bt_class.major_service_class_mask = source_info->device_class.service_class; - - if (source_info->service_index > 0) { - (*discovery_info)->service_uuid = (char **)malloc(sizeof(char *) *source_info->service_index); - if ((*discovery_info)->service_uuid != NULL) { - for (i = 0; i < source_info->service_index; i++) { - (*discovery_info)->service_uuid[i] = strdup(source_info->uuids[i]); - if ((*discovery_info)->service_uuid[i] != NULL) - __bt_convert_lower_to_upper((*discovery_info)->service_uuid[i]); - - } - } - } else - (*discovery_info)->service_uuid = NULL; - - (*discovery_info)->service_count = source_info->service_index; - - (*discovery_info)->rssi = (int)source_info->rssi; - (*discovery_info)->is_bonded = (bool)source_info->paired; - - (*discovery_info)->appearance = 0; - - (*discovery_info)->manufacturer_data_len = source_info->manufacturer_data.data_len; - if ((*discovery_info)->manufacturer_data_len > 0) { - (*discovery_info)->manufacturer_data = malloc(source_info->manufacturer_data.data_len); - memcpy((*discovery_info)->manufacturer_data, source_info->manufacturer_data.data, source_info->manufacturer_data.data_len); - } else { - (*discovery_info)->manufacturer_data = NULL; - } - - return BT_ERROR_NONE; -} - -static void __bt_free_bt_adapter_device_discovery_info_s(bt_adapter_device_discovery_info_s *discovery_info) -{ - int i; - - if (discovery_info == NULL) - return; - - if (discovery_info->remote_name != NULL) - free(discovery_info->remote_name); - - if (discovery_info->remote_address != NULL) - free(discovery_info->remote_address); - - if (discovery_info->service_uuid != NULL) { - for (i = 0; i < discovery_info->service_count; i++) { - if (discovery_info->service_uuid[i] != NULL) - free(discovery_info->service_uuid[i]); - } - free(discovery_info->service_uuid); - } - if (discovery_info->manufacturer_data != NULL) - free(discovery_info->manufacturer_data); - - free(discovery_info); - discovery_info = NULL; -} - -static int __bt_get_bt_adapter_le_device_scan_info_s( - bt_adapter_le_device_scan_result_info_s **scan_info, - bluetooth_le_device_info_t *source_info) -{ - - BT_CHECK_INPUT_PARAMETER(source_info); - - *scan_info = (bt_adapter_le_device_scan_result_info_s *)malloc(sizeof(bt_adapter_le_device_scan_result_info_s)); - if (*scan_info == NULL) - return BT_ERROR_OUT_OF_MEMORY; - - _bt_convert_address_to_string(&((*scan_info)->remote_address), &(source_info->device_address)); - - if (source_info->addr_type == 0x02) - (*scan_info)->address_type = BT_DEVICE_RANDOM_ADDRESS; - else - (*scan_info)->address_type = BT_DEVICE_PUBLIC_ADDRESS; /* LCOV_EXCL_LINE */ - (*scan_info)->rssi = (int)source_info->rssi; - (*scan_info)->adv_data_len = source_info->adv_ind_data.data_len; - if ((*scan_info)->adv_data_len > 0) { - (*scan_info)->adv_data = malloc(source_info->adv_ind_data.data_len); - memcpy((*scan_info)->adv_data, source_info->adv_ind_data.data.data, source_info->adv_ind_data.data_len); - } else { - (*scan_info)->adv_data = NULL; /* LCOV_EXCL_LINE */ - } - - (*scan_info)->scan_data_len = source_info->scan_resp_data.data_len; - if ((*scan_info)->scan_data_len > 0) { - (*scan_info)->scan_data = malloc(source_info->scan_resp_data.data_len); /* LCOV_EXCL_LINE */ - memcpy((*scan_info)->scan_data, source_info->scan_resp_data.data.data, source_info->scan_resp_data.data_len); /* LCOV_EXCL_LINE */ - } else { - (*scan_info)->scan_data = NULL; - } - - return BT_ERROR_NONE; -} - - -static void __bt_free_bt_adapter_le_device_scan_info_s(bt_adapter_le_device_scan_result_info_s *scan_info) -{ - if (scan_info == NULL) - return; - - if (scan_info->remote_address != NULL) - free(scan_info->remote_address); - - if (scan_info->adv_data != NULL) - free(scan_info->adv_data); - if (scan_info->scan_data != NULL) - free(scan_info->scan_data); - - free(scan_info); - scan_info = NULL; -} - -/* LCOV_EXCL_STOP */ -static int __bt_get_cb_index(int event) -{ - int i; - - for (i = 0; event2index[i].event != 0; i++) { - if (event2index[i].event == event) - return event2index[i].index; - } - - return -1; /* LCOV_EXCL_LINE */ -} - -/* LCOV_EXCL_START */ -static void __bt_convert_lower_to_upper(char *origin) -{ - int length = strlen(origin); - int i = 0; - - for (i = 0; i < length; i++) { - if (islower(origin[i])) - origin[i] = toupper(origin[i]); - } -} -/* LCOV_EXCL_STOP */ diff --git a/src/bluetooth-gatt.c b/src/bluetooth-gatt.c index f9cb8d7..96ef290 100644 --- a/src/bluetooth-gatt.c +++ b/src/bluetooth-gatt.c @@ -2575,7 +2575,7 @@ int bt_gatt_server_initialize(void) if (!is_gatt_server_initialized) { #ifdef TIZEN_FEATURE_GATT_RELAY - ret = _bt_get_error_code(bluetooth_gatt_server_init(&instance_id, _bt_gatt_server_event_proxy, NULL)); +// ret = _bt_get_error_code(bluetooth_gatt_server_init(&instance_id, _bt_gatt_server_event_proxy, NULL)); #else ret = _bt_get_error_code(bluetooth_gatt_init()); #endif @@ -3358,8 +3358,10 @@ int bt_gatt_client_create(const char *remote_address, bt_gatt_client_h *client) /* Attempt to Register GATT Client instance */ _bt_convert_address_to_hex(&bd_addr, client_s->remote_address); +#if 0 ret = bluetooth_gatt_client_init(&client_s->client_id, &bd_addr, _bt_gatt_client_event_proxy); +#endif if (BLUETOOTH_ERROR_NONE != ret) { free(client_s->remote_address);