#include "uaprovider_demo_alarmcondition.h"
#include <uaserver_utilities.h>
#include <opcua_identifiers.h>
#include <opcua_memory.h>
#include <opcua_string.h>
#include <opcua_errorhandling.h>
OPCUA_BEGIN_EXTERN_C
const OpcUa_CharA *a_sSourceName,
const OpcUa_CharA *a_sConditionName)
{
OpcUa_ReturnErrorIfArgumentNull(a_pAlarmConditionTypeEvent);
OpcUa_NodeId_Initialize(&nodeId);
nodeId.Identifier.Numeric = OpcUaId_AlarmConditionType;
OpcUa_Variant_Initialize(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.NodeId);
OpcUa_NodeId_Initialize(value.
Value.NodeId);
OpcUa_Variant_Clear(&value);
OpcUa_String_Initialize(&value.
Value.String);
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime.dwHighDateTime = 0;
value.
Value.DateTime.dwLowDateTime = 0;
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.NodeId);
OpcUa_NodeId_Initialize(value.
Value.NodeId);
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_Variant_Clear(&value);
OpcUa_String_Initialize(&value.
Value.String);
OpcUa_String_StrnCat(&value.
Value.String, OpcUa_String_FromCString(a_sConditionName), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_String_StrnCat(&value.
Value.LocalizedText->Text, OpcUa_String_FromCString(
"true"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime.dwHighDateTime = 0;
value.
Value.DateTime.dwLowDateTime = 0;
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_True;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime.dwHighDateTime = 0;
value.
Value.DateTime.dwLowDateTime = 0;
OpcUa_Variant_Clear(&value);
value.
Value.UInt16 = 500;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime.dwHighDateTime = 0;
value.
Value.DateTime.dwLowDateTime = 0;
OpcUa_Variant_Clear(&value);
value.
Value.StatusCode = OpcUa_Good;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime.dwHighDateTime = 0;
value.
Value.DateTime.dwLowDateTime = 0;
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_False;
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.NodeId);
OpcUa_NodeId_Initialize(value.
Value.NodeId);
OpcUa_NodeId_CopyTo(a_pConditionId, value.
Value.NodeId);
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_String_StrnCat(&value.
Value.LocalizedText->Text, OpcUa_String_FromCString(
"Unacknowledged"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_False;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime.dwHighDateTime = 0;
value.
Value.DateTime.dwLowDateTime = 0;
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_String_StrnCat(&value.
Value.LocalizedText->Text, OpcUa_String_FromCString(
"Unconfirmed"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_False;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime.dwHighDateTime = 0;
value.
Value.DateTime.dwLowDateTime = 0;
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_String_StrnCat(&value.
Value.LocalizedText->Text, OpcUa_String_FromCString(
"Inactive"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_False;
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.NodeId);
OpcUa_NodeId_Initialize(value.
Value.NodeId);
OpcUa_NodeId_CopyTo(a_pSourceNode, value.
Value.NodeId);
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_False;
OpcUa_Variant_Clear(&value);
return OpcUa_Good;
}
{
OpcUa_ByteString_Initialize(&bsEventId);
OpcUa_ByteString_Clear(&bsEventId);
OpcUa_Variant_Initialize(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_String_StrnCat(&value.
Value.LocalizedText->Text, OpcUa_String_FromCString(
"true"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime.dwHighDateTime = 0;
value.
Value.DateTime.dwLowDateTime = 0;
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_True;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime.dwHighDateTime = 0;
value.
Value.DateTime.dwLowDateTime = 0;
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_True;
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_String_StrnCat(&value.
Value.LocalizedText->Text, OpcUa_String_FromCString(
"Unacknowledged"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_False;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime.dwHighDateTime = 0;
value.
Value.DateTime.dwLowDateTime = 0;
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_String_StrnCat(&value.
Value.LocalizedText->Text, OpcUa_String_FromCString(
"Unconfirmed"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_False;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime.dwHighDateTime = 0;
value.
Value.DateTime.dwLowDateTime = 0;
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_String_StrnCat(&value.
Value.LocalizedText->Text, OpcUa_String_FromCString(
"Active"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_True;
OpcUa_Variant_Clear(&value);
return result;
}
#if UASERVER_SUPPORT_CONDITION_BRANCHES
{
OpcUa_UInt32 branchId = 0;
UaServer_EventType *pEventType = OpcUa_Null;
OpcUa_ReturnErrorIfArgumentNull(a_pEvent);
OpcUa_NodeId_Initialize(&eventTypeId);
OpcUa_Variant_Initialize(&value);
OpcUa_ReturnErrorIfAllocFailed(pConditionBranch);
UaServer_Event_Initialize(pConditionBranch, pEventType);
OpcUa_ByteString_Initialize(&bsEventId);
OpcUa_ByteString_Clear(&bsEventId);
OpcUa_List_ResetCurrent(a_pEvent->pConditionBranchList);
pPreviousConditionBranch = OpcUa_List_GetCurrentElement(a_pEvent->pConditionBranchList);
if (pPreviousConditionBranch != OpcUa_Null)
{
OpcUa_ReturnErrorIfNull(pValue, OpcUa_BadNotFound);
branchId = pValue->
Value.NodeId->Identifier.Numeric;
}
if (value.
Value.NodeId == OpcUa_Null)
{
UaServer_Event_Clear(pConditionBranch);
OpcUa_Free(pConditionBranch);
pConditionBranch = OpcUa_Null;
return OpcUa_BadOutOfMemory;
}
OpcUa_Variant_Clear(&value);
result = OpcUa_List_AddElement(a_pEvent->pConditionBranchList, pConditionBranch);
OpcUa_ReturnErrorIfBad(result);
return result;
}
#endif
{
#if UASERVER_SUPPORT_CONDITION_BRANCHES
OpcUa_Boolean bConditionAcknowledged = OpcUa_False;
OpcUa_Boolean bConditionConfirmed = OpcUa_False;
if (pValue != OpcUa_Null)
{
bConditionAcknowledged = pValue->
Value.Boolean;
}
if (pValue != OpcUa_Null)
{
bConditionConfirmed = pValue->
Value.Boolean;
}
#endif
OpcUa_Variant_Initialize(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_String_StrnCat(&value.
Value.LocalizedText->Text, OpcUa_String_FromCString(
"Disabled"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_False;
OpcUa_Variant_Clear(&value);
value.
Value.DateTime = utcNow;
OpcUa_Variant_Clear(&value);
OpcUa_ReturnErrorIfAllocFailed(value.
Value.LocalizedText);
OpcUa_LocalizedText_Initialize(value.
Value.LocalizedText);
value.
Datatype = OpcUaType_LocalizedText;
OpcUa_String_StrnCat(&value.
Value.LocalizedText->Text, OpcUa_String_FromCString(
"Inactive"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
value.
Value.Boolean = OpcUa_False;
OpcUa_Variant_Clear(&value);
#if UASERVER_SUPPORT_CONDITION_BRANCHES
if (bConditionAcknowledged == OpcUa_False || bConditionConfirmed == OpcUa_False)
{
if (a_pEvent->pConditionBranchList == OpcUa_Null)
{
result = OpcUa_List_Create(&a_pEvent->pConditionBranchList);
OpcUa_ReturnErrorIfBad(result);
}
result = UaProvider_Demo_CreateConditionBranch(a_pEvent);
OpcUa_ReturnErrorIfBad(result);
}
#endif
value.
Value.Boolean = OpcUa_False;
OpcUa_Variant_Clear(&value);
return result;
}
OPCUA_END_EXTERN_C