diff options
Diffstat (limited to 'src/bluetooth-audio.c')
-rw-r--r-- | src/bluetooth-audio.c | 141 |
1 files changed, 103 insertions, 38 deletions
diff --git a/src/bluetooth-audio.c b/src/bluetooth-audio.c index 222afd7..623cc77 100644 --- a/src/bluetooth-audio.c +++ b/src/bluetooth-audio.c @@ -595,7 +595,6 @@ int bt_ag_notify_call_list(bt_call_list_h list) return error; } -/* LCOV_EXCL_STOP */ int bt_ag_notify_vendor_cmd(const char *command) { @@ -611,7 +610,7 @@ int bt_ag_notify_vendor_cmd(const char *command) if (error != BT_ERROR_NONE) BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error); return error; -} +} /* LCOV_EXCL_STOP */ int bt_ag_notify_voice_recognition_state(bool state) { @@ -675,6 +674,27 @@ int bt_ag_unset_multi_call_handling_event_cb(void) return BT_ERROR_NONE; } +int bt_ag_set_vendor_cmd_cb(bt_ag_vendor_cmd_cb callback, + void *user_data) +{ + BT_CHECK_HFP_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_AG_INIT_STATUS(); + BT_CHECK_INPUT_PARAMETER(callback); + _bt_set_cb(BT_EVENT_AG_VENDOR_CMD, callback, user_data); + return BT_ERROR_NONE; +} + +int bt_ag_unset_vendor_cmd_cb(void) +{ + BT_CHECK_HFP_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_AG_INIT_STATUS(); + if (_bt_check_cb(BT_EVENT_AG_VENDOR_CMD) == true) + _bt_unset_cb(BT_EVENT_AG_VENDOR_CMD); + return BT_ERROR_NONE; +} + int bt_ag_set_dtmf_transmitted_cb(bt_ag_dtmf_transmitted_cb callback, void *user_data) { @@ -719,6 +739,27 @@ int bt_ag_is_connected(bool *connected) return error; } +int bt_ag_switch_headset(const char *remote_addr) +{ + int error; + + BT_CHECK_HFP_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_AG_INIT_STATUS(); + BT_CHECK_INPUT_PARAMETER(remote_addr); + + char *addr = g_strdup(remote_addr); + BT_INFO("Remote address = %s", addr); + + error = bluetooth_telephony_set_active_headset(addr); + error = _bt_get_error_code(error); + + if (error != BT_ERROR_NONE) + BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error); + + return error; +} + int bt_call_list_create(bt_call_list_h *list) { call_list_s *handle; @@ -827,42 +868,47 @@ int bt_a2dp_set_content_protection(bool status) int bt_hf_initialize(void) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); int error; - BT_CHECK_INIT_STATUS(); error = bluetooth_hf_init(_bt_hf_event_proxy, NULL); error = _bt_get_error_code(error); if (BT_ERROR_NONE != error) { BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error); return error; } + + is_audio_hf_initialized = true; + return error; } int bt_hf_deinitialize(void) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); int error; - BT_CHECK_INIT_STATUS(); error = bluetooth_hf_deinit(); error = _bt_get_error_code(error); - if (BT_ERROR_NONE != error) { + if (BT_ERROR_NONE != error) BT_ERR("%s(0x%08x)", _bt_convert_error_to_string(error), error); - return error; - } - return error; + + is_audio_hf_initialized = false; + + return BT_ERROR_NONE; } int bt_hf_notify_call_event(bt_hf_call_event_e event, char *phone_number) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); int error = BT_ERROR_NONE; @@ -911,8 +957,9 @@ int bt_hf_notify_call_event(bt_hf_call_event_e event, char *phone_number) int bt_hf_notify_speaker_gain(int gain) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); int error; @@ -926,8 +973,9 @@ int bt_hf_notify_speaker_gain(int gain) int bt_hf_set_speaker_gain_changed_cb(bt_hf_speaker_gain_changed_cb callback, void *user_data) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(callback); _bt_set_cb(BT_EVENT_HF_SPEAKER_GAIN_CHANGE, callback, user_data); @@ -936,8 +984,9 @@ int bt_hf_set_speaker_gain_changed_cb(bt_hf_speaker_gain_changed_cb callback, vo int bt_hf_unset_speaker_gain_changed_cb(void) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); if (_bt_check_cb(BT_EVENT_HF_SPEAKER_GAIN_CHANGE) == true) _bt_unset_cb(BT_EVENT_HF_SPEAKER_GAIN_CHANGE); @@ -946,8 +995,9 @@ int bt_hf_unset_speaker_gain_changed_cb(void) int bt_hf_notify_voice_recognition_state(bool state) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); int error; @@ -961,8 +1011,9 @@ int bt_hf_notify_voice_recognition_state(bool state) int bt_hf_set_call_status_updated_event_cb(bt_hf_call_status_updated_event_cb callback, void *user_data) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(callback); _bt_set_cb(BT_EVENT_HF_CALL_STATUS_UPDATED_EVENT, callback, user_data); @@ -971,8 +1022,9 @@ int bt_hf_set_call_status_updated_event_cb(bt_hf_call_status_updated_event_cb ca int bt_hf_unset_call_status_updated_event_cb(void) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); if (_bt_check_cb(BT_EVENT_HF_CALL_STATUS_UPDATED_EVENT) == true) _bt_unset_cb(BT_EVENT_HF_CALL_STATUS_UPDATED_EVENT); @@ -981,8 +1033,9 @@ int bt_hf_unset_call_status_updated_event_cb(void) int bt_hf_close_sco(void) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); int error; @@ -996,8 +1049,9 @@ int bt_hf_close_sco(void) int bt_hf_send_dtmf(char *dtmf) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); int error; @@ -1011,8 +1065,9 @@ int bt_hf_send_dtmf(char *dtmf) int bt_hf_is_connected(bool *connected) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(connected); int error; @@ -1033,8 +1088,9 @@ int bt_hf_is_connected(bool *connected) int bt_hf_is_sco_opened(bool *opened) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(opened); int error; @@ -1055,8 +1111,9 @@ int bt_hf_is_sco_opened(bool *opened) int bt_hf_get_codec_id(unsigned int *codec_id) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(codec_id); int error; @@ -1071,8 +1128,9 @@ int bt_hf_get_codec_id(unsigned int *codec_id) int bt_hf_get_call_status_info_list(GSList **call_list) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(call_list); int error; @@ -1107,14 +1165,14 @@ int bt_hf_get_call_status_info_list(GSList **call_list) int bt_hf_is_inband_ringtone_supported(bool *supported) { -#ifdef TIZEN_BT_HFP_HF_ENABLE - int error; - gboolean is_supported = FALSE; - BT_CHECK_HF_SUPPORT(); BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(supported); + int error; + gboolean is_supported = FALSE; + error = bluetooth_hf_is_ibr_supported(&is_supported); error = _bt_get_error_code(error); if (error != BT_ERROR_NONE) @@ -1126,10 +1184,6 @@ int bt_hf_is_inband_ringtone_supported(bool *supported) *supported = FALSE; return error; -#else - BT_ERR("NOT_SUPPORTED(0x%08x)", BT_ERROR_NOT_SUPPORTED); - return BT_ERROR_NOT_SUPPORTED; -#endif } static void __bt_hf_free_call_status_info(void *data) @@ -1141,8 +1195,9 @@ static void __bt_hf_free_call_status_info(void *data) int bt_hf_free_call_status_info_list(GSList *call_list) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(call_list); g_slist_free_full(call_list, __bt_hf_free_call_status_info); @@ -1153,8 +1208,9 @@ int bt_hf_free_call_status_info_list(GSList *call_list) int bt_hf_set_sco_state_changed_cb(bt_hf_sco_state_changed_cb callback, void *user_data) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(callback); _bt_set_cb(BT_EVENT_HF_SCO_CONNECTION_STATUS, callback, user_data); return BT_ERROR_NONE; @@ -1162,8 +1218,9 @@ int bt_hf_set_sco_state_changed_cb(bt_hf_sco_state_changed_cb callback, int bt_hf_unset_sco_state_changed_cb(void) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); if (_bt_check_cb(BT_EVENT_HF_SCO_CONNECTION_STATUS) == true) _bt_unset_cb(BT_EVENT_HF_SCO_CONNECTION_STATUS); @@ -1173,8 +1230,9 @@ int bt_hf_unset_sco_state_changed_cb(void) int bt_hf_set_call_handling_event_cb(bt_hf_call_handling_event_cb callback, void *user_data) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(callback); _bt_set_cb(BT_EVENT_HF_CALL_HANDLING_EVENT, callback, user_data); @@ -1183,8 +1241,9 @@ int bt_hf_set_call_handling_event_cb(bt_hf_call_handling_event_cb callback, int bt_hf_unset_call_handling_event_cb(void) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); if (_bt_check_cb(BT_EVENT_HF_CALL_HANDLING_EVENT) == true) _bt_unset_cb(BT_EVENT_HF_CALL_HANDLING_EVENT); @@ -1195,8 +1254,9 @@ int bt_hf_set_multi_call_handling_event_cb( bt_hf_multi_call_handling_event_cb callback, void *user_data) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(callback); _bt_set_cb(BT_EVENT_HF_MULTI_CALL_HANDLING_EVENT, callback, user_data); @@ -1205,8 +1265,9 @@ int bt_hf_set_multi_call_handling_event_cb( int bt_hf_unset_multi_call_handling_event_cb(void) { - BT_CHECK_INIT_STATUS(); BT_CHECK_HF_SUPPORT(); + BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); if (_bt_check_cb(BT_EVENT_HF_MULTI_CALL_HANDLING_EVENT) == true) _bt_unset_cb(BT_EVENT_HF_MULTI_CALL_HANDLING_EVENT); @@ -1219,6 +1280,7 @@ int bt_hf_set_remote_call_event_cb( { BT_CHECK_HF_SUPPORT(); BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(callback); _bt_set_cb(BT_EVENT_HF_REMOTE_CALL_EVENT, callback, user_data); return BT_ERROR_NONE; @@ -1228,6 +1290,7 @@ int bt_hf_unset_remote_call_event_cb(void) { BT_CHECK_HF_SUPPORT(); BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); if (_bt_check_cb(BT_EVENT_HF_REMOTE_CALL_EVENT) == true) _bt_unset_cb(BT_EVENT_HF_REMOTE_CALL_EVENT); return BT_ERROR_NONE; @@ -1239,6 +1302,7 @@ int bt_hf_set_remote_device_state_changed_cb( { BT_CHECK_HF_SUPPORT(); BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(callback); _bt_set_cb(BT_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED, callback, user_data); return BT_ERROR_NONE; @@ -1248,6 +1312,7 @@ int bt_hf_unset_remote_device_state_changed_cb(void) { BT_CHECK_HF_SUPPORT(); BT_CHECK_INIT_STATUS(); + BT_CHECK_HF_INIT_STATUS(); if (_bt_check_cb(BT_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED) == true) _bt_unset_cb(BT_EVENT_HF_CIEV_DEVICE_STATUS_CHANGED); return BT_ERROR_NONE; |