ofono.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [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

* [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 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

* 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).