319 lines
8.0 KiB
C
319 lines
8.0 KiB
C
#pragma once
|
|
|
|
enum class MESSAGES_ID : unsigned char
|
|
{
|
|
SysInfo = 1,
|
|
GyroInfo = 2,
|
|
AccelInfo = 3,
|
|
GpsInfo = 4,
|
|
InertialInfo = 5,
|
|
BatteryInfo = 6,
|
|
Ack = 7,
|
|
StatusCommand = 8,
|
|
StatusAllCommands = 9,
|
|
Command = 10,
|
|
RequestReg = 11,
|
|
ResponseReg = 12,
|
|
Auth = 13,
|
|
OpenKey = 14,
|
|
MissionCount = 15,
|
|
MissionItem = 16,
|
|
MissionItemAck = 17,
|
|
MissionRequestItem = 18,
|
|
RequestLastMessage = 19,
|
|
ConnectionTest = 20,
|
|
|
|
CountMenuCategories = 32,
|
|
CategoriesMenu = 33,
|
|
CategoriesParameters = 34,
|
|
|
|
//Ping = 200, // :)
|
|
//Pong = 201, // :]
|
|
};
|
|
enum class COMMANDS_NAME : unsigned char
|
|
{
|
|
ChangeNav = 1,
|
|
ChangeSpeed = 2,
|
|
Land = 3,
|
|
GoHome = 4,
|
|
StopEngine = 5,
|
|
StartEngine = 6,
|
|
Pause = 7,
|
|
Continue = 8,
|
|
GoToGlobal = 9,
|
|
GoToLocal = 10,
|
|
|
|
SetParameter = 15,
|
|
};
|
|
enum class ERROR_CODE_COMMAND : unsigned char
|
|
{
|
|
No_error = 0,
|
|
Speed_has_already_been_set = 1,
|
|
Engines_are_already_running = 2,
|
|
Engines_have_already_been_stopped = 3,
|
|
UAV_is_already_on_the_ground = 4,
|
|
UAV_is_already_landing = 5,
|
|
UAV_is_already_moving = 6,
|
|
Mission_has_not_been_launched = 7,
|
|
Mission_is_already_on_pause = 8,
|
|
Mission_was_not_on_pause = 9,
|
|
Mission_was_not_launched = 10,
|
|
This_NavSys_has_already_been_applied = 11,
|
|
Lost_connection_with_controller = 12,
|
|
The_command_is_canceled_when_a_new_one_is_received = 13,
|
|
Error_reading_the_mission_file = 14,
|
|
Error_validating_the_mission_file = 15
|
|
};
|
|
enum class ENGINE_STATUS : unsigned char
|
|
{
|
|
disable = 0,
|
|
enable = 1
|
|
};
|
|
|
|
enum class STATUS_MODE : unsigned char
|
|
{
|
|
on_ground = 1,
|
|
taking_off = 2,
|
|
fly = 3,
|
|
landing = 4
|
|
};
|
|
|
|
enum class SYS_MODE : unsigned char
|
|
{
|
|
take_off = 1,
|
|
land = 2,
|
|
go_home = 3,
|
|
auto_mode = 4,
|
|
hold = 5
|
|
};
|
|
|
|
enum class NAV_SYS_MODE : unsigned char
|
|
{
|
|
inertial = 1,
|
|
gps = 2,
|
|
Optical_flow = 3
|
|
};
|
|
|
|
enum class EXEC_CODE_COMMAND : unsigned char
|
|
{
|
|
error = 0,
|
|
in_progress = 1,
|
|
completed = 2
|
|
};
|
|
|
|
enum class FEASIBILITY_CODE_COMMAND : unsigned char
|
|
{
|
|
cannot_be_performed = 0,
|
|
accepted = 1
|
|
};
|
|
|
|
enum class DATA_TYPES : unsigned char
|
|
{
|
|
dt_char = 0,
|
|
dt_unsigned_char = 1,
|
|
dt_string = 2,
|
|
dt_short = 3,
|
|
dt_bool = 4,
|
|
dt_unsigned_short = 5,
|
|
dt_int = 6,
|
|
dt_unsigned_int = 7,
|
|
dt_long = 8,
|
|
dt_unsigned_long = 9,
|
|
dt_long_long = 10,
|
|
dt_unsigned_long_long = 11,
|
|
dt_float_32 = 12,
|
|
dt_float_64 = 13,
|
|
dt_unknown = 255
|
|
};
|
|
|
|
#pragma pack(push,1)
|
|
|
|
const unsigned short MaxLength = 256;
|
|
const unsigned char Global_stx = 0xAA;
|
|
//?????? ?????????
|
|
struct HeaderBegin
|
|
{
|
|
unsigned char stx;
|
|
unsigned short len1; //Len header + payload (message)
|
|
unsigned short len2; //Len header + payload (message)
|
|
unsigned char crc; // CRC MESSAGE
|
|
unsigned char data[0]; // Message
|
|
//---
|
|
bool CheckCRC();
|
|
void SetCRC();
|
|
};
|
|
// ????????? ?????????
|
|
struct HeaderMessages
|
|
{
|
|
MESSAGES_ID msgId;
|
|
unsigned char srcId;
|
|
unsigned char dstId;
|
|
unsigned char len;
|
|
unsigned long long timeusec;
|
|
unsigned char data[0];
|
|
};
|
|
struct CommandObj
|
|
{
|
|
COMMANDS_NAME commandId;
|
|
unsigned char data[0];
|
|
};
|
|
//???????? ???????? ????????? ? ??????? ?? ???
|
|
struct PayloadBatteryInfo
|
|
{
|
|
unsigned char perCharge;
|
|
float voltage;
|
|
float amperage;
|
|
float temp;
|
|
float totalPower;
|
|
unsigned long long timeRemaining;
|
|
};
|
|
// ????????? ? ??????? ?? ??????? ??????
|
|
struct EnginePowerInfo
|
|
{
|
|
unsigned char power; //??????? ???????? ?? ????? ?? 0 ?? 100%
|
|
unsigned int engineSpeed;//??????? ?????? ? ??????? ??????
|
|
float current; // ??? ???????????? ???????
|
|
float voltage; // ?????????? ?? ??????
|
|
float temp; // ??????????? ??????
|
|
|
|
};
|
|
struct PayloadSysInfo // ???????? ???????? ? ??????? ? ???????? ????
|
|
{
|
|
SYS_MODE mode; //??????? ????? ?????? (????? - 1, ??????? - 2, ????? ??????????????? ???????? ????? - 3, ????? ??????????? ?????? - 4, ???????? - 5)
|
|
STATUS_MODE statusMode; //??????? ?????? ????? (?? ????? (on ground) - 1, ????? ?????? (TakingOff) - 2, ????? (In air) - 3, ??????????? (Landing) - 4)
|
|
NAV_SYS_MODE navSys; // ??????? ???????????? ??????? ????????? (GPS\???\Optical Flow) ??? - 1, GPS - 2, Optical Flow - 3
|
|
ENGINE_STATUS engineStatus; // ??????? ????????? ???????. ???? - 0, ??? - 1.
|
|
unsigned char engineCount; // ?????????? ?????????? ?? ????
|
|
float pressureBaro; //??????????? ????????
|
|
float tempBaro; // ??????????? ???. ?????
|
|
EnginePowerInfo enginePower[0];
|
|
};
|
|
struct PayloadGyroInfo // ???????? ???????? ? ??????? ?? ?????????
|
|
{
|
|
float yawGyroVel; // ??????? ???????? ????????? ???? ???????? (? ??? ????? ??????????? ???\??)
|
|
float pitchGyroVel; // ??????? ???????? ????????? ???? ??????? (? ??? ????? ??????????? ???\??)
|
|
float rollGyroVel; // ??????? ???????? ????????? ???? ????? (? ??? ????? ??????????? ???\??)
|
|
};
|
|
struct PayloadAccelInfo // ???????? ???????? ????????? ? ??????? ?? ?????????????
|
|
{
|
|
float yawAccelVel; // ??????? ????????? ????????? ???? ???????? (Z)
|
|
float pitchAccelVel; // ??????? ????????? ????????? ???? ??????? (Y)
|
|
float rollAccelVel; // ??????? ????????? ????????? ???? ????? (X)
|
|
float aX; // ????????? ?? X (?\?^2)
|
|
float aY; // ????????? ?? ? (?\?^2)
|
|
float aZ; // ????????? ?? Z (?\?^2)
|
|
float tempAccel; //??????????? ?????????????
|
|
};
|
|
struct PayloadGpsInfo // ???????? ???????? ????????? ? ??????? ?? GPS ???????
|
|
{
|
|
float lat; //
|
|
float lon; //
|
|
float absAlt; //
|
|
float realAlt; //
|
|
float hdop; //
|
|
float vdop; //
|
|
float pdop; //
|
|
float noise; //
|
|
float jamming; //
|
|
unsigned char satVisible;
|
|
unsigned char satUsed; //
|
|
float speed; //
|
|
unsigned char fixType; // NO_GPS - 0, NO_FIX - 1, 2D_FIX - 2, 3D_FIX - 3, DGPS - 4, RTK_FLOAT - 5, RTK_FIXED - 6, STATIC - 7, PPP - 8
|
|
unsigned long long timeUTC; // UTC - GPS
|
|
};
|
|
struct PayloadInertialInfo // ???????? ???????? ? ??????? ?? ???????????? ??????? ?????????
|
|
{
|
|
float x; // ?????????? X (?? ????????? ??????? ?????????)
|
|
float y; // ?????????? Y (?? ????????? ??????? ?????????)
|
|
float z; // ?????????? ?????? (?? ????????? ??????? ?????????)
|
|
float headingDeg; // ??????? ??????????? ???????? ???? ???????????? ??????
|
|
float speed; // ???????? ???? (?????????? ?? ?? GPS)
|
|
float roll; // ??????? ???? ????? ? ????????
|
|
float pitch; // ??????? ???? ??????? ? ????????
|
|
float yaw; // ??????? ???? ???????? ? ????????
|
|
float rollVel; // ???????? ?? ??????????? ????? ?\? (? ??????????? ??? Y)
|
|
float pitchVel; // ???????? ?? ??????????? ??????? ?\? (? ??????????? ??? ?)
|
|
float yawVel; // ???????? ?? ??????????? ???????? ?\? (? ??????????? ??? Z)
|
|
float baroAlt; // ?????? ? ?????? ?? ?????????
|
|
};
|
|
//???????? ???????? ????????? ? ??????? ? ????????? ???????
|
|
struct PayloadCommandAck
|
|
{
|
|
COMMANDS_NAME commandId;
|
|
FEASIBILITY_CODE_COMMAND status; // 0 - ?? ????? ???? ????????? (??????????? ??? ??????), 1 - ???????
|
|
ERROR_CODE_COMMAND errorCode;
|
|
};
|
|
struct PayloadStatusCommand
|
|
{
|
|
COMMANDS_NAME commandId;
|
|
EXEC_CODE_COMMAND executionCode; // 0 - ?????? ??? ?????????? ,1 - ??????????? ,2 - ????????? ???????.
|
|
ERROR_CODE_COMMAND errorCode;
|
|
};
|
|
// ???????? ???????? ??????? ??? ????? ???????? ??????
|
|
struct PayloadCommandChangeSpeed
|
|
{
|
|
float speed;
|
|
};
|
|
// ???????? ???????? ??????? ??? ????? ??????? ???. ???. ???????.
|
|
struct PayloadCommandChangeNav
|
|
{
|
|
unsigned char nav_id; // Inertial - 1, GPS = 2, Oprical_Flow = 3
|
|
};
|
|
// ???????? ???????? ??????? ??? ??????????? ? ????? ?? ?????????? ???????????
|
|
struct PayloadCommandGoToGlobal
|
|
{
|
|
float lat;
|
|
float lon;
|
|
float abs_alt;
|
|
float speed;
|
|
};
|
|
// ???????? ???????? ??????? ??? ??????????? ? ????? ?? ????????? ???????????
|
|
struct PayloadCommandGoToLocal
|
|
{
|
|
float x;
|
|
float y;
|
|
float z;
|
|
float speed;
|
|
};
|
|
|
|
struct PayloadCountMenuCategories
|
|
{
|
|
unsigned char countCategories;
|
|
unsigned char data[0];
|
|
};
|
|
|
|
struct MenuCategori
|
|
{
|
|
unsigned char id;
|
|
unsigned char len_name;
|
|
unsigned char count_param;
|
|
char name[0];
|
|
};
|
|
|
|
struct PayloadMenuCategories
|
|
{
|
|
unsigned char countCategories;
|
|
unsigned char categories[0];
|
|
};
|
|
|
|
struct PayloadCategoriesParameters
|
|
{
|
|
unsigned char cat_id;
|
|
unsigned char param_id;
|
|
unsigned char param_name_len;
|
|
unsigned char param_len;
|
|
DATA_TYPES param_type_code;
|
|
char param_data[0];
|
|
};
|
|
|
|
struct PayloadCommandSetParameter
|
|
{
|
|
unsigned char cat_id;
|
|
unsigned char param_id;
|
|
DATA_TYPES param_type_code;
|
|
unsigned char param_len;
|
|
char param_data[0];
|
|
};
|
|
|
|
#pragma pack(pop)
|