diff options
author | Denis Kenzior <denkenz@gmail.com> | 2015-11-04 21:04:21 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2015-11-04 21:04:21 -0600 |
commit | b093dfe133f2370f83f6513cf80bf1695064684e (patch) | |
tree | a13db2311705d82a1246ef99576cef949fbedf6a /drivers/rilmodem/call-settings.c | |
parent | 08834f9c2f5ecee4044a76d4e2374662d7c40e74 (diff) | |
download | ofono-b093dfe133f2370f83f6513cf80bf1695064684e.tar.bz2 |
rilmodem: Implement ril_cw_set inline
Diffstat (limited to 'drivers/rilmodem/call-settings.c')
-rw-r--r-- | drivers/rilmodem/call-settings.c | 18 |
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); |