95 lines
1.3 KiB
C++
95 lines
1.3 KiB
C++
#pragma once
|
|
|
|
namespace Protocol {
|
|
|
|
enum class Code : uint8_t {
|
|
Heartbeat = 'h',
|
|
Pong = 'p',
|
|
Inputs = 'i',
|
|
Request = 'R',
|
|
Version = 'v',
|
|
Demand = 'd',
|
|
State = 's',
|
|
Counters = 'c',
|
|
IMU = 'm',
|
|
};
|
|
|
|
struct Generic {
|
|
};
|
|
|
|
struct Heartbeat {
|
|
Code code;
|
|
|
|
uint8_t version;
|
|
uint8_t device_id;
|
|
};
|
|
|
|
struct State {
|
|
enum class Flags : uint8_t {
|
|
None = 0,
|
|
RemoteOK = 1,
|
|
InControl = 2,
|
|
InShutdown = 4,
|
|
PilotAllowed = 8,
|
|
};
|
|
|
|
Code code;
|
|
Flags flags;
|
|
};
|
|
|
|
struct Counters {
|
|
Code code;
|
|
|
|
uint8_t demands;
|
|
|
|
uint8_t sent;
|
|
uint8_t received;
|
|
uint8_t rx_errors;
|
|
};
|
|
|
|
struct Pong {
|
|
Code code;
|
|
};
|
|
|
|
struct Input {
|
|
static const int8_t Missing = -128;
|
|
static const uint8_t Reference12MHz = 2;
|
|
|
|
Code code;
|
|
uint8_t reference;
|
|
int8_t channels[6];
|
|
};
|
|
|
|
struct Demand {
|
|
static const int8_t PassThrough = -127;
|
|
static const int8_t Reserved = -120;
|
|
|
|
enum class Flags : uint8_t {
|
|
None = 0,
|
|
TakeControl = 1,
|
|
};
|
|
|
|
Code code;
|
|
Flags flags;
|
|
int8_t channels[6];
|
|
};
|
|
|
|
struct IMU {
|
|
Code code;
|
|
uint8_t id;
|
|
int16_t accels[3];
|
|
int16_t gyros[3];
|
|
};
|
|
|
|
struct Request {
|
|
Code code;
|
|
Code requested;
|
|
};
|
|
|
|
struct Version {
|
|
Code code;
|
|
char version[18];
|
|
};
|
|
|
|
} // namespace Protocol
|