summaryrefslogtreecommitdiff
path: root/src/bluetooth-audio.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bluetooth-audio.c')
-rw-r--r--src/bluetooth-audio.c141
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;