* [PATCH -v5 01/13] udevng: look also to VID
@ 2011-09-28 21:24 Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 02/13] sap: remove connect callback if enable fails Gustavo F. Padovan
0 siblings, 1 reply; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1071 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
Some drivers name are not properly set, so we need to rely on the VID
information as well
---
plugins/udevng.c | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/plugins/udevng.c b/plugins/udevng.c
index 1365bd1..5fd9475 100644
--- a/plugins/udevng.c
+++ b/plugins/udevng.c
@@ -857,14 +857,16 @@ static void check_usb_device(struct udev_device *device)
DBG("%s [%s:%s]", drv, vid, pid);
for (i = 0; vendor_list[i].driver; i++) {
- if (g_str_equal(vendor_list[i].drv, drv) == FALSE)
- continue;
-
- if (vendor_list[i].vid == NULL) {
- driver = vendor_list[i].driver;
- break;
+ if (g_str_equal(vendor_list[i].drv, drv) == TRUE) {
+ if (vendor_list[i].vid == NULL) {
+ driver = vendor_list[i].driver;
+ break;
+ }
}
+ if (vendor_list[i].vid == NULL)
+ continue;
+
if (g_str_equal(vendor_list[i].vid, vid) == TRUE) {
if (vendor_list[i].pid == NULL) {
if (driver == NULL)
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 02/13] sap: remove connect callback if enable fails
2011-09-28 21:24 [PATCH -v5 01/13] udevng: look also to VID Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 03/13] telit: add support the enable the SAP client modem Gustavo F. Padovan
2011-09-29 15:50 ` [PATCH -v5 02/13] sap: remove connect callback if enable fails Denis Kenzior
0 siblings, 2 replies; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 2140 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
---
plugins/sap.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/plugins/sap.c b/plugins/sap.c
index 1c0d9ce..28b07e7 100644
--- a/plugins/sap.c
+++ b/plugins/sap.c
@@ -54,6 +54,7 @@ static struct bluetooth_sap_driver *sap_hw_driver = NULL;
struct sap_data {
struct ofono_modem *hw_modem;
struct bluetooth_sap_driver *sap_driver;
+ DBusPendingCall *call;
};
int bluetooth_sap_client_register(struct bluetooth_sap_driver *sap,
@@ -112,6 +113,9 @@ static void sap_remove(struct ofono_modem *modem)
DBG("%p", modem);
+ if (data->call != NULL)
+ dbus_pending_call_cancel(data->call);
+
g_free(data);
ofono_modem_set_data(modem, NULL);
@@ -120,6 +124,7 @@ static void sap_remove(struct ofono_modem *modem)
static void sap_connect_reply(DBusPendingCall *call, gpointer user_data)
{
struct ofono_modem *modem = user_data;
+ struct sap_data *data = ofono_modem_get_data(modem);
DBusError derr;
DBusMessage *reply;
@@ -127,6 +132,8 @@ static void sap_connect_reply(DBusPendingCall *call, gpointer user_data)
reply = dbus_pending_call_steal_reply(call);
+ data->call = NULL;
+
if (ofono_modem_get_powered(modem))
goto done;
@@ -147,6 +154,8 @@ done:
/* power up hardware */
static int sap_enable(struct ofono_modem *modem)
{
+ struct sap_data *data = ofono_modem_get_data(modem);
+ DBusPendingCall *call;
int status;
const char *str = "sap";
const char *server_path = ofono_modem_get_string(modem, "ServerPath");
@@ -154,7 +163,7 @@ static int sap_enable(struct ofono_modem *modem)
DBG("%p", modem);
status = bluetooth_send_with_reply(server_path, BLUEZ_SERIAL_INTERFACE,
- "ConnectFD", NULL, sap_connect_reply,
+ "ConnectFD", &call, sap_connect_reply,
modem, NULL, DBUS_TIMEOUT,
DBUS_TYPE_STRING, &str,
DBUS_TYPE_INVALID);
@@ -162,6 +171,8 @@ static int sap_enable(struct ofono_modem *modem)
if (status < 0)
return -EINVAL;
+ data->call = call;
+
return -EINPROGRESS;
}
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 03/13] telit: add support the enable the SAP client modem
2011-09-28 21:24 ` [PATCH -v5 02/13] sap: remove connect callback if enable fails Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 04/13] sap: enable SAP modem, when BlueZ replies Gustavo F. Padovan
2011-09-29 15:53 ` [PATCH -v5 03/13] telit: add support the enable the SAP client modem Denis Kenzior
2011-09-29 15:50 ` [PATCH -v5 02/13] sap: remove connect callback if enable fails Denis Kenzior
1 sibling, 2 replies; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 6781 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
---
plugins/bluetooth.h | 3 +-
plugins/telit.c | 191 ++++++++++++++++++++++++++++++++++++++++++++++++---
2 files changed, 184 insertions(+), 10 deletions(-)
diff --git a/plugins/bluetooth.h b/plugins/bluetooth.h
index 936659c..7e94f96 100644
--- a/plugins/bluetooth.h
+++ b/plugins/bluetooth.h
@@ -45,7 +45,8 @@ struct bluetooth_profile {
struct bluetooth_sap_driver {
const char *name;
- int (*enable) (struct ofono_modem *modem);
+ int (*enable) (struct ofono_modem *modem, struct ofono_modem *sap_modem,
+ int bt_fd);
};
struct server;
diff --git a/plugins/telit.c b/plugins/telit.c
index 1f950aa..2e422e7 100644
--- a/plugins/telit.c
+++ b/plugins/telit.c
@@ -27,6 +27,10 @@
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
+#include <fcntl.h>
+#include <termios.h>
+#include <string.h>
+#include <sys/socket.h>
#include <glib.h>
#include <gatchat.h>
@@ -62,8 +66,14 @@ static const char *rsen_prefix[]= { "#RSEN:", NULL };
struct telit_data {
GAtChat *chat;
+ GAtChat *aux;
struct ofono_sim *sim;
guint sim_inserted_source;
+ struct ofono_modem *sap_modem;
+ GIOChannel *bt_io;
+ GIOChannel *hw_io;
+ guint bt_watch;
+ guint hw_watch;
};
static void telit_debug(const char *str, void *user_data)
@@ -73,6 +83,104 @@ static void telit_debug(const char *str, void *user_data)
ofono_info("%s%s", prefix, str);
}
+static void sap_close_io(struct ofono_modem *modem)
+{
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ if (data->bt_io != NULL) {
+ int sk = g_io_channel_unix_get_fd(data->bt_io);
+ shutdown(sk, SHUT_RDWR);
+
+ g_io_channel_unref(data->bt_io);
+ data->bt_io = NULL;
+ }
+
+ if (data->bt_watch > 0)
+ g_source_remove(data->bt_watch);
+
+ if (data->hw_io != NULL) {
+ g_io_channel_unref(data->hw_io);
+ data->hw_io = NULL;
+ }
+
+ if (data->hw_watch > 0)
+ g_source_remove(data->hw_watch);
+}
+
+static void bt_watch_remove(gpointer userdata)
+{
+ struct ofono_modem *modem = userdata;
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ ofono_modem_set_powered(modem, FALSE);
+
+ data->bt_watch = 0;
+}
+
+static gboolean bt_event_cb(GIOChannel *bt_io, GIOCondition condition,
+ gpointer userdata)
+{
+ struct ofono_modem *modem = userdata;
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ if (condition & G_IO_IN) {
+ GIOStatus status;
+ gsize bytes_read, bytes_written;
+ gchar buf[300];
+
+ status = g_io_channel_read_chars(bt_io, buf, 300,
+ &bytes_read, NULL);
+
+ if (bytes_read > 0)
+ g_io_channel_write_chars(data->hw_io, buf,
+ bytes_read, &bytes_written, NULL);
+
+ if (status != G_IO_STATUS_NORMAL && status != G_IO_STATUS_AGAIN)
+ return FALSE;
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void hw_watch_remove(gpointer userdata)
+{
+ struct ofono_modem *modem = userdata;
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ ofono_modem_set_powered(modem, FALSE);
+
+ data->hw_watch = 0;
+}
+
+static gboolean hw_event_cb(GIOChannel *hw_io, GIOCondition condition,
+ gpointer userdata)
+{
+ struct ofono_modem *modem = userdata;
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ if (condition & G_IO_IN) {
+ GIOStatus status;
+ gsize bytes_read, bytes_written;
+ gchar buf[300];
+
+ status = g_io_channel_read_chars(hw_io, buf, 300,
+ &bytes_read, NULL);
+
+ if (bytes_read > 0)
+ g_io_channel_write_chars(data->bt_io, buf,
+ bytes_read, &bytes_written, NULL);
+
+ if (status != G_IO_STATUS_NORMAL && status != G_IO_STATUS_AGAIN)
+ return FALSE;
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static GAtChat *open_device(struct ofono_modem *modem,
const char *key, char *debug)
{
@@ -129,31 +237,96 @@ static void rsen_enable_cb(gboolean ok, GAtResult *result, gpointer user_data)
DBG("%p", modem);
if (!ok) {
- g_at_chat_unref(data->chat);
- data->chat = NULL;
- ofono_modem_set_powered(modem, FALSE);
+ g_at_chat_unref(data->aux);
+ data->aux = NULL;
+ ofono_modem_set_powered(data->sap_modem, FALSE);
+ sap_close_io(modem);
return;
}
+}
+
+static int telit_sap_open()
+{
+ const char *device = "/dev/ttyUSB4";
+ struct termios ti;
+ int fd;
+
+ DBG("%s", device);
+
+ fd = open(device, O_RDWR | O_NOCTTY | O_NONBLOCK);
+ if (fd < 0)
+ return -EINVAL;
+ /* Switch TTY to raw mode */
+ memset(&ti, 0, sizeof(ti));
+ cfmakeraw(&ti);
+
+ ti.c_cflag |= (B115200 | CLOCAL | CREAD);
+
+ tcflush(fd, TCIOFLUSH);
+ if (tcsetattr(fd, TCSANOW, &ti) < 0) {
+ close(fd);
+ return -EBADF;
+ }
+
+ return fd;
}
-static int telit_sap_enable(struct ofono_modem *modem)
+static int telit_sap_enable(struct ofono_modem *modem,
+ struct ofono_modem *sap_modem,
+ int bt_fd)
{
struct telit_data *data = ofono_modem_get_data(modem);
+ int fd;
DBG("%p", modem);
- data->chat = open_device(modem, "Data", "Aux: ");
- if (data->chat == NULL)
+ data->aux = open_device(modem, "Data", "Aux: ");
+ if (data->aux == NULL)
return -EINVAL;
- g_at_chat_register(data->chat, "#RSEN:", telit_rsen_notify,
+ fd = telit_sap_open();
+ if (fd < 0)
+ return fd;
+
+ data->hw_io = g_io_channel_unix_new(fd);
+ if (data->hw_io == NULL) {
+ close(fd);
+ return -ENOMEM;
+ }
+
+ g_io_channel_set_encoding(data->hw_io, NULL, NULL);
+ g_io_channel_set_buffered(data->hw_io, FALSE);
+ g_io_channel_set_close_on_unref(data->hw_io, TRUE);
+
+ data->hw_watch = g_io_add_watch_full(data->hw_io, G_PRIORITY_DEFAULT,
+ G_IO_HUP | G_IO_ERR | G_IO_NVAL | G_IO_IN,
+ hw_event_cb, modem, hw_watch_remove);
+
+ data->bt_io = g_io_channel_unix_new(bt_fd);
+ if (data->bt_io == NULL) {
+ sap_close_io(modem);
+ return -ENOMEM;
+ }
+
+ g_io_channel_set_encoding(data->bt_io, NULL, NULL);
+ g_io_channel_set_buffered(data->bt_io, FALSE);
+ g_io_channel_set_close_on_unref(data->bt_io, TRUE);
+
+ data->bt_watch = g_io_add_watch_full(data->bt_io, G_PRIORITY_DEFAULT,
+ G_IO_HUP | G_IO_ERR | G_IO_NVAL | G_IO_IN,
+ bt_event_cb, modem, bt_watch_remove);
+
+
+ data->sap_modem = sap_modem;
+
+ g_at_chat_register(data->aux, "#RSEN:", telit_rsen_notify,
FALSE, modem, NULL);
- g_at_chat_send(data->chat, "AT#NOPT=3", NULL, NULL, NULL, NULL);
+ g_at_chat_send(data->aux, "AT#NOPT=0", NULL, NULL, NULL, NULL);
/* Set SAP functionality */
- g_at_chat_send(data->chat, "AT#RSEN=1,1,0,2,0", rsen_prefix,
+ g_at_chat_send(data->aux, "AT#RSEN=1,1,0,2,0", rsen_prefix,
rsen_enable_cb, modem, NULL);
return -EINPROGRESS;
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 04/13] sap: enable SAP modem, when BlueZ replies
2011-09-28 21:24 ` [PATCH -v5 03/13] telit: add support the enable the SAP client modem Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 05/13] telit: add suport the disable SAP client Gustavo F. Padovan
2011-09-29 15:54 ` [PATCH -v5 04/13] sap: enable SAP modem, when BlueZ replies Denis Kenzior
2011-09-29 15:53 ` [PATCH -v5 03/13] telit: add support the enable the SAP client modem Denis Kenzior
1 sibling, 2 replies; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1391 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
---
plugins/sap.c | 22 ++++++++++++++++++----
1 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/plugins/sap.c b/plugins/sap.c
index 28b07e7..850ed2f 100644
--- a/plugins/sap.c
+++ b/plugins/sap.c
@@ -127,6 +127,7 @@ static void sap_connect_reply(DBusPendingCall *call, gpointer user_data)
struct sap_data *data = ofono_modem_get_data(modem);
DBusError derr;
DBusMessage *reply;
+ int fd, err;
DBG("");
@@ -138,16 +139,29 @@ static void sap_connect_reply(DBusPendingCall *call, gpointer user_data)
goto done;
dbus_error_init(&derr);
- if (!dbus_set_error_from_message(&derr, reply))
+ if (dbus_set_error_from_message(&derr, reply)) {
+
+ DBG("Connect reply: %s", derr.message);
+
+ dbus_error_free(&derr);
goto done;
+ }
- DBG("Connect reply: %s", derr.message);
+ if (!dbus_message_get_args(reply, NULL, DBUS_TYPE_UNIX_FD, &fd,
+ DBUS_TYPE_INVALID))
+ goto done;
- ofono_modem_set_powered(modem, FALSE);
+ data->hw_modem = sap_hw_modem;
+ data->sap_driver = sap_hw_driver;
- dbus_error_free(&derr);
+ err = data->sap_driver->enable(data->hw_modem, modem, fd);
+ if (err == -EINPROGRESS) {
+ dbus_message_unref(reply);
+ return;
+ }
done:
+ ofono_modem_set_powered(modem, FALSE);
dbus_message_unref(reply);
}
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 05/13] telit: add suport the disable SAP client
2011-09-28 21:24 ` [PATCH -v5 04/13] sap: enable SAP modem, when BlueZ replies Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 06/13] sap: add sap modem disable() support Gustavo F. Padovan
2011-09-29 16:15 ` [PATCH -v5 05/13] telit: add suport the disable " Denis Kenzior
2011-09-29 15:54 ` [PATCH -v5 04/13] sap: enable SAP modem, when BlueZ replies Denis Kenzior
1 sibling, 2 replies; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 4072 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
---
plugins/bluetooth.h | 1 +
plugins/telit.c | 100 ++++++++++++++++++++++++++++++++++----------------
2 files changed, 69 insertions(+), 32 deletions(-)
diff --git a/plugins/bluetooth.h b/plugins/bluetooth.h
index 7e94f96..d38e72e 100644
--- a/plugins/bluetooth.h
+++ b/plugins/bluetooth.h
@@ -47,6 +47,7 @@ struct bluetooth_sap_driver {
const char *name;
int (*enable) (struct ofono_modem *modem, struct ofono_modem *sap_modem,
int bt_fd);
+ int (*disable) (struct ofono_modem *modem);
};
struct server;
diff --git a/plugins/telit.c b/plugins/telit.c
index 2e422e7..f39a7c4 100644
--- a/plugins/telit.c
+++ b/plugins/telit.c
@@ -245,6 +245,58 @@ static void rsen_enable_cb(gboolean ok, GAtResult *result, gpointer user_data)
}
}
+static void cfun_disable_cb(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ if(data->sap_modem)
+ modem = data->sap_modem;
+
+ DBG("%p", modem);
+
+ g_at_chat_unref(data->chat);
+ data->chat = NULL;
+
+ if (data->sim_inserted_source > 0)
+ g_source_remove(data->sim_inserted_source);
+
+ if (ok)
+ ofono_modem_set_powered(modem, FALSE);
+
+ data->sap_modem = NULL;
+}
+
+static int telit_disable(struct ofono_modem *modem)
+{
+ struct telit_data *data = ofono_modem_get_data(modem);
+ DBG("%p", modem);
+
+ g_at_chat_cancel_all(data->chat);
+ g_at_chat_unregister_all(data->chat);
+
+ /* Power down modem */
+ g_at_chat_send(data->chat, "AT+CFUN=0", none_prefix,
+ cfun_disable_cb, modem, NULL);
+
+ return -EINPROGRESS;
+}
+
+static void rsen_disable_cb(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ DBG("%p", modem);
+
+ g_at_chat_unref(data->aux);
+ data->aux = NULL;
+
+ sap_close_io(modem);
+
+ telit_disable(modem);
+}
+
static int telit_sap_open()
{
const char *device = "/dev/ttyUSB4";
@@ -332,9 +384,25 @@ static int telit_sap_enable(struct ofono_modem *modem,
return -EINPROGRESS;
}
+static int telit_sap_disable(struct ofono_modem *modem)
+{
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ DBG("%p", modem);
+
+ g_at_chat_cancel_all(data->aux);
+ g_at_chat_unregister_all(data->aux);
+
+ g_at_chat_send(data->aux, "AT#RSEN=0", rsen_prefix,
+ rsen_disable_cb, modem, NULL);
+
+ return -EINPROGRESS;
+}
+
static struct bluetooth_sap_driver sap_driver = {
.name = "telit",
.enable = telit_sap_enable,
+ .disable = telit_sap_disable,
};
static int telit_probe(struct ofono_modem *modem)
@@ -476,23 +544,6 @@ static void cfun_enable_cb(gboolean ok, GAtResult *result, gpointer user_data)
telit_qss_cb, modem, NULL);
}
-static void cfun_disable_cb(gboolean ok, GAtResult *result, gpointer user_data)
-{
- struct ofono_modem *modem = user_data;
- struct telit_data *data = ofono_modem_get_data(modem);
-
- DBG("%p", modem);
-
- g_at_chat_unref(data->chat);
- data->chat = NULL;
-
- if (data->sim_inserted_source > 0)
- g_source_remove(data->sim_inserted_source);
-
- if (ok)
- ofono_modem_set_powered(modem, FALSE);
-}
-
static int telit_enable(struct ofono_modem *modem)
{
struct telit_data *data = ofono_modem_get_data(modem);
@@ -517,21 +568,6 @@ static int telit_enable(struct ofono_modem *modem)
return -EINPROGRESS;
}
-static int telit_disable(struct ofono_modem *modem)
-{
- struct telit_data *data = ofono_modem_get_data(modem);
- DBG("%p", modem);
-
- g_at_chat_cancel_all(data->chat);
- g_at_chat_unregister_all(data->chat);
-
- /* Power down modem */
- g_at_chat_send(data->chat, "AT+CFUN=0", none_prefix,
- cfun_disable_cb, modem, NULL);
-
- return -EINPROGRESS;
-}
-
static void set_online_cb(gboolean ok, GAtResult *result, gpointer user_data)
{
struct cb_data *cbd = user_data;
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 06/13] sap: add sap modem disable() support
2011-09-28 21:24 ` [PATCH -v5 05/13] telit: add suport the disable SAP client Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 07/13] telit: enable the telit modem after enable SAP client Gustavo F. Padovan
2011-09-29 16:15 ` [PATCH -v5 05/13] telit: add suport the disable " Denis Kenzior
1 sibling, 1 reply; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 556 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
---
plugins/sap.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/plugins/sap.c b/plugins/sap.c
index 850ed2f..7bb776a 100644
--- a/plugins/sap.c
+++ b/plugins/sap.c
@@ -192,8 +192,12 @@ static int sap_enable(struct ofono_modem *modem)
static int sap_disable(struct ofono_modem *modem)
{
+ struct sap_data *data = ofono_modem_get_data(modem);
+
DBG("%p", modem);
+ data->sap_driver->disable(data->hw_modem);
+
return 0;
}
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 07/13] telit: enable the telit modem after enable SAP client
2011-09-28 21:24 ` [PATCH -v5 06/13] sap: add sap modem disable() support Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 08/13] telit: add pre_sim support to SAP Client Gustavo F. Padovan
2011-09-29 16:19 ` [PATCH -v5 07/13] telit: enable the telit modem after enable SAP client Denis Kenzior
0 siblings, 2 replies; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 7512 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
---
plugins/telit.c | 271 +++++++++++++++++++++++++++++--------------------------
1 files changed, 141 insertions(+), 130 deletions(-)
diff --git a/plugins/telit.c b/plugins/telit.c
index f39a7c4..f15a787 100644
--- a/plugins/telit.c
+++ b/plugins/telit.c
@@ -213,9 +213,142 @@ static GAtChat *open_device(struct ofono_modem *modem,
return chat;
}
+static gboolean sim_inserted_timeout_cb(gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ DBG("%p", modem);
+
+ data->sim_inserted_source = 0;
+
+ ofono_sim_inserted_notify(data->sim, TRUE);
+
+ return FALSE;
+}
+
+static void switch_sim_state_status(struct ofono_modem *modem, int status)
+{
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ DBG("%p", modem);
+
+ switch (status) {
+ case 0:
+ DBG("SIM not inserted");
+ ofono_sim_inserted_notify(data->sim, FALSE);
+ break;
+ case 1:
+ DBG("SIM inserted");
+ /* We need to sleep a bit */
+ data->sim_inserted_source = g_timeout_add_seconds(1,
+ sim_inserted_timeout_cb,
+ modem);
+ break;
+ case 2:
+ DBG("SIM inserted and PIN unlocked");
+ break;
+ case 3:
+ DBG("SIM inserted and ready");
+ break;
+ }
+}
+
+static void telit_qss_notify(GAtResult *result, gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ int status;
+ GAtResultIter iter;
+
+ DBG("%p", modem);
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "#QSS:"))
+ return;
+
+ g_at_result_iter_next_number(&iter, &status);
+
+ switch_sim_state_status(modem, status);
+}
+
+static void telit_qss_cb(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ int mode;
+ int status;
+ GAtResultIter iter;
+ g_at_result_iter_init(&iter, result);
+
+ DBG("%p", modem);
+
+ if (!g_at_result_iter_next(&iter, "#QSS:"))
+ return;
+
+ g_at_result_iter_next_number(&iter, &mode);
+ g_at_result_iter_next_number(&iter, &status);
+
+ switch_sim_state_status(modem, status);
+}
+
+static void cfun_enable_cb(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ struct telit_data *data = ofono_modem_get_data(modem);
+ struct ofono_modem *m = data->sap_modem ? : modem;
+
+ DBG("%p", modem);
+
+ if (!ok) {
+ g_at_chat_unref(data->chat);
+ data->chat = NULL;
+ ofono_modem_set_powered(m, FALSE);
+ sap_close_io(modem);
+ return;
+ }
+
+ ofono_modem_set_powered(m, TRUE);
+
+ /* Enable sim state notification */
+ g_at_chat_send(data->chat, "AT#QSS=1", none_prefix, NULL, NULL, NULL);
+
+ /* Follow sim state */
+ g_at_chat_register(data->chat, "#QSS:", telit_qss_notify,
+ FALSE, modem, NULL);
+
+ /* Query current sim state */
+ g_at_chat_send(data->chat, "AT#QSS?", qss_prefix,
+ telit_qss_cb, modem, NULL);
+}
+
+static int telit_enable(struct ofono_modem *modem)
+{
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ DBG("%p", modem);
+
+ data->chat = open_device(modem, "Modem", "Modem: ");
+ if (data->chat == NULL)
+ return -EINVAL;
+
+ /*
+ * Disable command echo and
+ * enable the Extended Error Result Codes
+ */
+ g_at_chat_send(data->chat, "ATE0 +CMEE=1", none_prefix,
+ NULL, NULL, NULL);
+
+ /* Set phone functionality */
+ g_at_chat_send(data->chat, "AT+CFUN=4", none_prefix,
+ cfun_enable_cb, modem, NULL);
+
+ return -EINPROGRESS;
+}
+
static void telit_rsen_notify(GAtResult *result, gpointer user_data)
{
struct ofono_modem *modem = user_data;
+ struct telit_data *data = ofono_modem_get_data(modem);
int status;
GAtResultIter iter;
@@ -227,6 +360,14 @@ static void telit_rsen_notify(GAtResult *result, gpointer user_data)
return;
g_at_result_iter_next_number(&iter, &status);
+
+ if (status == 0) {
+ ofono_modem_set_powered(data->sap_modem, FALSE);
+ sap_close_io(modem);
+ return;
+ }
+
+ telit_enable(modem);
}
static void rsen_enable_cb(gboolean ok, GAtResult *result, gpointer user_data)
@@ -438,136 +579,6 @@ static void telit_remove(struct ofono_modem *modem)
g_free(data);
}
-static gboolean sim_inserted_timeout_cb(gpointer user_data)
-{
- struct ofono_modem *modem = user_data;
- struct telit_data *data = ofono_modem_get_data(modem);
-
- DBG("%p", modem);
-
- data->sim_inserted_source = 0;
-
- ofono_sim_inserted_notify(data->sim, TRUE);
-
- return FALSE;
-}
-
-static void switch_sim_state_status(struct ofono_modem *modem, int status)
-{
- struct telit_data *data = ofono_modem_get_data(modem);
-
- DBG("%p", modem);
-
- switch (status) {
- case 0:
- DBG("SIM not inserted");
- ofono_sim_inserted_notify(data->sim, FALSE);
- break;
- case 1:
- DBG("SIM inserted");
- /* We need to sleep a bit */
- data->sim_inserted_source = g_timeout_add_seconds(1,
- sim_inserted_timeout_cb,
- modem);
- break;
- case 2:
- DBG("SIM inserted and PIN unlocked");
- break;
- case 3:
- DBG("SIM inserted and ready");
- break;
- }
-}
-
-static void telit_qss_notify(GAtResult *result, gpointer user_data)
-{
- struct ofono_modem *modem = user_data;
- int status;
- GAtResultIter iter;
-
- DBG("%p", modem);
-
- g_at_result_iter_init(&iter, result);
-
- if (!g_at_result_iter_next(&iter, "#QSS:"))
- return;
-
- g_at_result_iter_next_number(&iter, &status);
-
- switch_sim_state_status(modem, status);
-}
-
-static void telit_qss_cb(gboolean ok, GAtResult *result, gpointer user_data)
-{
- struct ofono_modem *modem = user_data;
- int mode;
- int status;
- GAtResultIter iter;
- g_at_result_iter_init(&iter, result);
-
- DBG("%p", modem);
-
- if (!g_at_result_iter_next(&iter, "#QSS:"))
- return;
-
- g_at_result_iter_next_number(&iter, &mode);
- g_at_result_iter_next_number(&iter, &status);
-
- switch_sim_state_status(modem, status);
-}
-
-static void cfun_enable_cb(gboolean ok, GAtResult *result, gpointer user_data)
-{
- struct ofono_modem *modem = user_data;
- struct telit_data *data = ofono_modem_get_data(modem);
-
- DBG("%p", modem);
-
- if (!ok) {
- g_at_chat_unref(data->chat);
- data->chat = NULL;
- ofono_modem_set_powered(modem, FALSE);
- return;
- }
-
- ofono_modem_set_powered(modem, TRUE);
-
- /* Enable sim state notification */
- g_at_chat_send(data->chat, "AT#QSS=1", none_prefix, NULL, NULL, NULL);
-
- /* Follow sim state */
- g_at_chat_register(data->chat, "#QSS:", telit_qss_notify,
- FALSE, modem, NULL);
-
- /* Query current sim state */
- g_at_chat_send(data->chat, "AT#QSS?", qss_prefix,
- telit_qss_cb, modem, NULL);
-}
-
-static int telit_enable(struct ofono_modem *modem)
-{
- struct telit_data *data = ofono_modem_get_data(modem);
-
- DBG("%p", modem);
-
- data->chat = open_device(modem, "Modem", "Modem: ");
- if (data->chat == NULL)
- return -EINVAL;
-
- /*
- * Disable command echo and
- * enable the Extended Error Result Codes
- */
- g_at_chat_send(data->chat, "ATE0 +CMEE=1", none_prefix,
- NULL, NULL, NULL);
-
- /* Set phone functionality */
- g_at_chat_send(data->chat, "AT+CFUN=4", none_prefix,
- cfun_enable_cb, modem, NULL);
-
- return -EINPROGRESS;
-}
-
static void set_online_cb(gboolean ok, GAtResult *result, gpointer user_data)
{
struct cb_data *cbd = user_data;
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 08/13] telit: add pre_sim support to SAP Client
2011-09-28 21:24 ` [PATCH -v5 07/13] telit: enable the telit modem after enable SAP client Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 09/13] telit: add post_sim " Gustavo F. Padovan
2011-09-29 16:20 ` [PATCH -v5 08/13] telit: add pre_sim support " Denis Kenzior
2011-09-29 16:19 ` [PATCH -v5 07/13] telit: enable the telit modem after enable SAP client Denis Kenzior
1 sibling, 2 replies; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 2009 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
---
plugins/bluetooth.h | 1 +
plugins/telit.c | 26 +++++++++++++++-----------
2 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/plugins/bluetooth.h b/plugins/bluetooth.h
index d38e72e..8e3fadd 100644
--- a/plugins/bluetooth.h
+++ b/plugins/bluetooth.h
@@ -47,6 +47,7 @@ struct bluetooth_sap_driver {
const char *name;
int (*enable) (struct ofono_modem *modem, struct ofono_modem *sap_modem,
int bt_fd);
+ void (*pre_sim) (struct ofono_modem *modem);
int (*disable) (struct ofono_modem *modem);
};
diff --git a/plugins/telit.c b/plugins/telit.c
index f15a787..0d93a89 100644
--- a/plugins/telit.c
+++ b/plugins/telit.c
@@ -540,9 +540,24 @@ static int telit_sap_disable(struct ofono_modem *modem)
return -EINPROGRESS;
}
+static void telit_pre_sim(struct ofono_modem *modem)
+{
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ if (data->sap_modem)
+ modem = data->sap_modem;
+
+ DBG("%p", modem);
+
+ ofono_devinfo_create(modem, 0, "atmodem", data->chat);
+ data->sim = ofono_sim_create(modem, 0, "atmodem", data->chat);
+ ofono_voicecall_create(modem, 0, "atmodem", data->chat);
+}
+
static struct bluetooth_sap_driver sap_driver = {
.name = "telit",
.enable = telit_sap_enable,
+ .pre_sim = telit_pre_sim,
.disable = telit_sap_disable,
};
@@ -602,17 +617,6 @@ static void telit_set_online(struct ofono_modem *modem, ofono_bool_t online,
cbd, g_free);
}
-static void telit_pre_sim(struct ofono_modem *modem)
-{
- struct telit_data *data = ofono_modem_get_data(modem);
-
- DBG("%p", modem);
-
- ofono_devinfo_create(modem, 0, "atmodem", data->chat);
- data->sim = ofono_sim_create(modem, 0, "atmodem", data->chat);
- ofono_voicecall_create(modem, 0, "atmodem", data->chat);
-}
-
static void telit_post_sim(struct ofono_modem *modem)
{
struct telit_data *data = ofono_modem_get_data(modem);
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 09/13] telit: add post_sim to SAP Client
2011-09-28 21:24 ` [PATCH -v5 08/13] telit: add pre_sim support to SAP Client Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 10/13] telit: add set_online " Gustavo F. Padovan
2011-09-29 16:20 ` [PATCH -v5 09/13] telit: add post_sim " Denis Kenzior
2011-09-29 16:20 ` [PATCH -v5 08/13] telit: add pre_sim support " Denis Kenzior
1 sibling, 2 replies; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1842 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
---
plugins/bluetooth.h | 1 +
plugins/telit.c | 22 +++++++++++++---------
2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/plugins/bluetooth.h b/plugins/bluetooth.h
index 8e3fadd..a9d3683 100644
--- a/plugins/bluetooth.h
+++ b/plugins/bluetooth.h
@@ -48,6 +48,7 @@ struct bluetooth_sap_driver {
int (*enable) (struct ofono_modem *modem, struct ofono_modem *sap_modem,
int bt_fd);
void (*pre_sim) (struct ofono_modem *modem);
+ void (*post_sim) (struct ofono_modem *modem);
int (*disable) (struct ofono_modem *modem);
};
diff --git a/plugins/telit.c b/plugins/telit.c
index 0d93a89..8fe421f 100644
--- a/plugins/telit.c
+++ b/plugins/telit.c
@@ -554,10 +554,23 @@ static void telit_pre_sim(struct ofono_modem *modem)
ofono_voicecall_create(modem, 0, "atmodem", data->chat);
}
+static void telit_post_sim(struct ofono_modem *modem)
+{
+ struct telit_data *data = ofono_modem_get_data(modem);
+
+ if (data->sap_modem)
+ modem = data->sap_modem;
+
+ DBG("%p", modem);
+
+ ofono_sms_create(modem, 0, "atmodem", data->chat);
+}
+
static struct bluetooth_sap_driver sap_driver = {
.name = "telit",
.enable = telit_sap_enable,
.pre_sim = telit_pre_sim,
+ .post_sim = telit_post_sim,
.disable = telit_sap_disable,
};
@@ -617,15 +630,6 @@ static void telit_set_online(struct ofono_modem *modem, ofono_bool_t online,
cbd, g_free);
}
-static void telit_post_sim(struct ofono_modem *modem)
-{
- struct telit_data *data = ofono_modem_get_data(modem);
-
- DBG("%p", modem);
-
- ofono_sms_create(modem, 0, "atmodem", data->chat);
-}
-
static void telit_post_online(struct ofono_modem *modem)
{
struct telit_data *data = ofono_modem_get_data(modem);
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 10/13] telit: add set_online to SAP Client
2011-09-28 21:24 ` [PATCH -v5 09/13] telit: add post_sim " Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 11/13] telit: add post_online " Gustavo F. Padovan
2011-09-29 16:20 ` [PATCH -v5 10/13] telit: add set_online " Denis Kenzior
2011-09-29 16:20 ` [PATCH -v5 09/13] telit: add post_sim " Denis Kenzior
1 sibling, 2 replies; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 2966 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
---
plugins/bluetooth.h | 2 ++
plugins/telit.c | 47 ++++++++++++++++++++++++-----------------------
2 files changed, 26 insertions(+), 23 deletions(-)
diff --git a/plugins/bluetooth.h b/plugins/bluetooth.h
index a9d3683..89733a1 100644
--- a/plugins/bluetooth.h
+++ b/plugins/bluetooth.h
@@ -49,6 +49,8 @@ struct bluetooth_sap_driver {
int bt_fd);
void (*pre_sim) (struct ofono_modem *modem);
void (*post_sim) (struct ofono_modem *modem);
+ void (*set_online) (struct ofono_modem *modem, ofono_bool_t online,
+ ofono_modem_online_cb_t cb, void *user_data);
int (*disable) (struct ofono_modem *modem);
};
diff --git a/plugins/telit.c b/plugins/telit.c
index 8fe421f..dc6850f 100644
--- a/plugins/telit.c
+++ b/plugins/telit.c
@@ -566,11 +566,35 @@ static void telit_post_sim(struct ofono_modem *modem)
ofono_sms_create(modem, 0, "atmodem", data->chat);
}
+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 telit_set_online(struct ofono_modem *modem, ofono_bool_t online,
+ ofono_modem_online_cb_t cb, void *user_data)
+{
+ struct telit_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");
+
+ g_at_chat_send(data->chat, command, none_prefix, set_online_cb,
+ cbd, g_free);
+}
+
static struct bluetooth_sap_driver sap_driver = {
.name = "telit",
.enable = telit_sap_enable,
.pre_sim = telit_pre_sim,
.post_sim = telit_post_sim,
+ .set_online = telit_set_online,
.disable = telit_sap_disable,
};
@@ -607,29 +631,6 @@ static void telit_remove(struct ofono_modem *modem)
g_free(data);
}
-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 telit_set_online(struct ofono_modem *modem, ofono_bool_t online,
- ofono_modem_online_cb_t cb, void *user_data)
-{
- struct telit_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");
-
- g_at_chat_send(data->chat, command, none_prefix, set_online_cb,
- cbd, g_free);
-}
-
static void telit_post_online(struct ofono_modem *modem)
{
struct telit_data *data = ofono_modem_get_data(modem);
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 11/13] telit: add post_online to SAP Client
2011-09-28 21:24 ` [PATCH -v5 10/13] telit: add set_online " Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 12/13] sap: add full support to SAP modem Gustavo F. Padovan
2011-09-29 16:21 ` [PATCH -v5 11/13] telit: add post_online to SAP Client Denis Kenzior
2011-09-29 16:20 ` [PATCH -v5 10/13] telit: add set_online " Denis Kenzior
1 sibling, 2 replies; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 3351 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
---
plugins/bluetooth.h | 1 +
plugins/telit.c | 58 +++++++++++++++++++++++++++-----------------------
2 files changed, 32 insertions(+), 27 deletions(-)
diff --git a/plugins/bluetooth.h b/plugins/bluetooth.h
index 89733a1..ad78921 100644
--- a/plugins/bluetooth.h
+++ b/plugins/bluetooth.h
@@ -51,6 +51,7 @@ struct bluetooth_sap_driver {
void (*post_sim) (struct ofono_modem *modem);
void (*set_online) (struct ofono_modem *modem, ofono_bool_t online,
ofono_modem_online_cb_t cb, void *user_data);
+ void (*post_online) (struct ofono_modem *modem);
int (*disable) (struct ofono_modem *modem);
};
diff --git a/plugins/telit.c b/plugins/telit.c
index dc6850f..8a2f6af 100644
--- a/plugins/telit.c
+++ b/plugins/telit.c
@@ -589,12 +589,43 @@ static void telit_set_online(struct ofono_modem *modem, ofono_bool_t online,
cbd, g_free);
}
+static void telit_post_online(struct ofono_modem *modem)
+{
+ struct telit_data *data = ofono_modem_get_data(modem);
+ struct ofono_message_waiting *mw;
+ struct ofono_gprs *gprs;
+ struct ofono_gprs_context *gc;
+
+ if(data->sap_modem)
+ modem = data->sap_modem;
+
+ DBG("%p", modem);
+
+ ofono_netreg_create(modem, OFONO_VENDOR_TELIT, "atmodem", data->chat);
+ ofono_ussd_create(modem, 0, "atmodem", data->chat);
+ ofono_call_forwarding_create(modem, 0, "atmodem", data->chat);
+ ofono_call_settings_create(modem, 0, "atmodem", data->chat);
+ ofono_call_meter_create(modem, 0, "atmodem", data->chat);
+ ofono_call_barring_create(modem, 0, "atmodem", data->chat);
+
+ gprs = ofono_gprs_create(modem, 0, "atmodem", data->chat);
+ gc = ofono_gprs_context_create(modem, 0, "atmodem", data->chat);
+
+ if (gprs && gc)
+ ofono_gprs_add_context(gprs, gc);
+
+ mw = ofono_message_waiting_create(modem);
+ if (mw)
+ ofono_message_waiting_register(mw);
+}
+
static struct bluetooth_sap_driver sap_driver = {
.name = "telit",
.enable = telit_sap_enable,
.pre_sim = telit_pre_sim,
.post_sim = telit_post_sim,
.set_online = telit_set_online,
+ .post_online = telit_post_online,
.disable = telit_sap_disable,
};
@@ -631,33 +662,6 @@ static void telit_remove(struct ofono_modem *modem)
g_free(data);
}
-static void telit_post_online(struct ofono_modem *modem)
-{
- struct telit_data *data = ofono_modem_get_data(modem);
- struct ofono_message_waiting *mw;
- struct ofono_gprs *gprs;
- struct ofono_gprs_context *gc;
-
- DBG("%p", modem);
-
- ofono_netreg_create(modem, OFONO_VENDOR_TELIT, "atmodem", data->chat);
- ofono_ussd_create(modem, 0, "atmodem", data->chat);
- ofono_call_forwarding_create(modem, 0, "atmodem", data->chat);
- ofono_call_settings_create(modem, 0, "atmodem", data->chat);
- ofono_call_meter_create(modem, 0, "atmodem", data->chat);
- ofono_call_barring_create(modem, 0, "atmodem", data->chat);
-
- gprs = ofono_gprs_create(modem, 0, "atmodem", data->chat);
- gc = ofono_gprs_context_create(modem, 0, "atmodem", data->chat);
-
- if (gprs && gc)
- ofono_gprs_add_context(gprs, gc);
-
- mw = ofono_message_waiting_create(modem);
- if (mw)
- ofono_message_waiting_register(mw);
-}
-
static struct ofono_modem_driver telit_driver = {
.name = "telit",
.probe = telit_probe,
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 12/13] sap: add full support to SAP modem
2011-09-28 21:24 ` [PATCH -v5 11/13] telit: add post_online " Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 13/13] sap: clean up extra blank line Gustavo F. Padovan
2011-09-29 16:22 ` [PATCH -v5 12/13] sap: add full support to SAP modem Denis Kenzior
2011-09-29 16:21 ` [PATCH -v5 11/13] telit: add post_online to SAP Client Denis Kenzior
1 sibling, 2 replies; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1661 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
Add pre_sim, post_sim, set_online and post_online calls
---
plugins/sap.c | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/plugins/sap.c b/plugins/sap.c
index 7bb776a..1f760be 100644
--- a/plugins/sap.c
+++ b/plugins/sap.c
@@ -203,12 +203,39 @@ static int sap_disable(struct ofono_modem *modem)
static void sap_pre_sim(struct ofono_modem *modem)
{
+ struct sap_data *data = ofono_modem_get_data(modem);
+
DBG("%p", modem);
+
+ data->sap_driver->pre_sim(data->hw_modem);
}
static void sap_post_sim(struct ofono_modem *modem)
{
+ struct sap_data *data = ofono_modem_get_data(modem);
+
+ DBG("%p", modem);
+
+ data->sap_driver->post_sim(data->hw_modem);
+}
+
+static void sap_set_online(struct ofono_modem *modem, ofono_bool_t online,
+ ofono_modem_online_cb_t cb, void *user_data)
+{
+ struct sap_data *data = ofono_modem_get_data(modem);
+
+ DBG("%p", modem);
+
+ data->sap_driver->set_online(data->hw_modem, online, cb, user_data);
+}
+
+static void sap_post_online(struct ofono_modem *modem)
+{
+ struct sap_data *data = ofono_modem_get_data(modem);
+
DBG("%p", modem);
+
+ data->sap_driver->post_online(data->hw_modem);
}
static int bluetooth_sap_probe(const char *device, const char *dev_addr,
@@ -288,6 +315,8 @@ static struct ofono_modem_driver sap_driver = {
.disable = sap_disable,
.pre_sim = sap_pre_sim,
.post_sim = sap_post_sim,
+ .set_online = sap_set_online,
+ .post_online = sap_post_online,
};
static struct bluetooth_profile sap = {
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH -v5 13/13] sap: clean up extra blank line
2011-09-28 21:24 ` [PATCH -v5 12/13] sap: add full support to SAP modem Gustavo F. Padovan
@ 2011-09-28 21:24 ` Gustavo F. Padovan
2011-09-29 16:22 ` Denis Kenzior
2011-09-29 16:22 ` [PATCH -v5 12/13] sap: add full support to SAP modem Denis Kenzior
1 sibling, 1 reply; 24+ messages in thread
From: Gustavo F. Padovan @ 2011-09-28 21:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 475 bytes --]
From: "Gustavo F. Padovan" <padovan@profusion.mobi>
---
plugins/sap.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/plugins/sap.c b/plugins/sap.c
index 1f760be..bad995d 100644
--- a/plugins/sap.c
+++ b/plugins/sap.c
@@ -71,7 +71,6 @@ int bluetooth_sap_client_register(struct bluetooth_sap_driver *sap,
return 0;
}
-
void bluetooth_sap_client_unregister(struct ofono_modem *modem)
{
GHashTableIter iter;
--
1.7.6.2
^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH -v5 02/13] sap: remove connect callback if enable fails
2011-09-28 21:24 ` [PATCH -v5 02/13] sap: remove connect callback if enable fails Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 03/13] telit: add support the enable the SAP client modem Gustavo F. Padovan
@ 2011-09-29 15:50 ` Denis Kenzior
1 sibling, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2011-09-29 15:50 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 284 bytes --]
Hi Gustavo,
On 09/28/2011 04:24 PM, Gustavo F. Padovan wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> ---
> plugins/sap.c | 13 ++++++++++++-
> 1 files changed, 12 insertions(+), 1 deletions(-)
>
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH -v5 03/13] telit: add support the enable the SAP client modem
2011-09-28 21:24 ` [PATCH -v5 03/13] telit: add support the enable the SAP client modem Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 04/13] sap: enable SAP modem, when BlueZ replies Gustavo F. Padovan
@ 2011-09-29 15:53 ` Denis Kenzior
1 sibling, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2011-09-29 15:53 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 3287 bytes --]
Hi Gustavo,
On 09/28/2011 04:24 PM, Gustavo F. Padovan wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> ---
> plugins/bluetooth.h | 3 +-
> plugins/telit.c | 191 ++++++++++++++++++++++++++++++++++++++++++++++++---
> 2 files changed, 184 insertions(+), 10 deletions(-)
Patch has been applied, see below:
> +static int telit_sap_open()
> +{
> + const char *device = "/dev/ttyUSB4";
This part should probably come from udev or a config file somewhere.
Worst case /etc/ofono/telitsap.conf or something like that.
> + struct termios ti;
> + int fd;
> +
> + DBG("%s", device);
> +
> + fd = open(device, O_RDWR | O_NOCTTY | O_NONBLOCK);
> + if (fd < 0)
> + return -EINVAL;
>
> + /* Switch TTY to raw mode */
> + memset(&ti, 0, sizeof(ti));
> + cfmakeraw(&ti);
> +
> + ti.c_cflag |= (B115200 | CLOCAL | CREAD);
> +
> + tcflush(fd, TCIOFLUSH);
> + if (tcsetattr(fd, TCSANOW, &ti) < 0) {
> + close(fd);
> + return -EBADF;
> + }
> +
> + return fd;
> }
>
> -static int telit_sap_enable(struct ofono_modem *modem)
> +static int telit_sap_enable(struct ofono_modem *modem,
> + struct ofono_modem *sap_modem,
> + int bt_fd)
> {
> struct telit_data *data = ofono_modem_get_data(modem);
> + int fd;
>
> DBG("%p", modem);
>
> - data->chat = open_device(modem, "Data", "Aux: ");
> - if (data->chat == NULL)
> + data->aux = open_device(modem, "Data", "Aux: ");
> + if (data->aux == NULL)
> return -EINVAL;
>
> - g_at_chat_register(data->chat, "#RSEN:", telit_rsen_notify,
> + fd = telit_sap_open();
> + if (fd < 0)
> + return fd;
> +
> + data->hw_io = g_io_channel_unix_new(fd);
> + if (data->hw_io == NULL) {
> + close(fd);
You weren't closing the aux channel here
> + return -ENOMEM;
> + }
> +
> + g_io_channel_set_encoding(data->hw_io, NULL, NULL);
> + g_io_channel_set_buffered(data->hw_io, FALSE);
> + g_io_channel_set_close_on_unref(data->hw_io, TRUE);
> +
> + data->hw_watch = g_io_add_watch_full(data->hw_io, G_PRIORITY_DEFAULT,
> + G_IO_HUP | G_IO_ERR | G_IO_NVAL | G_IO_IN,
> + hw_event_cb, modem, hw_watch_remove);
> +
> + data->bt_io = g_io_channel_unix_new(bt_fd);
> + if (data->bt_io == NULL) {
> + sap_close_io(modem);
> + return -ENOMEM;
> + }
> +
> + g_io_channel_set_encoding(data->bt_io, NULL, NULL);
> + g_io_channel_set_buffered(data->bt_io, FALSE);
> + g_io_channel_set_close_on_unref(data->bt_io, TRUE);
> +
> + data->bt_watch = g_io_add_watch_full(data->bt_io, G_PRIORITY_DEFAULT,
> + G_IO_HUP | G_IO_ERR | G_IO_NVAL | G_IO_IN,
> + bt_event_cb, modem, bt_watch_remove);
> +
> +
> + data->sap_modem = sap_modem;
> +
> + g_at_chat_register(data->aux, "#RSEN:", telit_rsen_notify,
> FALSE, modem, NULL);
>
> - g_at_chat_send(data->chat, "AT#NOPT=3", NULL, NULL, NULL, NULL);
> + g_at_chat_send(data->aux, "AT#NOPT=0", NULL, NULL, NULL, NULL);
>
> /* Set SAP functionality */
> - g_at_chat_send(data->chat, "AT#RSEN=1,1,0,2,0", rsen_prefix,
> + g_at_chat_send(data->aux, "AT#RSEN=1,1,0,2,0", rsen_prefix,
> rsen_enable_cb, modem, NULL);
>
> return -EINPROGRESS;
So I reflowed this function in a follow on patch, please double check it
for correctness.
Regards,
-Denis
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH -v5 04/13] sap: enable SAP modem, when BlueZ replies
2011-09-28 21:24 ` [PATCH -v5 04/13] sap: enable SAP modem, when BlueZ replies Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 05/13] telit: add suport the disable SAP client Gustavo F. Padovan
@ 2011-09-29 15:54 ` Denis Kenzior
1 sibling, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2011-09-29 15:54 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1681 bytes --]
Hi Gustavo,
On 09/28/2011 04:24 PM, Gustavo F. Padovan wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> ---
> plugins/sap.c | 22 ++++++++++++++++++----
> 1 files changed, 18 insertions(+), 4 deletions(-)
>
Patch has been applied, one thing:
> diff --git a/plugins/sap.c b/plugins/sap.c
> index 28b07e7..850ed2f 100644
> --- a/plugins/sap.c
> +++ b/plugins/sap.c
> @@ -127,6 +127,7 @@ static void sap_connect_reply(DBusPendingCall *call, gpointer user_data)
> struct sap_data *data = ofono_modem_get_data(modem);
> DBusError derr;
> DBusMessage *reply;
> + int fd, err;
>
> DBG("");
>
> @@ -138,16 +139,29 @@ static void sap_connect_reply(DBusPendingCall *call, gpointer user_data)
> goto done;
>
> dbus_error_init(&derr);
> - if (!dbus_set_error_from_message(&derr, reply))
> + if (dbus_set_error_from_message(&derr, reply)) {
> +
> + DBG("Connect reply: %s", derr.message);
> +
> + dbus_error_free(&derr);
> goto done;
> + }
>
> - DBG("Connect reply: %s", derr.message);
> + if (!dbus_message_get_args(reply, NULL, DBUS_TYPE_UNIX_FD, &fd,
> + DBUS_TYPE_INVALID))
> + goto done;
>
> - ofono_modem_set_powered(modem, FALSE);
> + data->hw_modem = sap_hw_modem;
> + data->sap_driver = sap_hw_driver;
>
> - dbus_error_free(&derr);
> + err = data->sap_driver->enable(data->hw_modem, modem, fd);
> + if (err == -EINPROGRESS) {
> + dbus_message_unref(reply);
> + return;
> + }
If enable fails, what should be done to the fd we got from bluetoothd?
>
> done:
> + ofono_modem_set_powered(modem, FALSE);
> dbus_message_unref(reply);
> }
>
Regards,
-Denis
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH -v5 05/13] telit: add suport the disable SAP client
2011-09-28 21:24 ` [PATCH -v5 05/13] telit: add suport the disable SAP client Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 06/13] sap: add sap modem disable() support Gustavo F. Padovan
@ 2011-09-29 16:15 ` Denis Kenzior
1 sibling, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2011-09-29 16:15 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 361 bytes --]
Hi Gustavo,
On 09/28/2011 04:24 PM, Gustavo F. Padovan wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> ---
> plugins/bluetooth.h | 1 +
> plugins/telit.c | 100 ++++++++++++++++++++++++++++++++++----------------
> 2 files changed, 69 insertions(+), 32 deletions(-)
>
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH -v5 07/13] telit: enable the telit modem after enable SAP client
2011-09-28 21:24 ` [PATCH -v5 07/13] telit: enable the telit modem after enable SAP client Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 08/13] telit: add pre_sim support to SAP Client Gustavo F. Padovan
@ 2011-09-29 16:19 ` Denis Kenzior
1 sibling, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2011-09-29 16:19 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 331 bytes --]
Hi Gustavo,
On 09/28/2011 04:24 PM, Gustavo F. Padovan wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> ---
> plugins/telit.c | 271 +++++++++++++++++++++++++++++--------------------------
> 1 files changed, 141 insertions(+), 130 deletions(-)
>
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH -v5 08/13] telit: add pre_sim support to SAP Client
2011-09-28 21:24 ` [PATCH -v5 08/13] telit: add pre_sim support to SAP Client Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 09/13] telit: add post_sim " Gustavo F. Padovan
@ 2011-09-29 16:20 ` Denis Kenzior
1 sibling, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2011-09-29 16:20 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 333 bytes --]
Hi Gustavo,
On 09/28/2011 04:24 PM, Gustavo F. Padovan wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> ---
> plugins/bluetooth.h | 1 +
> plugins/telit.c | 26 +++++++++++++++-----------
> 2 files changed, 16 insertions(+), 11 deletions(-)
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH -v5 09/13] telit: add post_sim to SAP Client
2011-09-28 21:24 ` [PATCH -v5 09/13] telit: add post_sim " Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 10/13] telit: add set_online " Gustavo F. Padovan
@ 2011-09-29 16:20 ` Denis Kenzior
1 sibling, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2011-09-29 16:20 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 328 bytes --]
Hi Gustavo,
On 09/28/2011 04:24 PM, Gustavo F. Padovan wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> ---
> plugins/bluetooth.h | 1 +
> plugins/telit.c | 22 +++++++++++++---------
> 2 files changed, 14 insertions(+), 9 deletions(-)
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH -v5 10/13] telit: add set_online to SAP Client
2011-09-28 21:24 ` [PATCH -v5 10/13] telit: add set_online " Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 11/13] telit: add post_online " Gustavo F. Padovan
@ 2011-09-29 16:20 ` Denis Kenzior
1 sibling, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2011-09-29 16:20 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 359 bytes --]
Hi Gustavo,
On 09/28/2011 04:24 PM, Gustavo F. Padovan wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> ---
> plugins/bluetooth.h | 2 ++
> plugins/telit.c | 47 ++++++++++++++++++++++++-----------------------
> 2 files changed, 26 insertions(+), 23 deletions(-)
>
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH -v5 11/13] telit: add post_online to SAP Client
2011-09-28 21:24 ` [PATCH -v5 11/13] telit: add post_online " Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 12/13] sap: add full support to SAP modem Gustavo F. Padovan
@ 2011-09-29 16:21 ` Denis Kenzior
1 sibling, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2011-09-29 16:21 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 357 bytes --]
Hi Gustavo,
On 09/28/2011 04:24 PM, Gustavo F. Padovan wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> ---
> plugins/bluetooth.h | 1 +
> plugins/telit.c | 58 +++++++++++++++++++++++++++-----------------------
> 2 files changed, 32 insertions(+), 27 deletions(-)
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH -v5 12/13] sap: add full support to SAP modem
2011-09-28 21:24 ` [PATCH -v5 12/13] sap: add full support to SAP modem Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 13/13] sap: clean up extra blank line Gustavo F. Padovan
@ 2011-09-29 16:22 ` Denis Kenzior
1 sibling, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2011-09-29 16:22 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 355 bytes --]
Hi Gustavo,
On 09/28/2011 04:24 PM, Gustavo F. Padovan wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> Add pre_sim, post_sim, set_online and post_online calls
> ---
> plugins/sap.c | 29 +++++++++++++++++++++++++++++
> 1 files changed, 29 insertions(+), 0 deletions(-)
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH -v5 13/13] sap: clean up extra blank line
2011-09-28 21:24 ` [PATCH -v5 13/13] sap: clean up extra blank line Gustavo F. Padovan
@ 2011-09-29 16:22 ` Denis Kenzior
0 siblings, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2011-09-29 16:22 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 271 bytes --]
Hi Gustavo,
On 09/28/2011 04:24 PM, Gustavo F. Padovan wrote:
> From: "Gustavo F. Padovan" <padovan@profusion.mobi>
>
> ---
> plugins/sap.c | 1 -
> 1 files changed, 0 insertions(+), 1 deletions(-)
>
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2011-09-29 16:22 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-28 21:24 [PATCH -v5 01/13] udevng: look also to VID Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 02/13] sap: remove connect callback if enable fails Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 03/13] telit: add support the enable the SAP client modem Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 04/13] sap: enable SAP modem, when BlueZ replies Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 05/13] telit: add suport the disable SAP client Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 06/13] sap: add sap modem disable() support Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 07/13] telit: enable the telit modem after enable SAP client Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 08/13] telit: add pre_sim support to SAP Client Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 09/13] telit: add post_sim " Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 10/13] telit: add set_online " Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 11/13] telit: add post_online " Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 12/13] sap: add full support to SAP modem Gustavo F. Padovan
2011-09-28 21:24 ` [PATCH -v5 13/13] sap: clean up extra blank line Gustavo F. Padovan
2011-09-29 16:22 ` Denis Kenzior
2011-09-29 16:22 ` [PATCH -v5 12/13] sap: add full support to SAP modem Denis Kenzior
2011-09-29 16:21 ` [PATCH -v5 11/13] telit: add post_online to SAP Client Denis Kenzior
2011-09-29 16:20 ` [PATCH -v5 10/13] telit: add set_online " Denis Kenzior
2011-09-29 16:20 ` [PATCH -v5 09/13] telit: add post_sim " Denis Kenzior
2011-09-29 16:20 ` [PATCH -v5 08/13] telit: add pre_sim support " Denis Kenzior
2011-09-29 16:19 ` [PATCH -v5 07/13] telit: enable the telit modem after enable SAP client Denis Kenzior
2011-09-29 16:15 ` [PATCH -v5 05/13] telit: add suport the disable " Denis Kenzior
2011-09-29 15:54 ` [PATCH -v5 04/13] sap: enable SAP modem, when BlueZ replies Denis Kenzior
2011-09-29 15:53 ` [PATCH -v5 03/13] telit: add support the enable the SAP client modem Denis Kenzior
2011-09-29 15:50 ` [PATCH -v5 02/13] sap: remove connect callback if enable fails Denis Kenzior
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.