1 | throw new Error("Description for built in functions. Must not be included!");
|
---|
2 | /**
|
---|
3 | * @fileOverview
|
---|
4 | * Documentation of the dimctrl namespace
|
---|
5 | */
|
---|
6 |
|
---|
7 | /**
|
---|
8 | * @namespace
|
---|
9 | *
|
---|
10 | * Global namespace for functions dealing with the dimctrl state
|
---|
11 | *
|
---|
12 | * @author <a href="mailto:thomas.bretz@epfl.ch">Thomas Bretz</a>
|
---|
13 | */
|
---|
14 | var dimctrl = { };
|
---|
15 |
|
---|
16 | /**
|
---|
17 | * Define a new internal state.
|
---|
18 | *
|
---|
19 | * States should be defined when a script is started.
|
---|
20 | *
|
---|
21 | * @param {Integer} index
|
---|
22 | * The intgeger number assigned to the new state. Only numbers
|
---|
23 | * in the range [10, 255] are allowed.
|
---|
24 | *
|
---|
25 | * @param {String} [name]
|
---|
26 | * A short name describing the state. According the the convention
|
---|
27 | * used throughout FACT++, it it must not contain whitespaces or
|
---|
28 | * underscores. Ever word should start with a capital letter,
|
---|
29 | * e.g. 'TriggerOn'
|
---|
30 | *
|
---|
31 | * @param {String} [decription]
|
---|
32 | * A user defined string which gives a more conscise explanation
|
---|
33 | * of the meaning of the state and can also be displayed in the GUI
|
---|
34 | * or anywhere else automatically,
|
---|
35 | * e.g. "System setup and trigger switched on"
|
---|
36 | *
|
---|
37 | * @throws
|
---|
38 | * <li> if something is wrong with the supplied arguments (type, number)
|
---|
39 | * <li> when the index is out of range [10,255]
|
---|
40 | * <li> the given state name is empty
|
---|
41 | * <li> the given state name contains a colon or an equal sign
|
---|
42 | * <li> when a state with the same name or index was already
|
---|
43 | * <li> set since the script was started.
|
---|
44 | *
|
---|
45 | * @returns {Boolean}
|
---|
46 | * A boolean whether the state was newly added (true) or an existing
|
---|
47 | * one overwritten (false).
|
---|
48 | *
|
---|
49 | * @example
|
---|
50 | * dim.defineState(10, "StateTen", "This is state number ten");
|
---|
51 | */
|
---|
52 | dimctrl.defineState = function() { /* [native code] */ }
|
---|
53 |
|
---|
54 | /**
|
---|
55 | * Change the internal state.
|
---|
56 | *
|
---|
57 | * @param {Integer,String} state
|
---|
58 | * Either the name of the state to set or its index can be supplied.
|
---|
59 | *
|
---|
60 | * @throws
|
---|
61 | * <li> if something is wrong with the supplied arguments (type, number)
|
---|
62 | * <li> if a String is given and it is not found in the list of names
|
---|
63 | *
|
---|
64 | * @returns {Boolean}
|
---|
65 | * A boolean is returned whether setting the state wa sucessfull or
|
---|
66 | * not. If the function is not called at unexpected time, i.e.
|
---|
67 | * before the execution of the JavaScript has been started or
|
---|
68 | * after it has already be terminated, true should be returned
|
---|
69 | * always.
|
---|
70 | *
|
---|
71 | * @example
|
---|
72 | * dim.setState(10);
|
---|
73 | * dim.setState("StateTen");
|
---|
74 | */
|
---|
75 | dimctrl.setState = function() { /* [native code] */ }
|
---|
76 |
|
---|
77 | /**
|
---|
78 | * Get the current internal state.
|
---|
79 | *
|
---|
80 | * @throws
|
---|
81 | * if arguments are supplied
|
---|
82 | *
|
---|
83 | * @returns {Object}
|
---|
84 | * An object with the properties index {Number}, name {String} and
|
---|
85 | * description {String}. Note that name and description might be
|
---|
86 | * an empty string.
|
---|
87 | *
|
---|
88 | * @example
|
---|
89 | * var state = dim.getState();
|
---|
90 | * console.out(JSON.stringify(state));
|
---|
91 | */
|
---|
92 | dimctrl.getState = function() { /* [native code] */ }
|
---|
93 |
|
---|
94 | /**
|
---|
95 | * Set an interrupt handler, a function which is called if an
|
---|
96 | * interrupt is received, e.g. via dim (dimctrl --interrupt).
|
---|
97 | * Note that the interrupt handler is executed in its own JavaScript
|
---|
98 | * thread. Thus it interrupts the execution of the script, but does
|
---|
99 | * not stop its execution. Please also note that this is a callback
|
---|
100 | * from the main loop. As long as the handler is executed, no other
|
---|
101 | * event (dim or command interface) will be processed.
|
---|
102 | *
|
---|
103 | * If an interrupt was triggered by dimctrl (so not from within
|
---|
104 | * the script) and a number between 10 and 255 is returned,
|
---|
105 | * the state machine will change its state accordingly. Other returned
|
---|
106 | * ojects or returned values outside of this range are ignored.
|
---|
107 | *
|
---|
108 | * @param {Function} [func]
|
---|
109 | * Function to be called when an interrupt is received. Null, undefined
|
---|
110 | * or no argument to remove the handler.
|
---|
111 | *
|
---|
112 | * @throws
|
---|
113 | * if number of type of arguments is wrong
|
---|
114 | *
|
---|
115 | * @example
|
---|
116 | * function handleIrq(irq, args, time, user)
|
---|
117 | * {
|
---|
118 | * console.out("IRQ received: "+irq);
|
---|
119 | * console.out("Interrupt time: "+time);
|
---|
120 | * console.out("Issuing user: "+user);
|
---|
121 | * console.out("Arguments:");
|
---|
122 | * for (var key in args)
|
---|
123 | * console.out(" args["+key+"="+args[key]);
|
---|
124 | *
|
---|
125 | * var newState = 10;
|
---|
126 | * return newState;
|
---|
127 | * }
|
---|
128 | * dimctrl.setInterruptHandler(handleIrq);
|
---|
129 | */
|
---|
130 | dimctrl.setInterruptHandler = function() { /* [native code] */ }
|
---|
131 |
|
---|
132 | /**
|
---|
133 | * You can also issue an interrupt from anywhere in your code.
|
---|
134 | *
|
---|
135 | * @param argument
|
---|
136 | * Any kind of argument can be given. If it is not a String, it
|
---|
137 | * is converted using the toString() member function. The result
|
---|
138 | * must not contain any line break.
|
---|
139 | *
|
---|
140 | * @param [. . .]
|
---|
141 | * Any number of additional arguments. Each argument will appear in
|
---|
142 | * a new line.
|
---|
143 | *
|
---|
144 | * @returns
|
---|
145 | * the return of the interrupt handler which is called is returned
|
---|
146 | *
|
---|
147 | * @throws
|
---|
148 | * if an argument contains a line break
|
---|
149 | *
|
---|
150 | * @example
|
---|
151 | * dimctrl.triggerInterrupt();
|
---|
152 | * dimctrl.triggerInterrupt("my_command");
|
---|
153 | * dimctrl.triggerInterrupt("my_command arg1 arg2=x arg3");
|
---|
154 | * dimctrl.triggerInterrupt("arg1=x arg2 arg3");
|
---|
155 | *
|
---|
156 | */
|
---|
157 | dimctrl.triggerInterrupt = function() { /* [native code] */ }
|
---|