huaweimodem: Fix AT^DDSETEX=2 timing for voice calls

Voice output serial port is enabled on some Huawei models (e.g. E169)
without problems, but for example on E173u-2 it is never enabled
during an incoming call. There might also be other Huawei models
having the same issue.

I traced the issue down to "^DDSETEX" AT command, which is used
to notify the device to start streaming audio. It seems that Ofono
sends this command too early on incoming calls. The command should
always be sent *after* the dial "D" or answer "A" command. The patch
fixes this behavior and afterwards voice will also work on E173u-2.
This commit is contained in:
Jarkko Lehtoranta 2012-03-24 16:03:44 +02:00 committed by Marcel Holtmann
parent 31e1b2e6ce
commit 8b11ee67d7
1 changed files with 9 additions and 3 deletions

View File

@ -78,9 +78,6 @@ static struct ofono_call *create_call(struct ofono_voicecall *vc, int type,
d->calls = g_slist_insert_sorted(d->calls, call, at_util_call_compare);
g_at_chat_send(d->chat, "AT^DDSETEX=2", none_prefix,
NULL, NULL, NULL);
return call;
}
@ -116,6 +113,7 @@ static void huawei_dial(struct ofono_voicecall *vc,
enum ofono_clir_option clir,
ofono_voicecall_cb_t cb, void *data)
{
struct voicecall_data *vd = ofono_voicecall_get_data(vc);
char buf[256];
if (ph->type == 145)
@ -137,12 +135,20 @@ static void huawei_dial(struct ofono_voicecall *vc,
strcat(buf, ";");
huawei_template(vc, buf, cb, data);
g_at_chat_send(vd->chat, "AT^DDSETEX=2", none_prefix,
NULL, NULL, NULL);
}
static void huawei_answer(struct ofono_voicecall *vc,
ofono_voicecall_cb_t cb, void *data)
{
struct voicecall_data *vd = ofono_voicecall_get_data(vc);
huawei_template(vc, "ATA", cb, data);
g_at_chat_send(vd->chat, "AT^DDSETEX=2", none_prefix,
NULL, NULL, NULL);
}
static void huawei_hangup(struct ofono_voicecall *vc,