summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-02-08 15:32:04 -0600
committerDenis Kenzior <denkenz@gmail.com>2010-02-08 15:32:04 -0600
commitd11505f7510c31746c9bf642dbbf548991a6a40f (patch)
tree4747d4c504b02ac49c46a61e9eec76bef671404b /src
parentc98b951fe627e39c4c3ec699e4453d7803e51e11 (diff)
downloadofono-d11505f7510c31746c9bf642dbbf548991a6a40f.tar.bz2
Fix: Add recheck flag to gprs
When a powered is toggled quickly, we ignore the second request. This flag tells us that we should recheck what the attach status should be once the current operation finishes
Diffstat (limited to 'src')
-rw-r--r--src/gprs.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/gprs.c b/src/gprs.c
index 4fefc69b..d517367f 100644
--- a/src/gprs.c
+++ b/src/gprs.c
@@ -44,6 +44,7 @@
#define DATA_CONTEXT_INTERFACE "org.ofono.PrimaryDataContext"
#define GPRS_FLAG_ATTACHING 0x1
+#define GPRS_FLAG_RECHECK 0x2
#define SETTINGS_STORE "gprs"
#define SETTINGS_GROUP "Settings"
@@ -976,6 +977,11 @@ static void registration_status_cb(const struct ofono_error *error,
ofono_gprs_status_notify(gprs, status, lac, ci, tech);
gprs->flags &= ~GPRS_FLAG_ATTACHING;
+
+ 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)
@@ -994,6 +1000,11 @@ static void gprs_attach_callback(const struct ofono_error *error, void *data)
}
gprs->flags &= ~GPRS_FLAG_ATTACHING;
+
+ if (gprs->flags & GPRS_FLAG_RECHECK) {
+ gprs->flags &= ~GPRS_FLAG_RECHECK;
+ gprs_netreg_update(gprs);
+ }
}
static void gprs_netreg_update(struct ofono_gprs *gprs)
@@ -1010,8 +1021,10 @@ static void gprs_netreg_update(struct ofono_gprs *gprs)
if (gprs->driver_attached == attach)
return;
- if (gprs->flags & GPRS_FLAG_ATTACHING)
+ if (gprs->flags & GPRS_FLAG_ATTACHING) {
+ gprs->flags |= GPRS_FLAG_RECHECK;
return;
+ }
gprs->flags |= GPRS_FLAG_ATTACHING;