-
Notifications
You must be signed in to change notification settings - Fork 0
/
bupdatastorage.h
159 lines (126 loc) · 9.4 KB
/
bupdatastorage.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
/***************************************************************************
bup_data_store - Модуль сбора и хранения служебной информации.
Данный модуль позволяет осуществлять сбор информации от СНС, СВС,
карты высот, необходимую конвертацию данных к удобному представлению.
Предоставляет функции-интерфейсы для доступа ко всем необходимым
служебным данным.
Содержит функции конвертации данных от СНС к удобному виду.
Примечание: Модуль был реализован, из-за того, что нескольким
модулям бывает нужна одна и та же системная информация. При
этом передача аргументом в большинстве случаев неудобна и может
теоретически может повлечь к снижению производительности
(самым неудобным было запись в лог и трассировка параметров в CAN,
из-за чего фукции записи/отправки приходилось размещать прям посреди
полезного кода).
Было решено организовать глобальное хранилище, доступное из
любого модуля при подключении header-файла.
***************************************************************************/
#ifndef _BUP_DATA_STORE_H_
#define _BUP_DATA_STORE_H_
#include <stdint.h>
#include "kmonshelf.h"
#include "sws.h"
/*******************************************
Версия ПО БУП
Firmware:
major.minor.micro
Math:
option.major.minor
*******************************************/
typedef struct{
uint8_t majorFirmware; // Старшая версия ПО
uint8_t minorFirmware; // Младшая версия ПО
uint8_t microFirmware; // Небольшие изменения
uint8_t optionsMath; // Вариант модели регулятора: (1 - fightRegulatorCFB; 2 - Easy_reg)
uint8_t majorMath; // Старшая версия модели регулятора
uint8_t minorMath; // Младшая версия модели регулятора
}BupFirmwareVersion;
/*******************************************
Тип структуры служебных данных БУП
*******************************************/
typedef struct{
double touchdownPointLatitude; // Широта точки приземления, градус
double touchdownPointLongitude; // Долгота точки приземления, градус
double touchdownPointAltitude; // Высота раскрытия посадочного парашюта, метры
short touchdownPointRelief; // Высота рельефа в точке приземления, метры
double radioPointLatitude; // Широта точки приземления полученной от радиостанции, градус
double radioPointLongitude; // Долгота точки приземления полученной от радиостанции, градус
uint8_t radioPointUpdateIndex; // Индекс обновления точки полученные от радиостанции
short radioPointRelief; // Высота рельефа в точке полученной от радиостанции, метры
double currentPointLatitude; // Текущая широта, градус
double currentPointLongitude; // Текущая долгота, градус
double currentPointAltitude; // Текущая высота над уровнем моря по данным от СНС, метры
short currentPointRelief; // Высота рельефа в текущей точке, метры
double currentHeadingTrue; // Истинный курс, радианы
double currentHeadingMgn; // Магнитный курс, радианы
double currentVelocityLatitude; // Скорость по широте, м/c
double currentVelocityLongitude; // Скорость по долготе, м/c
double currentVelocityAltitude; // Скорость снижения, м/c
double currentPitch; // Тангаж, радианы
double currentRoll; // Крен, радианы
double currentCourse; // Путевой курс, радианы
float battery50V; // Напряжение на секции 50 Вольт АКБ
uint32_t controlSecond; // Системное время БУП
}BupDataStorage;
/*******************************************
Версия ПО БУП
*******************************************/
extern const BupFirmwareVersion bupFirmwareVersion;
/*******************************************
Cлужебные данные БУП
*******************************************/
extern BupDataStorage bupDataStorage;
/**************************************************************************************************************
Bup_initialize - Инициализация хранилища данных.
Описание: Функция инициализации структуры BUP_DataStorage, производит установку
параметров по-умолчанию.
***************************************************************************************************************/
void Bup_initialize (void);
/**************************************************************************************************************
Bup_updateData - Обновление данных хранилища.
Описание: Функция сбора необходимых для работы БУП в боевом режиме данных и их
конвертация к удобного виду. Использует функционал драйвера "SNS.h" для получения данных
местоположения и ориентации в пространстве, драйвера "SWS.h" для сбора полетных характеристик.
***************************************************************************************************************/
void Bup_updateData (void);
/**************************************************************************************************************
Bup_updateDataFromSNS - Обновление данных СНС.
Описание: Обновляет только структуру данных от СНС
***************************************************************************************************************/
void Bup_updateDataFromSNS (void);
/**************************************************************************************************************
Bup_updateDataFromSWS - Обновление данных СВС.
Описание: Обновляет только структуру данных от СВС
***************************************************************************************************************/
void Bup_updateDataFromSWS (void);
/**************************************************************************************************************
Bup_updateRadiostationData - Обновление данных от радиостанции
Описание: Получает данные от радиостанции, если получены координаты расчитывает так же высоту рельефа
***************************************************************************************************************/
void Bup_updateRadiostationData (void);
/***************************************************************************
Функции доступа к данным БУП
***************************************************************************/
inline double Bup_getTouchdownPointLatitude(void);
inline double Bup_getTouchdownPointLongitude(void);
inline double Bup_getTouchdownPointAltitude(void);
inline short Bup_getTouchdownPointRelief(void);
inline double Bup_getCurrentPointLatitude(void);
inline double Bup_getCurrentPointLongitude(void);
inline double Bup_getCurrentPointAltitude(void);
inline short Bup_getCurrentPointRelief(void);
inline double Bup_getRadioPointLatitude(void);
inline double Bup_getRadioPointLongitude(void);
inline uint8_t Bup_getRadioPointUpdateIndex(void);
inline short Bup_getRadioPointRelief(void);
inline double Bup_getCurrentHeadingTrue(void);
inline double Bup_getCurrentHeadingMgn(void);
inline double Bup_getCurrentVelocityLatitude(void);
inline double Bup_getCurrentVelocityLongitude(void);
inline double Bup_getCurrentVelocityAltitude(void);
inline double Bup_getCurrentPitch(void);
inline double Bup_getCurrentRoll(void);
inline double Bup_getCurrentCourse(void);
inline float Bup_getBatteryVoltage(void);
inline uint32_t Bup_getControlTime (void);
#endif