summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Machek <pavel@ucw.cz>2020-09-15 15:23:01 +0200
committerDenis Kenzior <denkenz@gmail.com>2020-09-15 10:17:55 -0500
commit25fd00588adf40436a8c0eb124258ea530c83266 (patch)
treeb692b548b79dff44b1a0a18a1a80a043a5c4a535
parent52091a1af02fa7151c2bb6b542e51068ce20c525 (diff)
downloadofono-25fd00588adf40436a8c0eb124258ea530c83266.tar.gz
droid 4: add special handling required for voice calls and SIM
Droid 4 modem is "special" (aka broken) so it seems to need a bit of error handling.
-rw-r--r--drivers/atmodem/sim.c1
-rw-r--r--drivers/atmodem/vendor.h1
-rw-r--r--drivers/atmodem/voicecall.c5
3 files changed, 7 insertions, 0 deletions
diff --git a/drivers/atmodem/sim.c b/drivers/atmodem/sim.c
index 6ab91655..50eda698 100644
--- a/drivers/atmodem/sim.c
+++ b/drivers/atmodem/sim.c
@@ -199,6 +199,7 @@ static void at_sim_read_info(struct ofono_sim *sim, int fileid,
case OFONO_VENDOR_SPEEDUP:
case OFONO_VENDOR_QUALCOMM_MSM:
case OFONO_VENDOR_SIMCOM:
+ case OFONO_VENDOR_DROID:
/* Maximum possible length */
len += sprintf(buf + len, ",0,0,255");
break;
diff --git a/drivers/atmodem/vendor.h b/drivers/atmodem/vendor.h
index 6bac7f89..82284e44 100644
--- a/drivers/atmodem/vendor.h
+++ b/drivers/atmodem/vendor.h
@@ -27,6 +27,7 @@ enum ofono_vendor {
OFONO_VENDOR_MBM,
OFONO_VENDOR_GOBI,
OFONO_VENDOR_QUALCOMM_MSM,
+ OFONO_VENDOR_DROID,
OFONO_VENDOR_OPTION_HSO,
OFONO_VENDOR_ZTE,
OFONO_VENDOR_HUAWEI,
diff --git a/drivers/atmodem/voicecall.c b/drivers/atmodem/voicecall.c
index 65db0000..afd128fa 100644
--- a/drivers/atmodem/voicecall.c
+++ b/drivers/atmodem/voicecall.c
@@ -161,6 +161,11 @@ static void clcc_poll_cb(gboolean ok, GAtResult *result, gpointer user_data)
goto poll_again;
}
+ if (vd->vendor == OFONO_VENDOR_DROID) {
+ poll_again = TRUE;
+ goto poll_again;
+ }
+
ofono_error("We are polling CLCC and received an error");
ofono_error("All bets are off for call management");
return;