ROGueENEMY/message.h

131 lines
2.7 KiB
C

#pragma once
#include "imu_message.h"
#define EV_MESSAGE_FLAGS_PRESERVE_TIME 0x00000001U
#define EV_MESSAGE_FLAGS_IMU 0x00000002U
#define EV_MESSAGE_FLAGS_MOUSE 0x00000004U
typedef enum in_message_gamepad_btn {
GAMEPAD_BTN_CROSS,
GAMEPAD_BTN_CIRCLE,
GAMEPAD_BTN_SQUARE,
GAMEPAD_BTN_TRIANGLE,
GAMEPAD_BTN_OPTION,
GAMEPAD_BTN_SHARE,
GAMEPAD_BTN_L1,
GAMEPAD_BTN_R1,
GAMEPAD_BTN_L2_TRIGGER,
GAMEPAD_BTN_R2_TRIGGER,
GAMEPAD_BTN_L3,
GAMEPAD_BTN_R3,
GAMEPAD_BTN_L4,
GAMEPAD_BTN_R4,
GAMEPAD_BTN_L5,
GAMEPAD_BTN_R5,
GAMEPAD_BTN_TOUCHPAD,
GAMEPAD_LEFT_JOYSTICK_X,
GAMEPAD_LEFT_JOYSTICK_Y,
GAMEPAD_RIGHT_JOYSTICK_X,
GAMEPAD_RIGHT_JOYSTICK_Y,
GAMEPAD_DPAD_X,
GAMEPAD_DPAD_Y,
GAMEPAD_GYROSCOPE,
GAMEPAD_ACCELEROMETER,
} in_gamepad_element_t;
typedef struct in_message_gamepad_gyro {
struct timeval sample_time;
uint16_t x;
uint16_t y;
uint16_t z;
} in_message_gamepad_gyro_t;
typedef struct in_message_gamepad_accel {
struct timeval sample_time;
uint16_t x;
uint16_t y;
uint16_t z;
} in_message_gamepad_accel_t;
typedef struct in_message_gamepad_set_element {
in_gamepad_element_t element;
union {
uint8_t btn;
int32_t joystick_pos;
int8_t dpad; // -1 | 0 | +1
in_message_gamepad_accel_t accel;
in_message_gamepad_gyro_t gyro;
} status;
} in_message_gamepad_set_element_t;
typedef enum mouse_element {
MOUSE_ELEMENT_X,
MOUSE_ELEMENT_Y,
MOUSE_BTN_LEFT,
MOUSE_BTN_MIDDLE,
MOUSE_BTN_RIGHT,
} mouse_element_t;
typedef struct in_message_mouse_event {
mouse_element_t type;
int32_t value;
} in_message_mouse_event_t;
typedef enum in_message_gamepad_action {
GAMEPAD_ACTION_PRESS_AND_RELEASE_CENTER,
GAMEPAD_ACTION_OPEN_STEAM_QAM,
} in_message_gamepad_action_t;
typedef enum in_in_message_type {
GAMEPAD_SET_ELEMENT,
GAMEPAD_ACTION,
MOUSE_EVENT,
} in_message_type_t;
typedef struct in_message {
in_message_type_t type;
union {
//imu_in_message_t imu;
in_message_gamepad_action_t action;
in_message_gamepad_set_element_t gamepad_set;
in_message_mouse_event_t mouse_event;
} data;
} in_message_t;
typedef struct out_message_rumble {
uint8_t motors_left;
uint8_t motors_right;
} out_message_rumble_t;
typedef struct out_message_leds {
uint8_t r;
uint8_t g;
uint8_t b;
} out_message_leds_t;
typedef enum out_message_type {
OUT_MSG_TYPE_RUMBLE = 0,
OUT_MSG_TYPE_LEDS,
} out_message_type_t;
typedef struct out_message {
out_message_type_t type;
union {
out_message_rumble_t rumble;
out_message_leds_t leds;
} data;
} out_message_t;