Open Source Telephony
 help / color / mirror / Atom feed
From: Arun Ravindran <arunlee@gmail.com>
To: ofono@ofono.org
Subject: [PATCH] isimodem: Improper handling of missed call
Date: Mon, 23 May 2011 18:20:11 +0300	[thread overview]
Message-ID: <1306164011-29368-1-git-send-email-arunlee@gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 2334 bytes --]

---
 drivers/isimodem/voicecall.c |   32 ++++++++++++++++++++++++++++----
 1 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/drivers/isimodem/voicecall.c b/drivers/isimodem/voicecall.c
index 333f9b8..c599e39 100644
--- a/drivers/isimodem/voicecall.c
+++ b/drivers/isimodem/voicecall.c
@@ -50,6 +50,7 @@ struct isi_call {
 	uint8_t id;
 	uint8_t call_id;
 	uint8_t status;
+	uint8_t prev_status;
 	uint8_t mode;
 	uint8_t mode_info;
 	uint8_t cause_type;
@@ -314,7 +315,7 @@ static void isi_call_status_sb_proc(struct isi_voicecall *ivc,
 
 	if (!g_isi_sb_iter_get_byte(sb, &status, 2))
 		return;
-
+	call->prev_status = call->status;
 	call->status = status;
 }
 
@@ -401,10 +402,16 @@ static int isi_call_status_to_clcc(const struct isi_call *call)
 		return 5;
 
 	case CALL_STATUS_MO_RELEASE:
-	case CALL_STATUS_MT_RELEASE:
-	case CALL_STATUS_TERMINATED:
 		return 6;
 
+	case CALL_STATUS_MT_RELEASE:
+		if ((call->prev_status == CALL_STATUS_MT_ALERTING) ||
+				(call->prev_status == CALL_STATUS_COMING) ||
+				(call->prev_status == CALL_STATUS_WAITING))
+			return 4;
+		else
+			return 6;
+
 	case CALL_STATUS_ACTIVE:
 	case CALL_STATUS_HOLD_INITIATED:
 		return 0;
@@ -548,9 +555,26 @@ static void isi_call_notify(struct ofono_voicecall *ovc, struct isi_call *call)
 
 	case CALL_STATUS_MO_RELEASE:
 	case CALL_STATUS_MT_RELEASE:
-	case CALL_STATUS_TERMINATED:
+		/*
+		* Core requires the call status to be either incoming
+		* or waiting to identify the disconnected call as missed.
+		* The MT RELEASE is not mapped to any state in +CLCC, but
+		* we need the disconnect reason.
+		*/
 		isi_call_set_disconnect_reason(call);
 		break;
+	case CALL_STATUS_TERMINATED:
+		DBG("State( CALL_STATUS_TERMINATED ) need not be reported to Core");
+		/* 
+		* The call terminated is not reported to core as
+		* these intermediate states are not processed in 
+		* the core. We report the call status when it becomes 
+		* idle and TERMINATED is not mapped to +CLCC. The disconnect 
+		* reason is set, so that the call termination cause 
+		* in case of error is available to the core.
+		*/
+		isi_call_set_disconnect_reason(call);
+		return;
 	case CALL_STATUS_ANSWERED:
 		DBG("State need not be reported to Core");
 		return;
-- 
1.7.1


             reply	other threads:[~2011-05-23 15:20 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-23 15:20 Arun Ravindran [this message]
2011-05-30 12:03 ` [PATCH] isimodem: Improper handling of missed call Aki Niemi
2011-05-30 19:35   ` Arun Ravindran
2011-06-14  8:30     ` Aki Niemi
2011-07-20 13:14       ` Paccou, Nicolas
  -- strict thread matches above, loose matches on Subject: below --
2011-05-18 10:47 Arun Ravindran
2011-05-19 12:19 ` Aki Niemi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1306164011-29368-1-git-send-email-arunlee@gmail.com \
    --to=arunlee@gmail.com \
    --cc=ofono@ofono.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox