#include <string.h>
#include <stdlib.h>
#include <ctype.h>
-#include <stdio.h>
-#include <stdbool.h>
#include <bluetooth-api.h>
#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;
{ 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;
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;
}
/*
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;
(*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]);
}
(*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 {
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);
}
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 */