diff options
author | laforge <laforge@99fdad57-331a-0410-800a-d7fa5415bdb3> | 2006-10-24 13:07:08 +0000 |
---|---|---|
committer | laforge <laforge@99fdad57-331a-0410-800a-d7fa5415bdb3> | 2006-10-24 13:07:08 +0000 |
commit | 23dfcf4ff925f61bcb2c3bdd712ff0f70bde4fcb (patch) | |
tree | 97c62e6b7bc73cd4be3961ed2a253504381841c3 /src/gsmd/vendor.c | |
parent | 3c4d2776058a440bb8d406cd85783898c14b2403 (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.c | 39 |
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; +} |