64 UaDataValue attrValue;
72 UA_ASSERT(ret.isGood());
75 UA_ASSERT(ret.isGood());
78 UA_ASSERT(ret.isGood());
80 ret = createItems<NODETYPE>(xsdObject, pNodeManager);
81 UA_ASSERT(ret.isGood());
85 UA_ASSERT(ret.isGood());
88 UA_ASSERT(ret.isGood());
91 UA_ASSERT(ret.isGood());
93 ret = createItems<NODE>(nd, pNodeManager);
94 UA_ASSERT(ret.isGood());
97 UA_ASSERT(ret.isGood());
102 UaStatus ret = OpcUa_Good;
257 OpcUa_BuiltInType typeName;
259 UaVariant defaultValue;
264 OpcUa_Byte nch = pit.
numch();
282 ret = pNodeManager->addNodeAndReference(
this,pUaPdo, OpcUaId_HasComponent);
283 UA_ASSERT(ret.isGood());
288 for (OpcUa_Byte i = 0; i < nch; i++)
292 name = pt->name().c_str();
293 name += UaString(
"_%1").arg(i);
298 defaultValue.changeType(typeName,
false);
303 udb,pUaPdo->getSharedMutex());
304 ret = pNodeManager->addNodeAndReference( pUaPdo,pUaPdoItem, OpcUaId_HasComponent);
306 pUaPdoItem->setDataType(UaNodeId(typeName));
307 uadef.setDataValue(defaultValue, OpcUa_False, OpcUa_BadWaitingForInitialData, UaDateTime::now(), UaDateTime::now());
308 pUaPdoItem->
setValue(0, uadef, OpcUa_False);
322 name = pit1->name().c_str();
326 defaultValue.changeType(typeName,
false);
331 udb,pUaPdo->getSharedMutex());
332 ret = pNodeManager->addNodeAndReference( pUaPdo,pUaPdoItem, OpcUaId_HasComponent);
333 pUaPdoItem->setDataType(UaNodeId(typeName));
335 uadef.setDataValue(defaultValue, OpcUa_False, OpcUa_BadWaitingForInitialData, UaDateTime::now(), UaDateTime::now());
336 pUaPdoItem->
setValue(0, uadef, OpcUa_False);
353 UaNodeId uaId,uaIdsdo;
355 OpcUa_BuiltInType typeName;
358 UaVariant defaultValue;
363 if (! sit1.empty() ) {
365 OpcUa_Int32 len = sit1.size();
366 for (OpcUa_Int32 l = 0; l < len ; l++)
368 name = sit1[l].name().c_str();
377 ret = pNodeManager->addNodeAndReference(
this,pUasdo, OpcUaId_HasComponent);
378 UA_ASSERT(ret.isGood());
380 sitem1 = sit1[l].SDOITEM();
382 if (!sitem1.empty()) {
388 name = sitem->name().c_str();
390 UaString nTmp = UaString(
"%1.%2").arg(uaIdsdo.toString()).arg(
name);
391 uaId = UaNodeId(nTmp,pNodeManager->getNameSpaceIndex());
393 defaultValue.setInt32(0);
394 defaultValue.changeType(typeName,
false);
400 static_cast<pUserDeviceStruct*>(pUasdo->getUserData()),pUasdo->getSharedMutex());
402 pUaSdoItem->setValueHandling(UaVariable_Value_Cache);
404 pUaSdoItem->setDataType(UaNodeId(typeName));
406 ret = pNodeManager->addNodeAndReference(pUasdo,pUaSdoItem, OpcUaId_HasComponent);
410 if (sdoi3.present()) {
411 name = sdoi3.get().name().c_str();
412 for (
int n = 0; n < sdoi3.get().number(); n++)
414 name += UaString(
"_%1").arg(n);
418 defaultValue.setInt32(0);
419 defaultValue.changeType(typeName,
false);
426 pUaSdoItem->setValueHandling(UaVariable_Value_Cache);
428 pUaSdoItem->setDataType(UaNodeId(typeName));
430 ret = pNodeManager->addNodeAndReference(pUasdo,pUaSdoItem, OpcUaId_HasComponent);
444 OpcUa_BuiltInType typeName;
447 UaVariant defaultValue;
451 name = sit->name().c_str();
459 ret = pNodeManager->addNodeAndReference(
this,pUasdo, OpcUaId_Organizes);
460 UA_ASSERT(ret.isGood());
464 name = sitem->name().c_str();
469 defaultValue.setInt32(0);
470 defaultValue.changeType(typeName,
false);
477 pUaSdoItem->setDataType(UaNodeId(typeName));
479 ret = pNodeManager->addNodeAndReference(pUasdo,pUaSdoItem, OpcUaId_HasComponent);
482 if (sdoi3.present()) {
483 name = sdoi3.get().name().c_str();
484 for (
int n = 0; n < sdoi3.get().number(); n++)
486 name += UaString(
"_%1").arg(n);
490 defaultValue.setInt32(0);
491 defaultValue.changeType(typeName,
false);
499 pUaSdoItem->setDataType(UaNodeId(typeName));
501 ret = pNodeManager->addNodeAndReference(pUasdo,pUaSdoItem, OpcUaId_HasComponent);
522 name = pit->name().c_str();
526 pProg =
new UaProgramItem(pt, prType, uaId, pNodeManager,
this, static_cast<pUserDeviceStruct*>(getUserData()));
528 ret = pNodeManager->addNodeAndReference(
this, pProg, OpcUaId_Organizes);
529 UA_ASSERT(ret.isGood());
542 OpcUa_BuiltInType typeName;
544 UaVariant defaultValue;
549 name = sit->name().c_str();
553 defaultValue.setInt32(0);
554 defaultValue.changeType(typeName,
false);
560 pUaSdoItem =
new UaControlDeviceItem(
name,uaId,pNodeManager,defaultValue,prType,&(*sit),pCanInter,getSharedMutex());
562 pUaSdoItem->setValueHandling(UaVariable_Value_Cache);
563 pUaSdoItem->setDataType(UaNodeId(typeName));
564 ret = pNodeManager->addNodeAndReference(
this, pUaSdoItem, OpcUaId_HasComponent);
576 OpcUa_BuiltInType typeName;
578 UaVariant defaultValue;
584 name = sit->name().c_str();
588 defaultValue.setInt32(0);
589 defaultValue.changeType(typeName,
false);
594 pUaSdoItem =
new UaControlDeviceItem(
name,uaId,pNodeManager,defaultValue,prType,&(*sit),pCanInter,getSharedMutex());
596 pUaSdoItem->setValueHandling(UaVariable_Value_Cache);
598 pUaSdoItem->setDataType(UaNodeId(typeName));
600 ret = pNodeManager->addNodeAndReference(
this, pUaSdoItem, OpcUaId_HasComponent);
612 template<
typename NODEDEF>
618 LOG(
Log::ERR) <<
"Calc Item" <<
" failed to create Calc Item, for " << this->browseName().toString().toUtf8() <<
" " << ret.pDiagnosticInfo()->m_localizedText.toString().toUtf8();
619 cerr <<
"Error Cacl Item " << this->browseName().toString().toUtf8() <<
" " << ret.pDiagnosticInfo()->m_localizedText.toString().toUtf8() << endl;