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

Reply via email to