summaryrefslogtreecommitdiffstats
path: root/plugins/huawei.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-01-11 21:35:25 +0100
committerMarcel Holtmann <marcel@holtmann.org>2012-01-11 21:35:25 +0100
commite0853c7f2026dfa28808706a6071214dde445586 (patch)
treeafc6d49339d8d7911141d5950a4ef2b8b1470a2d /plugins/huawei.c
parent60890653e3eb7f003c978ca3745ba641949bc652 (diff)
downloadofono-e0853c7f2026dfa28808706a6071214dde445586.tar.bz2
huawei: Print and store NDIS support results
Diffstat (limited to 'plugins/huawei.c')
-rw-r--r--plugins/huawei.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/plugins/huawei.c b/plugins/huawei.c
index 05ee0c2f..b6346b6d 100644
--- a/plugins/huawei.c
+++ b/plugins/huawei.c
@@ -87,6 +87,7 @@ struct huawei_data {
gboolean have_voice;
gboolean have_gsm;
gboolean have_cdma;
+ gboolean have_ndis;
};
static int huawei_probe(struct ofono_modem *modem)
@@ -177,8 +178,10 @@ static void ussdmode_support_cb(gboolean ok, GAtResult *result,
static void dialmode_query_cb(gboolean ok, GAtResult *result,
gpointer user_data)
{
- //struct huawei_data *data = user_data;
+ struct huawei_data *data = user_data;
GAtResultIter iter;
+ gint dialmode, cdc_spec;
+ const char *str = "unknown";
if (!ok)
return;
@@ -187,6 +190,41 @@ static void dialmode_query_cb(gboolean ok, GAtResult *result,
if (!g_at_result_iter_next(&iter, "^DIALMODE:"))
return;
+
+ if (!g_at_result_iter_next_number(&iter, &dialmode))
+ return;
+
+ if (g_at_result_iter_next_number(&iter, &cdc_spec)) {
+ switch (cdc_spec) {
+ case 0:
+ str = "none";
+ break;
+ case 1:
+ str = "Modem port";
+ break;
+ case 2:
+ str = "NDIS port";
+ break;
+ case 3:
+ str = "Modem and NDIS port";
+ break;
+ }
+ }
+
+ switch (dialmode) {
+ case 0:
+ ofono_info("Modem support (CDC support: %s)", str);
+ data->have_ndis = FALSE;
+ break;
+ case 1:
+ ofono_info("NDIS support (CDC support: %s)", str);
+ data->have_ndis = TRUE;
+ break;
+ case 2:
+ ofono_info("Modem and NDIS support (CDC support: %s)", str);
+ data->have_ndis = TRUE;
+ break;
+ }
}
static void dialmode_support_cb(gboolean ok, GAtResult *result,