From: "Gustavo F. Padovan" <[email protected]>
Only put modem powered when Remote SAP Server is enabled
---
plugins/bluetooth.h | 2 +-
plugins/sap.c | 4 +---
plugins/telit.c | 18 +++++++++++++++---
3 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/plugins/bluetooth.h b/plugins/bluetooth.h
index d2ccb21..26767b7 100644
--- a/plugins/bluetooth.h
+++ b/plugins/bluetooth.h
@@ -45,7 +45,7 @@ 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 (*disable) (struct ofono_modem *modem);
int (*open) (struct ofono_modem *modem);
};
diff --git a/plugins/sap.c b/plugins/sap.c
index 3e8847a..14c496f 100644
--- a/plugins/sap.c
+++ b/plugins/sap.c
@@ -257,9 +257,7 @@ static void sap_connect_reply(DBusPendingCall *call,
gpointer user_data)
data->hw_watch = g_io_add_watch(data->hw_io, G_IO_HUP | G_IO_ERR
| G_IO_NVAL | G_IO_IN, hw_event_cb, modem);
- data->sap_driver->enable(data->hw_modem);
-
- ofono_modem_set_powered(modem, TRUE);
+ data->sap_driver->enable(data->hw_modem, modem);
done:
dbus_message_unref(reply);
diff --git a/plugins/telit.c b/plugins/telit.c
index b6d408f..a89fce1 100644
--- a/plugins/telit.c
+++ b/plugins/telit.c
@@ -68,6 +68,7 @@ struct telit_data {
GAtChat *aux;
struct ofono_sim *sim;
guint sim_inserted_source;
+ struct ofono_modem *sap_modem;
};
static void telit_debug(const char *str, void *user_data)
@@ -112,6 +113,7 @@ static GAtChat *open_device(struct ofono_modem *modem,
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;
@@ -123,6 +125,13 @@ 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);
+ return;
+ }
+
+ ofono_modem_set_powered(data->sap_modem, TRUE);
}
static void rsen_enable_cb(gboolean ok, GAtResult *result, gpointer user_data)
@@ -135,7 +144,7 @@ static void rsen_enable_cb(gboolean ok, GAtResult *result,
gpointer user_data)
if (!ok) {
g_at_chat_unref(data->aux);
data->aux = NULL;
- ofono_modem_set_powered(modem, FALSE);
+ ofono_modem_set_powered(data->sap_modem, FALSE);
return;
}
}
@@ -151,7 +160,7 @@ static void rsen_disable_cb(gboolean ok, GAtResult *result,
gpointer user_data)
data->aux = NULL;
if (ok)
- ofono_modem_set_powered(modem, FALSE);
+ ofono_modem_set_powered(data->sap_modem, FALSE);
}
static int telit_sap_open(struct ofono_modem *modem)
@@ -179,7 +188,8 @@ static int telit_sap_open(struct ofono_modem *modem)
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)
{
struct telit_data *data = ofono_modem_get_data(modem);
@@ -189,6 +199,8 @@ static int telit_sap_enable(struct ofono_modem *modem)
if (data->aux == NULL)
return -EINVAL;
+ data->sap_modem = sap_modem;
+
g_at_chat_register(data->aux, "#RSEN:", telit_rsen_notify,
FALSE, modem, NULL);
--
1.7.6.2
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono