Add ability to expire PLMN wide messages

This commit is contained in:
Denis Kenzior 2009-09-10 17:40:16 -05:00
parent 8d52353425
commit 40ef883fe4
3 changed files with 12 additions and 3 deletions

View File

@ -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;

View File

@ -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);

View File

@ -966,7 +966,7 @@ static void test_cbs_assembly()
l = cbs_assembly_add_page(assembly, &dec1);
g_assert(l == NULL);
cbs_assembly_location_changed(assembly, TRUE, TRUE);
cbs_assembly_location_changed(assembly, TRUE, TRUE, TRUE);
g_assert(assembly->recv_cell == NULL);
dec1.update_number = 9;