diff options
author | Denis Kenzior <denkenz@gmail.com> | 2011-03-02 22:38:29 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-03-02 22:50:31 -0600 |
commit | 9b1675c000a8d09f7cb77d1c7df036636a443e94 (patch) | |
tree | 1311873c1dd376a0f15eeef3149c83e131b52a1f | |
parent | c30afe9c1626b615f3034b9af22a24d659db006c (diff) | |
download | ofono-9b1675c000a8d09f7cb77d1c7df036636a443e94.tar.bz2 |
udev: Fix detection of mbm with GPS capabilities
-rw-r--r-- | plugins/udev.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/plugins/udev.c b/plugins/udev.c index 02964d6f..cbb596dd 100644 --- a/plugins/udev.c +++ b/plugins/udev.c @@ -116,22 +116,23 @@ static void add_mbm(struct ofono_modem *modem, DBG("desc: %s", desc); registered = ofono_modem_get_integer(modem, "Registered"); - if (registered != 0) - return; - if (g_str_has_suffix(desc, "Minicard Modem") || + if (registered == 0 && + (g_str_has_suffix(desc, "Minicard Modem") || g_str_has_suffix(desc, "Minicard Modem 2") || g_str_has_suffix(desc, "Mini-Card Modem") || g_str_has_suffix(desc, "Broadband Modem") || - g_str_has_suffix(desc, "Broadband USB Modem")) { + g_str_has_suffix(desc, "Broadband USB Modem"))) { devnode = udev_device_get_devnode(udev_device); + if (ofono_modem_get_string(modem, MODEM_DEVICE) == NULL) ofono_modem_set_string(modem, MODEM_DEVICE, devnode); else ofono_modem_set_string(modem, DATA_DEVICE, devnode); - } else if (g_str_has_suffix(desc, "Minicard Data Modem") || + } else if (registered == 0 && + (g_str_has_suffix(desc, "Minicard Data Modem") || g_str_has_suffix(desc, "Mini-Card Data Modem") || - g_str_has_suffix(desc, "Broadband Data Modem")) { + g_str_has_suffix(desc, "Broadband Data Modem"))) { devnode = udev_device_get_devnode(udev_device); ofono_modem_set_string(modem, DATA_DEVICE, devnode); } else if (g_str_has_suffix(desc, "Minicard GPS Port") || @@ -139,16 +140,20 @@ static void add_mbm(struct ofono_modem *modem, g_str_has_suffix(desc, "Broadband GPS Port")) { devnode = udev_device_get_devnode(udev_device); ofono_modem_set_string(modem, GPS_DEVICE, devnode); - } else if (g_str_has_suffix(desc, "Minicard Network Adapter") || + } else if (registered == 0 && + (g_str_has_suffix(desc, "Minicard Network Adapter") || g_str_has_suffix(desc, "Mini-Card Network Adapter") || g_str_has_suffix(desc, "Broadband Network Adapter") || - g_str_has_suffix(desc, "Minicard NetworkAdapter")) { + g_str_has_suffix(desc, "Minicard NetworkAdapter"))) { devnode = get_property(udev_device, "INTERFACE"); ofono_modem_set_string(modem, NETWORK_INTERFACE, devnode); } else { return; } + if (registered == 1) + return; + device = ofono_modem_get_string(modem, MODEM_DEVICE); data = ofono_modem_get_string(modem, DATA_DEVICE); network = ofono_modem_get_string(modem, NETWORK_INTERFACE); |