-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdata.h
225 lines (191 loc) · 6.05 KB
/
data.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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
//----------------------------------------------------------------------------
//Ìîäóëü äàííûõ, çàãîëîâî÷íûé ôàéë
//----------------------------------------------------------------------------
#ifndef DATA_H
#define DATA_H
//----------------------------------------------------------------------------
#include "display.h"
#include "eeprom.h"
//------------------------------- Êîíñòàíòû: ---------------------------------
#define PRESETS 10 //êîëè÷åñòâî ïðåñåòîâ
#define RING_V 160 //ðàçìåð êîëüöåâîãî áóôåðà V
#define DMAX 999 //ìàêñ. çàäàâàåìîå çíà÷åíèå çàäåðæêè, ìñ
#define TMIN 200 //ìèí. çàäàâàåìîå çíà÷åíèå òåìïåðàòóðû, x0.1°C
#define TMAX 999 //ìàêñ. çàäàâàåìîå çíà÷åíèå òåìïåðàòóðû, x0.1°C
#define TNOM 600 //íîìèíàëüíàÿ òåìïåðàòóðà çàùèòû OTP, x0.1°C
#define DTAL 30 //ðàçíîñòü äëÿ ïîðîãà èíäèêàöèè ïåðåãðåâà, x0.1°C
#define TFNL 450 //íîì. òåìïåðàòóðà âêëþ÷åíèÿ âåíòèëÿòîðà, x0.1°C
#define TFNH 550 //íîì. òåìïåðàòóðà ïîëíîé ñêîðîñòè âåíòèëÿòîðà, x0.1°C
#define TIMMAX (18 * 60 * 60) //ìàêñèìàëüíîå âðåìÿ òàéìåðà 18 ÷àñîâ
//Ïàðàìåòðû ïðåäåëîâ:
//(â TList äîëæíû äîáàâëÿòüñÿ â òàêîé æå ïîñëåäîâàòåëüíîñòè)
enum TopPars_t
{
PAR_MAXV, //ìàêñèìàëüíîå íàïðÿæåíèå
PAR_MAXI, //ìàêñèìàëüíûé òîê
PAR_MAXP, //ìàêñèìàëüíàÿ ìîùíîñòü
PARS_TOP
};
//Îñíîâíûå ïàðàìåòðû:
//(â TList äîëæíû äîáàâëÿòüñÿ â òàêîé æå ïîñëåäîâàòåëüíîñòè)
enum MainPars_t
{
PAR_V, //óñòàíîâëåííîå íàïðÿæåíèå
PAR_I, //óñòàíîâëåííûé òîê
PAR_FINE, //ñîñòîÿíèå FINE (OFF/ON)
PARS_MAIN
};
//Ïàðàìåòðû óñòàíîâîê:
//(â TList äîëæíû äîáàâëÿòüñÿ â òàêîé æå ïîñëåäîâàòåëüíîñòè)
enum SetupData_t
{
PAR_CALL, //Call preset
PAR_STOR, //Store preset
PAR_LOCK, //Lock controls
PAR_OVP, //OVP threshold
PAR_OCP, //OCP threshold
PAR_OPP, //OPP threshold
PAR_DEL, //OVP/OCP delay
PAR_OTP, //OTP threshold
PAR_FNL, //Fan start temperature
PAR_FNH, //Fan full speed temperature
PAR_HST, //Heatsink measured temperature
PAR_TIM, //Timer
PAR_TRC, //Track (OFF/AUTOLOCK/ON)
PAR_CON, //Confirm (OFF/ON)
PAR_POW, //Display power (OFF/ON)
PAR_SET, //Display setpoint when regulated (OFF/ON)
PAR_GET, //Always display maesured values(OFF/ON)
PAR_APV, //Display average/peak V (AVERAGE/PEAK HIGH/PEAK LOW)
PAR_APC, //Display average/peak I (AVERAGE/PEAK HIGH/PEAK LOW)
PAR_PRC, //Current preview (OFF/ON)
PAR_DNP, //Down programmer (OFF/ON)
PAR_OUT, //Restore out state (OFF/ON)
PAR_SND, //Sound (OFF/ALARM/ON)
PAR_ENR, //Encoder reverse (OFF/ON)
PAR_SPL, //Splash screen (OFF/ON)
PAR_INF, //Firmware version info
PAR_DEF, //Load defaults
PAR_CAL, //Calibration (NO/YES/DEFAULT)
PAR_ESC, //Escape menu (NO/YES)
PARS_SETUP
};
enum ParType_t //òèï ïàðàìåòðà
{
PT_V, //íàïðÿæåíèå, x0.01 V
PT_PRV, //íàïðÿæåíèå çàùèòû, x0.01 V
PT_I, //òîê, x0.001 A
PT_PRI, //òîê çàùèòû, x0.001 A
PT_P, //ìîùíîñòü, x0.1 W
PT_PRP, //ìîùíîñòü çàùèòû, x0.1 W
PT_VC, //êîä íàïðÿæåíèÿ
PT_IC, //êîä òîêà
PT_PRE, //CALL/STORE (NOSAVE)
PT_OFFON, //OFF/ON
PT_FALN, //OFF/ALARM/ON
PT_APHPL, //AVERAGE/PEAK HIGH/PEAK LOW
PT_DEL, //çàäåðæêà, ìñ
PT_T, //òåìïåðàòóðà, x0.1°C
PT_FIRM, //Firmware Version (NOSAVE)
PT_NY, //âûâîä òåêñòà (NOSAVE)
PT_NYDEF, //NO/YES/DEFAULT (NOSAVE)
PT_TIM //âðåìÿ òàéìåðà
};
enum OffOn_t { OFF, ON };
enum Track_t { TRCOFF, TRCAUTO, TRCON };
enum NoYes_t { NO, YES, DEFAULT };
#define PROT_FLAG 0x80 //ôëàã ñðàáàòûâàíèÿ çàùèòû
#define ON_FLAG 0x8000 //ôëàã âêëþ÷åíèÿ âûõîäà
#define VER ((uint16_t)(VERSION * 100 + 0.5))
//----------------------------------------------------------------------------
//----------------------------- Êëàññ TParam: --------------------------------
//----------------------------------------------------------------------------
class TParam
{
private:
char Name[DIGS + 1];
public:
char Type;
TParam(ParType_t type, const char *s,
uint16_t min, uint16_t nom, uint16_t max);
uint16_t Min;
uint16_t Nom;
uint16_t Max;
uint16_t Value;
void ShowName(void);
void ShowValue(void);
bool Savable(void);
bool Validate(void);
bool Edit(int16_t step);
};
//----------------------------------------------------------------------------
//-------------------------- Øàáëîííûé êëàññ TList: --------------------------
//----------------------------------------------------------------------------
template<class T>
class TList
{
private:
char ItemsMax;
public:
TList(char max);
T** Items;
char ItemsCount;
void AddItem(T *t);
};
//-------------------------- Ðåàëèçàöèÿ ìåòîäîâ: -----------------------------
template<class T>
TList<T>::TList(char max)
{
ItemsMax = max;
Items = new T*[ItemsMax];
ItemsCount = 0;
}
template<class T>
void TList<T>::AddItem(T *t)
{
if(ItemsCount < ItemsMax)
Items[ItemsCount++] = t;
}
//----------------------------------------------------------------------------
//--------------------------- Êëàññ TParamList: ------------------------------
//----------------------------------------------------------------------------
class TParamList : public TList<TParam>
{
private:
public:
TParamList(char max) : TList(max) {};
TEeSection *EeSection;
void LoadDefaults(void);
void ReadFromEeprom(char n);
void ReadFromEeprom(void);
void SaveToEeprom(char n);
void SaveToEeprom(void);
};
//----------------------------------------------------------------------------
//----------------------------- Êëàññ TData: ---------------------------------
//----------------------------------------------------------------------------
class TData
{
public:
TData(void);
TParamList *TopData;
TParamList *MainData;
TParamList *SetupData;
TEeSection *PresetV;
TEeSection *PresetI;
TRingSection *Ring;
bool OutOn;
void SetVI(void);
void Apply(char par);
void ApplyAll(void);
void TrimParamsLimits(void);
void ReadV(void);
void SaveV(void);
void InitPresets(void);
void ReadPreset(char n);
void SavePreset(char n);
};
//----------------------------------------------------------------------------
extern TData *Data;
//----------------------------------------------------------------------------
#endif