summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2014-02-10 11:01:28 -0600
committerDenis Kenzior <denkenz@gmail.com>2014-10-20 13:40:29 -0500
commit6c4ac05fbc98d03ed9cbe62c18e63c356b92dd4a (patch)
tree630a5d3d3a511501b21d04510b8aca4d6921d71e /src
parent934ea9a9fe9f12dec47f1fb50536d158a217b5b7 (diff)
downloadofono-6c4ac05fbc98d03ed9cbe62c18e63c356b92dd4a.tar.bz2
emulator: Refine +BIND support
Diffstat (limited to 'src')
-rw-r--r--src/emulator.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/emulator.c b/src/emulator.c
index cab509c9..1c43e214 100644
--- a/src/emulator.c
+++ b/src/emulator.c
@@ -54,6 +54,7 @@ struct ofono_emulator {
unsigned int cmee_mode : 2;
bool clip : 1;
bool ccwa : 1;
+ bool ddr_active : 1;
};
struct indicator {
@@ -895,6 +896,8 @@ fail:
static void biev_cb(GAtServer *server, GAtServerRequestType type,
GAtResult *result, gpointer user_data)
{
+ struct ofono_emulator *em = user_data;
+
switch (type) {
case G_AT_SERVER_REQUEST_TYPE_SET:
{
@@ -908,7 +911,10 @@ static void biev_cb(GAtServer *server, GAtServerRequestType type,
if (g_at_result_iter_next_number(&iter, &hf_indicator) == FALSE)
goto fail;
- if (hf_indicator != 1)
+ if (hf_indicator != HFP_HF_INDICATOR_ENHANCED_SAFETY)
+ goto fail;
+
+ if (em->ddr_active == FALSE)
goto fail;
if (g_at_result_iter_next_number(&iter, &val) == FALSE)
@@ -1010,6 +1016,8 @@ void ofono_emulator_register(struct ofono_emulator *em, int fd)
em);
if (em->type == OFONO_EMULATOR_TYPE_HFP) {
+ em->ddr_active = true;
+
emulator_add_indicator(em, OFONO_EMULATOR_IND_SERVICE, 0, 1, 0,
FALSE);
emulator_add_indicator(em, OFONO_EMULATOR_IND_CALL, 0, 1, 0,
@@ -1447,6 +1455,8 @@ void ofono_emulator_set_hf_indicator_active(struct ofono_emulator *em,
if (indicator != HFP_HF_INDICATOR_ENHANCED_SAFETY)
return;
+ em->ddr_active = active;
+
sprintf(buf, "+BIND: %d,%d", HFP_HF_INDICATOR_ENHANCED_SAFETY, active);
g_at_server_send_unsolicited(em->server, buf);
}