summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-01-06 14:08:35 -0800
committerMarcel Holtmann <marcel@holtmann.org>2012-01-06 14:08:35 -0800
commit9e26e29f8ded22a072b5a4457373398990480f87 (patch)
tree1ef0870714d029a9b882e87aa1999361cea33690
parent02cbee49553acb53f5065c12a729d1b300897f40 (diff)
downloadofono-9e26e29f8ded22a072b5a4457373398990480f87.tar.bz2
atmodem: Add call state polling for Qualcomm MSM based modems
The voice call support of the Qualcomm MSM based modems does not report NO CARRIER, NO ANSWER or BUSY unsolicited notifications. So keep polling for call state changes via AT+CLCC even during an active call.
-rw-r--r--drivers/atmodem/voicecall.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/atmodem/voicecall.c b/drivers/atmodem/voicecall.c
index 675c131e..d07052c8 100644
--- a/drivers/atmodem/voicecall.c
+++ b/drivers/atmodem/voicecall.c
@@ -161,9 +161,16 @@ static void clcc_poll_cb(gboolean ok, GAtResult *result, gpointer user_data)
nc = n ? n->data : NULL;
oc = o ? o->data : NULL;
- if (nc && nc->status >= CALL_STATUS_DIALING &&
- nc->status <= CALL_STATUS_WAITING)
+ switch (vd->vendor) {
+ case OFONO_VENDOR_QUALCOMM_MSM:
poll_again = TRUE;
+ break;
+ default:
+ if (nc && nc->status >= CALL_STATUS_DIALING &&
+ nc->status <= CALL_STATUS_WAITING)
+ poll_again = TRUE;
+ break;
+ }
if (oc && (nc == NULL || (nc->id > oc->id))) {
enum ofono_disconnect_reason reason;