-
Notifications
You must be signed in to change notification settings - Fork 0
/
protocol.h
191 lines (159 loc) · 6.29 KB
/
protocol.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#ifndef PROTOCOL_H
#define PROTOCOL_H
#include "stdint.h"
#include <QDebug>
#pragma pack(push,1)
enum class e_CSMode : quint8
{ //режим работы
MODE_MANUAL = 0, //ручной
MODE_AUTOMATED, //автоматизированный
MODE_AUTOMATIC, //автоматический
MODE_GROUP //групповой
};
enum class power_Mode : quint8
{ //режим работы
MODE_2 = 0, //включены вычислитель, wifi, uwb
MODE_3, //включены вычислитель, wifi, uwb, гидроакустика
MODE_4, //включены вычислитель, wifi, uwb, гидроакустика, ВМА
MODE_5 //выключить вычислитель на 5 секунд и включить обратно
};
enum class mission_Control : quint8
{ //команды управления миссией
MODE_IDLE = 0, //ожидание
MODE_START, //отправка запроса на выполнение миссии
MODE_CANCEL, //отмена выполнения миссии
MODE_STOP, //пауза, остановить временно
MODE_COMPLETE //завершить миссию
};
enum class mission_Status : quint8
{ //состояние миссии
MODE_IDLE = 0, //ожидание
MODE_ERROR, //ошибка инициализации миссии
MODE_RUNNING, //миссия запущена и выполняется
MODE_STOPPED, //миссия приостановлена, на паузе
MODE_PERFOMED, //миссия завершена
};
//структура данных, которая передается из Северова в Пульт
//тут описаны данные, которые Пульт принимает от Северова
struct ControlData
{ //данные, которые идут с пульта в СУ
float yaw = 0;
float pitch = 0;
float roll = 0;
float march = 0;
float depth = 0;
float lag = 0;
};
struct ControlVMA
{ //данные, которые идут на каждый ВМА
float VMA1 = 0;
float VMA2 = 0;
float VMA3 = 0;
float VMA4 = 0;
float VMA5 = 0;
float VMA6 = 0;
};
struct ControlContoursFlags
{ //флаги замыкания контуров (если 1, то замкнуты, 0 - разомкнуты)
quint8 yaw = 1;
quint8 pitch = 1;
quint8 roll = 1;
quint8 march = 1;
quint8 depth = 1;
quint8 lag = 1;
};
struct AUVCurrentData
{
//!!тут все текущие параметры АНПА
quint8 modeReal = 0;//текущий режим
ControlContoursFlags controlReal;//текущее состояние контуров, чтобы проверить что сигнал с пульта был обработан
quint8 modeAUV_Real = 0;//текущий выбор модель/реальный НПА
ControlData ControlDataReal;//текущие курс, дифферент, крен, значения с имушки по сути
ControlVMA signalVMA_real;//управление на ВМА (текущие управляющие сигнлы на движители)
};
struct HeaderSwap
{
int senderID=0;
int receiverID=0;
int msgSize=0;
};
struct DataAH127C
{ //структура данных с датчика бесплатформенной системы ориентации
float yaw = 0; //курс градусы +/- 180
float pitch = 0; //...
float roll = 0;
float X_accel = 0;
float Y_accel = 0;
float Z_accel = 0;
float X_rate = 0;
float Y_rate = 0;
float Z_rate = 0;
float X_magn = 0;
float Y_magn = 0;
float Z_magn = 0;
float quat [4];
};
struct FlagAH127C_bort
{
quint8 startCalibration = 0;
quint8 endCalibration = 0;
};
struct FlagAH127C_pult
{
quint8 initCalibration = 0;
quint8 saveCalibration = 0;
};
struct DataPressure
{ //структура данных с датчика давления
float temperature = 0; //Temperature returned in deg C.
float depth = 0; //Depth returned in meters
float pressure = 0; // Pressure returned in mbar or mbar*conversion rate.
};
struct DataUWB
{ //структура данных с сверхширокополосного модуля
uint16_t error_code = 0;
uint16_t connection_field = 0;
float locationX = 0; //координата аппарата по оси X
float locationY = 0; //координата аппарата по оси Y
float distanceToBeacon[4]; //расстоние до i-го маяка
float distanceToAgent[10]; //расстояние до i-го агента
};
struct PultUWB
{
float beacon_x[3];
float beacon_y[3];
};
struct ToPult
{
ToPult(int auvID=0)
{
headerSwap.senderID = auvID;
headerSwap.receiverID = 0;
headerSwap.msgSize = sizeof (ToPult);
}
HeaderSwap headerSwap;
AUVCurrentData auvData;// данные о текущих параметрах
DataAH127C dataAH127C;// данные с БСО
DataPressure dataPressure; //данные с датчика давления
DataUWB dataUWB;//данные с UWB
FlagAH127C_bort flagAH127C_bort;
quint8 ID_mission = 0;
mission_Status missionStatus = mission_Status::MODE_IDLE;
uint checksum;
};
//структура данных, которая передается из пульта в АНПА
struct FromPult
{
ControlData controlData; //данные, которые идут с пульта при замыканиии контуров
e_CSMode cSMode = e_CSMode::MODE_MANUAL; //режим работы
PultUWB pultUWB;
ControlContoursFlags controlContoursFlags; //флаги замыкания контуров (если больше 0, то замкнуты
quint8 modeAUV_selection = 0;//текущий выбор модель/реальный НПА
power_Mode pMode = power_Mode::MODE_2; //режим работы системы питания, структура с желаемыми параметрами системы питания
FlagAH127C_pult flagAH127C_pult;
quint8 ID_mission_AUV = 0;
mission_Control missionControl = mission_Control::MODE_IDLE;
uint checksum;
};
#pragma pack (pop)
#endif // PROTOCOL_H