summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Traut <manut@mecka.net>2012-05-28 17:03:11 +0200
committerManuel Traut <manut@mecka.net>2012-05-28 17:03:11 +0200
commit379492ff3c10eef6479fd85418b797f97889d3f9 (patch)
tree6ec8ee28aec613377fab4d9e75bc5afab152e1f5
interfaces first draft
first idea of an interface description to control io s Signed-off-by: Manuel Traut <manut@mecka.net>
-rw-r--r--interfaces/common.idl22
-rw-r--r--interfaces/controller.idl17
-rw-r--r--interfaces/device.idl26
-rw-r--r--interfaces/io.idl22
4 files changed, 87 insertions, 0 deletions
diff --git a/interfaces/common.idl b/interfaces/common.idl
new file mode 100644
index 0000000..c3ca769
--- /dev/null
+++ b/interfaces/common.idl
@@ -0,0 +1,22 @@
+module common {
+
+ enum error_code {
+ SUCCESS,
+ EINVAL,
+ ENOTSUPPORTED
+ };
+
+ enum error_level {
+ DEBUG,
+ INFO,
+ WARNING,
+ NORMAL,
+ CRITICAL
+ };
+
+ struct error {
+ error_code code;
+ error_level level;
+ string description;
+ };
+};
diff --git a/interfaces/controller.idl b/interfaces/controller.idl
new file mode 100644
index 0000000..b680742
--- /dev/null
+++ b/interfaces/controller.idl
@@ -0,0 +1,17 @@
+include common.idl
+include io.idl
+
+module controller {
+
+ common.error digital (out list<io.digial>);
+ common.error analog (out list<io.analog>);
+ common.error device (out list<device.device_base>);
+
+ common.error register (in io.digital);
+ common.error register (in io.analog);
+ common.error register (in device.device_base);
+
+ common.error unregister (in io.digital);
+ common.error unregister (in io.analog);
+ common.error unregister (in device.device_base);
+};
diff --git a/interfaces/device.idl b/interfaces/device.idl
new file mode 100644
index 0000000..1306639
--- /dev/null
+++ b/interfaces/device.idl
@@ -0,0 +1,26 @@
+include common.idl
+include io.idl
+
+module device {
+
+ enum function_id {
+ START;
+ STOP;
+ };
+
+ struct function {
+ string description;
+ int value;
+ enum fundtion_id id;
+ };
+
+ interface device {
+ common.error name (out string name);
+ common.error execute (in device.function);
+ common.error functions (out list <device.function>);
+ int id;
+ list <io.analog> analog;
+ list <io.digital> digital;
+ };
+
+};
diff --git a/interfaces/io.idl b/interfaces/io.idl
new file mode 100644
index 0000000..d2f95f8
--- /dev/null
+++ b/interfaces/io.idl
@@ -0,0 +1,22 @@
+#include "common.idl"
+
+module io {
+
+ interface digital {
+ common.error name (out string name);
+ common.error set ();
+ common.error reset ();
+ common.error get (out int value);
+ attribute Int id;
+ };
+
+ interface analog {
+ common.error name (out string name);
+ common.error min (out int min);
+ common.error max (out int max);
+ common.error set (in int value);
+ common.error get (out int value);
+ attribute Integer id;
+ };
+
+};