summaryrefslogtreecommitdiff
path: root/src/gsmd/vendor.c
diff options
context:
space:
mode:
authorlaforge <laforge@99fdad57-331a-0410-800a-d7fa5415bdb3>2006-10-24 13:07:08 +0000
committerlaforge <laforge@99fdad57-331a-0410-800a-d7fa5415bdb3>2006-10-24 13:07:08 +0000
commit23dfcf4ff925f61bcb2c3bdd712ff0f70bde4fcb (patch)
tree97c62e6b7bc73cd4be3961ed2a253504381841c3 /src/gsmd/vendor.c
parent3c4d2776058a440bb8d406cd85783898c14b2403 (diff)
- clean up header files (all in include/gmsd now)
- finish vendor plugin support - add call progress indicator and signal quality unsolicited support to vendor_ti.c git-svn-id: http://svn.openmoko.org/trunk/src/target/gsm@120 99fdad57-331a-0410-800a-d7fa5415bdb3
Diffstat (limited to 'src/gsmd/vendor.c')
-rw-r--r--src/gsmd/vendor.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/gsmd/vendor.c b/src/gsmd/vendor.c
new file mode 100644
index 0000000..d577e98
--- /dev/null
+++ b/src/gsmd/vendor.c
@@ -0,0 +1,39 @@
+#include <errno.h>
+
+#include <common/linux_list.h>
+
+#include "gsmd.h"
+
+#include <gsmd/gsmd.h>
+#include <gsmd/vendorplugin.h>
+
+static LLIST_HEAD(vendorpl_list);
+
+int gsmd_vendor_plugin_register(struct gsmd_vendor_plugin *pl)
+{
+ llist_add(&pl->list, &vendorpl_list);
+
+ return 0;
+}
+
+void gsmd_vendor_plugin_unregister(struct gsmd_vendor_plugin *pl)
+{
+ llist_del(&pl->list);
+}
+
+int gsmd_vendor_plugin_find(struct gsmd *g)
+{
+ struct gsmd_vendor_plugin *pl;
+
+ if (g->vendorpl)
+ return -EEXIST;
+
+ llist_for_each_entry(pl, &vendorpl_list, list) {
+ if (pl->detect(g) == 1) {
+ g->vendorpl = pl;
+ return 1;
+ }
+ }
+
+ return 0;
+}
personal git repositories of Harald Welte. Your mileage may vary