22 #ifndef IOController_H_ 23 #define IOController_H_ 25 #include <unordered_map> 27 #include <sigc++/sigc++.h> 28 #include "IOController_i.hh" 29 #include "UniSetTypes.h" 30 #include "UniSetManager.h" 31 #include "Configuration.h" 47 public POA_IOController_i
51 IOController(
const std::string& name,
const std::string& section );
72 CORBA::Boolean undefined,
76 virtual IOController_i::SensorInfoSeq* getSensorSeq(
const uniset::IDSeq& lst )
override;
82 virtual IOController_i::SensorInfoSeq* getSensorsMap()
override;
105 virtual IOController_i::ShortMapSeq* getSensors()
override;
107 #ifndef DISABLE_REST_API 109 virtual Poco::JSON::Object::Ptr httpHelp(
const Poco::URI::QueryParameters& p )
override;
110 virtual Poco::JSON::Object::Ptr httpRequest(
const std::string& req,
const Poco::URI::QueryParameters& p )
override;
117 typedef std::unordered_map<uniset::ObjectId, std::shared_ptr<USensorInfo>> IOStateList;
126 typedef sigc::signal<void, std::shared_ptr<USensorInfo>&,
IOController*> ChangeUndefinedStateSignal;
132 ChangeSignal signal_change_value();
135 ChangeUndefinedStateSignal signal_change_undefined_state(
uniset::ObjectId sid );
136 ChangeUndefinedStateSignal signal_change_undefined_state();
142 inline IOStateList::iterator ioBegin()
144 return ioList.begin();
146 inline IOStateList::iterator ioEnd()
152 return ioList.find(k);
155 inline int ioCount() const noexcept
157 return ioList.size();
164 virtual long localSetValueIt( IOStateList::iterator& it,
const uniset::ObjectId sid,
167 virtual long localGetValue( IOStateList::iterator& it,
const uniset::ObjectId sid );
177 virtual long localSetValue( std::shared_ptr<USensorInfo>& usi, CORBA::Long value,
uniset::ObjectId sup_id );
178 long localGetValue( std::shared_ptr<USensorInfo>& usi) ;
180 #ifndef DISABLE_REST_API 182 virtual Poco::JSON::Object::Ptr request_get(
const std::string& req,
const Poco::URI::QueryParameters& p );
183 virtual Poco::JSON::Object::Ptr request_sensors(
const std::string& req,
const Poco::URI::QueryParameters& p );
184 void getSensorInfo( Poco::JSON::Array::Ptr& jdata, std::shared_ptr<USensorInfo>& s ,
bool shortInfo =
false );
199 typedef sigc::signal<void, std::shared_ptr<USensorInfo>&,
IOController*> InitSignal;
202 InitSignal signal_init();
213 uniset::Message::Priority p = uniset::Message::Medium,
238 return std::move(ai);
250 IOStateList::iterator myioBegin();
251 IOStateList::iterator myioEnd();
254 void initIOList(
const IOStateList&& l );
256 typedef std::function<void(std::shared_ptr<USensorInfo>&)> UFunction;
258 void for_iolist( UFunction f );
261 friend class NCRestorer;
264 std::mutex siganyMutex;
265 ChangeSignal sigAnyChange;
267 std::mutex siganyundefMutex;
268 ChangeSignal sigAnyUndefChange;
277 std::mutex loggingMutex;
282 typedef std::list<std::shared_ptr<UThresholdInfo>> ThresholdExtList;
319 static const size_t MaxUserData = 4;
320 void*
userdata[MaxUserData] = {
nullptr,
nullptr,
nullptr,
nullptr };
323 void* getUserData(
size_t index );
324 void setUserData(
size_t index,
void* data );
329 ChangeSignal sigChange;
332 ChangeUndefinedStateSignal sigUndefChange;
337 std::shared_ptr<USensorInfo> d_usi;
341 ThresholdExtList thresholds;
343 size_t nchanges = { 0 };
346 void checkDepend( std::shared_ptr<USensorInfo>& d_usi,
IOController* );
362 sm.sensor_type =
type;
363 sm.priority = (uniset::Message::Priority)
priority;
409 IOController::IOStateList::iterator
sit;
414 inline bool operator== (
const ThresholdInfo& r )
const 416 return ((
id == r.id) &&
417 (hilimit == r.hilimit) &&
418 (lowlimit == r.lowlimit) &&
419 (invert == r.invert) );
uniset::ObjectId supplier
Definition: IOController_i.idl:105
unsigned long tv_nsec
Definition: IOController_i.idl:210
virtual void activateInit()
Definition: IOController.cc:105
IOController::IOStateList::iterator sit
Definition: IOController.h:409
Definition: SMInterface.h:31
uniset::ObjectId sid
Definition: IOController.h:406
Definition: CallbackTimer.h:29
Definition: IOController.h:391
IOController_i::SensorInfo d_si
Definition: IOController.h:334
Definition: IOController_i.idl:92
short precision
Definition: IOController_i.idl:84
long default_val
Definition: IOController_i.idl:101
long minCal
Definition: IOController_i.idl:82
uniset::uniset_rwmutex userdata_lock
Definition: IOController.h:321
unsigned long tv_sec
Definition: IOController_i.idl:209
Definition: IOController_i.idl:203
long ThresholdId
Definition: UniSetTypes_i.idl:31
virtual bool deactivateObject() override
Definition: IOController.cc:78
Definition: IOController.h:284
virtual void sensorsRegistration()
Definition: IOController.h:195
uniset::uniset_rwmutex val_lock
Definition: IOController.h:316
long maxRaw
Definition: IOController_i.idl:81
UniversalIO::IOType type
Definition: IOController_i.idl:98
virtual bool activateObject() override
Definition: IOController.cc:67
bool invert
Definition: IOController.h:412
boolean undefined
Definition: IOController_i.idl:95
sequence< ObjectId > IDSeq
Definition: UniSetTypes_i.idl:82
std::shared_ptr< Configuration > uniset_conf() noexcept
Definition: Configuration.cc:90
const ObjectId DefaultObjectId
Definition: UniSetTypes.h:69
void * userdata[MaxUserData]
Definition: IOController.h:320
unsigned long tv_sec
Definition: IOController_i.idl:103
uniset::ObjectId node
Definition: IOController_i.idl:59
boolean dbignore
Definition: IOController_i.idl:106
Definition: IOController_i.idl:137
long minRaw
Definition: IOController_i.idl:80
Definition: MessageType.h:124
long lowlimit
Definition: IOController_i.idl:207
sigc::signal< void, std::shared_ptr< USensorInfo > &, IOController * > ChangeSignal
Definition: IOController.h:125
virtual void localSetUndefinedState(IOStateList::iterator &it, bool undefined, const uniset::ObjectId sid)
Definition: IOController.cc:184
long priority
Definition: IOController_i.idl:99
boolean blocked
Definition: IOController_i.idl:96
Definition: UniSetManager.h:57
long maxCal
Definition: IOController_i.idl:83
virtual void logging(uniset::SensorMessage &sm)
сохранение информации об изменении состояния датчика
Definition: IOController.cc:415
long d_off_value
Definition: IOController.h:336
Definition: IOController_i.idl:78
long hilimit
Definition: IOController_i.idl:206
long real_value
Definition: IOController_i.idl:97
void ioUnRegistration(const uniset::ObjectId sid)
Definition: IOController.cc:410
Definition: IOController_i.idl:56
Definition: IOController.h:45
virtual void sensorsUnregistration()
Definition: IOController.cc:84
Definition: IOController_i.idl:199
virtual void dumpToDB()
сохранение состояния всех датчиков в БД
Definition: IOController.cc:443
string< SizeOfObjectType > ObjectType
Definition: UniSetTypes_i.idl:33
boolean invert
Definition: IOController_i.idl:211
CalibrateInfo ci
Definition: IOController_i.idl:102
unsigned long tv_nsec
Definition: IOController_i.idl:104
Definition: UniSetTypes_i.idl:64
void ioRegistration(std::shared_ptr< USensorInfo > &usi)
Definition: IOController.cc:373
long value
Definition: IOController_i.idl:94
long ObjectId
Definition: UniSetTypes_i.idl:30
long d_value
Definition: IOController.h:335
uniset::ObjectId id
Definition: IOController_i.idl:58