Add __ofono_modem_foreach_atom function
authorDenis Kenzior <denkenz@gmail.com>
Thu, 20 Aug 2009 20:59:50 +0000 (15:59 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Thu, 20 Aug 2009 20:59:50 +0000 (15:59 -0500)
src/modem.c
src/ofono.h

index dc57114..bf1ca33 100644 (file)
@@ -293,6 +293,26 @@ struct ofono_atom *__ofono_modem_find_atom(struct ofono_modem *modem,
        return NULL;
 }
 
+void __ofono_modem_foreach_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;
+
+               callback(atom, data);
+       }
+}
+
 void __ofono_atom_free(struct ofono_atom *atom)
 {
        struct ofono_modem *modem = atom->modem;
index 13fd577..3f1f811 100644 (file)
@@ -107,6 +107,8 @@ typedef void (*ofono_atom_watch_func)(struct ofono_atom *atom,
                                        enum ofono_atom_watch_condition cond,
                                        void *data);
 
+typedef void (*ofono_atom_func)(struct ofono_atom *atom, void *data);
+
 struct ofono_atom *__ofono_modem_add_atom(struct ofono_modem *modem,
                                        enum ofono_atom_type type,
                                        void (*destruct)(struct ofono_atom *),
@@ -115,6 +117,10 @@ struct ofono_atom *__ofono_modem_add_atom(struct ofono_modem *modem,
 struct ofono_atom *__ofono_modem_find_atom(struct ofono_modem *modem,
                                                enum ofono_atom_type type);
 
+void __ofono_modem_foreach_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);