summaryrefslogtreecommitdiffstats
path: root/drivers/rilmodem/call-settings.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2015-11-04 21:04:21 -0600
committerDenis Kenzior <denkenz@gmail.com>2015-11-04 21:04:21 -0600
commitb093dfe133f2370f83f6513cf80bf1695064684e (patch)
treea13db2311705d82a1246ef99576cef949fbedf6a /drivers/rilmodem/call-settings.c
parent08834f9c2f5ecee4044a76d4e2374662d7c40e74 (diff)
downloadofono-b093dfe133f2370f83f6513cf80bf1695064684e.tar.bz2
rilmodem: Implement ril_cw_set inline
Diffstat (limited to 'drivers/rilmodem/call-settings.c')
-rw-r--r--drivers/rilmodem/call-settings.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/rilmodem/call-settings.c b/drivers/rilmodem/call-settings.c
index 5603fbd6..8dc52622 100644
--- a/drivers/rilmodem/call-settings.c
+++ b/drivers/rilmodem/call-settings.c
@@ -74,7 +74,23 @@ static void ril_cw_set(struct ofono_call_settings *cs, int mode, int cls,
int ret;
struct parcel rilp;
- g_ril_request_set_call_waiting(sd->ril, mode, cls, &rilp);
+ /*
+ * Modem seems to respond with error to all queries
+ * or settings made with bearer class
+ * BEARER_CLASS_DEFAULT. Design decision: If given
+ * class is BEARER_CLASS_DEFAULT let's map it to
+ * SERVICE_CLASS_VOICE effectively making it the
+ * default bearer.
+ */
+ if (cls == BEARER_CLASS_DEFAULT)
+ cls = BEARER_CLASS_VOICE;
+
+ parcel_init(&rilp);
+ parcel_w_int32(&rilp, 2); /* Number of params */
+ parcel_w_int32(&rilp, mode); /* on/off */
+ parcel_w_int32(&rilp, cls); /* Service class */
+
+ g_ril_append_print_buf(sd->ril, "(%d, 0x%x)", mode, cls);
ret = g_ril_send(sd->ril, RIL_REQUEST_SET_CALL_WAITING, &rilp,
ril_set_cb, cbd, g_free);