summaryrefslogtreecommitdiff
path: root/interfaces/io.idl
blob: 435ea014eead1cf56ffbb4246c817ce6e777c151 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#ifndef DISTIO_IO_IDL
#define DISTIO_IO_IDL

#include "common.idl"

module IO {

	interface Device;

	enum Digital_trigger {
		TRIGGER_EDGE,
		TRIGGER_RISING_EDGE,
		TRIGGER_FALLING_EDGE
	};

	interface Digital {
		Common::Error name (out string name);
		Common::Error set ();
		Common::Error reset ();
		Common::Error get (out long value);
		Common::Error register_callback (in Device dev, in Digital_trigger trigger);
		attribute long id;
	};

	typedef sequence<Digital> Digital_list;

	struct Analog_trigger {
		long last_value;
		long jitter;
	};

	interface Analog {
		Common::Error name (out string name);
		Common::Error min (out long min);
		Common::Error max (out long max);
		Common::Error set (in long value);
		Common::Error get (out long value);
		Common::Error register_callback (in Device dev, in Analog_trigger trigger);
		attribute long id;
	};

	typedef sequence<Analog> Analog_list;

	enum Dev_function_id {
		DEV_START,
		DEV_STOP
	};

	struct Dev_function {
		string description;
		long value;
		Dev_function_id id;
	};

	typedef sequence<Dev_function> Dev_function_list;

	interface Device {
		Common::Error name (out string name);
		Common::Error execute (in Dev_function func);
		Common::Error functions (out Dev_function_list funcs);
		Common::Error callback_digital (in Digital io_dig);
		Common::Error callback_analog (in Analog io_ana);
		attribute Analog_list io_ana;
		attribute Digital_list io_dig;
		attribute long id;
	};

	typedef sequence<Device> Device_list;

};

#endif