diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-27 18:38:03 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-27 18:38:03 +0200 |
commit | a04f48420ffc2c1a33e743d5075f24809161b2fd (patch) | |
tree | 14f017095e84aeb5f01189cc09de2f7df731cec2 | |
parent | 7fa0fd3049a4034fc347d7035d56ca1682a24856 (diff) |
Implement support for AT+NREC
This patch adds support for the AT+NREC command which can be used for
disabling noice reduction and echo canceling features on the AG side.
-rw-r--r-- | audio/headset.c | 16 | ||||
-rw-r--r-- | audio/telephony-dummy.c | 6 | ||||
-rw-r--r-- | audio/telephony.h | 2 |
3 files changed, 24 insertions, 0 deletions
diff --git a/audio/headset.c b/audio/headset.c index be07e424..c21c208d 100644 --- a/audio/headset.c +++ b/audio/headset.c @@ -1007,6 +1007,11 @@ int telephony_call_hold_rsp(void *telephony_device, cme_error_t err) return telephony_generic_rsp(telephony_device, err); } +int telephony_disable_nr_and_ec_rsp(void *telephony_device, cme_error_t err) +{ + return telephony_generic_rsp(telephony_device, err); +} + int telephony_operator_selection_ind(int mode, const char *oper) { if (!active_devices) @@ -1037,6 +1042,16 @@ static int operator_selection(struct audio_device *device, const char *buf) return 0; } +static int disable_nr_and_ec(struct audio_device *device, const char *buf) +{ + if (strlen(buf) < 9) + return -EINVAL; + + telephony_disable_nr_and_ec_req(device); + + return 0; +} + static struct event event_callbacks[] = { { "ATA", answer_call }, { "ATD", dial_number }, @@ -1056,6 +1071,7 @@ static struct event event_callbacks[] = { { "AT+CMEE", extended_errors }, { "AT+CCWA", call_waiting_notify }, { "AT+COPS", operator_selection }, + { "AT+NREC", disable_nr_and_ec }, { 0 } }; diff --git a/audio/telephony-dummy.c b/audio/telephony-dummy.c index b857183f..0c7ff9d9 100644 --- a/audio/telephony-dummy.c +++ b/audio/telephony-dummy.c @@ -196,6 +196,12 @@ void telephony_call_hold_req(void *telephony_device, const char *cmd) telephony_call_hold_rsp(telephony_device, CME_ERROR_NONE); } +void telephony_disable_nr_and_ec_req(void *telephony_device) +{ + debug("telephony-dummy: got disable NR and EC request"); + telephony_disable_nr_and_ec_rsp(telephony_device, CME_ERROR_NONE); +} + /* D-Bus method handlers */ static DBusMessage *outgoing_call(DBusConnection *conn, DBusMessage *msg, void *data) diff --git a/audio/telephony.h b/audio/telephony.h index 5e972e74..0eb0f44e 100644 --- a/audio/telephony.h +++ b/audio/telephony.h @@ -146,6 +146,7 @@ void telephony_subscriber_number_req(void *telephony_device); void telephony_list_current_calls_req(void *telephony_device); void telephony_operator_selection_req(void *telephony_device); void telephony_call_hold_req(void *telephony_device, const char *cmd); +void telephony_disable_nr_and_ec_req(void *telephony_device); /* AG responses to HF requests. These are implemented by headset.c */ int telephony_event_reporting_rsp(void *telephony_device, cme_error_t err); @@ -159,6 +160,7 @@ int telephony_subscriber_number_rsp(void *telephony_device, cme_error_t err); int telephony_list_current_calls_rsp(void *telephony_device, cme_error_t err); int telephony_operator_selection_rsp(void *telephony_device, cme_error_t err); int telephony_call_hold_rsp(void *telephony_device, cme_error_t err); +int telephony_disable_nr_and_ec_rsp(void *telephony_device, cme_error_t err); /* Event indications by AG. These are implemented by headset.c */ int telephony_event_ind(int index); |