22 #ifndef IOController_H_ 23 #define IOController_H_ 25 #include <unordered_map> 28 #include <sigc++/sigc++.h> 29 #include "IOController_i.hh" 30 #include "UniSetTypes.h" 31 #include "UniSetManager.h" 32 #include "Configuration.h" 48 public POA_IOController_i
52 IOController(
const std::string& name,
const std::string& section );
72 CORBA::Boolean undefined,
80 virtual IOController_i::SensorInfoSeq* getSensorSeq(
const uniset::IDSeq& lst )
override;
86 virtual IOController_i::SensorInfoSeq* getSensorsMap()
override;
109 virtual IOController_i::ShortMapSeq* getSensors()
override;
111 #ifndef DISABLE_REST_API 113 virtual Poco::JSON::Object::Ptr httpHelp(
const Poco::URI::QueryParameters& p )
override;
114 virtual Poco::JSON::Object::Ptr httpRequest(
const std::string& req,
const Poco::URI::QueryParameters& p )
override;
121 typedef std::unordered_map<uniset::ObjectId, std::shared_ptr<USensorInfo>> IOStateList;
123 static const long not_specified_value = { std::numeric_limits<long>::max() };
132 typedef sigc::signal<void, std::shared_ptr<USensorInfo>&,
IOController*> ChangeUndefinedStateSignal;
141 ChangeUndefinedStateSignal signal_change_undefined_state(
uniset::ObjectId sid );
142 ChangeUndefinedStateSignal signal_change_undefined_state();
148 inline IOStateList::iterator ioBegin()
150 return ioList.begin();
152 inline IOStateList::iterator ioEnd()
158 return ioList.find(k);
161 inline int ioCount() const noexcept
163 return ioList.size();
170 virtual long localSetValueIt( IOStateList::iterator& it,
const uniset::ObjectId sid,
173 virtual long localGetValue( IOStateList::iterator& it,
const uniset::ObjectId sid );
182 virtual void localFreezeValueIt( IOController::IOStateList::iterator& li,
188 virtual void localFreezeValue( std::shared_ptr<USensorInfo>& usi,
195 virtual long localSetValue( std::shared_ptr<USensorInfo>& usi, CORBA::Long value,
uniset::ObjectId sup_id );
196 long localGetValue( std::shared_ptr<USensorInfo>& usi) ;
198 #ifndef DISABLE_REST_API 200 virtual Poco::JSON::Object::Ptr request_get(
const std::string& req,
const Poco::URI::QueryParameters& p );
201 virtual Poco::JSON::Object::Ptr request_sensors(
const std::string& req,
const Poco::URI::QueryParameters& p );
202 void getSensorInfo( Poco::JSON::Array::Ptr& jdata, std::shared_ptr<USensorInfo>& s,
bool shortInfo =
false );
217 typedef sigc::signal<void, std::shared_ptr<USensorInfo>&,
IOController*> InitSignal;
220 InitSignal signal_init();
231 uniset::Message::Priority p = uniset::Message::Medium,
241 ai.default_val = defval;
244 ai.supplier = sup_id;
245 ai.depend_sid = depend_sid;
270 IOStateList::iterator myioBegin();
271 IOStateList::iterator myioEnd();
274 void initIOList(
const IOStateList&& l );
276 typedef std::function<void(std::shared_ptr<USensorInfo>&)> UFunction;
278 void for_iolist( UFunction f );
281 friend class NCRestorer;
282 friend class SMInterface;
284 std::mutex siganyMutex;
287 std::mutex siganyundefMutex;
297 std::mutex loggingMutex;
301 struct UThresholdInfo;
302 typedef std::list<std::shared_ptr<UThresholdInfo>> ThresholdExtList;
327 static const size_t MaxUserData = 4;
328 void*
userdata[MaxUserData] = {
nullptr,
nullptr,
nullptr,
nullptr };
331 void* getUserData(
size_t index );
332 void setUserData(
size_t index,
void* data );
340 ChangeUndefinedStateSignal sigUndefChange;
344 std::shared_ptr<USensorInfo> d_usi;
348 ThresholdExtList thresholds;
350 size_t nchanges = { 0 };
352 long undef_value = { not_specified_value };
353 long frozen_value = { 0 };
356 void checkDepend( std::shared_ptr<USensorInfo>& d_usi, IOController* );
372 sm.sensor_type =
type;
373 sm.priority = (uniset::Message::Priority)
priority;
419 IOController::IOStateList::iterator
sit;
424 inline bool operator== (
const ThresholdInfo& r )
const 426 return ((
id == r.id) &&
uniset::ObjectId supplier
Definition: IOController_i.idl:110
virtual void activateInit()
Definition: IOController.cc:107
IOController::IOStateList::iterator sit
Definition: IOController.h:419
uniset::ObjectId sid
Definition: IOController.h:416
Definition: CommonEventLoop.h:14
Definition: IOController.h:401
Definition: IOController_i.idl:96
uniset::uniset_rwmutex userdata_lock
Definition: IOController.h:329
Definition: IOController_i.idl:209
long ThresholdId
Definition: UniSetTypes_i.idl:31
virtual bool deactivateObject() override
Definition: IOController.cc:80
Definition: IOController.h:304
virtual void sensorsRegistration()
Definition: IOController.h:213
uniset::uniset_rwmutex val_lock
Definition: IOController.h:324
UniversalIO::IOType type
Definition: IOController_i.idl:103
virtual bool activateObject() override
Definition: IOController.cc:69
bool invert
Definition: IOController.h:422
boolean undefined
Definition: IOController_i.idl:99
sequence< ObjectId > IDSeq
Definition: UniSetTypes_i.idl:89
std::shared_ptr< Configuration > uniset_conf() noexcept
Definition: Configuration.cc:89
const ObjectId DefaultObjectId
Definition: UniSetTypes.h:69
void * userdata[MaxUserData]
Definition: IOController.h:328
unsigned long tv_sec
Definition: IOController_i.idl:108
uniset::ObjectId node
Definition: IOController_i.idl:60
Definition: IOController_i.idl:143
Definition: MessageType.h:126
long lowlimit
Definition: IOController_i.idl:213
sigc::signal< void, std::shared_ptr< USensorInfo > &, IOController * > ChangeSignal
Definition: IOController.h:131
virtual void localSetUndefinedState(IOStateList::iterator &it, bool undefined, const uniset::ObjectId sid)
Definition: IOController.cc:190
long priority
Definition: IOController_i.idl:104
Definition: UniSetManager.h:57
virtual void logging(uniset::SensorMessage &sm)
сохранение информации об изменении состояния датчика
Definition: IOController.cc:496
long d_off_value
Definition: IOController.h:343
Definition: IOController_i.idl:82
long hilimit
Definition: IOController_i.idl:212
void ioUnRegistration(const uniset::ObjectId sid)
Definition: IOController.cc:491
Definition: IOController_i.idl:57
Definition: IOController.h:46
virtual void sensorsUnregistration()
Definition: IOController.cc:86
Definition: IOController_i.idl:205
virtual void dumpToDB()
сохранение состояния всех датчиков в БД
Definition: IOController.cc:524
string< SizeOfObjectType > ObjectType
Definition: UniSetTypes_i.idl:33
CalibrateInfo ci
Definition: IOController_i.idl:107
unsigned long tv_nsec
Definition: IOController_i.idl:109
Definition: UniSetTypes_i.idl:64
void ioRegistration(std::shared_ptr< USensorInfo > &usi)
Definition: IOController.cc:454
long value
Definition: IOController_i.idl:98
long ObjectId
Definition: UniSetTypes_i.idl:30
long d_value
Definition: IOController.h:342
uniset::ObjectId id
Definition: IOController_i.idl:59