1 #ifndef __UACONTROLVARIABLE_H__ 2 #define __UACONTROLVARIABLE_H__ 4 #include "uaobjecttypes.h" 5 #include "uabasenodes.h" 6 #include <opcua_dataitemtype.h> 7 #include <opcua_basedatavariabletype.h> 9 #include "boost/bind.hpp" 10 #include "boost/signals2.hpp" 15 #include <opcua_baseobjecttype.h> 19 class NmBuildingAutomation;
25 public OpcUa::BaseDataVariableType
41 UaMutexRefCounted* pSharedMutex
46 const UaNodeId& newNodeId,
49 UaMutexRefCounted* pSharedMutex
66 virtual UaStatus
write(UaDataValue &udv) {
82 virtual UaStatus
setValue(Session *pSession,
const UaDataValue& dataValue,OpcUa_Boolean checkAccessLevel)
87 ret = OpcUa::BaseDataVariableType::setValue(pSession, dataValue, checkAccessLevel);
99 virtual UaStatus
setValueOnChange(Session *pSession,
const UaDataValue& dataValue, OpcUa_Boolean checkAccessLevel)
105 ret = OpcUa::BaseDataVariableType::setValue(pSession, dataValue, checkAccessLevel);
107 valueChange(pSession, dataValue, checkAccessLevel);
133 boost::signals2::signal<void(Session *pSession, const UaDataValue& dataValue, OpcUa_Boolean checkAccessLevel) >
valueChange;
139 const OpcUa_Variant *val = dataValue.value();
141 switch (val->Datatype) {
142 case OpcUaType_Boolean:
145 case OpcUaType_SByte:
151 case OpcUaType_Int16:
154 case OpcUaType_UInt16:
157 case OpcUaType_Int32:
160 case OpcUaType_UInt32:
163 case OpcUaType_Int64:
164 curValue = (double)val->Value.Int64;
166 case OpcUaType_UInt64:
167 curValue = (
double)val->Value.UInt64;
169 case OpcUaType_Float:
172 case OpcUaType_Double:
214 UaVariable *instance,
217 UaMutexRefCounted* pSharedMutex
232 const UaString&
name,
233 const UaNodeId& newNodeId,
236 UaVariableType *instance,
239 UaMutexRefCounted* pSharedMutex
242 virtual UaStatus
write(UaDataValue &udv);
245 virtual UaStatus
read();
251 virtual UaStatus
read(IOVariableCallback *iom);
257 setValueHandling(UaVariable_Value_CacheIsSource);
258 setAccessLevel(Ua_AccessLevel_CurrentRead );
261 setValueHandling(UaVariable_Value_Cache);
262 setAccessLevel(Ua_AccessLevel_CurrentWrite);
265 setValueHandling(UaVariable_Value_Cache);
266 setAccessLevel(Ua_AccessLevel_CurrentRead | Ua_AccessLevel_CurrentWrite);