[PATCH 3/3] plugins: drop droid and use gobi for droid4 modem instead
Ivaylo Dimitrov <[email protected]> Tue, 29 Jul 2025 08:21:32 +0300
| Newsgroups | dev.linux.lists.ofono |
|---|---|
| Message-ID | <[email protected]> |
---
Makefile.am | 1 -
plugins/droid.c | 172 -----------------------------------------------
plugins/udevng.c | 32 ++++++---
3 files changed, 21 insertions(+), 184 deletions(-)
delete mode 100644 plugins/droid.c
diff --git a/Makefile.am b/Makefile.am
index c013e77d..cf51cdf1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -578,7 +578,6 @@ builtin_sources += plugins/telit.c
builtin_sources += plugins/quectel.c
builtin_sources += plugins/ublox.c
builtin_sources += plugins/xmm7xxx.c
-builtin_sources += plugins/droid.c
builtin_modules += stemgr
builtin_sources += plugins/stemgr.c
diff --git a/plugins/droid.c b/plugins/droid.c
deleted file mode 100644
index 1dfae9ee..00000000
--- a/plugins/droid.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * oFono - Open Source Telephony
- * Copyright (C) 2008-2011 Intel Corporation
- * Copyright (C) 2009 Collabora Ltd
- * Copyright (C) 2020 Pavel Machek
- *
- * SPDX-License-Identifier: GPL-2.0-only
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <errno.h>
-
-#include <glib.h>
-#include <gatchat.h>
-#include <gattty.h>
-
-#define OFONO_API_SUBJECT_TO_CHANGE
-#include <ofono/plugin.h>
-#include <ofono/log.h>
-#include <ofono/modem.h>
-#include <ofono/call-barring.h>
-#include <ofono/call-forwarding.h>
-#include <ofono/call-meter.h>
-#include <ofono/call-settings.h>
-#include <ofono/devinfo.h>
-#include <ofono/message-waiting.h>
-#include <ofono/netreg.h>
-#include <ofono/phonebook.h>
-#include <ofono/sim.h>
-#include <ofono/sms.h>
-#include <ofono/ussd.h>
-#include <ofono/voicecall.h>
-
-#include <drivers/atmodem/atutil.h>
-#include <drivers/atmodem/vendor.h>
-
-static void droid_debug(const char *str, void *user_data)
-{
- const char *prefix = user_data;
-
- ofono_info("%s%s", prefix, str);
-}
-
-/* Detect hardware, and initialize if found */
-static int droid_probe(struct ofono_modem *modem)
-{
- DBG("");
-
- return 0;
-}
-
-static void droid_remove(struct ofono_modem *modem)
-{
- GAtChat *chat = ofono_modem_get_data(modem);
-
- DBG("");
-
- if (chat) {
- g_at_chat_unref(chat);
- ofono_modem_set_data(modem, NULL);
- }
-}
-
-static void cfun_set_on_cb(gboolean ok, GAtResult *result, gpointer user_data)
-{
- struct ofono_modem *modem = user_data;
-
- DBG("");
-
- if (ok)
- ofono_modem_set_powered(modem, TRUE);
-}
-
-/* power up hardware */
-static int droid_enable(struct ofono_modem *modem)
-{
- GAtChat *chat;
-
- DBG("");
-
- chat = at_util_open_device(modem, "Device", droid_debug, "", NULL);
- ofono_modem_set_data(modem, chat);
-
- /* ensure modem is in a known state; verbose on, echo/quiet off */
- g_at_chat_send(chat, "ATE0Q0V1", NULL, NULL, NULL, NULL);
-
- /* power up modem */
- g_at_chat_send(chat, "AT+CFUN=1", NULL, cfun_set_on_cb, modem, NULL);
-
- return 0;
-}
-
-static void cfun_set_off_cb(gboolean ok, GAtResult *result, gpointer user_data)
-{
- struct ofono_modem *modem = user_data;
- GAtChat *chat = ofono_modem_get_data(modem);
-
- DBG("");
-
- g_at_chat_unref(chat);
- ofono_modem_set_data(modem, NULL);
-
- if (ok)
- ofono_modem_set_powered(modem, FALSE);
-}
-
-static int droid_disable(struct ofono_modem *modem)
-{
- GAtChat *chat = ofono_modem_get_data(modem);
-
- DBG("");
-
- /* power down modem */
- g_at_chat_cancel_all(chat);
- g_at_chat_unregister_all(chat);
- g_at_chat_send(chat, "AT+CFUN=0", NULL, cfun_set_off_cb, modem, NULL);
-
- return -EINPROGRESS;
-}
-
-static void droid_pre_sim(struct ofono_modem *modem)
-{
- GAtChat *chat = ofono_modem_get_data(modem);
- struct ofono_sim *sim;
-
- DBG("");
-
- ofono_devinfo_create(modem, 0, "atmodem", chat);
- sim = ofono_sim_create(modem, OFONO_VENDOR_DROID, "atmodem", chat);
- ofono_voicecall_create(modem, OFONO_VENDOR_DROID, "atmodem", chat);
-
- if (sim)
- ofono_sim_inserted_notify(sim, TRUE);
-}
-
-static void droid_post_sim(struct ofono_modem *modem)
-{
- GAtChat *chat = ofono_modem_get_data(modem);
- struct ofono_message_waiting *mw;
-
- DBG("");
-
- ofono_ussd_create(modem, 0, "atmodem", chat);
- ofono_call_forwarding_create(modem, 0, "atmodem", chat);
- ofono_call_settings_create(modem, 0, "atmodem", chat);
- ofono_netreg_create(modem, 0, "atmodem", chat);
- /*
- * Droid 4 modem has problems with AT+CPUC?, avoid call meter for now.
- */
- ofono_call_barring_create(modem, 0, "atmodem", chat);
- ofono_sms_create(modem, OFONO_VENDOR_DROID, "atmodem", chat);
- ofono_phonebook_create(modem, 0, "atmodem", chat);
-
- mw = ofono_message_waiting_create(modem);
- if (mw)
- ofono_message_waiting_register(mw);
-}
-
-static struct ofono_modem_driver droid_driver = {
- .probe = droid_probe,
- .remove = droid_remove,
- .enable = droid_enable,
- .disable = droid_disable,
- .pre_sim = droid_pre_sim,
- .post_sim = droid_post_sim,
-};
-
-OFONO_MODEM_DRIVER_BUILTIN(droid, &droid_driver)
diff --git a/plugins/udevng.c b/plugins/udevng.c
index 320cd3a6..18954d44 100644
--- a/plugins/udevng.c
+++ b/plugins/udevng.c
@@ -870,7 +870,9 @@ static gboolean setup_telitqmi(struct modem_info *modem)
static gboolean setup_droid(struct modem_info *modem)
{
- const char *at = NULL;
+ const struct device_info *qmi = NULL;
+ const struct device_info *net = NULL;
+
GSList *list;
DBG("%s", modem->syspath);
@@ -878,23 +880,31 @@ static gboolean setup_droid(struct modem_info *modem)
for (list = modem->devices; list; list = list->next) {
struct device_info *info = list->data;
const char *subsystem =
- udev_device_get_subsystem(info->udev_device);
-
- DBG("%s %s %s %s %s", info->devnode, info->interface,
- info->number, info->label, subsystem);
+ udev_device_get_subsystem(info->udev_device);
+ DBG("%s %s %s %s %s %s", info->devnode, info->interface,
+ info->number, info->label,
+ info->sysattr, subsystem);
- if (g_strcmp0(info->interface, "255/255/255") == 0 &&
- g_strcmp0(info->number, "04") == 0) {
- at = info->devnode;
+ if (g_strcmp0(subsystem, "usbmisc") == 0) {
+ if (g_strcmp0(info->number, "05") == 0)
+ qmi = info;
+ } else if (g_strcmp0(subsystem, "net") == 0) {
+ if (g_strcmp0(info->number, "05") == 0)
+ net = info;
}
}
- if (at == NULL)
+ if (qmi == NULL || net == NULL)
return FALSE;
- ofono_modem_set_string(modem->modem, "Device", at);
- ofono_modem_set_driver(modem->modem, "droid");
+ DBG("qmi=%s net=%s", qmi->devnode, get_ifname(net));
+
+
+ if (setup_qmi_qmux(modem, qmi, net) < 0)
+ return FALSE;
+ ofono_modem_set_string(modem->modem, "OfflineOperatingMode",
+ "PersistentLowPower");
return TRUE;
}
--
2.25.1