* [PATCH v2 0/6] Add a driver for u-blox modems
@ 2014-06-26 18:28 Philip Paeps
2014-06-26 18:28 ` [PATCH 1/6] atmodem: add vendor u-blox Philip Paeps
` (6 more replies)
0 siblings, 7 replies; 11+ messages in thread
From: Philip Paeps @ 2014-06-26 18:28 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 895 bytes --]
Changes since v1:
o Fix coding style nits and useless casts
o Use prefixes
o Make enable go to CFUN=4 (powered but radio off)
Philip Paeps (6):
atmodem: add vendor u-blox
udevng: add detection logic for u-blox modems
plugins: new driver for u-blox SARA-U270 modems
sim: query u-blox PIN retries with AT+UPINCNT
gprs: add support for u-blox +UREG URCs
atmodem: set the auth method for u-blox modems
Makefile.am | 3 +
drivers/atmodem/gprs-context.c | 31 ++++-
drivers/atmodem/gprs.c | 44 ++++++
drivers/atmodem/sim.c | 45 +++++++
drivers/atmodem/vendor.h | 3 +-
plugins/ublox.c | 291 ++++++++++++++++++++++++++++++++++++++++
plugins/udevng.c | 42 ++++++
7 files changed, 455 insertions(+), 4 deletions(-)
create mode 100644 plugins/ublox.c
--
1.7.10.4
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/6] atmodem: add vendor u-blox
2014-06-26 18:28 [PATCH v2 0/6] Add a driver for u-blox modems Philip Paeps
@ 2014-06-26 18:28 ` Philip Paeps
2014-06-30 19:04 ` Denis Kenzior
2014-06-26 18:28 ` [PATCH 2/6] udevng: add detection logic for u-blox modems Philip Paeps
` (5 subsequent siblings)
6 siblings, 1 reply; 11+ messages in thread
From: Philip Paeps @ 2014-06-26 18:28 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 472 bytes --]
---
drivers/atmodem/vendor.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/atmodem/vendor.h b/drivers/atmodem/vendor.h
index bf2b38a..de3c455 100644
--- a/drivers/atmodem/vendor.h
+++ b/drivers/atmodem/vendor.h
@@ -42,5 +42,6 @@ enum ofono_vendor {
OFONO_VENDOR_SIMCOM_SIM900,
OFONO_VENDOR_ICERA,
OFONO_VENDOR_WAVECOM_Q2XXX,
- OFONO_VENDOR_ALCATEL
+ OFONO_VENDOR_ALCATEL,
+ OFONO_VENDOR_UBLOX
};
--
1.7.10.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/6] udevng: add detection logic for u-blox modems
2014-06-26 18:28 [PATCH v2 0/6] Add a driver for u-blox modems Philip Paeps
2014-06-26 18:28 ` [PATCH 1/6] atmodem: add vendor u-blox Philip Paeps
@ 2014-06-26 18:28 ` Philip Paeps
2014-06-26 18:28 ` [PATCH 3/6] plugins: new driver for u-blox SARA-U270 modems Philip Paeps
` (4 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Philip Paeps @ 2014-06-26 18:28 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1851 bytes --]
---
plugins/udevng.c | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/plugins/udevng.c b/plugins/udevng.c
index d41c6a8..42ee989 100644
--- a/plugins/udevng.c
+++ b/plugins/udevng.c
@@ -791,6 +791,46 @@ static gboolean setup_samsung(struct modem_info *modem)
return TRUE;
}
+static gboolean setup_ublox(struct modem_info *modem)
+{
+ const char *aux = NULL, *mdm = NULL;
+ GSList *list;
+
+ DBG("%s", modem->syspath);
+
+ for (list = modem->devices; list; list = list->next) {
+ struct device_info *info = list->data;
+
+ DBG("%s %s %s %s", info->devnode, info->interface,
+ info->number, info->label);
+
+ if (g_strcmp0(info->label, "aux") == 0) {
+ aux = info->devnode;
+ if (mdm != NULL)
+ break;
+ } else if (g_strcmp0(info->label, "modem") == 0) {
+ mdm = info->devnode;
+ if (aux != NULL)
+ break;
+ } else if (g_strcmp0(info->interface, "2/2/1") == 0) {
+ if (g_strcmp0(info->number, "02") == 0)
+ aux = info->devnode;
+ else if (g_strcmp0(info->number, "00") == 0)
+ mdm = info->devnode;
+ }
+ }
+
+ if (aux == NULL || mdm == NULL)
+ return FALSE;
+
+ DBG("aux=%s modem=%s", aux, mdm);
+
+ ofono_modem_set_string(modem->modem, "Aux", aux);
+ ofono_modem_set_string(modem->modem, "Modem", mdm);
+
+ return TRUE;
+}
+
static struct {
const char *name;
gboolean (*setup)(struct modem_info *modem);
@@ -815,6 +855,7 @@ static struct {
{ "zte", setup_zte },
{ "icera", setup_icera },
{ "samsung", setup_samsung },
+ { "ublox", setup_ublox },
{ }
};
@@ -1026,6 +1067,7 @@ static struct {
{ "nokia", "option", "0421", "0623" },
{ "samsung", "option", "04e8", "6889" },
{ "samsung", "kalmia" },
+ { "ublox", "cdc_acm", "1546", "1102" },
{ }
};
--
1.7.10.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/6] plugins: new driver for u-blox SARA-U270 modems
2014-06-26 18:28 [PATCH v2 0/6] Add a driver for u-blox modems Philip Paeps
2014-06-26 18:28 ` [PATCH 1/6] atmodem: add vendor u-blox Philip Paeps
2014-06-26 18:28 ` [PATCH 2/6] udevng: add detection logic for u-blox modems Philip Paeps
@ 2014-06-26 18:28 ` Philip Paeps
2014-06-26 18:28 ` [PATCH 4/6] sim: query u-blox PIN retries with AT+UPINCNT Philip Paeps
` (3 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Philip Paeps @ 2014-06-26 18:28 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 8125 bytes --]
This driver may also work (perhaps with more or less trivial changes)
with other u-blox modems (SARA, LISA, LEON) but this hasn't been tested.
---
Makefile.am | 3 +
plugins/ublox.c | 291 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 294 insertions(+)
diff --git a/Makefile.am b/Makefile.am
index cd83ef4..5f98f8e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -420,6 +420,9 @@ builtin_sources += plugins/connman.c
builtin_modules += he910
builtin_sources += plugins/he910.c
+builtin_modules += ublox
+builtin_sources += plugins/ublox.c
+
if BLUETOOTH
if BLUEZ4
builtin_modules += bluez4
diff --git a/plugins/ublox.c b/plugins/ublox.c
new file mode 100644
index 0000000..99ddc81
--- /dev/null
+++ b/plugins/ublox.c
@@ -0,0 +1,291 @@
+/*
+ *
+ * oFono - Open Source Telephony
+ *
+ * Copyright (C) 2014 Philip Paeps. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include <glib.h>
+#include <gatchat.h>
+#include <gattty.h>
+
+#define OFONO_API_SUBJECT_TO_CHANGE
+#include <ofono/plugin.h>
+#include <ofono/modem.h>
+#include <ofono/devinfo.h>
+#include <ofono/netreg.h>
+#include <ofono/sim.h>
+#include <ofono/gprs.h>
+#include <ofono/gprs-context.h>
+
+#include <drivers/atmodem/atutil.h>
+#include <drivers/atmodem/vendor.h>
+
+static const char *none_prefix[] = { NULL };
+
+struct ublox_data {
+ GAtChat *modem;
+ GAtChat *aux;
+};
+
+static void ublox_debug(const char *str, void *user_data)
+{
+ const char *prefix = user_data;
+
+ ofono_info("%s%s", prefix, str);
+}
+
+static int ublox_probe(struct ofono_modem *modem)
+{
+ struct ublox_data *data;
+
+ DBG("%p", modem);
+
+ data = g_try_new0(struct ublox_data, 1);
+ if (data == NULL)
+ return -ENOMEM;
+
+ ofono_modem_set_data(modem, data);
+
+ return 0;
+}
+
+static void ublox_remove(struct ofono_modem *modem)
+{
+ struct ublox_data *data = ofono_modem_get_data(modem);
+
+ DBG("%p", modem);
+
+ ofono_modem_set_data(modem, NULL);
+ g_at_chat_unref(data->aux);
+ g_at_chat_unref(data->modem);
+ g_free(data);
+}
+
+static GAtChat *open_device(struct ofono_modem *modem,
+ const char *key, char *debug)
+{
+ const char *device;
+ GAtSyntax *syntax;
+ GIOChannel *channel;
+ GAtChat *chat;
+
+ device = ofono_modem_get_string(modem, key);
+ if (device == NULL)
+ return NULL;
+
+ DBG("%s %s", key, device);
+
+ channel = g_at_tty_open(device, NULL);
+ if (channel == NULL)
+ return NULL;
+
+ syntax = g_at_syntax_new_gsm_permissive();
+ chat = g_at_chat_new(channel, syntax);
+ g_at_syntax_unref(syntax);
+
+ g_io_channel_unref(channel);
+
+ if (chat == NULL)
+ return NULL;
+
+ if (getenv("OFONO_AT_DEBUG"))
+ g_at_chat_set_debug(chat, ublox_debug, debug);
+
+ return chat;
+}
+
+static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ struct ublox_data * data = ofono_modem_get_data(modem);
+
+ DBG("ok %d", ok);
+
+ if (!ok) {
+ g_at_chat_unref(data->aux);
+ data->aux = NULL;
+ g_at_chat_unref(data->modem);
+ data->modem = NULL;
+ ofono_modem_set_powered(modem, FALSE);
+ return;
+ }
+
+ ofono_modem_set_powered(modem, TRUE);
+}
+
+static int ublox_enable(struct ofono_modem *modem)
+{
+ struct ublox_data *data = ofono_modem_get_data(modem);
+
+ DBG("%p", modem);
+
+ data->modem = open_device(modem, "Modem", "Modem: ");
+ if (data->modem == NULL)
+ return -EINVAL;
+
+ data->aux = open_device(modem, "Aux", "Aux: ");
+ if (data->aux == NULL) {
+ g_at_chat_unref(data->modem);
+ data->modem = NULL;
+ return -EIO;
+ }
+ g_at_chat_set_slave(data->modem, data->aux);
+
+ g_at_chat_send(data->modem, "ATE0 +CMEE=1", NULL, NULL, NULL, NULL);
+ g_at_chat_send(data->aux, "ATE0 +CMEE=1", NULL, NULL, NULL, NULL);
+
+ g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix,
+ cfun_enable, modem, NULL);
+
+ return -EINPROGRESS;
+}
+
+static void cfun_disable(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ struct ublox_data *data = ofono_modem_get_data(modem);
+
+ DBG("");
+
+ g_at_chat_unref(data->aux);
+ data->aux = NULL;
+
+ if (ok)
+ ofono_modem_set_powered(modem, FALSE);
+}
+
+static int ublox_disable(struct ofono_modem *modem)
+{
+ struct ublox_data *data = ofono_modem_get_data(modem);
+
+ DBG("%p", modem);
+
+ g_at_chat_cancel_all(data->modem);
+ g_at_chat_unregister_all(data->modem);
+ g_at_chat_unref(data->modem);
+ data->modem = NULL;
+
+ g_at_chat_cancel_all(data->aux);
+ g_at_chat_unregister_all(data->aux);
+
+ g_at_chat_send(data->aux, "AT+CFUN=0", none_prefix,
+ cfun_disable, modem, NULL);
+
+ return -EINPROGRESS;
+}
+
+static void set_online_cb(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct cb_data *cbd = user_data;
+ ofono_modem_online_cb_t cb = cbd->cb;
+ struct ofono_error error;
+
+ decode_at_error(&error, g_at_result_final_response(result));
+ cb(&error, cbd->data);
+}
+
+static void ublox_set_online(struct ofono_modem *modem, ofono_bool_t online,
+ ofono_modem_online_cb_t cb, void *user_data)
+{
+ struct ublox_data *data = ofono_modem_get_data(modem);
+ struct cb_data *cbd = cb_data_new(cb, user_data);
+ char const *command = online ? "AT+CFUN=1" : "AT+CFUN=4";
+
+ DBG("modem %p %s", modem, online ? "online" : "offline");
+
+ if (g_at_chat_send(data->aux, command, none_prefix, set_online_cb,
+ cbd, g_free) > 0)
+ return;
+
+ CALLBACK_WITH_FAILURE(cb, cbd->data);
+
+ g_free(cbd);
+}
+
+static void ublox_pre_sim(struct ofono_modem *modem)
+{
+ struct ublox_data *data = ofono_modem_get_data(modem);
+ struct ofono_sim *sim;
+
+ DBG("%p", modem);
+
+ ofono_devinfo_create(modem, OFONO_VENDOR_UBLOX, "atmodem",
+ data->aux);
+ sim = ofono_sim_create(modem, OFONO_VENDOR_UBLOX, "atmodem",
+ data->aux);
+
+ if (sim)
+ ofono_sim_inserted_notify(sim, TRUE);
+}
+
+static void ublox_post_sim(struct ofono_modem *modem)
+{
+ struct ublox_data *data = ofono_modem_get_data(modem);
+ struct ofono_gprs *gprs;
+ struct ofono_gprs_context *gc;
+
+ DBG("%p", modem);
+
+ gprs = ofono_gprs_create(modem, OFONO_VENDOR_UBLOX, "atmodem",
+ data->aux);
+ gc = ofono_gprs_context_create(modem, OFONO_VENDOR_UBLOX, "atmodem",
+ data->modem);
+
+ if (gprs && gc)
+ ofono_gprs_add_context(gprs, gc);
+}
+
+static void ublox_post_online(struct ofono_modem *modem)
+{
+ struct ublox_data *data = ofono_modem_get_data(modem);
+
+ ofono_netreg_create(modem, OFONO_VENDOR_UBLOX, "atmodem",
+ data->aux);
+}
+
+static struct ofono_modem_driver ublox_driver = {
+ .name = "ublox",
+ .probe = ublox_probe,
+ .remove = ublox_remove,
+ .enable = ublox_enable,
+ .disable = ublox_disable,
+ .set_online = ublox_set_online,
+ .pre_sim = ublox_pre_sim,
+ .post_sim = ublox_post_sim,
+ .post_online = ublox_post_online,
+};
+
+static int ublox_init(void)
+{
+ return ofono_modem_driver_register(&ublox_driver);
+}
+
+static void ublox_exit(void)
+{
+ ofono_modem_driver_unregister(&ublox_driver);
+}
+
+OFONO_PLUGIN_DEFINE(ublox, "u-blox modem driver", VERSION,
+ OFONO_PLUGIN_PRIORITY_DEFAULT, ublox_init, ublox_exit)
--
1.7.10.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/6] sim: query u-blox PIN retries with AT+UPINCNT
2014-06-26 18:28 [PATCH v2 0/6] Add a driver for u-blox modems Philip Paeps
` (2 preceding siblings ...)
2014-06-26 18:28 ` [PATCH 3/6] plugins: new driver for u-blox SARA-U270 modems Philip Paeps
@ 2014-06-26 18:28 ` Philip Paeps
2014-06-26 18:28 ` [PATCH 5/6] gprs: add support for u-blox +UREG URCs Philip Paeps
` (2 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Philip Paeps @ 2014-06-26 18:28 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 2277 bytes --]
---
drivers/atmodem/sim.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/drivers/atmodem/sim.c b/drivers/atmodem/sim.c
index f8e0472..9b8d176 100644
--- a/drivers/atmodem/sim.c
+++ b/drivers/atmodem/sim.c
@@ -67,6 +67,7 @@ static const char *epin_prefix[] = { "*EPIN:", NULL };
static const char *spic_prefix[] = { "+SPIC:", NULL };
static const char *pct_prefix[] = { "#PCT:", NULL };
static const char *pnnm_prefix[] = { "+PNNM:", NULL };
+static const char *upincnt_prefix[] = { "+UPINCNT:", NULL };
static const char *none_prefix[] = { NULL };
static void at_crsm_info_cb(gboolean ok, GAtResult *result, gpointer user_data)
@@ -967,6 +968,45 @@ error:
CALLBACK_WITH_FAILURE(cb, NULL, cbd->data);
}
+static void upincnt_cb(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct cb_data *cbd = user_data;
+ ofono_sim_pin_retries_cb_t cb = cbd->cb;
+ const char *final = g_at_result_final_response(result);
+ GAtResultIter iter;
+ struct ofono_error error;
+ int retries[OFONO_SIM_PASSWORD_INVALID];
+ size_t i;
+ static enum ofono_sim_password_type password_types[] = {
+ OFONO_SIM_PASSWORD_SIM_PIN,
+ OFONO_SIM_PASSWORD_SIM_PIN2,
+ OFONO_SIM_PASSWORD_SIM_PUK,
+ OFONO_SIM_PASSWORD_SIM_PUK2,
+ };
+
+ decode_at_error(&error, final);
+
+ if (!ok) {
+ cb(&error, NULL, cbd->data);
+ return;
+ }
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "+UPINCNT:"))
+ goto error;
+
+ BUILD_PIN_RETRIES_ARRAY(password_types, ARRAY_SIZE(password_types),
+ retries);
+
+ cb(&error, retries, cbd->data);
+
+ return;
+
+error:
+ CALLBACK_WITH_FAILURE(cb, NULL, cbd->data);
+}
+
static void at_pin_retries_query(struct ofono_sim *sim,
ofono_sim_pin_retries_cb_t cb,
void *data)
@@ -1028,6 +1068,11 @@ static void at_pin_retries_query(struct ofono_sim *sim,
at_pnnm_cb, cbd, g_free) > 0)
return;
break;
+ case OFONO_VENDOR_UBLOX:
+ if (g_at_chat_send(sd->chat, "AT+UPINCNT", upincnt_prefix,
+ upincnt_cb, cbd, g_free) > 0)
+ return;
+ break;
default:
if (g_at_chat_send(sd->chat, "AT+CPINR", cpinr_prefixes,
at_cpinr_cb, cbd, g_free) > 0)
--
1.7.10.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/6] gprs: add support for u-blox +UREG URCs
2014-06-26 18:28 [PATCH v2 0/6] Add a driver for u-blox modems Philip Paeps
` (3 preceding siblings ...)
2014-06-26 18:28 ` [PATCH 4/6] sim: query u-blox PIN retries with AT+UPINCNT Philip Paeps
@ 2014-06-26 18:28 ` Philip Paeps
2014-06-30 19:05 ` Denis Kenzior
2014-06-26 18:28 ` [PATCH 6/6] atmodem: set the auth method for u-blox modems Philip Paeps
2014-06-30 19:10 ` [PATCH v2 0/6] Add a driver " Denis Kenzior
6 siblings, 1 reply; 11+ messages in thread
From: Philip Paeps @ 2014-06-26 18:28 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1751 bytes --]
---
drivers/atmodem/gprs.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/drivers/atmodem/gprs.c b/drivers/atmodem/gprs.c
index 3005867..5551316 100644
--- a/drivers/atmodem/gprs.c
+++ b/drivers/atmodem/gprs.c
@@ -282,6 +282,44 @@ static void telit_mode_notify(GAtResult *result, gpointer user_data)
ofono_gprs_bearer_notify(gprs, bearer);
}
+static void ublox_ureg_notify(GAtResult *result, gpointer user_data)
+{
+ struct ofono_gprs *gprs = user_data;
+ GAtResultIter iter;
+ gint state, bearer;
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "+UREG:"))
+ return;
+
+ if (!g_at_result_iter_next_number(&iter, &state))
+ return;
+
+ switch (state) {
+ case 4:
+ bearer = 5;
+ break;
+ case 5:
+ bearer = 4;
+ break;
+ case 7:
+ /* XXX: reserved - assume none. */
+ bearer = 0;
+ break;
+ case 8:
+ bearer = 1;
+ break;
+ case 9:
+ bearer = 2;
+ break;
+ default:
+ bearer = state;
+ }
+
+ ofono_gprs_bearer_notify(gprs, bearer);
+}
+
static void cpsb_notify(GAtResult *result, gpointer user_data)
{
struct ofono_gprs *gprs = user_data;
@@ -316,6 +354,12 @@ static void gprs_initialized(gboolean ok, GAtResult *result, gpointer user_data)
g_at_chat_register(gd->chat, "^MODE:", huawei_mode_notify,
FALSE, gprs, NULL);
break;
+ case OFONO_VENDOR_UBLOX:
+ g_at_chat_register(gd->chat, "+UREG:", ublox_ureg_notify,
+ FALSE, gprs, NULL);
+ g_at_chat_send(gd->chat, "AT+UREG=1", none_prefix,
+ NULL, NULL, NULL);
+ break;
case OFONO_VENDOR_TELIT:
g_at_chat_register(gd->chat, "#PSNT:", telit_mode_notify,
FALSE, gprs, NULL);
--
1.7.10.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 6/6] atmodem: set the auth method for u-blox modems
2014-06-26 18:28 [PATCH v2 0/6] Add a driver for u-blox modems Philip Paeps
` (4 preceding siblings ...)
2014-06-26 18:28 ` [PATCH 5/6] gprs: add support for u-blox +UREG URCs Philip Paeps
@ 2014-06-26 18:28 ` Philip Paeps
2014-06-30 19:10 ` [PATCH v2 0/6] Add a driver " Denis Kenzior
6 siblings, 0 replies; 11+ messages in thread
From: Philip Paeps @ 2014-06-26 18:28 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1494 bytes --]
---
drivers/atmodem/gprs-context.c | 31 ++++++++++++++++++++++++++++---
1 file changed, 28 insertions(+), 3 deletions(-)
diff --git a/drivers/atmodem/gprs-context.c b/drivers/atmodem/gprs-context.c
index be44443..f6e6c2e 100644
--- a/drivers/atmodem/gprs-context.c
+++ b/drivers/atmodem/gprs-context.c
@@ -282,9 +282,34 @@ static void at_gprs_activate_primary(struct ofono_gprs_context *gc,
len = snprintf(buf, sizeof(buf), "AT+CGDCONT=%u,\"IP\"", ctx->cid);
- if (ctx->apn)
- snprintf(buf + len, sizeof(buf) - len - 3, ",\"%s\"",
- ctx->apn);
+ if (ctx->apn) {
+ switch (gcd->vendor) {
+ case OFONO_VENDOR_UBLOX:
+ /*
+ * U-blox modems require a magic prefix to the APN to
+ * specify the authentication method to use in the
+ * network. See UBX-13002752 - R21.
+ *
+ * As the response of the read command omits this magic
+ * prefix, this is the least invasive place to set it.
+ */
+ switch (ctx->auth_method) {
+ case OFONO_GPRS_AUTH_METHOD_CHAP:
+ snprintf(buf + len, sizeof(buf) - len - 3,
+ ",\"CHAP:%s\"", ctx->apn);
+ break;
+ case OFONO_GPRS_AUTH_METHOD_PAP:
+ snprintf(buf + len, sizeof(buf) - len - 3,
+ ",\"PAP:%s\"", ctx->apn);
+ break;
+ }
+ break;
+ default:
+ snprintf(buf + len, sizeof(buf) - len - 3, ",\"%s\"",
+ ctx->apn);
+ break;
+ }
+ }
if (g_at_chat_send(gcd->chat, buf, none_prefix,
at_cgdcont_cb, gc, NULL) > 0)
--
1.7.10.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/6] atmodem: add vendor u-blox
2014-06-26 18:28 ` [PATCH 1/6] atmodem: add vendor u-blox Philip Paeps
@ 2014-06-30 19:04 ` Denis Kenzior
0 siblings, 0 replies; 11+ messages in thread
From: Denis Kenzior @ 2014-06-30 19:04 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 754 bytes --]
Hi Philip,
On 06/26/2014 01:28 PM, Philip Paeps wrote:
> ---
> drivers/atmodem/vendor.h | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/atmodem/vendor.h b/drivers/atmodem/vendor.h
> index bf2b38a..de3c455 100644
> --- a/drivers/atmodem/vendor.h
> +++ b/drivers/atmodem/vendor.h
> @@ -42,5 +42,6 @@ enum ofono_vendor {
> OFONO_VENDOR_SIMCOM_SIM900,
> OFONO_VENDOR_ICERA,
> OFONO_VENDOR_WAVECOM_Q2XXX,
> - OFONO_VENDOR_ALCATEL
> + OFONO_VENDOR_ALCATEL,
> + OFONO_VENDOR_UBLOX
This was a booboo from earlier, but please always add a comma when
adding enumeration entries. Even if the entry is the last one.
> };
>
Patch has been applied after a 3-way merge.
Regards,
-Denis
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 5/6] gprs: add support for u-blox +UREG URCs
2014-06-26 18:28 ` [PATCH 5/6] gprs: add support for u-blox +UREG URCs Philip Paeps
@ 2014-06-30 19:05 ` Denis Kenzior
0 siblings, 0 replies; 11+ messages in thread
From: Denis Kenzior @ 2014-06-30 19:05 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 243 bytes --]
Hi Philip,
On 06/26/2014 01:28 PM, Philip Paeps wrote:
> ---
> drivers/atmodem/gprs.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 44 insertions(+)
>
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 0/6] Add a driver for u-blox modems
2014-06-26 18:28 [PATCH v2 0/6] Add a driver for u-blox modems Philip Paeps
` (5 preceding siblings ...)
2014-06-26 18:28 ` [PATCH 6/6] atmodem: set the auth method for u-blox modems Philip Paeps
@ 2014-06-30 19:10 ` Denis Kenzior
2014-07-02 10:53 ` Philip Paeps
6 siblings, 1 reply; 11+ messages in thread
From: Denis Kenzior @ 2014-06-30 19:10 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1134 bytes --]
Hi Philip,
On 06/26/2014 01:28 PM, Philip Paeps wrote:
> Changes since v1:
>
> o Fix coding style nits and useless casts
> o Use prefixes
> o Make enable go to CFUN=4 (powered but radio off)
>
>
> Philip Paeps (6):
> atmodem: add vendor u-blox
> udevng: add detection logic for u-blox modems
> plugins: new driver for u-blox SARA-U270 modems
> sim: query u-blox PIN retries with AT+UPINCNT
> gprs: add support for u-blox +UREG URCs
> atmodem: set the auth method for u-blox modems
>
> Makefile.am | 3 +
> drivers/atmodem/gprs-context.c | 31 ++++-
> drivers/atmodem/gprs.c | 44 ++++++
> drivers/atmodem/sim.c | 45 +++++++
> drivers/atmodem/vendor.h | 3 +-
> plugins/ublox.c | 291 ++++++++++++++++++++++++++++++++++++++++
> plugins/udevng.c | 42 ++++++
> 7 files changed, 455 insertions(+), 4 deletions(-)
> create mode 100644 plugins/ublox.c
>
Can you rebase the rest of the patches in this series, they no longer
apply cleanly and 3-way merge gets confused as well.
Regards,
-Denis
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 0/6] Add a driver for u-blox modems
2014-06-30 19:10 ` [PATCH v2 0/6] Add a driver " Denis Kenzior
@ 2014-07-02 10:53 ` Philip Paeps
0 siblings, 0 replies; 11+ messages in thread
From: Philip Paeps @ 2014-07-02 10:53 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1352 bytes --]
On 2014-06-30 14:10:23 (-0500), Denis Kenzior <denkenz@gmail.com> wrote:
> On 06/26/2014 01:28 PM, Philip Paeps wrote:
> > Changes since v1:
> >
> > o Fix coding style nits and useless casts
> > o Use prefixes
> > o Make enable go to CFUN=4 (powered but radio off)
> >
> >
> > Philip Paeps (6):
> > atmodem: add vendor u-blox
> > udevng: add detection logic for u-blox modems
> > plugins: new driver for u-blox SARA-U270 modems
> > sim: query u-blox PIN retries with AT+UPINCNT
> > gprs: add support for u-blox +UREG URCs
> > atmodem: set the auth method for u-blox modems
> >
> > Makefile.am | 3 +
> > drivers/atmodem/gprs-context.c | 31 ++++-
> > drivers/atmodem/gprs.c | 44 ++++++
> > drivers/atmodem/sim.c | 45 +++++++
> > drivers/atmodem/vendor.h | 3 +-
> > plugins/ublox.c | 291 ++++++++++++++++++++++++++++++++++++++++
> > plugins/udevng.c | 42 ++++++
> > 7 files changed, 455 insertions(+), 4 deletions(-)
> > create mode 100644 plugins/ublox.c
> >
>
> Can you rebase the rest of the patches in this series, they no longer
> apply cleanly and 3-way merge gets confused as well.
Sure, I'll take care of this today.
Philip
--
Philip Paeps
Senior Reality Engineer
Ministry of Information
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2014-07-02 10:53 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-26 18:28 [PATCH v2 0/6] Add a driver for u-blox modems Philip Paeps
2014-06-26 18:28 ` [PATCH 1/6] atmodem: add vendor u-blox Philip Paeps
2014-06-30 19:04 ` Denis Kenzior
2014-06-26 18:28 ` [PATCH 2/6] udevng: add detection logic for u-blox modems Philip Paeps
2014-06-26 18:28 ` [PATCH 3/6] plugins: new driver for u-blox SARA-U270 modems Philip Paeps
2014-06-26 18:28 ` [PATCH 4/6] sim: query u-blox PIN retries with AT+UPINCNT Philip Paeps
2014-06-26 18:28 ` [PATCH 5/6] gprs: add support for u-blox +UREG URCs Philip Paeps
2014-06-30 19:05 ` Denis Kenzior
2014-06-26 18:28 ` [PATCH 6/6] atmodem: set the auth method for u-blox modems Philip Paeps
2014-06-30 19:10 ` [PATCH v2 0/6] Add a driver " Denis Kenzior
2014-07-02 10:53 ` Philip Paeps
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.