45 uint32_t u32_lastEventTime;
47 uint32_t _u32_nextTickTime;
48 uint32_t u32_userData1;
49 uint32_t u32_userData2;
55 uint16_t u16_LEDFlashPeriod;
57 uint32_t u32_lastEventTime;
58 uint32_t u32_userData1;
59 uint32_t u32_userData2;
62 typedef uint8_t ESOS_SUI_LED_HANDLE;
63 typedef uint8_t ESOS_SUI_SWITCH_HANDLE;
66 enum esos_sui_switchStates {
67 ESOS_SUI_SWSTATE_IDLE,
68 ESOS_SUI_SWSTATE_WAIT_SW_UP,
69 ESOS_SUI_SWSTATE_WAIT_CLICK_TIMEOUT,
70 ESOS_SUI_SWSTATE_WAIT_DCLICK_TIMEOUT,
73 enum esos_sui_switchEvents {
74 ESOS_SUI_SWITCH_EVENT_NULL,
75 ESOS_SUI_SWITCH_EVENT_HOLD,
76 ESOS_SUI_SWITCH_EVENT_CLICK,
77 ESOS_SUI_SWITCH_EVENT_DOUBLE_CLICK
80 enum esos_sui_LEDStates {
81 ESOS_SUI_LED_STATE_ALL_OFF = 0,
82 ESOS_SUI_LED_STATE_ON = 1,
83 ESOS_SUI_LED_STATE_FLASHING = 2,
84 ESOS_SUI_LED_STATE_ONE_SHOT = 4
88 enum esos_sui_LEDEvents {
89 ESOS_SUI_LED_EVENT_OFF = 1,
90 ESOS_SUI_LED_EVENT_ON = 2
94 #define ESOS_SUI_NUM_MAX_SWITCHES 32
95 #define ESOS_SUI_NUM_MAX_LEDS 32
97 #define CLICK_TICK 200 //
98 #define DOUBLE_CLICK_TICK 200 //
101 #define SWITCH_SINGLE_PRESS_LATENCY 100 // Time before single click is recognized, double click must first release before this time.
102 #define SWITCH_DOUBLE_PRESS_MAX_LATENCY 200 // Time before double click must be pressed after releasing the switch from first press
107 #define __ESOS_SUI_TASK_PERIOD (25*MILLISECONDS)
154 #define ESOS_TASK_WAIT_UNTIL_SUI_SW_PRESSED(x) ESOS_TASK_WAIT_UNTIL( esos_sui_isSWPressed((x)) )
155 #define ESOS_TASK_WAIT_UNTIL_SUI_SW_RELEASED(x) ESOS_TASK_WAIT_UNTIL( esos_sui_isSWReleased((x)) )
156 #define ESOS_TASK_WAIT_UNTIL_SUI_SW_PRESSED_AND_RELEASED(x) do { \
157 ESOS_TASK_WAIT_UNTIL_SUI_SW_PRESSED((x)); \
158 ESOS_TASK_WAIT_UNTIL_SUI_SW_RELEASED((x)); \
160 #define ESOS_TASK_WAIT_UNTIL_SUI_SW_PRESSED_TWICE(x) do { \
161 ESOS_TASK_WAIT_UNTIL_SUI_SW_PRESSED((x)); \
162 ESOS_TASK_WAIT_UNTIL_SUI_SW_RELEASED((x)); \
163 ESOS_TASK_WAIT_UNTIL_SUI_SW_PRESSED((x)); \
164 ESOS_TASK_WAIT_UNTIL_SUI_SW_RELEASED((x)); \
166 #define ESOS_TASK_WAIT_UNTIL_SUI_SW_EVENT(x) ESOS_TASK_WAIT_WHILE( esos_sui_getSwitchLastEvent((x)) == ESOS_SUI_SWITCH_EVENT_NULL )
167 #define ESOS_TASK_WAIT_UNTIL_SUI_SW_HOLD_EVENT(x) ESOS_TASK_WAIT_UNTIL( esos_sui_getSwitchLastEvent((x)) == ESOS_SUI_SWITCH_EVENT_HOLD )
168 #define ESOS_TASK_WAIT_UNTIL_SUI_SW_CLICK_EVENT(x) ESOS_TASK_WAIT_UNTIL( esos_sui_getSwitchLastEvent((x)) == ESOS_SUI_SWITCH_EVENT_CLICK )
169 #define ESOS_TASK_WAIT_UNTIL_SUI_SW_DOUBLE_CLICK_EVENT(x) ESOS_TASK_WAIT_UNTIL( esos_sui_getSwitchLastEvent((x)) == ESOS_SUI_SWITCH_EVENT_DOUBLE_CLICK )