Button handler. More...
Data Structures | |
struct | KEYEventT |
Defines | |
#define | KEY_NOT_PRESSED 0x00 |
Key state definitions. | |
#define | KEY_IS_DOWN 0x01 |
Key state KEY_IS_DOWN. | |
#define | KEY_PENDING 0x02 |
Key state KEY_PENDING. | |
#define | KEY_IS_LOCKED 0x04 |
Key state KEY_NOT_PRESSED. | |
#define | KEY_ACTION_DOWN 0x10 |
Key state definitions. | |
#define | KEY_ACTION_UP 0x20 |
Key action KEY_ACTION_UP. | |
#define | KEY_ACTION_HOLD 0x40 |
Key action KEY_ACTION_HOLD. | |
#define | KEY_ACTION_SHORT 0x80 |
Key action KEY_ACTION_SHORT. | |
Functions | |
int | NutGetKeyState (HANDLE keyh) |
reads actual state of a key | |
uint32_t | NutGetKeyTime (HANDLE keyh) |
reads the time in ms of how long the key is or was pressed | |
void | KeyTimerCb (HANDLE timer, void *arg) |
Key-Timer callback handler. | |
void | sys_key (void *arg) |
Key-Thread. | |
int | InitKEY (KEYEventT *key) |
Internal functionn to setup a GPIO port for reading a connected key. | |
int | NutAssignKeyEvt (HANDLE *keyhp, HANDLE *event) |
int | NutAssignKeyFkt (HANDLE *keyhp, void(*callback)(void)) |
int | NutRegisterKey (HANDLE *keyhp, int bank, int pin, int fx, uint32_t fxt) |
register a key and describe its function | |
Variables | |
HANDLE | key_tmr = NULL |
HANDLE | key_evt = NULL |
Button handler.
#define KEY_NOT_PRESSED 0x00 |
Key state definitions.
The key handler assignes the following states to a key.
The user should only use KEY_IS_DOWN and KEY_PENDING to determine what key released his NutEventWait() or if he uses the key functions without event handling.
Key state KEY_NOT_PRESSED.
State used internally.
#define KEY_IS_DOWN 0x01 |
#define KEY_PENDING 0x02 |
Key state KEY_PENDING.
User can check if the action assigned to this key has released the event by using the folllowing if sequence: if ((NutGetKeyState( key) & KEY_PENDING) == KEY_PENDING) This state is reset on every call of NutGetKeyState().
Definition at line 90 of file keys.h.
Referenced by NutAssignKeyEvt(), NutAssignKeyFkt(), NutGetKeyState(), and sys_key().
#define KEY_IS_LOCKED 0x04 |
#define KEY_ACTION_DOWN 0x10 |
Key state definitions.
The key handler assignes the following states to a key depending
The user should only use KEY_IS_DOWN and KEY_PENDING to determine what key released his NutEventWait() or if he uses the key functions without event handling.
Key action KEY_ACTION_DOWN.
By assigning this action to a key, it will release a pending event wait if the button is pressed. Timing parameter is ignored.
Definition at line 116 of file keys.h.
Referenced by sys_key().
#define KEY_ACTION_UP 0x20 |
#define KEY_ACTION_HOLD 0x40 |
#define KEY_ACTION_SHORT 0x80 |
int NutGetKeyState | ( | HANDLE | keyh | ) |
reads actual state of a key
Applications can call this functions to determine which key issued the event to a calling thread. This helps if more than ome key has been assigned to a single event mutex. If the key was the one which raised the event, it has bit 1 set. This bit will be cleared on calling this function.
keyh | Handle of the key to query. |
Definition at line 120 of file keys.c.
References KEY_PENDING, and KEYEventT::newState.
reads the time in ms of how long the key is or was pressed
Applications can call this functions to determine how long a key is pressed.
keyh | Handle of the key to query. |
Definition at line 138 of file keys.c.
References NutGetMillis(), and KEYEventT::TimeDown.
void KeyTimerCb | ( | HANDLE | timer, |
void * | arg | ||
) |
Key-Timer callback handler.
This is an internal function called by NutRegisterKey() and the EventTimer for key handling.
timer | Internal Handle of the key timer. |
arg | Not used. |
Definition at line 155 of file keys.c.
References NutEventPostAsync().
Referenced by NutRegisterKey().
void sys_key | ( | void * | arg | ) |
Key-Thread.
This is the internal key thread triggered by the key event timer.
Definition at line 166 of file keys.c.
References KEYEventT::bank, KEYEventT::fx, KEYEventT::fxt, GpioPinGet(), IOExpRawRead(), IOXP_PORT0, KEY_ACTION_DOWN, KEY_ACTION_HOLD, KEY_ACTION_SHORT, KEY_ACTION_UP, KEY_IS_DOWN, KEY_IS_LOCKED, KEY_PENDING, KPRINTF, KEYEventT::lastState, KEYEventT::newState, KEYEventT::next, NUT_WAIT_INFINITE, NUTASSERT, NutEventPost(), NutEventWait(), NutGetMillis(), NutThreadSetPriority(), KEYEventT::pin, and KEYEventT::TimeDown.
Referenced by NutRegisterKey().
int InitKEY | ( | KEYEventT * | key | ) |
Internal functionn to setup a GPIO port for reading a connected key.
key | Handle to the key, the port will be assigned to. |
Definition at line 266 of file keys.c.
References KEYEventT::bank, GPIO_CFG_DEBOUNCE, GPIO_CFG_PULLUP, GpioPinConfigSet(), IOExpPinConfigSet(), IOXP_PORT0, and KEYEventT::pin.
Referenced by NutRegisterKey().
Definition at line 283 of file keys.c.
References KEYEventT::event, KEY_PENDING, and KEYEventT::newState.
int NutAssignKeyFkt | ( | HANDLE * | keyhp, |
void(*)(void) | callback | ||
) |
Definition at line 294 of file keys.c.
References KEYEventT::callback, KEY_PENDING, and KEYEventT::newState.
register a key and describe its function
keyh | The handle to the LED that should be controlled. |
event | The event handle for locking a task until the key is active. |
bank | The GPIO or PCA9555 port, where key is connected to. |
pin | Pin of the bank, where key is connected to. |
fx | Action of key for releasing the event. |
fxt | Time parameter for action. |
fx | fxt | Event released |
---|---|---|
>KEY_ACTION_DOWN | 0 | on Key press |
>KEY_ACTION_UP | 0 | on Key release |
>KEY_ACTION_HOLD | n | on Key pressed for n ms |
>KEY_ACTION_SHORT | n | on Key released before n ms |
Definition at line 326 of file keys.c.
References KEYEventT::bank, KEYEventT::callback, KEYEventT::event, KEYEventT::fx, KEYEventT::fxt, InitKEY(), key_evt, key_tmr, KeyTimerCb(), KPRINTF, KEYEventT::lastState, malloc(), KEYEventT::newState, KEYEventT::next, NUTASSERT, NutEnterCritical, NutExitCritical, NutThreadCreate(), NutTimerStart(), KEYEventT::pin, sys_key(), and KEYEventT::TimeDown.
Definition at line 104 of file keys.c.
Referenced by NutRegisterKey().
Definition at line 105 of file keys.c.
Referenced by NutRegisterKey().