UniSet 2.32.1
SMemoryTest/TestProc_SK.h
1
2// --------------------------------------------------------------------------
3/*
4 DO NOT EDIT THIS FILE. IT IS AUTOGENERATED FILE.
5 ALL YOUR CHANGES WILL BE LOST.
6
7 НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ. ЭТОТ ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ.
8 ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ.
9*/
10// --------------------------------------------------------------------------
11// generate timestamp: 2023-07-19
12// -----------------------------------------------------------------------------
13#ifndef TestProc_SK_H_
14#define TestProc_SK_H_
15// -----------------------------------------------------------------------------
16#include <memory>
17#include <string>
18#include <unordered_map>
19#include <sstream>
20#include "UniSetObject.h"
21#include "UniXML.h"
22#include "Trigger.h"
23#include "DebugStream.h"
24#include "LogServer.h"
25#include "LogAgregator.h"
26#include "VMonitor.h"
27// -----------------------------------------------------------------------------
28class TestProc_SK:
30{
31 public:
32 TestProc_SK( uniset::ObjectId id, xmlNode* node=uniset::uniset_conf()->getNode("TestProc"), const std::string& argprefix="", xmlNode* globalConfNode=nullptr );
34 virtual ~TestProc_SK();
35
36
37 long getValue( uniset::ObjectId sid );
38 void setValue( uniset::ObjectId sid, long value );
39 void askSensor( uniset::ObjectId sid, UniversalIO::UIOCommand, uniset::ObjectId node = uniset::uniset_conf()->getLocalNode() );
40
41 void updateValues();
42 virtual bool setMsg( uniset::ObjectId code, bool state = true ) noexcept;
43
44 virtual uniset::SimpleInfo* getInfo( const char* userparam ) override;
45
46 inline std::shared_ptr<DebugStream> log() noexcept { return mylog; }
47 inline std::shared_ptr<uniset::LogAgregator> logAgregator() noexcept { return loga; }
48
49 void init_dlog( std::shared_ptr<DebugStream> d ) noexcept;
50
51 // "синтаксический сахар"..для логов
52 #ifndef myinfo
53 #define myinfo if( log()->debugging(Debug::INFO) ) log()->info()
54 #endif
55 #ifndef mywarn
56 #define mywarn if( log()->debugging(Debug::WARN) ) log()->warn()
57 #endif
58 #ifndef mycrit
59 #define mycrit if( log()->debugging(Debug::CRIT) ) log()->crit()
60 #endif
61 #ifndef mylog1
62 #define mylog1 if( log()->debugging(Debug::LEVEL1) ) log()->level1()
63 #endif
64 #ifndef mylog2
65 #define mylog2 if( log()->debugging(Debug::LEVEL2) ) log()->level2()
66 #endif
67 #ifndef mylog3
68 #define mylog3 if( log()->debugging(Debug::LEVEL3) ) log()->level3()
69 #endif
70 #ifndef mylog4
71 #define mylog4 if( log()->debugging(Debug::LEVEL4) ) log()->level4()
72 #endif
73 #ifndef mylog5
74 #define mylog5 if( log()->debugging(Debug::LEVEL5) ) log()->level5()
75 #endif
76 #ifndef mylog6
77 #define mylog6 if( log()->debugging(Debug::LEVEL6) ) log()->level6()
78 #endif
79 #ifndef mylog7
80 #define mylog7 if( log()->debugging(Debug::LEVEL7) ) log()->level7()
81 #endif
82 #ifndef mylog8
83 #define mylog8 if( log()->debugging(Debug::LEVEL8) ) log()->level8()
84 #endif
85 #ifndef mylog9
86 #define mylog9 if( log()->debugging(Debug::LEVEL9) ) log()->level9()
87 #endif
88 #ifndef mylogany
89 #define mylogany log()->any()
90 #endif
91 #ifndef vmonit
92 #define vmonit( var ) vmon.add( #var, var )
93 #endif
94
95 // Вспомогательные функции для удобства логирования
96 // ------------------------------------------------------------
104 std::string dumpIO();
109 std::string str( uniset::ObjectId id, bool showLinkName=true ) const;
110
115 std::string strval( uniset::ObjectId id, bool showLinkName=true ) const;
116
121 std::string msgstr( uniset::ObjectId id, bool showLinkName=true ) const;
122
123
125 inline std::string dumpVars(){ return vmon.pretty_str(); }
126 // ------------------------------------------------------------
127 std::string help() const noexcept;
128
129
130#ifndef DISABLE_REST_API
131 // HTTP API
132 virtual Poco::JSON::Object::Ptr httpGet( const Poco::URI::QueryParameters& p ) override;
133 virtual Poco::JSON::Object::Ptr httpRequest( const std::string& req, const Poco::URI::QueryParameters& p ) override;
134 virtual Poco::JSON::Object::Ptr httpHelp( const Poco::URI::QueryParameters& p ) override;
135#endif
136
137 // Используемые идентификаторы
138
139 const uniset::ObjectId on_s;
140 const uniset::ObjectId node_on_s;
141
143 const uniset::ObjectId node_lamp_c;
144
146 const uniset::ObjectId node_depend_c;
147
149 const uniset::ObjectId node_d1_check_s;
150
152 const uniset::ObjectId node_d2_check_s;
153
155 const uniset::ObjectId node_set_d1_check_s;
156
158 const uniset::ObjectId node_set_d2_check_s;
159
161 const uniset::ObjectId node_undef_c;
162
164 const uniset::ObjectId node_check_undef_s;
165
167 const uniset::ObjectId node_t_set_c;
168
170 const uniset::ObjectId node_t_check_s;
171
172 const uniset::ObjectId log_c;
173 const uniset::ObjectId node_log_c;
174
175 const uniset::ObjectId log_s;
176 const uniset::ObjectId node_log_s;
177
178
179 // Используемые идентификаторы сообщений
180
181
182 // Текущее значение
183 const long& in_on_s;
184 long out_lamp_c;
185 long out_depend_c;
186 const long& in_d1_check_s;
187 const long& in_d2_check_s;
188 long out_set_d1_check_s;
189 long out_set_d2_check_s;
190 long out_undef_c;
191 const long& in_check_undef_s;
192 long out_t_set_c;
193 const long& in_t_check_s;
194 long out_log_c;
195 const long& in_log_s;
196
197
198 // --- public variables ---
199
200 const int changeTime;
201 const int checkWorkingTime;
202 const int checkTime;
203 const int checkLogTime;
205 // --- end of public variables ---
206
207 protected:
208
209 // --- protected variables ---
210
211
212 // ---- end of protected variables ----
213
214 virtual void callback() noexcept override;
215 virtual void processingMessage( const uniset::VoidMessage* msg ) override;
216 virtual void sysCommand( const uniset::SystemMessage* sm ) override {}
217 virtual void askSensors( UniversalIO::UIOCommand cmd ) {}
218 virtual void sensorInfo( const uniset::SensorMessage* sm ) override {}
219 virtual void timerInfo( const uniset::TimerMessage* tm ) override {}
220 virtual bool activateObject() override;
221 virtual bool deactivateObject() override;
222 virtual std::string getMonitInfo() const { return ""; }
223 virtual std::string getTypeOfMessage( int t ) const { return uniset::strTypeOfMessage(t); }
225#ifndef DISABLE_REST_API
226 virtual void httpGetUserData( Poco::JSON::Object::Ptr& jdata ){}
227 virtual Poco::JSON::Object::Ptr httpDumpIO();
228 virtual Poco::JSON::Object::Ptr httpRequestLog( const Poco::URI::QueryParameters& p );
229 virtual Poco::JSON::Object::Ptr request_params_set( const std::string& req, const Poco::URI::QueryParameters& p ) override;
230 virtual Poco::JSON::Object::Ptr request_params_get( const std::string& req, const Poco::URI::QueryParameters& p ) override;
231#endif
232
233 void preAskSensors( UniversalIO::UIOCommand cmd );
234 void preSysCommand( const uniset::SystemMessage* sm );
235
236
237 bool waitSM( int wait_msec, uniset::ObjectId testID = uniset::DefaultObjectId );
238 uniset::ObjectId getSMTestID() const;
239
240 // Выполнение очередного шага программы
241 virtual void step(){}
242
243 void updateOutputs( bool force );
244 void resetMsg();
245 uniset::Trigger trResetMsg;
246 uniset::PassiveTimer ptResetMsg;
247 int resetMsgTime;
248
249 int sleep_msec;
250 bool forceOut = { false };
253 bool active;
254
255 const std::string argprefix;
258 // управление датчиком "сердцебиения"
259 uniset::PassiveTimer ptHeartBeat;
261 long maxHeartBeat;
263 xmlNode* confnode;
265 int getIntProp(const std::string& name) { return uniset::uniset_conf()->getIntProp(confnode, name); }
267 inline const std::string getProp(const std::string& name) { return uniset::uniset_conf()->getProp(confnode, name); }
268
269 uniset::timeout_t smReadyTimeout;
270 std::atomic_bool activated = { false };
271 std::atomic_bool canceled = { false };
272 uniset::timeout_t activateTimeout;
274 int askPause;
277
278 std::shared_ptr<uniset::LogAgregator> loga;
279 std::shared_ptr<DebugStream> mylog;
280 std::shared_ptr<uniset::LogServer> logserv;
281 std::string logserv_host = {""};
282 int logserv_port = {0};
283
284 uniset::VMonitor vmon;
285
286
287
288 private:
289
290 // --- private variables ---
291 // --- end of private variables ---
292
293 // предыдущее значение (для работы UpdateValue())
294 long prev_in_on_s;
295 long prev_out_lamp_c;
296 long prev_out_depend_c;
297 long prev_in_d1_check_s;
298 long prev_in_d2_check_s;
299 long prev_out_set_d1_check_s;
300 long prev_out_set_d2_check_s;
301 long prev_out_undef_c;
302 long prev_in_check_undef_s;
303 long prev_out_t_set_c;
304 long prev_in_t_check_s;
305 long prev_out_log_c;
306 long prev_in_log_s;
307
308
309 // Текущее значение (rw-переменные)
310 long priv_in_on_s;
311 long priv_in_d1_check_s;
312 long priv_in_d2_check_s;
313 long priv_in_check_undef_s;
314 long priv_in_t_check_s;
315 long priv_in_log_s;
316
317
318 // Используемые идентификаторы сообщений
319
320 // ------------ private функции ---------------
321
322 void updatePreviousValues() noexcept;
323 void checkSensors();
324 void initFromSM();
325
326 void preSensorInfo( const uniset::SensorMessage* sm );
327 void preTimerInfo( const uniset::TimerMessage* tm );
328 // --------------------------------------------
329
330 class StatHashFn
331 {
332 public:
333 size_t operator() (const uniset::ObjectId& key) const
334 {
335 return std::hash<long>()(key);
336 }
337 };
338
339 std::unordered_map<const uniset::ObjectId,size_t, StatHashFn> smStat;
340 size_t processingMessageCatchCount = { 0 };
342 std::unordered_map<long,size_t> msgTypeStat;
344 std::string ostate = { "" };
347 bool end_private; // вспомогательное поле (для внутреннего использования при генерировании кода)
348};
349
350// -----------------------------------------------------------------------------
351#endif // TestProc_SK_H_
Definition DebugStream.h:62
Definition MBSlaveTest/TestProc_SK.h:30
std::string dumpIO()
long maxHeartBeat
Definition MBSlaveTest/TestProc_SK.h:264
const uniset::ObjectId undef_c
Definition MBSlaveTest/TestProc_SK.h:160
virtual bool activateObject() override
Активизация объекта (переопределяется для необходимых действий после активизации)
const int checkLogTime
Definition MBSlaveTest/TestProc_SK.h:203
const uniset::ObjectId log_s
Definition MBSlaveTest/TestProc_SK.h:175
uniset::PassiveTimer ptStartUpTimeout
Definition MBSlaveTest/TestProc_SK.h:276
const uniset::ObjectId set_d1_check_s
Definition MBSlaveTest/TestProc_SK.h:154
virtual void callback() noexcept override
virtual void processingMessage(const uniset::VoidMessage *msg) override
const uniset::ObjectId d1_check_s
Definition MBSlaveTest/TestProc_SK.h:148
int sleep_msec
Definition MBSlaveTest/TestProc_SK.h:252
virtual void httpGetUserData(Poco::JSON::Object::Ptr &jdata)
Definition SMemoryTest/TestProc_SK.h:226
std::string msgstr(uniset::ObjectId id, bool showLinkName=true) const
uniset::timeout_t smReadyTimeout
Definition MBSlaveTest/TestProc_SK.h:272
const uniset::ObjectId t_set_c
Definition MBSlaveTest/TestProc_SK.h:166
const uniset::ObjectId log_c
Definition MBSlaveTest/TestProc_SK.h:172
virtual std::string getTypeOfMessage(int t) const
Definition SMemoryTest/TestProc_SK.h:223
int getIntProp(const std::string &name)
Definition SMemoryTest/TestProc_SK.h:265
virtual bool deactivateObject() override
Деактивация объекта (переопределяется для необходимых действий при завершении работы)
const int checkWorkingTime
Definition MBSlaveTest/TestProc_SK.h:201
const uniset::ObjectId check_undef_s
Definition MBSlaveTest/TestProc_SK.h:163
const uniset::ObjectId lamp_c
Definition MBSlaveTest/TestProc_SK.h:142
std::string strval(uniset::ObjectId id, bool showLinkName=true) const
const uniset::ObjectId on_s
Definition MBSlaveTest/TestProc_SK.h:139
const int checkTime
Definition MBSlaveTest/TestProc_SK.h:202
const uniset::ObjectId depend_c
Definition MBSlaveTest/TestProc_SK.h:145
uniset::timeout_t activateTimeout
Definition MBSlaveTest/TestProc_SK.h:275
const uniset::ObjectId d2_check_s
Definition MBSlaveTest/TestProc_SK.h:151
const std::string getProp(const std::string &name)
Definition SMemoryTest/TestProc_SK.h:267
bool forceOut
Definition MBSlaveTest/TestProc_SK.h:253
const int changeTime
Definition MBSlaveTest/TestProc_SK.h:200
uniset::ObjectId idHeartBeat
Definition MBSlaveTest/TestProc_SK.h:263
uniset::ObjectId smTestID
Definition MBSlaveTest/TestProc_SK.h:259
const uniset::ObjectId t_check_s
Definition MBSlaveTest/TestProc_SK.h:169
int askPause
Definition MBSlaveTest/TestProc_SK.h:277
std::string str(uniset::ObjectId id, bool showLinkName=true) const
const uniset::ObjectId set_d2_check_s
Definition MBSlaveTest/TestProc_SK.h:157
virtual std::string getMonitInfo() const
Definition SMemoryTest/TestProc_SK.h:222
xmlNode * confnode
Definition MBSlaveTest/TestProc_SK.h:266
std::string dumpVars()
Definition SMemoryTest/TestProc_SK.h:125
Пассивный таймер
Definition PassiveTimer.h:94
Definition MessageType.h:127
Definition MessageType.h:171
Definition MessageType.h:214
Definition Trigger.h:31
Definition UniSetObject.h:80
Definition VMonitor.h:117
std::string pretty_str(int namewidth=NameWidth, int colnum=ColCount) const
Definition VMonitor.cc:186
STL namespace.
Definition Calibration.h:27
KeyType key(const uniset::ObjectId id, const uniset::ObjectId node)
Definition UniSetTypes.cc:980
const ObjectId DefaultObjectId
Definition UniSetTypes.h:71
std::shared_ptr< Configuration > uniset_conf() noexcept
Definition Configuration.cc:90
long ObjectId
Definition UniSetTypes_i.idl:30
Definition IOController_i.idl:58