summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2011-03-30 13:04:42 -0500
committerDenis Kenzior <denkenz@gmail.com>2011-03-30 13:04:42 -0500
commit774cb729301bc45742283010a1da911f72c987b6 (patch)
tree5b58e62bc85eb9383c062497e4db74a3a53ff330
parent192c0b62f428eec18ffaa9b83676f092f1a4ed32 (diff)
downloadofono-774cb729301bc45742283010a1da911f72c987b6.tar.bz2
modem: Add __ofono_modem_foreach_registered_atom
-rw-r--r--src/modem.c24
-rw-r--r--src/ofono.h5
2 files changed, 29 insertions, 0 deletions
diff --git a/src/modem.c b/src/modem.c
index 7ff38350..d43059f9 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -345,6 +345,30 @@ void __ofono_modem_foreach_atom(struct ofono_modem *modem,
}
}
+void __ofono_modem_foreach_registered_atom(struct ofono_modem *modem,
+ enum ofono_atom_type type,
+ ofono_atom_func callback,
+ void *data)
+{
+ GSList *l;
+ struct ofono_atom *atom;
+
+ if (modem == NULL)
+ return;
+
+ for (l = modem->atoms; l; l = l->next) {
+ atom = l->data;
+
+ if (atom->type != type)
+ continue;
+
+ if (atom->unregister == NULL)
+ continue;
+
+ callback(atom, data);
+ }
+}
+
void __ofono_atom_free(struct ofono_atom *atom)
{
struct ofono_modem *modem = atom->modem;
diff --git a/src/ofono.h b/src/ofono.h
index 81570fef..1bee56db 100644
--- a/src/ofono.h
+++ b/src/ofono.h
@@ -163,6 +163,11 @@ void __ofono_modem_foreach_atom(struct ofono_modem *modem,
enum ofono_atom_type type,
ofono_atom_func callback, void *data);
+void __ofono_modem_foreach_registered_atom(struct ofono_modem *modem,
+ enum ofono_atom_type type,
+ ofono_atom_func callback,
+ void *data);
+
void *__ofono_atom_get_data(struct ofono_atom *atom);
const char *__ofono_atom_get_path(struct ofono_atom *atom);
struct ofono_modem *__ofono_atom_get_modem(struct ofono_atom *atom);