summaryrefslogtreecommitdiffstats
path: root/plugins/icera.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-05-25 13:09:27 +0200
committerMarcel Holtmann <marcel@holtmann.org>2012-05-25 13:09:27 +0200
commit27d79055baa1fd51530d96c6328ce0e1d04b4633 (patch)
treec499014323dd8e17c7a16399519894c718c0217c /plugins/icera.c
parentf29aab25154e79bfcf4c859ac0d900b20b42bee4 (diff)
downloadofono-27d79055baa1fd51530d96c6328ce0e1d04b4633.tar.bz2
icera: Select USSD driver based on USSD mode setting
Diffstat (limited to 'plugins/icera.c')
-rw-r--r--plugins/icera.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/plugins/icera.c b/plugins/icera.c
index c283fccb..7df5ffd7 100644
--- a/plugins/icera.c
+++ b/plugins/icera.c
@@ -54,7 +54,7 @@ struct icera_data {
GAtChat *chat;
struct ofono_sim *sim;
gboolean have_sim;
- int ussdmode;
+ gboolean have_ussdmode;
};
static int icera_probe(struct ofono_modem *modem)
@@ -155,7 +155,8 @@ static void ussdmode_query(gboolean ok, GAtResult *result,
DBG("mode %d", mode);
- data->ussdmode = mode;
+ if (mode == 1)
+ data->have_ussdmode = TRUE;
}
static void ussdmode_support(gboolean ok, GAtResult *result,
@@ -170,11 +171,9 @@ static void ussdmode_support(gboolean ok, GAtResult *result,
g_at_result_iter_init(&iter, result);
- DBG("a");
if (!g_at_result_iter_next(&iter, "%IUSSDMODE:"))
return;
- DBG("b");
g_at_chat_send(data->chat, "AT%IUSSDMODE?", ussdmode_prefix,
ussdmode_query, modem, NULL);
}
@@ -404,7 +403,10 @@ static void icera_post_online(struct ofono_modem *modem)
ofono_netreg_create(modem, OFONO_VENDOR_ICERA, "atmodem", data->chat);
- ofono_ussd_create(modem, 0, "atmodem", data->chat);
+ if (data->have_ussdmode == TRUE)
+ ofono_ussd_create(modem, 0, "huaweimodem", data->chat);
+ else
+ ofono_ussd_create(modem, 0, "atmodem", data->chat);
}
static struct ofono_modem_driver icera_driver = {