summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel.holtmann@intel.com>2009-04-26 21:28:48 +0200
committerMarcel Holtmann <marcel.holtmann@intel.com>2009-04-26 21:28:48 +0200
commited08e2adee56212858350da224acb072ac3830ee (patch)
treee8052ffc8d349779b36d1a761cc543e58ff74389 /include
parente059f43faef74e9ed435dc03c603d9d4e1ba7f2b (diff)
downloadofono-ed08e2adee56212858350da224acb072ac3830ee.tar.bz2
Add plugin support infrastructure
Diffstat (limited to 'include')
-rw-r--r--include/Makefile.am6
-rw-r--r--include/plugin.h76
-rw-r--r--include/version.h.in35
3 files changed, 116 insertions, 1 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
index 8f3fef2e..cc48b373 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -1,7 +1,9 @@
includedir = @includedir@/ofono
-include_HEADERS = log.h
+include_HEADERS = log.h plugin.h
+
+nodist_include_HEADERS = version.h
MAINTAINERCLEANFILES = Makefile.in
@@ -10,6 +12,8 @@ all-local:
mkdir ofono; \
list='$(include_HEADERS)'; for i in $$list; \
do $(LN_S) $(abs_top_srcdir)/include/$$i ofono/$$i; done; \
+ list='$(nodist_include_HEADERS)'; for i in $$list; \
+ do $(LN_S) $(abs_top_builddir)/include/$$i ofono/$$i; done; \
fi
clean-local:
diff --git a/include/plugin.h b/include/plugin.h
new file mode 100644
index 00000000..4b01ad43
--- /dev/null
+++ b/include/plugin.h
@@ -0,0 +1,76 @@
+/*
+ *
+ * oFono - Open Telephony stack for Linux
+ *
+ * Copyright (C) 2008-2009 Intel Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifndef __OFONO_PLUGIN_H
+#define __OFONO_PLUGIN_H
+
+#include <ofono/version.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef OFONO_API_SUBJECT_TO_CHANGE
+#error "Please define OFONO_API_SUBJECT_TO_CHANGE to acknowledge your \
+understanding that oFono hasn't reached a stable API."
+#endif
+
+#define OFONO_PLUGIN_PRIORITY_LOW -100
+#define OFONO_PLUGIN_PRIORITY_DEFAULT 0
+#define OFONO_PLUGIN_PRIORITY_HIGH 100
+
+/**
+ * SECTION:plugin
+ * @title: Plugin premitives
+ * @short_description: Functions for declaring plugins
+ */
+
+struct ofono_plugin_desc {
+ const char *name;
+ const char *description;
+ const char *version;
+ int priority;
+ int (*init) (void);
+ void (*exit) (void);
+};
+
+/**
+ * OFONO_PLUGIN_DEFINE:
+ * @name: plugin name
+ * @description: plugin description
+ * @version: plugin version string
+ * @init: init function called on plugin loading
+ * @exit: exit function called on plugin removal
+ *
+ * Macro for defining a plugin descriptor
+ */
+#define OFONO_PLUGIN_DEFINE(name, description, version, priority, init, exit) \
+ extern struct ofono_plugin_desc ofono_plugin_desc \
+ __attribute__ ((visibility("default"))); \
+ struct ofono_plugin_desc ofono_plugin_desc = { \
+ #name, description, version, priority, init, exit \
+ };
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OFONO_PLUGIN_H */
diff --git a/include/version.h.in b/include/version.h.in
new file mode 100644
index 00000000..5817e185
--- /dev/null
+++ b/include/version.h.in
@@ -0,0 +1,35 @@
+/*
+ *
+ * oFono - Open Telephony stack for Linux
+ *
+ * Copyright (C) 2008-2009 Intel Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifndef __OFONO_VERSION_H
+#define __OFONO_VERSION_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define OFONO_VERSION "@VERSION@"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OFONO_VERSION_H */