diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2012-05-25 13:09:27 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2012-05-25 13:09:27 +0200 |
commit | 27d79055baa1fd51530d96c6328ce0e1d04b4633 (patch) | |
tree | c499014323dd8e17c7a16399519894c718c0217c /plugins/icera.c | |
parent | f29aab25154e79bfcf4c859ac0d900b20b42bee4 (diff) | |
download | ofono-27d79055baa1fd51530d96c6328ce0e1d04b4633.tar.bz2 |
icera: Select USSD driver based on USSD mode setting
Diffstat (limited to 'plugins/icera.c')
-rw-r--r-- | plugins/icera.c | 12 |
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 = { |