How to put OpcUa_ModelChangeStructureDataType into an UaExtensionObject?

Questions regarding the use of the C++ SDK for Server or Client development or integration into customer products ...

Moderator: uasdkcpp

Post Reply
Lost+Found
Hero Member
Hero Member
Posts: 20
Joined: 07 Feb 2013, 11:01

How to put OpcUa_ModelChangeStructureDataType into an UaExtensionObject?

Post by Lost+Found »

Hello,

I am trying to construct UaExtensionObject that carries OpcUa_ModelChangeStructureDataType, but there doesn't seem to be any suitable method. Only UaArgument, UaRange, UaEUInformation, UaBuildInfo, UaServerStatusDataType, UaAnnotation are supported.

I can construct the C equivalent OpcUa_ExtensionObject with the following code:

Code: Select all

                OpcUa_ExtensionObject* pExtObj;
                OpcUa_ExtensionObject_Create( &pExtObj );
                OpcUa_ModelChangeStructureDataType* pChanges = (OpcUa_ModelChangeStructureDataType*)OpcUa_Null;
                OpcUa_EncodeableObject_CreateExtension( &OpcUa_ModelChangeStructureDataType_EncodeableType, 
                                                        pExtObj, 
                                                        (OpcUa_Void**)&pChanges);


But it cannot be converted to c++, not even with the constructor UaExtensionObject(const OpcUa_ExtensionObject &other);

Thanks

User avatar
Support Team
Hero Member
Hero Member
Posts: 3068
Joined: 18 Mar 2011, 15:09

Re:How to put OpcUa_ModelChangeStructureDataType into an Ua

Post by Support Team »

Hi Toni,

The helper class for handling the ModelChangeStructureDataType and the addition to the UaExtensionObject class is already added to the SDK and will be available with version 1.3.1.

We will send you the new/updated files by email. You can use them also for version 1.2.1.

Best Regards,
Unified Automation Support Team
Last edited by Support Team on 07 Feb 2013, 10:48, edited 1 time in total.
Best regards
Unified Automation Support Team

User avatar
Support Team
Hero Member
Hero Member
Posts: 3068
Joined: 18 Mar 2011, 15:09

Re:How to put OpcUa_ModelChangeStructureDataType into an Ua

Post by Support Team »

Here is some code for using the helpers for ModelChangeEvents.

Create an array of ModelChangeStructureDataType:

Code: Select all

    // Prepare model change event
    UaModelChangeStructureDataTypeArray changes;
    changes.create(2);
    changes[0] = new UaModelChangeStructureDataType(
        pUaObject1->nodeId(), 
        pUaObject1->typeDefinitionId(), 
        OpcUa_ModelChangeStructureVerbMask_ReferenceAdded);
    changes[1] = new UaModelChangeStructureDataType(
        pUaObject2->nodeId(), 
        pUaObject2->typeDefinitionId(), 
        OpcUa_ModelChangeStructureVerbMask_NodeAdded | OpcUa_ModelChangeStructureVerbMask_ReferenceAdded);
Create an extension object array and set it to a UaVariant

Code: Select all

    UaVariant    uvChanges;
    OpcUa_UInt32 i;
    OpcUa_UInt32 count = changes.length();
    UaExtensionObjectArray exArray;
    exArray.create(count);

    for ( i=0; i<count; i++ )
    {
        if ( changes[i] != NULL )
        {
            UaExtensionObject tempEx(*changes[i]);
            tempEx.copyTo(&exArray[i]);
        }
    }

    uvChanges.setExtensionObjectArray(exArray);
Last edited by Support Team on 07 Feb 2013, 10:48, edited 1 time in total.
Best regards
Unified Automation Support Team

Lost+Found
Hero Member
Hero Member
Posts: 20
Joined: 07 Feb 2013, 11:01

Re:How to put OpcUa_ModelChangeStructureDataType into an UaExtensionObject?

Post by Lost+Found »

This is superb! Especially because I cannot migrate to 1.3.1. I appreciate your quick response and support :silly:

Post Reply