embedded system library for e-puck  1.0.1
A redesigned API library for the e-puck robot platform
 All Data Structures Files Functions Variables Enumerations Enumerator Modules Pages
el_trigger.h
Go to the documentation of this file.
1 /*
2 
3 embedded system library for e-puck
4 
5 --------------------------------------------------------------------------------
6 
7 code distribution:
8 https://github.com/jianingchen/epucklib
9 
10 online documentation:
11 http://jianingchen.github.io/epucklib/html/
12 
13 --------------------------------------------------------------------------------
14 
15 This file is released under the terms of the MIT license (see "el.h").
16 
17 */
18 
28 #ifndef EL_TRIGGER_H
29 #define EL_TRIGGER_H
30 
31 #include "el_common.h"
32 #include "el_process.h"
33 
34 typedef bool (*el_condition)(void*);
35 
36 
42 typedef enum {
57 
58 /*
59 --------------------------------------------------------------------------------
60 */
61 
71 el_handle el_create_trigger();
72 
73 
79 void el_delete_trigger(el_handle trigger);
80 
81 
90 void el_trigger_enable(el_handle h);
91 
92 
101 void el_trigger_disable(el_handle h);
102 
103 
111 el_bool el_trigger_is_enabled(el_handle h);
112 
113 
122 void el_trigger_set_event(el_handle h,el_trigger_event_type e);
123 
124 
138 void el_trigger_set_condition(el_handle h,el_condition f);
139 
140 
169 void el_trigger_set_process(el_handle h,el_process func);
170 
171 
180 el_uint32 el_trigger_get_counter(el_handle h);
181 
182 
190 void el_trigger_issue_internal_event(el_enum e);
191 
192 
193 /*
194 --------------------------------------------------------------------------------
195 */
196 
197 
198 #ifdef EL_INCLUDE_LIB_INTERNAL_CONTEXT
199 
200 #include "el_clock.h"
201 
202 #define EL_TRIGGER_DIM 12
203 
204 typedef struct{
205  el_uint32 counter;
206  el_enum event_type;
207  void *event_data;
208  el_condition condition;
209  el_process process;
210  bool enabled:1;
211  bool remove:1;
212  bool auto_disable:1;
213  bool allow_recursive:1;
214 } el_trigger;
215 
216 extern el_bool el_is_in_trigger_condition;
217 extern el_uint16 el_trigger_overwatch;
218 extern volatile el_uint8 el_trg_event_flag_in[6];
219 extern volatile el_uint8 el_trg_event_flag_ex_uart1;
220 extern volatile el_uint8 el_trg_event_flag_ex_uart2;
221 extern volatile el_uint8 el_trg_event_flag_ex_irrc;
222 extern volatile el_uint8 el_trg_event_flag_ex_cam;
223 extern volatile el_uint8 el_trg_event_flag_ex_acc;
224 extern volatile el_uint8 el_trg_event_flag_ex_irps;
225 
226 void el_init_triggers();
227 void el_routine_triggers();
228 
229 #endif
230 
231 #endif /* EL_TRIGGER_H */
232 
when UART1 receives data
Definition: el_trigger.h:51
el_bool el_trigger_is_enabled(el_handle h)
check whether a trigger
el_handle el_create_trigger()
create a trigger in the system
when the ir receiver receives data
Definition: el_trigger.h:50
internal event B
Definition: el_trigger.h:45
when a new image frame from the camera is ready (9~18 fps)
Definition: el_trigger.h:55
void el_trigger_set_process(el_handle h, el_process func)
set the process entry function of the trigger
when the accelerometer output is updated (120 Hz)
Definition: el_trigger.h:53
internal event A
Definition: el_trigger.h:44
void el_trigger_enable(el_handle h)
enable a trigger
internal event C
Definition: el_trigger.h:46
internal event D
Definition: el_trigger.h:47
internal event F
Definition: el_trigger.h:49
void el_delete_trigger(el_handle trigger)
delete the trigger
el_trigger_event_type
Definition: el_trigger.h:42
internal event E
Definition: el_trigger.h:48
void el_trigger_disable(el_handle h)
disable a trigger
void el_trigger_set_event(el_handle h, el_trigger_event_type e)
set the event of the trigger
el_uint32 el_trigger_get_counter(el_handle h)
get the number of times the trigger passed its condition
when UART2 receives data (not implemented yet)
Definition: el_trigger.h:52
void el_trigger_set_condition(el_handle h, el_condition f)
set the condition callback function of the trigger
no event
Definition: el_trigger.h:43
void el_trigger_issue_internal_event(el_enum e)
issue an internal event
when the ir proximity sensor outputs are updated (30 Hz)
Definition: el_trigger.h:54