Add utility to compress plmns that vary by tech

This commit is contained in:
Denis Kenzior 2009-10-29 15:58:32 -05:00
parent 40adc85174
commit 22dc4e229f
1 changed files with 30 additions and 0 deletions

View File

@ -980,6 +980,36 @@ void ofono_netreg_status_notify(struct ofono_netreg *netreg, int status,
notify_status_watches(netreg);
}
static GSList *compress_operator_list(const struct ofono_network_operator *list,
int total)
{
GSList *oplist = 0;
GSList *o;
int i;
struct network_operator_data *opd;
for (i = 0; i < total; i++) {
o = NULL;
if (oplist)
o = g_slist_find_custom(oplist, &list[i],
network_operator_compare);
if (!o) {
opd = network_operator_create(&list[i]);
oplist = g_slist_prepend(oplist, opd);
} else if (o && list[i].tech != -1) {
opd = o->data;
opd->techs |= 1 << list[i].tech;
}
}
if (oplist)
oplist = g_slist_reverse(oplist);
return oplist;
}
static void operator_list_callback(const struct ofono_error *error, int total,
const struct ofono_network_operator *list,
void *data)