ngc 1.4.0
 
Loading...
Searching...
No Matches
ngcdcsSVS.hpp
Go to the documentation of this file.
1
7#ifndef ngcdcsSVS_H
8#define ngcdcsSVS_H
9
10
11#ifndef __cplusplus
12#error This is a C++ include file and cannot be used from plain C
13#endif
14
15#include <ngc/core/ngcbAddr.h>
16#include <ngc/core/ngcbMOD.hpp>
18
22#define ngcdcsSVS_SENS_TEMP 1 //< temperature sensor
23#define ngcdcsSVS_SENS_RHUM 2 //< humidity sensor
24#define ngcdcsSVS_SENS_PRESSURE 4 //< pressure sensor
25#define ngcdcsSVS_SENS_PTEMP 8 //< pressure sensor temperature
26
30#define ngcdcsSVS_SENS_ALL (ngcdcsSVS_SENS_TEMP|ngcdcsSVS_SENS_RHUM|ngcdcsSVS_SENS_PRESSURE|ngcdcsSVS_SENS_PTEMP)
31
32/*
33 * SVS I2C-control flags
34 */
35#define ngcdcsSVS_I2C_READ 0x0001 //< companion read
36#define ngcdcsSVS_I2C_RESTART 0x0004 //< restart (bus held)
37#define ngcdcsSVS_I2C_HOLD 0x0008 //< hold bus
38#define ngcdcsSVS_I2C_BITMASK 0x0080 //< bitmask request
39
40/*
41 * Supervisor status word
42 */
43#define ngcdcsSVS_STAT_OK 0x0000 //< all in range
44#define ngcdcsSVS_STAT_CML 0x0002 //< CML fault
45#define ngcdcsSVS_STAT_TEMP 0x0004 //< temperature alarm
46#define ngcdcsSVS_STAT_OC 0x0010 //< over-current alarm
47#define ngcdcsSVS_STAT_OV 0x0020 //< over-voltage alarm
48#define ngcdcsSVS_STAT_OFF 0x0040 //< a voltage is off
49#define ngcdcsSVS_STAT_MARGIN 0x0100 //< margin fault
50#define ngcdcsSVS_STAT_PG 0x0800 //< power not good
51#define ngcdcsSVS_STAT_MFR 0x1000 //< check MFR-specific
52#define ngcdcsSVS_STAT_IOUT 0x4000 //< current fault or warning
53#define ngcdcsSVS_STAT_VOUT 0x8000 //< voltage fault or warning
54
55/*
56 * Supervisor page fault status
57 */
58#define ngcdcsSVS_PSTAT_OK 0x00000000 //< all in range
59#define ngcdcsSVS_PSTAT_OTW 0x00000001 //< over-temperature warning
60#define ngcdcsSVS_PSTAT_OTF 0x00000002 //< over-temperature fault
61#define ngcdcsSVS_PSTAT_OCW 0x00000010 //< over-current warning
62#define ngcdcsSVS_PSTAT_OCF 0x00000020 //< over-current fault
63#define ngcdcsSVS_PSTAT_OVW 0x00000100 //< over-voltage warning
64#define ngcdcsSVS_PSTAT_OVF 0x00000200 //< over-voltage fault
65#define ngcdcsSVS_PSTAT_UVW 0x00000400 //< under-voltage warning
66#define ngcdcsSVS_PSTAT_UVF 0x00000800 //< under-voltage fault
67#define ngcdcsSVS_PSTAT_PG 0x00001000 //< power not good
68#define ngcdcsSVS_PSTAT_TON 0x00002000 //< TON max faults exceeded
69#define ngcdcsSVS_PSTAT_MARGIN 0x00004000 //< supply close-loop margin fault
70#define ngcdcsSVS_PSTAT_OFF 0x00080000 //< supply voltage off
71
72#define ngcdcsSVS_NUM_PAGES 21 //< number of supervisor pages
73
78 int addr; //< Device address
79 int flags; //< Protocol control flags
80
82 ngcdcs_svs_i2c_t() {addr = 0x0; flags = 0x0;}
83};
84
89{
90public:
91 char date[9]; //< Date
92 char location[9]; //< Location
93 char serialNumber[9]; //< Serial number
94 char revision[3]; //< Hardware + firmware revision number
95 unsigned short fwNumber; //< Firmware version number
96
99 strcpy(date, "10101010");
100 strcpy(location, "10101010");
101 strcpy(serialNumber, "10101010");
102 strcpy(revision, "00");
103 fwNumber = (unsigned short)0x0;
104 }
105};
106
107
112{
113public:
114 char name[32]; //< Name
115 char unit[8]; //< Unit
116 double scale; //< Scale factor
117 double fault1; //< Lower fault limit
118 double warn1; //< Lower warning limit
119 double fault2; //< Upper fault limit
120 double warn2; //< Upper warning limit
121 double pgOn; //< power good on
122 double pgOff; //< power good on
123 double value; //< Value
124 double peak; //< Peak value
125 double min; //< Minimum value
126 double avg; //< Average value
127 int enabled; //< Enabled status (supply-voltages only)
128 int status; //< Fault status
129
132 name[0] = '\0'; unit[0] = '\0';
133 scale = 1.0;
134 fault1 = 0.0; warn1 = 0.0; fault2 = 0.0; warn2 = 0.0;
135 pgOn = 0.0; pgOff = 0.0;
136 value = 0.0; peak = 0.0; min = 0.0; avg = 0.0;
138 }
139
141 virtual ~ngcdcsSVS_PAGE() {}
142
144 void Assign(const char *n, const char *u, double f) {
145 str2str(name, n, sizeof(name) - 1);
146 str2str(unit, u, sizeof(unit) - 1);
147 scale = f;
148 }
149protected:
150private:
151};
152
156class ngcdcsSVS: public ngcbMOD
157{
158public:
160 explicit ngcdcsSVS(const ngcb_route_t &r);
161
163 ngcdcsSVS(ngcbIFC *ifc, const ngcb_route_t &r);
164
166 virtual ~ngcdcsSVS();
167
170
173
176
179
182
185
188
191
194
197
199 void Reset();
200
202 int Enable(int check = 1);
203
205 int Disable();
206
208 int Selftest();
209
211 int Action(const char *action, char *reply = NULL);
212
214 void Dump(char *s, int idx);
215
217 void Dump(char *s);
218
220 int Info(ngcdcs_svs_info *info);
221
223 int SoftReset();
224
226 int Stop();
227
229 int Restart();
230
232 int PageEnable(int flag, int page = 255);
233
235 int ClearFaults();
236
238 int ClearFaultLog();
239
241 int ForceFaultLog();
242
244 int FaultLogDepth(int n);
245
247 int FaultLogOverwrite(int flag);
248
250 int ResetHistory();
251
253 int Status(int *status);
254
256 int Update(int sensor, int force = 0);
257
259 int ResetSensors(int errFlag = 0);
260
262 int ResetRHum();
263
265 int ResetTemp();
266
268 int ResetPressure();
269
271 int ResetPTemp();
272
274 int SensorError(int sensor);
275
277 int SensHeat(int flag);
278
280 int SetupKey(const char *key, const int *idx, const char *value,
281 int *status = NULL);
282
284 int StatusKey(const char *key, const int *idx, char *value,
285 int *status = NULL);
286
287protected:
288
289private:
291 int cvs1_;
292
294 struct timeval timeReset_;
295
297 int logDepth_;
298
300 int logOverwrite_;
301
303 void Init_();
304
306 void Log_(const char *msg);
307
309 int UpdateSensors_(int sensor, int force);
310
312 int ResetSensor1_();
313
315 int ResetSensor2_();
316
318 int Write_(int idx, const int *data, int size, int flags = 0x0);
319
321 int Read_(int idx, int *data, int size, int flags = 0x0);
322
324 int ReadReg_(int idx, int addr, int *data, int size, int restart = 0);
325
327 int SelectPage_(int p);
328
330 int Read_(double *value, int p, int cmd, int hold);
331
333 int Read_();
334
336 int Read_(int p, int hold = 0);
337
339 int ReadLimits_(int p, int hold = 0);
340
342 int ReadAll_();
343
345 int Reset_(int p);
346
348 int GetFaults_(int status);
349
351 void ClrStatus_();
352
354 int Page_(const char *name);
355
357 int CRC_(const int *data, size_t size);
358
359};
360
361#endif
Definition ngcbIFC.hpp:754
ngcbMOD(const ngcbMOD &other)
Copy constructor.
Definition ngcbMOD.cpp:43
Definition ngcdcsSENS.hpp:255
Definition ngcdcsSENS.hpp:274
Definition ngcdcsSENS.hpp:214
Definition ngcdcsSENS.hpp:195
Definition ngcdcsSVS.hpp:112
double min
Definition ngcdcsSVS.hpp:125
double warn1
Definition ngcdcsSVS.hpp:118
double pgOn
Definition ngcdcsSVS.hpp:121
int status
Definition ngcdcsSVS.hpp:128
void Assign(const char *n, const char *u, double f)
Assign page.
Definition ngcdcsSVS.hpp:144
char unit[8]
Definition ngcdcsSVS.hpp:115
double fault2
Definition ngcdcsSVS.hpp:119
double warn2
Definition ngcdcsSVS.hpp:120
double pgOff
Definition ngcdcsSVS.hpp:122
int enabled
Definition ngcdcsSVS.hpp:127
double avg
Definition ngcdcsSVS.hpp:126
double fault1
Definition ngcdcsSVS.hpp:117
double peak
Definition ngcdcsSVS.hpp:124
double scale
Definition ngcdcsSVS.hpp:116
char name[32]
Definition ngcdcsSVS.hpp:114
double value
Definition ngcdcsSVS.hpp:123
ngcdcsSVS_PAGE()
Constructor.
Definition ngcdcsSVS.hpp:131
virtual ~ngcdcsSVS_PAGE()
Destructor.
Definition ngcdcsSVS.hpp:141
int Action(const char *action, char *reply=NULL)
Execute SVS action.
Definition ngcdcsSVS.cpp:267
int FaultLogOverwrite(int flag)
Set supervisor fault-log overwrite flag.
Definition ngcdcsSVS.cpp:620
ngcdcsSVS_PAGE * page
Supervisor pages.
Definition ngcdcsSVS.hpp:196
int StatusKey(const char *key, const int *idx, char *value, int *status=NULL)
Status.
Definition ngcdcsSvsStatus.cpp:25
int Stop()
Supervisor emergency stop.
Definition ngcdcsSVS.cpp:458
int Disable()
Call-back at transition to not operational state.
Definition ngcdcsSVS.cpp:198
int ResetHistory()
Reset supervisor history (min, peak, average)
Definition ngcdcsSVS.cpp:640
int Info(ngcdcs_svs_info *info)
Get supervisor info.
Definition ngcdcsSVS.cpp:389
void Reset()
Align software state after reset.
Definition ngcdcsSVS.cpp:132
virtual ~ngcdcsSVS()
Destructor.
Definition ngcdcsSVS.cpp:52
int ClearFaultLog()
Clear supervisor fault-log.
Definition ngcdcsSVS.cpp:561
ngcdcsSVS(const ngcb_route_t &r)
Constructor with route and external reference.
Definition ngcdcsSVS.cpp:29
int sensPrefill
Prefill sensor filter windows.
Definition ngcdcsSVS.hpp:184
int Update(int sensor, int force=0)
Run next sensor update cycle.
Definition ngcdcsSVS.cpp:799
int Enable(int check=1)
Call-back at transition to operational state.
Definition ngcdcsSVS.cpp:143
int SensHeat(int flag)
Turn humidity and temperature sensor heater on/off.
Definition ngcdcsSVS.cpp:863
int Status(int *status)
Update supervisor status.
Definition ngcdcsSVS.cpp:653
int ResetPTemp()
Reset pressure/temperature sensor.
Definition ngcdcsSVS.cpp:1154
ngcdcsSHT31_RHUM rhum
Relative humidity sensor (%)
Definition ngcdcsSVS.hpp:172
int ResetPressure()
Reset pressure sensor.
Definition ngcdcsSVS.cpp:1138
ngcdcs_svs_i2c_t i2c[3]
I2C-devices.
Definition ngcdcsSVS.hpp:193
int sensEnabled
Sensor interface disabled/enabled flag.
Definition ngcdcsSVS.hpp:181
double sensSettleTime
Sensor settling time.
Definition ngcdcsSVS.hpp:187
int ResetRHum()
Reset humidity sensor.
Definition ngcdcsSVS.cpp:1106
int ClearFaults()
Clear supervisor faults.
Definition ngcdcsSVS.cpp:540
int ForceFaultLog()
Force supervisor fault-log.
Definition ngcdcsSVS.cpp:580
ngcdcsMPL3115A2_TEMP ptemp
Pressure sensor (kPa)
Definition ngcdcsSVS.hpp:178
ngcdcsMPL3115A2_PRESSURE pressure
Pressure sensor (kPa)
Definition ngcdcsSVS.hpp:175
int FaultLogDepth(int n)
Set supervisor fault-log depth.
Definition ngcdcsSVS.cpp:599
int sensHeat
Humidity and temperature sensor heater on/off flag.
Definition ngcdcsSVS.hpp:190
int ResetSensors(int errFlag=0)
Reset all sensors.
Definition ngcdcsSVS.cpp:1057
int ResetTemp()
Reset temperature sensor.
Definition ngcdcsSVS.cpp:1122
int PageEnable(int flag, int page=255)
Page enable.
Definition ngcdcsSVS.cpp:481
ngcdcsSHT31_TEMP temp
Temperature sensor (degC)
Definition ngcdcsSVS.hpp:169
void Dump(char *s, int idx)
Dump page to string.
Definition ngcdcsSVS.cpp:216
int Restart()
Supervisor restart.
Definition ngcdcsSVS.cpp:520
int Selftest()
Execute selftest.
Definition ngcdcsSVS.cpp:208
int SetupKey(const char *key, const int *idx, const char *value, int *status=NULL)
Setup.
Definition ngcdcsSvsSetup.cpp:25
int SoftReset()
Supervisor soft reset.
Definition ngcdcsSVS.cpp:427
int SensorError(int sensor)
Return sensor error state.
Definition ngcdcsSVS.cpp:1170
#define str2str(s1, s2, n)
Definition ngcb.h:73
#define ngcdcsSVS_STAT_OK
Definition ngcdcsSVS.hpp:43
Definition ngcbIFC.hpp:72
Definition ngcdcsSVS.hpp:77
ngcdcs_svs_i2c_t()
Constructor.
Definition ngcdcsSVS.hpp:82
int flags
Definition ngcdcsSVS.hpp:79
int addr
Definition ngcdcsSVS.hpp:78
Definition ngcdcsSVS.hpp:89
char serialNumber[9]
Definition ngcdcsSVS.hpp:93
ngcdcs_svs_info()
Constructor.
Definition ngcdcsSVS.hpp:98
unsigned short fwNumber
Definition ngcdcsSVS.hpp:95
char revision[3]
Definition ngcdcsSVS.hpp:94
char location[9]
Definition ngcdcsSVS.hpp:92
char date[9]
Definition ngcdcsSVS.hpp:91