2010-10-13 08:37:59

by Lukasz Pawlik

[permalink] [raw]
Subject: [PATCH] Fix problem with hanging up held call

According to the HFP specification AT+CHUP command should not have impact
on the state of any held calls. Previously held call was terminated when
there was second alerting call. This patch fix this problem. AT+CHUP
command will go towards alerting call.
---
audio/telephony-maemo6.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/audio/telephony-maemo6.c b/audio/telephony-maemo6.c
index 05ff332..00a4b25 100644
--- a/audio/telephony-maemo6.c
+++ b/audio/telephony-maemo6.c
@@ -498,6 +498,7 @@ void telephony_last_dialed_number_req(void *telephony_device)
void telephony_terminate_call_req(void *telephony_device)
{
struct csd_call *call;
+ struct csd_call *alerting;
int err;

call = find_call_with_status(CSD_CALL_STATUS_ACTIVE);
@@ -511,6 +512,9 @@ void telephony_terminate_call_req(void *telephony_device)
return;
}

+ alerting = find_call_with_status(CSD_CALL_STATUS_MO_ALERTING);
+ if (call->on_hold && alerting)
+ err = release_call(alerting);
if (call->conference)
err = release_conference();
else
--
1.7.0.4



2010-10-13 12:03:34

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH] Fix problem with hanging up held call

Hi Lukasz,

On Wed, Oct 13, 2010, Lukasz Pawlik wrote:
> There was an error in my patch. Patch attached to this mail fix it.

Thanks. The (updated) patch has been pushed upstream.

Johan

2010-10-13 09:33:24

by Lukasz Pawlik

[permalink] [raw]
Subject: Re: [PATCH] Fix problem with hanging up held call

There was an error in my patch. Patch attached to this mail fix it.

2010/10/13 Lukasz Pawlik <[email protected]>:
> According to the HFP specification AT+CHUP command should not have impact
> on the state of any held calls. Previously held call was terminated when
> there was second alerting call. This patch fix this problem. AT+CHUP
> command will go towards alerting call.
> ---
> ?audio/telephony-maemo6.c | ? ?4 ++++
> ?1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/audio/telephony-maemo6.c b/audio/telephony-maemo6.c
> index 05ff332..00a4b25 100644
> --- a/audio/telephony-maemo6.c
> +++ b/audio/telephony-maemo6.c
> @@ -498,6 +498,7 @@ void telephony_last_dialed_number_req(void *telephony_device)
> ?void telephony_terminate_call_req(void *telephony_device)
> ?{
> ? ? ? ?struct csd_call *call;
> + ? ? ? struct csd_call *alerting;
> ? ? ? ?int err;
>
> ? ? ? ?call = find_call_with_status(CSD_CALL_STATUS_ACTIVE);
> @@ -511,6 +512,9 @@ void telephony_terminate_call_req(void *telephony_device)
> ? ? ? ? ? ? ? ?return;
> ? ? ? ?}
>
> + ? ? ? alerting = find_call_with_status(CSD_CALL_STATUS_MO_ALERTING);
> + ? ? ? if (call->on_hold && alerting)
> + ? ? ? ? ? ? ? err = release_call(alerting);
> ? ? ? ?if (call->conference)
> ? ? ? ? ? ? ? ?err = release_conference();
> ? ? ? ?else
> --
> 1.7.0.4
>
>


Attachments:
0001-Fix-problem-with-hanging-up-held-call.patch (1.31 kB)