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"
39 public POA_IOController_i
43 IOController(
const std::string& name,
const std::string& section );
64 CORBA::Boolean undefined,
68 virtual IOController_i::SensorInfoSeq* getSensorSeq(
const uniset::IDSeq& lst )
override;
74 virtual IOController_i::SensorInfoSeq* getSensorsMap()
override;
97 virtual IOController_i::ShortMapSeq* getSensors()
override;
99 #ifndef DISABLE_REST_API
101 virtual Poco::JSON::Object::Ptr httpHelp(
const Poco::URI::QueryParameters& p )
override;
102 virtual Poco::JSON::Object::Ptr httpRequest(
const std::string& req,
const Poco::URI::QueryParameters& p )
override;
109 typedef std::unordered_map<uniset::ObjectId, std::shared_ptr<USensorInfo>> IOStateList;
118 typedef sigc::signal<void, std::shared_ptr<USensorInfo>&,
IOController*> ChangeUndefinedStateSignal;
124 ChangeSignal signal_change_value();
127 ChangeUndefinedStateSignal signal_change_undefined_state(
uniset::ObjectId sid );
128 ChangeUndefinedStateSignal signal_change_undefined_state();
133 inline IOStateList::iterator ioBegin()
135 return ioList.begin();
137 inline IOStateList::iterator ioEnd()
143 return ioList.find(k);
145 inline int ioCount()
const
147 return ioList.size();
154 virtual long localSetValueIt( IOStateList::iterator& it,
const uniset::ObjectId sid,
157 virtual long localGetValue( IOStateList::iterator& it,
const uniset::ObjectId sid );
167 virtual long localSetValue( std::shared_ptr<USensorInfo>& usi, CORBA::Long value,
uniset::ObjectId sup_id );
168 long localGetValue( std::shared_ptr<USensorInfo>& usi) ;
170 #ifndef DISABLE_REST_API
172 virtual Poco::JSON::Object::Ptr request_get(
const std::string& req,
const Poco::URI::QueryParameters& p );
173 virtual Poco::JSON::Object::Ptr request_sensors(
const std::string& req,
const Poco::URI::QueryParameters& p );
174 void getSensorInfo( Poco::JSON::Array::Ptr& jdata, std::shared_ptr<USensorInfo>& s ,
bool shortInfo =
false );
189 typedef sigc::signal<void, std::shared_ptr<USensorInfo>&,
IOController*> InitSignal;
192 InitSignal signal_init();
197 void ioRegistration(std::shared_ptr<USensorInfo>& usi,
bool force =
false );
205 uniset::Message::Priority p = uniset::Message::Medium,
230 return std::move(ai);
242 IOStateList::iterator myioBegin();
243 IOStateList::iterator myioEnd();
249 friend class NCRestorer;
250 friend class SMInterface;
252 std::mutex siganyMutex;
253 ChangeSignal sigAnyChange;
255 std::mutex siganyundefMutex;
256 ChangeSignal sigAnyUndefChange;
264 std::mutex loggingMutex;
301 static const size_t MaxUserData = 4;
302 void*
userdata[MaxUserData] = {
nullptr,
nullptr,
nullptr,
nullptr };
307 ChangeSignal sigChange;
310 ChangeUndefinedStateSignal sigUndefChange;
315 std::shared_ptr<USensorInfo> d_usi;
317 size_t nchanges = { 0 };
320 void checkDepend( std::shared_ptr<USensorInfo>& d_usi,
IOController* );
336 sm.sensor_type =
type;
337 sm.priority = (uniset::Message::Priority)
priority;
350 return std::move(sm);
uniset::ObjectId supplier
Definition: IOController_i.idl:105
virtual void activateInit()
Definition: IOController.cc:99
Definition: CallbackTimer.h:29
IOController_i::SensorInfo d_si
Definition: IOController.h:312
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
virtual bool deactivateObject() override
Definition: IOController.cc:72
Definition: IOController.h:267
virtual void sensorsRegistration()
Definition: IOController.h:185
uniset::uniset_rwmutex val_lock
Definition: IOController.h:299
long maxRaw
Definition: IOController_i.idl:81
UniversalIO::IOType type
Definition: IOController_i.idl:98
virtual bool activateObject() override
Definition: IOController.cc:61
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:89
const ObjectId DefaultObjectId
Definition: UniSetTypes.h:56
void * userdata[MaxUserData]
Definition: IOController.h:302
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:122
sigc::signal< void, std::shared_ptr< USensorInfo > &, IOController * > ChangeSignal
Definition: IOController.h:117
virtual void localSetUndefinedState(IOStateList::iterator &it, bool undefined, const uniset::ObjectId sid)
Definition: IOController.cc:178
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:438
long d_off_value
Definition: IOController.h:314
void ioRegistration(std::shared_ptr< USensorInfo > &usi, bool force=false)
Definition: IOController.cc:367
Definition: IOController_i.idl:78
long real_value
Definition: IOController_i.idl:97
void ioUnRegistration(const uniset::ObjectId sid)
Definition: IOController.cc:433
Definition: IOController_i.idl:56
Definition: IOController.h:37
virtual void sensorsUnregistration()
Definition: IOController.cc:78
virtual void dumpToDB()
сохранение состояния всех датчиков в БД
Definition: IOController.cc:468
string< SizeOfObjectType > ObjectType
Definition: UniSetTypes_i.idl:33
CalibrateInfo ci
Definition: IOController_i.idl:102
unsigned long tv_nsec
Definition: IOController_i.idl:104
Definition: UniSetTypes_i.idl:64
long value
Definition: IOController_i.idl:94
long ObjectId
Definition: UniSetTypes_i.idl:30
long d_value
Definition: IOController.h:313
uniset::ObjectId id
Definition: IOController_i.idl:58