Modified event_t structure to make it castable to void *
This commit is contained in:
parent
94b37d9137
commit
014262f4df
|
|
@ -40,10 +40,15 @@ enum eventType_t
|
||||||
* But if we keep the size under 32 bits, we can sent the
|
* But if we keep the size under 32 bits, we can sent the
|
||||||
* entire message, casting it to a void * pointer.
|
* entire message, casting it to a void * pointer.
|
||||||
*/
|
*/
|
||||||
typedef struct
|
typedef union
|
||||||
{
|
{
|
||||||
uint32_t type : 3;
|
struct
|
||||||
uint32_t payload : 29;
|
{
|
||||||
|
uint32_t type : 3,
|
||||||
|
payload : 29;
|
||||||
|
};
|
||||||
|
|
||||||
|
void *value;
|
||||||
}event_t;
|
}event_t;
|
||||||
|
|
||||||
#endif /* EVENT_H */
|
#endif /* EVENT_H */
|
||||||
|
|
|
||||||
|
|
@ -103,9 +103,12 @@ static void ui_task(void *arg)
|
||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
// Wait to receive an event message
|
// Read from the keyboard queue (returns 0 if no message is present)
|
||||||
event_t event = (event_t)OSQPend(&ui_queue, 0u, OS_OPT_PEND_BLOCKING,
|
// Copy keyboard_t keys from received void * pointer msg
|
||||||
&msg_size, 0u, &os_err);
|
void *msg = OSQPend(&ui_queue, 0u, OS_OPT_PEND_BLOCKING,
|
||||||
|
&msg_size, 0u, &os_err);
|
||||||
|
event_t event = ((event_t) msg);
|
||||||
|
|
||||||
// Lock mutex, read and write state
|
// Lock mutex, read and write state
|
||||||
OSMutexPend(&state_mutex, 0u, OS_OPT_PEND_BLOCKING, 0u, &os_err);
|
OSMutexPend(&state_mutex, 0u, OS_OPT_PEND_BLOCKING, 0u, &os_err);
|
||||||
// React to keypresses and update FSM inside state
|
// React to keypresses and update FSM inside state
|
||||||
|
|
@ -152,9 +155,9 @@ static void kbd_task(void *arg)
|
||||||
event_t kbd_msg;
|
event_t kbd_msg;
|
||||||
kbd_msg.type = EVENT_KBD;
|
kbd_msg.type = EVENT_KBD;
|
||||||
kbd_msg.payload = keys;
|
kbd_msg.payload = keys;
|
||||||
void * msg = (void *) kbd_msg;
|
|
||||||
// Send keyboard status in queue
|
// Send keyboard status in queue
|
||||||
OSQPost(&ui_queue, msg, sizeof(event_t),
|
OSQPost(&ui_queue, (void *)kbd_msg.value, sizeof(event_t),
|
||||||
OS_OPT_POST_FIFO + OS_OPT_POST_NO_SCHED, &os_err);
|
OS_OPT_POST_FIFO + OS_OPT_POST_NO_SCHED, &os_err);
|
||||||
}
|
}
|
||||||
// Read keyboard state at 5Hz
|
// Read keyboard state at 5Hz
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue