diff options
author | Denis Kenzior <denkenz@gmail.com> | 2009-09-10 17:40:16 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2009-09-10 17:40:16 -0500 |
commit | 40ef883fe4d1b27b46b5db2b36ce894d16a6d1d4 (patch) | |
tree | b92aed3c0b211af1c6bf48dd66c4f9256c6fb9d6 /src | |
parent | 8d52353425eb3dfa16900218400cc4f09c63da12 (diff) | |
download | ofono-40ef883fe4d1b27b46b5db2b36ce894d16a6d1d4.tar.bz2 |
Add ability to expire PLMN wide messages
Diffstat (limited to 'src')
-rw-r--r-- | src/smsutil.c | 11 | ||||
-rw-r--r-- | src/smsutil.h | 2 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/smsutil.c b/src/smsutil.c index 07ff903a..863b68f5 100644 --- a/src/smsutil.c +++ b/src/smsutil.c @@ -3297,7 +3297,7 @@ static void cbs_assembly_expire(struct cbs_assembly *assembly, } } -void cbs_assembly_location_changed(struct cbs_assembly *assembly, +void cbs_assembly_location_changed(struct cbs_assembly *assembly, gboolean plmn, gboolean lac, gboolean ci) { /* Location Area wide (in GSM) (which means that a CBS message with the @@ -3314,6 +3314,15 @@ void cbs_assembly_location_changed(struct cbs_assembly *assembly, * one cell only. */ + if (plmn) { + lac = TRUE; + g_slist_free(assembly->recv_plmn); + assembly->recv_plmn = NULL; + + cbs_assembly_expire(assembly, cbs_compare_node_by_gs, + GUINT_TO_POINTER(CBS_GEO_SCOPE_PLMN)); + } + if (lac) { /* If LAC changed, then cell id has changed */ ci = TRUE; diff --git a/src/smsutil.h b/src/smsutil.h index a60b95d2..2e176d11 100644 --- a/src/smsutil.h +++ b/src/smsutil.h @@ -488,7 +488,7 @@ struct cbs_assembly *cbs_assembly_new(); void cbs_assembly_free(struct cbs_assembly *assembly); GSList *cbs_assembly_add_page(struct cbs_assembly *assembly, const struct cbs *cbs); -void cbs_assembly_location_changed(struct cbs_assembly *assembly, +void cbs_assembly_location_changed(struct cbs_assembly *assembly, gboolean plmn, gboolean lac, gboolean ci); char *cbs_topic_ranges_to_string(GSList *ranges); |