diff options
-rw-r--r-- | plugins/huawei.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/plugins/huawei.c b/plugins/huawei.c index ecbd613d..b20d83c6 100644 --- a/plugins/huawei.c +++ b/plugins/huawei.c @@ -109,7 +109,9 @@ static void huawei_remove(struct ofono_modem *modem) ofono_modem_set_data(modem, NULL); - g_at_chat_unref(data->modem); + if (data->modem) + g_at_chat_unref(data->modem); + g_at_chat_unref(data->pcui); g_free(data); } @@ -466,12 +468,15 @@ static int huawei_enable(struct ofono_modem *modem) DBG("%p", modem); - data->modem = open_device(modem, "Modem", "Modem: "); - if (data->modem == NULL) - return -EINVAL; + if (ofono_modem_get_string(modem, "NDIS") == NULL) { + data->modem = open_device(modem, "Modem", "Modem: "); + if (data->modem == NULL) + return -EINVAL; - g_at_chat_set_disconnect_function(data->modem, + g_at_chat_set_disconnect_function(data->modem, huawei_disconnect, modem); + } else + data->ndis = TRUE; data->pcui = open_device(modem, "Pcui", "PCUI: "); if (data->pcui == NULL) { @@ -483,9 +488,6 @@ static int huawei_enable(struct ofono_modem *modem) if (ofono_modem_get_boolean(modem, "HasVoice") == TRUE) data->voice = TRUE; - if (ofono_modem_get_string(modem, "NDIS") != NULL) - data->ndis = TRUE; - data->sim_state = 0; g_at_chat_send(data->pcui, "ATE0 +CMEE=1", none_prefix, @@ -632,7 +634,7 @@ static void huawei_post_online(struct ofono_modem *modem) data->gprs = ofono_gprs_create(modem, 0, "atmodem", data->pcui); if (data->ndis == TRUE) data->gc = ofono_gprs_context_create(modem, 0, - "huaweimodem", data->modem); + "huaweimodem", data->pcui); else data->gc = ofono_gprs_context_create(modem, 0, "atmodem", data->modem); |