forked from NeroReflex/ROGueENEMY
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmessage.h
45 lines (33 loc) · 979 Bytes
/
message.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#pragma once
#include "imu_message.h"
#define MESSAGE_FLAGS_HANDLE_DONE 0x00000001U
#define EV_MESSAGE_FLAGS_PRESERVE_TIME 0x00000002U
#define EV_MESSAGE_FLAGS_IMU 0x00000004U
#define EV_MESSAGE_FLAGS_MOUSE 0x00000008U
typedef struct ev_message {
struct input_event* ev;
uint32_t ev_flags;
uint32_t ev_count;
size_t ev_size;
} ev_message_t;
#define HIDRAW_DATA_SIZE 64
typedef struct hidraw_message {
unsigned char data[HIDRAW_DATA_SIZE];
ssize_t data_size;
} hidraw_message_t;
typedef enum message_type {
MSG_TYPE_EV = 0,
MSG_TYPE_IMU,
MSG_TYPE_HIDRAW,
} message_type_t;
#define INPUT_FILTER_FLAGS_NONE 0x00000000U
#define INPUT_FILTER_FLAGS_DO_NOT_EMIT 0x00000001U
typedef struct message {
message_type_t type;
union {
imu_message_t imu;
ev_message_t event;
hidraw_message_t hidraw;
} data;
volatile uint32_t flags;
} message_t;