Fix: notify_attached was only used when detached
authorDenis Kenzior <denkenz@gmail.com>
Mon, 26 Oct 2009 21:55:03 +0000 (16:55 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Mon, 26 Oct 2009 21:55:03 +0000 (16:55 -0500)
The standard only specifies that the context might have been detached by
the network / mobile equipment.  Not attached.

drivers/atmodem/gprs.c
include/gprs.h
src/gprs.c

index 27a3f56..6f4933a 100644 (file)
@@ -200,7 +200,7 @@ static void cgev_notify(GAtResult *result, gpointer user_data)
 
        if (g_str_has_prefix(event, "NW DETACH ") ||
                        g_str_has_prefix(event, "ME DETACH ")) {
-               ofono_gprs_attach_notify(gprs, 0);
+               ofono_gprs_detached_notify(gprs);
                return;
        }
 }
index 65c3434..5cec510 100644 (file)
@@ -51,7 +51,7 @@ struct ofono_gprs_driver {
 void ofono_gprs_status_notify(struct ofono_gprs *gprs,
                                int status, int lac, int ci, int tech);
 
-void ofono_gprs_attach_notify(struct ofono_gprs *gprs, int attached);
+void ofono_gprs_detached_notify(struct ofono_gprs *gprs);
 
 int ofono_gprs_driver_register(const struct ofono_gprs_driver *d);
 void ofono_gprs_driver_unregister(const struct ofono_gprs_driver *d);
index 8443f1b..3aa4721 100644 (file)
@@ -894,14 +894,18 @@ static GDBusSignalTable manager_signals[] = {
        { }
 };
 
-void ofono_gprs_attach_notify(struct ofono_gprs *gprs, int attached)
+void ofono_gprs_detached_notify(struct ofono_gprs *gprs)
 {
-       if (gprs->driver_attached != attached &&
-                       !(gprs->flags & GPRS_FLAG_ATTACHING)) {
-               gprs->driver_attached = attached;
+       if (gprs->driver_attached == FALSE)
+               return;
 
-               gprs_netreg_update(gprs);
-       }
+       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
+        */
 }
 
 static void set_registration_status(struct ofono_gprs *gprs, int status)