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,
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;
119 static const long not_specified_value = { std::numeric_limits<long>::max() };
128 typedef sigc::signal<void, std::shared_ptr<USensorInfo>&,
IOController*> ChangeUndefinedStateSignal;
137 ChangeUndefinedStateSignal signal_change_undefined_state(
uniset::ObjectId sid );
138 ChangeUndefinedStateSignal signal_change_undefined_state();
144 inline IOStateList::iterator ioBegin()
146 return ioList.begin();
148 inline IOStateList::iterator ioEnd()
154 return ioList.find(k);
157 inline int ioCount() const noexcept
159 return ioList.size();
166 virtual long localSetValueIt( IOStateList::iterator& it,
const uniset::ObjectId sid,
169 virtual long localGetValue( IOStateList::iterator& it,
const uniset::ObjectId sid );
179 virtual long localSetValue( std::shared_ptr<USensorInfo>& usi, CORBA::Long value,
uniset::ObjectId sup_id );
180 long localGetValue( std::shared_ptr<USensorInfo>& usi) ;
182 #ifndef DISABLE_REST_API 184 virtual Poco::JSON::Object::Ptr request_get(
const std::string& req,
const Poco::URI::QueryParameters& p );
185 virtual Poco::JSON::Object::Ptr request_sensors(
const std::string& req,
const Poco::URI::QueryParameters& p );
186 void getSensorInfo( Poco::JSON::Array::Ptr& jdata, std::shared_ptr<USensorInfo>& s ,
bool shortInfo =
false );
201 typedef sigc::signal<void, std::shared_ptr<USensorInfo>&,
IOController*> InitSignal;
204 InitSignal signal_init();
215 uniset::Message::Priority p = uniset::Message::Medium,
224 ai.default_val = defval;
227 ai.supplier = sup_id;
252 IOStateList::iterator myioBegin();
253 IOStateList::iterator myioEnd();
256 void initIOList(
const IOStateList&& l );
258 typedef std::function<void(std::shared_ptr<USensorInfo>&)> UFunction;
260 void for_iolist( UFunction f );
263 friend class NCRestorer;
264 friend class SMInterface;
266 std::mutex siganyMutex;
269 std::mutex siganyundefMutex;
279 std::mutex loggingMutex;
283 struct UThresholdInfo;
284 typedef std::list<std::shared_ptr<UThresholdInfo>> ThresholdExtList;
309 static const size_t MaxUserData = 4;
310 void*
userdata[MaxUserData] = {
nullptr,
nullptr,
nullptr,
nullptr };
313 void* getUserData(
size_t index );
314 void setUserData(
size_t index,
void* data );
322 ChangeUndefinedStateSignal sigUndefChange;
327 std::shared_ptr<USensorInfo> d_usi;
331 ThresholdExtList thresholds;
333 size_t nchanges = { 0 };
335 long undef_value = { not_specified_value };
338 void checkDepend( std::shared_ptr<USensorInfo>& d_usi, IOController* );
354 sm.sensor_type =
type;
355 sm.priority = (uniset::Message::Priority)
priority;
401 IOController::IOStateList::iterator
sit;
406 inline bool operator== (
const ThresholdInfo& r )
const 408 return ((
id == r.id) &&
uniset::ObjectId supplier
Definition: IOController_i.idl:106
virtual void activateInit()
Definition: IOController.cc:105
IOController::IOStateList::iterator sit
Definition: IOController.h:401
uniset::ObjectId sid
Definition: IOController.h:398
Definition: CommonEventLoop.h:14
Definition: IOController.h:383
IOController_i::SensorInfo d_si
Definition: IOController.h:324
Definition: IOController_i.idl:93
uniset::uniset_rwmutex userdata_lock
Definition: IOController.h:311
Definition: IOController_i.idl:204
long ThresholdId
Definition: UniSetTypes_i.idl:31
virtual bool deactivateObject() override
Definition: IOController.cc:78
Definition: IOController.h:286
virtual void sensorsRegistration()
Definition: IOController.h:197
uniset::uniset_rwmutex val_lock
Definition: IOController.h:306
UniversalIO::IOType type
Definition: IOController_i.idl:99
virtual bool activateObject() override
Definition: IOController.cc:67
bool invert
Definition: IOController.h:404
boolean undefined
Definition: IOController_i.idl:96
sequence< ObjectId > IDSeq
Definition: UniSetTypes_i.idl:89
std::shared_ptr< Configuration > uniset_conf() noexcept
Definition: Configuration.cc:91
const ObjectId DefaultObjectId
Definition: UniSetTypes.h:69
void * userdata[MaxUserData]
Definition: IOController.h:310
unsigned long tv_sec
Definition: IOController_i.idl:104
uniset::ObjectId node
Definition: IOController_i.idl:60
Definition: IOController_i.idl:138
Definition: MessageType.h:126
long lowlimit
Definition: IOController_i.idl:208
sigc::signal< void, std::shared_ptr< USensorInfo > &, IOController * > ChangeSignal
Definition: IOController.h:127
virtual void localSetUndefinedState(IOStateList::iterator &it, bool undefined, const uniset::ObjectId sid)
Definition: IOController.cc:188
long priority
Definition: IOController_i.idl:100
Definition: UniSetManager.h:57
virtual void logging(uniset::SensorMessage &sm)
сохранение информации об изменении состояния датчика
Definition: IOController.cc:428
long d_off_value
Definition: IOController.h:326
Definition: IOController_i.idl:79
long hilimit
Definition: IOController_i.idl:207
void ioUnRegistration(const uniset::ObjectId sid)
Definition: IOController.cc:423
Definition: IOController_i.idl:57
Definition: IOController.h:46
virtual void sensorsUnregistration()
Definition: IOController.cc:84
Definition: IOController_i.idl:200
virtual void dumpToDB()
сохранение состояния всех датчиков в БД
Definition: IOController.cc:456
string< SizeOfObjectType > ObjectType
Definition: UniSetTypes_i.idl:33
CalibrateInfo ci
Definition: IOController_i.idl:103
unsigned long tv_nsec
Definition: IOController_i.idl:105
Definition: UniSetTypes_i.idl:64
void ioRegistration(std::shared_ptr< USensorInfo > &usi)
Definition: IOController.cc:386
long value
Definition: IOController_i.idl:95
long ObjectId
Definition: UniSetTypes_i.idl:30
long d_value
Definition: IOController.h:325
uniset::ObjectId id
Definition: IOController_i.idl:59