summaryrefslogtreecommitdiffstats
path: root/drivers/ifxmodem/voicecall.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-09-23 22:54:41 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-09-23 23:53:41 -0500
commit6b10d14402bfa6ca87e67e848955070351780369 (patch)
tree039d18aee12db20c5da4987829ea6bba322a9c9a /drivers/ifxmodem/voicecall.c
parente1ee41b654227c458a5f30433c7e565c7c3f65f0 (diff)
downloadofono-6b10d14402bfa6ca87e67e848955070351780369.tar.bz2
ifx: IFX provides hangup_all and hangup_active
Diffstat (limited to 'drivers/ifxmodem/voicecall.c')
-rw-r--r--drivers/ifxmodem/voicecall.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/ifxmodem/voicecall.c b/drivers/ifxmodem/voicecall.c
index 4e36de10..e4dae901 100644
--- a/drivers/ifxmodem/voicecall.c
+++ b/drivers/ifxmodem/voicecall.c
@@ -477,11 +477,18 @@ static void ifx_answer(struct ofono_voicecall *vc,
ifx_template("ATA", vc, generic_cb, 0, cb, data);
}
-static void ifx_hangup(struct ofono_voicecall *vc,
+static void ifx_ath(struct ofono_voicecall *vc,
ofono_voicecall_cb_t cb, void *data)
{
- /* Hangup active call */
- ifx_template("AT+CHUP", vc, generic_cb, 0x3f, cb, data);
+ /* Hangup active + held call, but not waiting */
+ ifx_template("ATH", vc, generic_cb, 0x1f, cb, data);
+}
+
+static void ifx_chup(struct ofono_voicecall *vc,
+ ofono_voicecall_cb_t cb, void *data)
+{
+ /* Hangup active + but not held or waiting */
+ ifx_template("ATH", vc, generic_cb, 0x1d, cb, data);
}
static void ifx_hold_all_active(struct ofono_voicecall *vc,
@@ -896,7 +903,8 @@ static struct ofono_voicecall_driver driver = {
.remove = ifx_voicecall_remove,
.dial = ifx_dial,
.answer = ifx_answer,
- .hangup_all = ifx_hangup,
+ .hangup_all = ifx_ath,
+ .hangup_active = ifx_chup,
.hold_all_active = ifx_hold_all_active,
.release_all_held = ifx_release_all_held,
.set_udub = ifx_set_udub,