* [PATCH v2 0/4] oFono uBlox SARA R4 QMI @ 2021-02-24 8:39 Bing Jupiter 2021-02-24 8:39 ` [PATCH v2 1/4] SARA R4 QMI support Bing Jupiter ` (3 more replies) 0 siblings, 4 replies; 7+ messages in thread From: Bing Jupiter @ 2021-02-24 8:39 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 525 bytes --] Hi Denis, Hope it can be accepted. Thank you. Kind regards, - Jupiter Bing Jupiter (4): SARA R4 QMI support Enable SARA R4 vendor ID for gprs create Add SARA R4 vendor ID Make SARA R4 vendor ID conditional being attach and detach drivers/atmodem/vendor.h | 1 + drivers/qmimodem/gprs.c | 15 +++++++++++++++ plugins/gobi.c | 11 ++++++++++- plugins/udevng.c | 41 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 1 deletion(-) -- 2.25.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/4] SARA R4 QMI support 2021-02-24 8:39 [PATCH v2 0/4] oFono uBlox SARA R4 QMI Bing Jupiter @ 2021-02-24 8:39 ` Bing Jupiter 2021-02-24 8:49 ` Jonas Bonn 2021-02-24 8:39 ` [PATCH v2 2/4] Enable SARA R4 vendor ID for gprs create Bing Jupiter ` (2 subsequent siblings) 3 siblings, 1 reply; 7+ messages in thread From: Bing Jupiter @ 2021-02-24 8:39 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2205 bytes --] --- plugins/udevng.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/plugins/udevng.c b/plugins/udevng.c index 34ac1cc0..9941145f 100644 --- a/plugins/udevng.c +++ b/plugins/udevng.c @@ -1194,6 +1194,45 @@ static gboolean setup_ublox(struct modem_info *modem) return TRUE; } +static gboolean setup_ubloxqmi(struct modem_info *modem) { + const char *qmi = NULL, *net = NULL, *gps = NULL, *aux = NULL; + GSList *list; + + DBG("%s", modem->syspath); + + for (list = modem->devices; list; list = g_slist_next(list)) { + struct device_info *info = list->data; + + DBG("%s %s %s %s %s", info->devnode, info->interface, + info->number, info->label, info->subsystem); + + if (g_strcmp0(info->interface, "255/255/255") == 0 && + g_strcmp0(info->number, "03") == 0) { + if (g_strcmp0(info->subsystem, "net") == 0) + net = info->devnode; + else if (g_strcmp0(info->subsystem, "usbmisc") == 0) + qmi = info->devnode; + } + } + + DBG("qmi=%s net=%s", qmi, net); + + if (qmi == NULL || net == NULL) + return FALSE; + + DBG("qmi=%s net=%s", qmi, net); + + ofono_modem_set_string(modem->modem, "Device", qmi); + ofono_modem_set_string(modem->modem, "NetworkInterface", net); + ofono_modem_set_string(modem->modem, "Quirk", "SARAR4"); + + DBG("gps=%s aux=%s", gps, aux); + + ofono_modem_set_driver(modem->modem, "gobi"); + + return TRUE; +} + static gboolean setup_gemalto(struct modem_info* modem) { const char *app = NULL, *gps = NULL, *mdm = NULL, @@ -1441,6 +1480,7 @@ static struct { { "quectel", setup_quectel }, { "quectelqmi", setup_quectelqmi}, { "ublox", setup_ublox }, + { "ubloxqmi", setup_ubloxqmi }, { "gemalto", setup_gemalto }, { "xmm7xxx", setup_xmm7xxx }, { "mbim", setup_mbim }, @@ -1850,6 +1890,7 @@ static struct { { "ublox", "cdc_ncm", "1546", "110a" }, { "ublox", "rndis_host", "1546", "1146" }, { "ublox", "cdc_acm", "1546", "1146" }, + { "ubloxqmi", "qmi_wwan", "05c6", "90b2" }, { "gemalto", "option", "1e2d", "0053" }, { "gemalto", "cdc_wdm", "1e2d", "0053" }, { "gemalto", "qmi_wwan", "1e2d", "0053" }, -- 2.25.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/4] SARA R4 QMI support 2021-02-24 8:39 ` [PATCH v2 1/4] SARA R4 QMI support Bing Jupiter @ 2021-02-24 8:49 ` Jonas Bonn 0 siblings, 0 replies; 7+ messages in thread From: Jonas Bonn @ 2021-02-24 8:49 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 3005 bytes --] Hi Jupiter, Please add a description to your patch. Something along these lines: This adds support for the uBlox SARA-R4 modem. Unlike other uBlox devices, this modem is actually a Qualcomm part and therefore supports the QMI protocol. For that reason, this doesn't just jack into the usual uBlox modem framework. The modem has a quirk in that it fails to reconnect to the network if a NAS detach is issued when connectivity is lost; therefore, we need to add some 'vendor' handling to the QMI gprs atom to account for this. This has been tested... how? Hope that helps, Jonas On 24/02/2021 09:39, Bing Jupiter wrote: > --- > plugins/udevng.c | 41 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > > diff --git a/plugins/udevng.c b/plugins/udevng.c > index 34ac1cc0..9941145f 100644 > --- a/plugins/udevng.c > +++ b/plugins/udevng.c > @@ -1194,6 +1194,45 @@ static gboolean setup_ublox(struct modem_info *modem) > return TRUE; > } > > +static gboolean setup_ubloxqmi(struct modem_info *modem) { > + const char *qmi = NULL, *net = NULL, *gps = NULL, *aux = NULL; > + GSList *list; > + > + DBG("%s", modem->syspath); > + > + for (list = modem->devices; list; list = g_slist_next(list)) { > + struct device_info *info = list->data; > + > + DBG("%s %s %s %s %s", info->devnode, info->interface, > + info->number, info->label, info->subsystem); > + > + if (g_strcmp0(info->interface, "255/255/255") == 0 && > + g_strcmp0(info->number, "03") == 0) { > + if (g_strcmp0(info->subsystem, "net") == 0) > + net = info->devnode; > + else if (g_strcmp0(info->subsystem, "usbmisc") == 0) > + qmi = info->devnode; > + } > + } > + > + DBG("qmi=%s net=%s", qmi, net); > + > + if (qmi == NULL || net == NULL) > + return FALSE; > + > + DBG("qmi=%s net=%s", qmi, net); > + > + ofono_modem_set_string(modem->modem, "Device", qmi); > + ofono_modem_set_string(modem->modem, "NetworkInterface", net); > + ofono_modem_set_string(modem->modem, "Quirk", "SARAR4"); > + > + DBG("gps=%s aux=%s", gps, aux); > + > + ofono_modem_set_driver(modem->modem, "gobi"); > + > + return TRUE; > +} > + > static gboolean setup_gemalto(struct modem_info* modem) > { > const char *app = NULL, *gps = NULL, *mdm = NULL, > @@ -1441,6 +1480,7 @@ static struct { > { "quectel", setup_quectel }, > { "quectelqmi", setup_quectelqmi}, > { "ublox", setup_ublox }, > + { "ubloxqmi", setup_ubloxqmi }, > { "gemalto", setup_gemalto }, > { "xmm7xxx", setup_xmm7xxx }, > { "mbim", setup_mbim }, > @@ -1850,6 +1890,7 @@ static struct { > { "ublox", "cdc_ncm", "1546", "110a" }, > { "ublox", "rndis_host", "1546", "1146" }, > { "ublox", "cdc_acm", "1546", "1146" }, > + { "ubloxqmi", "qmi_wwan", "05c6", "90b2" }, > { "gemalto", "option", "1e2d", "0053" }, > { "gemalto", "cdc_wdm", "1e2d", "0053" }, > { "gemalto", "qmi_wwan", "1e2d", "0053" }, > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/4] Enable SARA R4 vendor ID for gprs create 2021-02-24 8:39 [PATCH v2 0/4] oFono uBlox SARA R4 QMI Bing Jupiter 2021-02-24 8:39 ` [PATCH v2 1/4] SARA R4 QMI support Bing Jupiter @ 2021-02-24 8:39 ` Bing Jupiter 2021-02-24 8:39 ` [PATCH v2 3/4] Add SARA R4 vendor ID Bing Jupiter 2021-02-24 8:39 ` [PATCH v2 4/4] Make SARA R4 vendor ID conditional being attach and detach Bing Jupiter 3 siblings, 0 replies; 7+ messages in thread From: Bing Jupiter @ 2021-02-24 8:39 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 1460 bytes --] --- plugins/gobi.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plugins/gobi.c b/plugins/gobi.c index 9b5d7cff..3ca739d6 100644 --- a/plugins/gobi.c +++ b/plugins/gobi.c @@ -47,6 +47,7 @@ #include <ofono/location-reporting.h> #include <ofono/log.h> #include <ofono/message-waiting.h> +#include <drivers/atmodem/vendor.h> #include <drivers/qmimodem/qmi.h> #include <drivers/qmimodem/dms.h> @@ -496,9 +497,17 @@ static void gobi_post_online(struct ofono_modem *modem) struct gobi_data *data = ofono_modem_get_data(modem); struct ofono_gprs *gprs; struct ofono_gprs_context *gc; + const char* quirk; + unsigned int vendor = 0; DBG("%p", modem); + quirk = ofono_modem_get_string(modem, "Quirk"); + if (quirk) { + DBG("Debug: vendor = OFONO_VENDOR_UBLOX_SARA_R4"); + vendor = OFONO_VENDOR_UBLOX_SARA_R4; + } + if (data->features & GOBI_NAS) { ofono_netreg_create(modem, 0, "qmimodem", data->device); ofono_netmon_create(modem, 0, "qmimodem", data->device); @@ -508,7 +517,7 @@ static void gobi_post_online(struct ofono_modem *modem) ofono_ussd_create(modem, 0, "qmimodem", data->device); if (data->features & GOBI_WDS) { - gprs = ofono_gprs_create(modem, 0, "qmimodem", data->device); + gprs = ofono_gprs_create(modem, vendor, "qmimodem", data->device); gc = ofono_gprs_context_create(modem, 0, "qmimodem", data->device); -- 2.25.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/4] Add SARA R4 vendor ID 2021-02-24 8:39 [PATCH v2 0/4] oFono uBlox SARA R4 QMI Bing Jupiter 2021-02-24 8:39 ` [PATCH v2 1/4] SARA R4 QMI support Bing Jupiter 2021-02-24 8:39 ` [PATCH v2 2/4] Enable SARA R4 vendor ID for gprs create Bing Jupiter @ 2021-02-24 8:39 ` Bing Jupiter 2021-02-24 8:39 ` [PATCH v2 4/4] Make SARA R4 vendor ID conditional being attach and detach Bing Jupiter 3 siblings, 0 replies; 7+ messages in thread From: Bing Jupiter @ 2021-02-24 8:39 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 455 bytes --] --- drivers/atmodem/vendor.h | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/atmodem/vendor.h b/drivers/atmodem/vendor.h index 82284e44..db9fa263 100644 --- a/drivers/atmodem/vendor.h +++ b/drivers/atmodem/vendor.h @@ -48,6 +48,7 @@ enum ofono_vendor { OFONO_VENDOR_QUECTEL_EC2X, OFONO_VENDOR_QUECTEL_SERIAL, OFONO_VENDOR_UBLOX, + OFONO_VENDOR_UBLOX_SARA_R4, OFONO_VENDOR_XMM, OFONO_VENDOR_GEMALTO, }; -- 2.25.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 4/4] Make SARA R4 vendor ID conditional being attach and detach 2021-02-24 8:39 [PATCH v2 0/4] oFono uBlox SARA R4 QMI Bing Jupiter ` (2 preceding siblings ...) 2021-02-24 8:39 ` [PATCH v2 3/4] Add SARA R4 vendor ID Bing Jupiter @ 2021-02-24 8:39 ` Bing Jupiter 2021-02-24 8:50 ` Jonas Bonn 3 siblings, 1 reply; 7+ messages in thread From: Bing Jupiter @ 2021-02-24 8:39 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 1387 bytes --] --- drivers/qmimodem/gprs.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/qmimodem/gprs.c b/drivers/qmimodem/gprs.c index 896a9e4c..90203dd3 100644 --- a/drivers/qmimodem/gprs.c +++ b/drivers/qmimodem/gprs.c @@ -26,6 +26,7 @@ #include <ofono/log.h> #include <ofono/modem.h> #include <ofono/gprs.h> +#include <drivers/atmodem/vendor.h> #include "qmi.h" #include "nas.h" @@ -35,6 +36,7 @@ #include "qmimodem.h" struct gprs_data { + unsigned int vendor; struct qmi_device *dev; struct qmi_service *nas; struct qmi_service *wds; @@ -284,6 +286,18 @@ static void qmi_set_attached(struct ofono_gprs *gprs, int attached, DBG("attached %d", attached); + if (data->vendor == OFONO_VENDOR_UBLOX_SARA_R4) { + /* This assumes neither 'attach' nor 'detach' are + * necessary... if 'attach' is required, then you'll + * need to make this section conditional on the action + * being 'detach' + */ + DBG("Debug vendor = OFONO_VENDOR_UBLOX_SARA_R4"); + CALLBACK_WITH_SUCCESS(cb, cbd->data); + g_free(cbd); + return; + } + if (attached) action = QMI_NAS_ATTACH_ACTION_ATTACH; else @@ -406,6 +420,7 @@ static int qmi_gprs_probe(struct ofono_gprs *gprs, DBG(""); data = g_new0(struct gprs_data, 1); + data->vendor = vendor; ofono_gprs_set_data(gprs, data); -- 2.25.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 4/4] Make SARA R4 vendor ID conditional being attach and detach 2021-02-24 8:39 ` [PATCH v2 4/4] Make SARA R4 vendor ID conditional being attach and detach Bing Jupiter @ 2021-02-24 8:50 ` Jonas Bonn 0 siblings, 0 replies; 7+ messages in thread From: Jonas Bonn @ 2021-02-24 8:50 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 1702 bytes --] Hi, On 24/02/2021 09:39, Bing Jupiter wrote: > --- > drivers/qmimodem/gprs.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/drivers/qmimodem/gprs.c b/drivers/qmimodem/gprs.c > index 896a9e4c..90203dd3 100644 > --- a/drivers/qmimodem/gprs.c > +++ b/drivers/qmimodem/gprs.c > @@ -26,6 +26,7 @@ > #include <ofono/log.h> > #include <ofono/modem.h> > #include <ofono/gprs.h> > +#include <drivers/atmodem/vendor.h> > > #include "qmi.h" > #include "nas.h" > @@ -35,6 +36,7 @@ > #include "qmimodem.h" > > struct gprs_data { > + unsigned int vendor; > struct qmi_device *dev; > struct qmi_service *nas; > struct qmi_service *wds; > @@ -284,6 +286,18 @@ static void qmi_set_attached(struct ofono_gprs *gprs, int attached, > > DBG("attached %d", attached); > > + if (data->vendor == OFONO_VENDOR_UBLOX_SARA_R4) { > + /* This assumes neither 'attach' nor 'detach' are > + * necessary... if 'attach' is required, then you'll > + * need to make this section conditional on the action > + * being 'detach' > + */ Assuming you've tested this, you'll know whether 'attach' is required or not. As such, fix accordingly and remove the above comment. /Jonas > + DBG("Debug vendor = OFONO_VENDOR_UBLOX_SARA_R4"); > + CALLBACK_WITH_SUCCESS(cb, cbd->data); > + g_free(cbd); > + return; > + } > + > if (attached) > action = QMI_NAS_ATTACH_ACTION_ATTACH; > else > @@ -406,6 +420,7 @@ static int qmi_gprs_probe(struct ofono_gprs *gprs, > DBG(""); > > data = g_new0(struct gprs_data, 1); > + data->vendor = vendor; > > ofono_gprs_set_data(gprs, data); > > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-02-24 8:50 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-02-24 8:39 [PATCH v2 0/4] oFono uBlox SARA R4 QMI Bing Jupiter 2021-02-24 8:39 ` [PATCH v2 1/4] SARA R4 QMI support Bing Jupiter 2021-02-24 8:49 ` Jonas Bonn 2021-02-24 8:39 ` [PATCH v2 2/4] Enable SARA R4 vendor ID for gprs create Bing Jupiter 2021-02-24 8:39 ` [PATCH v2 3/4] Add SARA R4 vendor ID Bing Jupiter 2021-02-24 8:39 ` [PATCH v2 4/4] Make SARA R4 vendor ID conditional being attach and detach Bing Jupiter 2021-02-24 8:50 ` Jonas Bonn
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).