This is not needed since we let the modem automatically attach.
---
src/gprs.c | 175 +++--------------------------------------------------------
1 files changed, 9 insertions(+), 166 deletions(-)
diff --git a/src/gprs.c b/src/gprs.c
index 0a137b2..69cf8c7 100644
--- a/src/gprs.c
+++ b/src/gprs.c
@@ -46,9 +46,6 @@
#include "simutil.h"
#include "util.h"
-#define GPRS_FLAG_ATTACHING 0x1
-#define GPRS_FLAG_RECHECK 0x2
-
#define SETTINGS_STORE "gprs"
#define SETTINGS_GROUP "Settings"
#define MAX_CONTEXT_NAME_LENGTH 127
@@ -75,7 +72,6 @@ enum packet_bearer {
struct ofono_gprs {
GSList *contexts;
ofono_bool_t attached;
- ofono_bool_t driver_attached;
ofono_bool_t powered;
ofono_bool_t suspended;
int status;
@@ -85,10 +81,6 @@ struct ofono_gprs {
struct idmap *pid_map;
unsigned int last_context_id;
struct idmap *cid_map;
- int netreg_status;
- struct ofono_netreg *netreg;
- unsigned int netreg_watch;
- unsigned int status_watch;
GKeyFile *settings;
char *imsi;
DBusMessage *pending;
@@ -136,7 +128,6 @@ struct pri_context {
struct ofono_gprs *gprs;
};
-static void gprs_netreg_update(struct ofono_gprs *gprs);
static void gprs_deactivate_next(struct ofono_gprs *gprs);
const char *packet_bearer_to_string(int bearer)
@@ -1271,7 +1262,8 @@ static void update_suspended_property(struct ofono_gprs
*gprs,
gprs->suspended = suspended;
- if (gprs->attached)
+ if (gprs->status == NETWORK_REGISTRATION_STATUS_REGISTERED ||
+ gprs->status == NETWORK_REGISTRATION_STATUS_ROAMING)
ofono_dbus_signal_property_changed(conn, path,
OFONO_CONNECTION_MANAGER_INTERFACE,
"Suspended", DBUS_TYPE_BOOLEAN, &value);
@@ -1318,8 +1310,7 @@ static void gprs_attached_update(struct ofono_gprs *gprs)
ofono_bool_t attached;
dbus_bool_t value;
- attached = gprs->driver_attached &&
- (gprs->status == NETWORK_REGISTRATION_STATUS_REGISTERED ||
+ attached = (gprs->status == NETWORK_REGISTRATION_STATUS_REGISTERED ||
gprs->status == NETWORK_REGISTRATION_STATUS_ROAMING);
if (attached == gprs->attached)
@@ -1371,87 +1362,6 @@ static void registration_status_cb(const struct
ofono_error *error,
if (error->type == OFONO_ERROR_TYPE_NO_ERROR)
ofono_gprs_status_notify(gprs, status);
-
- if (gprs->flags & GPRS_FLAG_RECHECK) {
- gprs->flags &= ~GPRS_FLAG_RECHECK;
- gprs_netreg_update(gprs);
- }
-}
-
-static void gprs_attach_callback(const struct ofono_error *error, void *data)
-{
- struct ofono_gprs *gprs = data;
-
- DBG("%s error = %d", __ofono_atom_get_path(gprs->atom), error->type);
-
- gprs->flags &= ~GPRS_FLAG_ATTACHING;
-
- if (error->type != OFONO_ERROR_TYPE_NO_ERROR)
- gprs->driver_attached = !gprs->driver_attached;
-
- if (gprs->driver->attached_status) {
- gprs->driver->attached_status(gprs, registration_status_cb,
- gprs);
- return;
- }
-
- gprs_attached_update(gprs);
-
- if (gprs->flags & GPRS_FLAG_RECHECK) {
- gprs->flags &= ~GPRS_FLAG_RECHECK;
- gprs_netreg_update(gprs);
- }
-}
-
-static void gprs_netreg_removed(struct ofono_gprs *gprs)
-{
- gprs->netreg = NULL;
-
- gprs->flags &= ~(GPRS_FLAG_RECHECK | GPRS_FLAG_ATTACHING);
- gprs->status_watch = 0;
- gprs->netreg_status = NETWORK_REGISTRATION_STATUS_NOT_REGISTERED;
- gprs->driver_attached = FALSE;
-
- gprs_attached_update(gprs);
-}
-
-static void gprs_netreg_update(struct ofono_gprs *gprs)
-{
- ofono_bool_t attach;
-
- attach = gprs->netreg_status == NETWORK_REGISTRATION_STATUS_REGISTERED
- || NETWORK_REGISTRATION_STATUS_ROAMING;
-
- attach = attach && gprs->powered;
-
- if (gprs->driver_attached == attach)
- return;
-
- if (gprs->flags & GPRS_FLAG_ATTACHING) {
- gprs->flags |= GPRS_FLAG_RECHECK;
- return;
- }
-
- gprs->flags |= GPRS_FLAG_ATTACHING;
-
- gprs->driver->set_attached(gprs, attach, gprs_attach_callback, gprs);
- gprs->driver_attached = attach;
-}
-
-static void netreg_status_changed(int status, int lac, int ci, int tech,
- const char *mcc, const char *mnc,
- void *data)
-{
- struct ofono_gprs *gprs = data;
-
- DBG("%d", status);
-
- if (gprs->netreg_status == status)
- return;
-
- gprs->netreg_status = status;
-
- gprs_netreg_update(gprs);
}
static DBusMessage *gprs_get_properties(DBusConnection *conn,
@@ -1525,9 +1435,6 @@ static DBusMessage *gprs_set_property(DBusConnection
*conn,
dbus_message_iter_recurse(&iter, &var);
if (!strcmp(property, "Powered")) {
- if (gprs->driver->set_attached == NULL)
- return __ofono_error_not_implemented(msg);
-
if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_BOOLEAN)
return __ofono_error_invalid_args(msg);
@@ -1545,7 +1452,10 @@ static DBusMessage *gprs_set_property(DBusConnection
*conn,
gprs->settings);
}
- gprs_netreg_update(gprs);
+ if (gprs->driver->attached_status)
+ gprs->driver->attached_status(gprs,
+ registration_status_cb,
+ gprs);
} else {
return __ofono_error_invalid_args(msg);
}
@@ -1941,14 +1851,8 @@ void ofono_gprs_detached_notify(struct ofono_gprs *gprs)
{
DBG("%s", __ofono_atom_get_path(gprs->atom));
- gprs->driver_attached = FALSE;
- gprs_attached_update(gprs);
-
- /*
- * TODO: The network forced a detach, we should wait for some time
- * and try to re-attach. This might also be related to a suspend
- * event while voicecall is active.
- */
+ ofono_gprs_status_notify(gprs,
+ NETWORK_REGISTRATION_STATUS_NOT_REGISTERED);
}
void ofono_gprs_status_notify(struct ofono_gprs *gprs, int status)
@@ -1956,25 +1860,7 @@ void ofono_gprs_status_notify(struct ofono_gprs *gprs,
int status)
DBG("%s status %d", __ofono_atom_get_path(gprs->atom), status);
gprs->status = status;
-
- if (status != NETWORK_REGISTRATION_STATUS_REGISTERED &&
- status != NETWORK_REGISTRATION_STATUS_ROAMING) {
- gprs_attached_update(gprs);
- return;
- }
-
- /* We registered without being powered */
- if (gprs->powered == FALSE)
- goto detach;
-
- gprs->driver_attached = TRUE;
gprs_attached_update(gprs);
-
- return;
-
-detach:
- gprs->flags |= GPRS_FLAG_ATTACHING;
- gprs->driver->set_attached(gprs, FALSE, gprs_attach_callback, gprs);
}
void ofono_gprs_set_cid_range(struct ofono_gprs *gprs,
@@ -2214,18 +2100,6 @@ static void gprs_unregister(struct ofono_atom *atom)
gprs->cid_map = NULL;
}
- if (gprs->netreg_watch) {
- if (gprs->status_watch) {
- __ofono_netreg_remove_status_watch(gprs->netreg,
- gprs->status_watch);
- gprs->status_watch = 0;
- }
-
- __ofono_modem_remove_atom_watch(modem, gprs->netreg_watch);
- gprs->netreg_watch = 0;
- gprs->netreg = NULL;
- }
-
ofono_modem_remove_interface(modem,
OFONO_CONNECTION_MANAGER_INTERFACE);
g_dbus_unregister_interface(conn, path,
@@ -2288,31 +2162,11 @@ struct ofono_gprs *ofono_gprs_create(struct ofono_modem
*modem,
}
gprs->status = NETWORK_REGISTRATION_STATUS_UNKNOWN;
- gprs->netreg_status = NETWORK_REGISTRATION_STATUS_UNKNOWN;
gprs->pid_map = idmap_new(MAX_CONTEXTS);
return gprs;
}
-static void netreg_watch(struct ofono_atom *atom,
- enum ofono_atom_watch_condition cond,
- void *data)
-{
- struct ofono_gprs *gprs = data;
-
- if (cond == OFONO_ATOM_WATCH_CONDITION_UNREGISTERED) {
- gprs_netreg_removed(gprs);
- return;
- }
-
- gprs->netreg = __ofono_atom_get_data(atom);
- gprs->netreg_status = ofono_netreg_get_status(gprs->netreg);
- gprs->status_watch = __ofono_netreg_add_status_watch(gprs->netreg,
- netreg_status_changed, gprs, NULL);
-
- gprs_netreg_update(gprs);
-}
-
static gboolean load_context(struct ofono_gprs *gprs, const char *group)
{
char *name = NULL;
@@ -2600,7 +2454,6 @@ void ofono_gprs_register(struct ofono_gprs *gprs)
DBusConnection *conn = ofono_dbus_get_connection();
struct ofono_modem *modem = __ofono_atom_get_modem(gprs->atom);
const char *path = __ofono_atom_get_path(gprs->atom);
- struct ofono_atom *netreg_atom;
struct ofono_atom *sim_atom;
if (!g_dbus_register_interface(conn, path,
@@ -2633,16 +2486,6 @@ void ofono_gprs_register(struct ofono_gprs *gprs)
if (gprs->contexts == NULL)
add_context(gprs, NULL, OFONO_GPRS_CONTEXT_TYPE_INTERNET);
- gprs->netreg_watch = __ofono_modem_add_atom_watch(modem,
- OFONO_ATOM_TYPE_NETREG,
- netreg_watch, gprs, NULL);
-
- netreg_atom = __ofono_modem_find_atom(modem, OFONO_ATOM_TYPE_NETREG);
-
- if (netreg_atom && __ofono_atom_get_registered(netreg_atom))
- netreg_watch(netreg_atom,
- OFONO_ATOM_WATCH_CONDITION_REGISTERED, gprs);
-
__ofono_atom_register(gprs->atom, gprs_unregister);
}
--
1.7.1
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono