diff options
author | Ravi Nagarajan <nravi@broadcom.com> | 2012-04-11 12:07:09 +0530 |
---|---|---|
committer | Matthew Xie <mattx@google.com> | 2012-07-14 11:19:16 -0700 |
commit | 7ca15ca81eee23a930eecc9f388cc73b4efc1994 (patch) | |
tree | a2393513201d5ece325b95456e1e742df1bf8eb4 /btif | |
parent | aeddde20be2d01a2c052ee516f9015243dbaebf1 (diff) | |
download | external_bluetooth_bluedroid-7ca15ca81eee23a930eecc9f388cc73b4efc1994.zip external_bluetooth_bluedroid-7ca15ca81eee23a930eecc9f388cc73b4efc1994.tar.gz external_bluetooth_bluedroid-7ca15ca81eee23a930eecc9f388cc73b4efc1994.tar.bz2 |
Resolve HFP PTS issues related to 3way calling. Following were the changes
1. Enable the feature in stack to avoid sending duplicate indicators
2. AT command response return code was incorrect
3. Update the call indicator to confirm to errata#2043. call=1 implies a call is in progress - either held/active
Change-Id: I0243f83697ed7390ec0ad96c525e41ee9d93de2d
Diffstat (limited to 'btif')
-rw-r--r-- | btif/src/btif_hf.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/btif/src/btif_hf.c b/btif/src/btif_hf.c index 18939cb..f2e5bbf 100644 --- a/btif/src/btif_hf.c +++ b/btif/src/btif_hf.c @@ -788,6 +788,7 @@ static bt_status_t at_response(bthf_at_response_t response_code) /* TODO: Fix the errcode */ send_at_result((response_code == BTHF_AT_RESPONSE_OK) ? BTA_AG_OK_DONE : BTA_AG_OK_ERROR, 0); + return BT_STATUS_SUCCESS; } @@ -1002,14 +1003,16 @@ static bt_status_t phone_state_change(int num_active, int num_held, bthf_call_st memset(&ag_res, 0, sizeof(tBTA_AG_RES_DATA)); - /* Active Changed? */ - if ((num_active != btif_hf_cb.num_active) && !activeCallUpdated) + /* per the errata 2043, call=1 implies atleast one call is in progress (active/held) + ** https://www.bluetooth.org/errata/errata_view.cfm?errata_id=2043 + ** Handle call indicator change + **/ + if (!activeCallUpdated && ((num_active + num_held) != (btif_hf_cb.num_active + btif_hf_cb.num_held)) ) { BTIF_TRACE_DEBUG3("%s: Active call states changed. old: %d new: %d", __FUNCTION__, btif_hf_cb.num_active, num_active); - send_indicator_update(BTA_AG_IND_CALL, (num_active ? 1 : 0)); + send_indicator_update(BTA_AG_IND_CALL, ((num_active + num_held) > 0) ? 1 : 0); } - /* Held Changed? */ if (num_held != btif_hf_cb.num_held) { |