* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox