/// <summary> /// Initializes the snapshot from an instance. /// </summary> /// <param name="context">The context.</param> /// <param name="state">The state.</param> public void Initialize( ISystemContext context, BaseInstanceState state) { m_typeDefinitionId = state.TypeDefinitionId; m_snapshot = CreateChildNode(context, state); }
/// <summary> /// Creates a snapshot of a node. /// </summary> /// <param name="context">The context.</param> /// <param name="state">The state.</param> /// <returns>A snapshot of a node.</returns> private ChildNode CreateChildNode(ISystemContext context, BaseInstanceState state) { ChildNode node = new ChildNode(); node.NodeClass = state.NodeClass; node.BrowseName = state.BrowseName; BaseVariableState variable = state as BaseVariableState; if (variable != null) { if (!StatusCode.IsBad(variable.StatusCode)) { node.Value = Utils.Clone(variable.Value); } } BaseObjectState instance = state as BaseObjectState; if (instance != null) { node.Value = instance.NodeId; } node.Children = CreateChildNodes(context, state); return(node); }
/// <summary> /// Initializes the instance from another instance. /// </summary> protected override void Initialize(ISystemContext context, NodeState source) { BaseInstanceState instance = source as BaseInstanceState; if (instance != null) { m_referenceTypeId = instance.m_referenceTypeId; m_typeDefinitionId = instance.m_typeDefinitionId; m_modellingRuleId = instance.m_modellingRuleId; m_numericId = instance.m_numericId; } base.Initialize(context, source); }
/// <summary> /// Gets a display path for the node. /// </summary> public string GetDisplayPath(int maxLength, char seperator) { string name = GetNonNullText(this); if (m_parent == null) { return(name); } StringBuilder buffer = new StringBuilder(); if (maxLength > 2) { NodeState parent = m_parent; List <string> names = new List <string>(); while (parent != null) { BaseInstanceState instance = parent as BaseInstanceState; if (instance == null) { break; } parent = instance.Parent; string parentName = GetNonNullText(parent); names.Add(parentName); if (names.Count == maxLength - 2) { break; } } for (int ii = names.Count - 1; ii >= 0; ii--) { buffer.Append(names[ii]); buffer.Append(seperator); } } buffer.Append(GetNonNullText(m_parent)); buffer.Append(seperator); buffer.Append(name); return(buffer.ToString()); }
/// <summary> /// Makes a copy of the node and all children. /// </summary> /// <returns> /// A new object that is a copy of this instance. /// </returns> public new object MemberwiseClone() { BaseTypeState clone = new BaseTypeState(this.NodeClass); if (m_children != null) { clone.m_children = new List <BaseInstanceState>(m_children.Count); for (int ii = 0; ii < m_children.Count; ii++) { BaseInstanceState child = (BaseInstanceState)m_children[ii].MemberwiseClone(); clone.m_children.Add(child); } } clone.m_changeMasks = NodeStateChangeMasks.None; return(clone); }
/// <summary> /// Recusively stores the the current value for Object and Variable child nodes. /// </summary> /// <param name="context">The context.</param> /// <param name="state">The state.</param> /// <returns>The list of the nodes.</returns> private List <ChildNode> CreateChildNodes(ISystemContext context, BaseInstanceState state) { List <BaseInstanceState> children = new List <BaseInstanceState>(); state.GetChildren(context, children); List <ChildNode> nodes = new List <ChildNode>(); for (int ii = 0; ii < children.Count; ii++) { BaseInstanceState child = children[ii]; if (child == null || (child.NodeClass != NodeClass.Object && child.NodeClass != NodeClass.Variable)) { continue; } ChildNode node = CreateChildNode(context, child); nodes.Add(node); } return(nodes); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Opc.Ua.Fdi7.BrowseNames.MAC: { if (createOrReplace) { if (MAC == null) { if (replacement == null) { MAC = new PropertyState<byte[]>(this); } else { MAC = (PropertyState<byte[]>)replacement; } } } instance = MAC; break; } case Opc.Ua.Fdi7.BrowseNames.IPv4: { if (createOrReplace) { if (IPv4 == null) { if (replacement == null) { IPv4 = new PropertyState<byte[]>(this); } else { IPv4 = (PropertyState<byte[]>)replacement; } } } instance = IPv4; break; } case Opc.Ua.Fdi7.BrowseNames.DNSNAME: { if (createOrReplace) { if (DNSNAME == null) { if (replacement == null) { DNSNAME = new PropertyState<string>(this); } else { DNSNAME = (PropertyState<string>)replacement; } } } instance = DNSNAME; break; } case Opc.Ua.Fdi7.BrowseNames.VALID: { if (createOrReplace) { if (VALID == null) { if (replacement == null) { VALID = new PropertyState<bool>(this); } else { VALID = (PropertyState<bool>)replacement; } } } instance = VALID; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Opc.Ua.Fdi7.BrowseNames.IPAddress: { if (createOrReplace) { if (IPAddress == null) { if (replacement == null) { IPAddress = new PropertyState<byte[]>(this); } else { IPAddress = (PropertyState<byte[]>)replacement; } } } instance = IPAddress; break; } case Opc.Ua.Fdi7.BrowseNames.DevMfg: { if (createOrReplace) { if (DevMfg == null) { if (replacement == null) { DevMfg = new PropertyState<uint>(this); } else { DevMfg = (PropertyState<uint>)replacement; } } } instance = DevMfg; break; } case Opc.Ua.Fdi7.BrowseNames.DevType: { if (createOrReplace) { if (DevType == null) { if (replacement == null) { DevType = new PropertyState<ushort>(this); } else { DevType = (PropertyState<ushort>)replacement; } } } instance = DevType; break; } case Opc.Ua.Fdi7.BrowseNames.DevRev: { if (createOrReplace) { if (DevRev == null) { if (replacement == null) { DevRev = new PropertyState<ushort>(this); } else { DevRev = (PropertyState<ushort>)replacement; } } } instance = DevRev; break; } case Opc.Ua.Fdi7.BrowseNames.DevTag: { if (createOrReplace) { if (DevTag == null) { if (replacement == null) { DevTag = new PropertyState<string>(this); } else { DevTag = (PropertyState<string>)replacement; } } } instance = DevTag; break; } case Opc.Ua.Fdi7.BrowseNames.DevPollAddr: { if (createOrReplace) { if (DevPollAddr == null) { if (replacement == null) { DevPollAddr = new PropertyState<byte>(this); } else { DevPollAddr = (PropertyState<byte>)replacement; } } } instance = DevPollAddr; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case DsatsDemo.BrowseNames.SessionId: { if (createOrReplace) { if (SessionId == null) { if (replacement == null) { SessionId = new PropertyState<NodeId>(this); } else { SessionId = (PropertyState<NodeId>)replacement; } } } instance = SessionId; break; } case DsatsDemo.BrowseNames.SubjectName: { if (createOrReplace) { if (SubjectName == null) { if (replacement == null) { SubjectName = new PropertyState<string>(this); } else { SubjectName = (PropertyState<string>)replacement; } } } instance = SubjectName; break; } case DsatsDemo.BrowseNames.LockState: { if (createOrReplace) { if (LockState == null) { if (replacement == null) { LockState = new LockStateMachineState(this); } else { LockState = (LockStateMachineState)replacement; } } } instance = LockState; break; } case DsatsDemo.BrowseNames.LockStateAsString: { if (createOrReplace) { if (LockStateAsString == null) { if (replacement == null) { LockStateAsString = new PropertyState<string>(this); } else { LockStateAsString = (PropertyState<string>)replacement; } } } instance = LockStateAsString; break; } case DsatsDemo.BrowseNames.Request: { if (createOrReplace) { if (Request == null) { if (replacement == null) { Request = new MethodState(this); } else { Request = (MethodState)replacement; } } } instance = Request; break; } case DsatsDemo.BrowseNames.Release: { if (createOrReplace) { if (Release == null) { if (replacement == null) { Release = new MethodState(this); } else { Release = (MethodState)replacement; } } } instance = Release; break; } case DsatsDemo.BrowseNames.Approve: { if (createOrReplace) { if (Approve == null) { if (replacement == null) { Approve = new MethodState(this); } else { Approve = (MethodState)replacement; } } } instance = Approve; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case DsatsDemo.BrowseNames.Measurements: { if (createOrReplace) { if (Measurements == null) { if (replacement == null) { Measurements = new MudPumpMeasurementsFolderState(this); } else { Measurements = (MudPumpMeasurementsFolderState)replacement; } } } instance = Measurements; break; } case DsatsDemo.BrowseNames.SetPoints: { if (createOrReplace) { if (SetPoints == null) { if (replacement == null) { SetPoints = new MudPumpSetPointsFolderState(this); } else { SetPoints = (MudPumpSetPointsFolderState)replacement; } } } instance = SetPoints; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case DsatsDemo.BrowseNames.Manufacturer: { if (createOrReplace) { if (Manufacturer == null) { if (replacement == null) { Manufacturer = new PropertyState<string>(this); } else { Manufacturer = (PropertyState<string>)replacement; } } } instance = Manufacturer; break; } case DsatsDemo.BrowseNames.ModelNumber: { if (createOrReplace) { if (ModelNumber == null) { if (replacement == null) { ModelNumber = new PropertyState<string>(this); } else { ModelNumber = (PropertyState<string>)replacement; } } } instance = ModelNumber; break; } case DsatsDemo.BrowseNames.SerialNumber: { if (createOrReplace) { if (SerialNumber == null) { if (replacement == null) { SerialNumber = new PropertyState<string>(this); } else { SerialNumber = (PropertyState<string>)replacement; } } } instance = SerialNumber; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Boiler.BrowseNames.UpdateRate: { if (createOrReplace) { if (UpdateRate == null) { if (replacement == null) { UpdateRate = new PropertyState<uint>(this); } else { UpdateRate = (PropertyState<uint>)replacement; } } } instance = UpdateRate; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return(null); } BaseInstanceState instance = null; switch (browseName.Name) { case BrowseNames.InputArguments: { if (createOrReplace) { if (InputArguments == null) { if (replacement == null) { InputArguments = new PropertyState <Argument[]>(this); } else { InputArguments = (PropertyState <Argument[]>)replacement; } } } instance = InputArguments; break; } case BrowseNames.OutputArguments: { if (createOrReplace) { if (OutputArguments == null) { if (replacement == null) { OutputArguments = new PropertyState <Argument[]>(this); } else { OutputArguments = (PropertyState <Argument[]>)replacement; } } } instance = OutputArguments; break; } } if (instance != null) { return(instance); } return(base.FindChild(context, browseName, createOrReplace, replacement)); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Opc.Ua.Fdi7.BrowseNames.ProtocolIdentifier: { if (createOrReplace) { if (ProtocolIdentifier == null) { if (replacement == null) { ProtocolIdentifier = new PropertyState<string>(this); } else { ProtocolIdentifier = (PropertyState<string>)replacement; } } } instance = ProtocolIdentifier; break; } case Opc.Ua.Fdi7.BrowseNames.ServiceProvider: { if (createOrReplace) { if (ServiceProvider == null) { if (replacement == null) { ServiceProvider = new ServerCommunicationGENERICServiceState(this); } else { ServiceProvider = (ServerCommunicationGENERICServiceState)replacement; } } } instance = ServiceProvider; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Boiler.BrowseNames.InputPipe: { if (createOrReplace) { if (InputPipe == null) { if (replacement == null) { InputPipe = new BoilerInputPipeState(this); } else { InputPipe = (BoilerInputPipeState)replacement; } } } instance = InputPipe; break; } case Boiler.BrowseNames.Drum: { if (createOrReplace) { if (Drum == null) { if (replacement == null) { Drum = new BoilerDrumState(this); } else { Drum = (BoilerDrumState)replacement; } } } instance = Drum; break; } case Boiler.BrowseNames.OutputPipe: { if (createOrReplace) { if (OutputPipe == null) { if (replacement == null) { OutputPipe = new BoilerOutputPipeState(this); } else { OutputPipe = (BoilerOutputPipeState)replacement; } } } instance = OutputPipe; break; } case Boiler.BrowseNames.FlowController: { if (createOrReplace) { if (FlowController == null) { if (replacement == null) { FlowController = new FlowControllerState(this); } else { FlowController = (FlowControllerState)replacement; } } } instance = FlowController; break; } case Boiler.BrowseNames.LevelController: { if (createOrReplace) { if (LevelController == null) { if (replacement == null) { LevelController = new LevelControllerState(this); } else { LevelController = (LevelControllerState)replacement; } } } instance = LevelController; break; } case Boiler.BrowseNames.CustomController: { if (createOrReplace) { if (CustomController == null) { if (replacement == null) { CustomController = new CustomControllerState(this); } else { CustomController = (CustomControllerState)replacement; } } } instance = CustomController; break; } case Boiler.BrowseNames.Simulation: { if (createOrReplace) { if (Simulation == null) { if (replacement == null) { Simulation = new BoilerStateMachineState(this); } else { Simulation = (BoilerStateMachineState)replacement; } } } instance = Simulation; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Boiler.BrowseNames.Input1: { if (createOrReplace) { if (Input1 == null) { if (replacement == null) { Input1 = new PropertyState<double>(this); } else { Input1 = (PropertyState<double>)replacement; } } } instance = Input1; break; } case Boiler.BrowseNames.Input2: { if (createOrReplace) { if (Input2 == null) { if (replacement == null) { Input2 = new PropertyState<double>(this); } else { Input2 = (PropertyState<double>)replacement; } } } instance = Input2; break; } case Boiler.BrowseNames.Input3: { if (createOrReplace) { if (Input3 == null) { if (replacement == null) { Input3 = new PropertyState<double>(this); } else { Input3 = (PropertyState<double>)replacement; } } } instance = Input3; break; } case Boiler.BrowseNames.ControlOut: { if (createOrReplace) { if (ControlOut == null) { if (replacement == null) { ControlOut = new PropertyState<double>(this); } else { ControlOut = (PropertyState<double>)replacement; } } } instance = ControlOut; break; } case Boiler.BrowseNames.DescriptionX: { if (createOrReplace) { if (DescriptionX == null) { if (replacement == null) { DescriptionX = new PropertyState<LocalizedText>(this); } else { DescriptionX = (PropertyState<LocalizedText>)replacement; } } } instance = DescriptionX; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Boiler.BrowseNames.Measurement: { if (createOrReplace) { if (Measurement == null) { if (replacement == null) { Measurement = new PropertyState<double>(this); } else { Measurement = (PropertyState<double>)replacement; } } } instance = Measurement; break; } case Boiler.BrowseNames.SetPoint: { if (createOrReplace) { if (SetPoint == null) { if (replacement == null) { SetPoint = new PropertyState<double>(this); } else { SetPoint = (PropertyState<double>)replacement; } } } instance = SetPoint; break; } case Boiler.BrowseNames.ControlOut: { if (createOrReplace) { if (ControlOut == null) { if (replacement == null) { ControlOut = new PropertyState<double>(this); } else { ControlOut = (PropertyState<double>)replacement; } } } instance = ControlOut; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Boiler.BrowseNames.FlowTransmitter2: { if (createOrReplace) { if (FlowTransmitter2 == null) { if (replacement == null) { FlowTransmitter2 = new FlowTransmitterState(this); } else { FlowTransmitter2 = (FlowTransmitterState)replacement; } } } instance = FlowTransmitter2; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Boiler.BrowseNames.LevelIndicator: { if (createOrReplace) { if (LevelIndicator == null) { if (replacement == null) { LevelIndicator = new LevelIndicatorState(this); } else { LevelIndicator = (LevelIndicatorState)replacement; } } } instance = LevelIndicator; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Opc.Ua.Fdi7.BrowseNames.Address: { if (createOrReplace) { if (Address == null) { if (replacement == null) { Address = new PropertyState<byte[]>(this); } else { Address = (PropertyState<byte[]>)replacement; } } } instance = Address; break; } case Opc.Ua.Fdi7.BrowseNames.ProtocolIdentifier: { if (createOrReplace) { if (ProtocolIdentifier == null) { if (replacement == null) { ProtocolIdentifier = new PropertyState<string>(this); } else { ProtocolIdentifier = (PropertyState<string>)replacement; } } } instance = ProtocolIdentifier; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Quickstarts.HistoricalEvents.BrowseNames.NameWell: { if (createOrReplace) { if (NameWell == null) { if (replacement == null) { NameWell = new PropertyState<string>(this); } else { NameWell = (PropertyState<string>)replacement; } } } instance = NameWell; break; } case Quickstarts.HistoricalEvents.BrowseNames.UidWell: { if (createOrReplace) { if (UidWell == null) { if (replacement == null) { UidWell = new PropertyState<string>(this); } else { UidWell = (PropertyState<string>)replacement; } } } instance = UidWell; break; } case Quickstarts.HistoricalEvents.BrowseNames.TestDate: { if (createOrReplace) { if (TestDate == null) { if (replacement == null) { TestDate = new PropertyState<DateTime>(this); } else { TestDate = (PropertyState<DateTime>)replacement; } } } instance = TestDate; break; } case Quickstarts.HistoricalEvents.BrowseNames.TestReason: { if (createOrReplace) { if (TestReason == null) { if (replacement == null) { TestReason = new PropertyState<string>(this); } else { TestReason = (PropertyState<string>)replacement; } } } instance = TestReason; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Opc.Ua.Fdi7.BrowseNames.SubDevices: { if (createOrReplace) { if (SubDevices == null) { if (replacement == null) { SubDevices = new FolderState(this); } else { SubDevices = (FolderState)replacement; } } } instance = SubDevices; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Updates the display name for an instance with the unit label name. /// </summary> /// <param name="instance">The instance to update.</param> /// <param name="label">The label to apply.</param> /// <remarks>This method assumes the DisplayName has the form NameX001 where X0 is the unit label placeholder.</remarks> private void UpdateDisplayName(BaseInstanceState instance, string unitLabel) { LocalizedText displayName = instance.DisplayName; if (displayName != null) { string text = displayName.Text; if (text != null) { text = text.Replace("X0", unitLabel); } displayName = new LocalizedText(displayName.Locale, text); } instance.DisplayName = displayName; }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Opc.Ua.Fdi7.BrowseNames.Address: { if (createOrReplace) { if (Address == null) { if (replacement == null) { Address = new PropertyState<byte>(this); } else { Address = (PropertyState<byte>)replacement; } } } instance = Address; break; } case Opc.Ua.Fdi7.BrowseNames.OrdinalNumber: { if (createOrReplace) { if (OrdinalNumber == null) { if (replacement == null) { OrdinalNumber = new PropertyState<int>(this); } else { OrdinalNumber = (PropertyState<int>)replacement; } } } instance = OrdinalNumber; break; } case Opc.Ua.Fdi7.BrowseNames.SIFConnection: { if (createOrReplace) { if (SIFConnection == null) { if (replacement == null) { SIFConnection = new PropertyState<bool>(this); } else { SIFConnection = (PropertyState<bool>)replacement; } } } instance = SIFConnection; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case BrowseNames.InputArguments: { if (createOrReplace) { if (InputArguments == null) { if (replacement == null) { InputArguments = new PropertyState<Argument[]>(this); } else { InputArguments = (PropertyState<Argument[]>)replacement; } } } instance = InputArguments; break; } case BrowseNames.OutputArguments: { if (createOrReplace) { if (OutputArguments == null) { if (replacement == null) { OutputArguments = new PropertyState<Argument[]>(this); } else { OutputArguments = (PropertyState<Argument[]>)replacement; } } } instance = OutputArguments; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Initializes the instance from an event notification. /// </summary> /// <param name="context">The context.</param> /// <param name="fields">The fields selected for the event notification.</param> /// <param name="e">The event notification.</param> /// <remarks> /// This method creates components based on the browse paths in the event field and sets /// the NodeId or Value based on values in the event notification. /// </remarks> public void Update( ISystemContext context, SimpleAttributeOperandCollection fields, EventFieldList e) { for (int ii = 0; ii < fields.Count; ii++) { SimpleAttributeOperand field = fields[ii]; object value = e.EventFields[ii].Value; // check if value provided. if (value == null) { continue; } // extract the NodeId for the event. if (field.BrowsePath.Count == 0) { if (field.AttributeId == Attributes.NodeId) { this.NodeId = value as NodeId; continue; } } // extract the type definition for the event. if (field.BrowsePath.Count == 1) { if (field.AttributeId == Attributes.Value) { if (field.BrowsePath[0] == BrowseNames.EventType) { m_typeDefinitionId = value as NodeId; continue; } } } // save value for child node. NodeState parent = this; for (int jj = 0; jj < field.BrowsePath.Count; jj++) { // find a predefined child identified by the browse name. BaseInstanceState child = parent.CreateChild(context, field.BrowsePath[jj]); // create a placeholder for unknown children. if (child == null) { if (field.AttributeId == Attributes.Value) { child = new BaseDataVariableState(parent); } else { child = new BaseObjectState(parent); } parent.AddChild(child); } // ensure the browse name is set. if (QualifiedName.IsNull(child.BrowseName)) { child.BrowseName = field.BrowsePath[jj]; } // ensure the display name is set. if (LocalizedText.IsNullOrEmpty(child.DisplayName)) { child.DisplayName = child.BrowseName.Name; } // process next element in path. if (jj < field.BrowsePath.Count - 1) { parent = child; continue; } // save the variable value. if (field.AttributeId == Attributes.Value) { BaseVariableState variable = child as BaseVariableState; if (variable != null && field.AttributeId == Attributes.Value) { try { variable.WrappedValue = e.EventFields[ii]; } catch (Exception) { variable.Value = null; } } break; } // save the node id. child.NodeId = value as NodeId; } } }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case Quickstarts.HistoricalEvents.BrowseNames.TestDuration: { if (createOrReplace) { if (TestDuration == null) { if (replacement == null) { TestDuration = new AnalogItemState<double>(this); } else { TestDuration = (AnalogItemState<double>)replacement; } } } instance = TestDuration; break; } case Quickstarts.HistoricalEvents.BrowseNames.InjectedFluid: { if (createOrReplace) { if (InjectedFluid == null) { if (replacement == null) { InjectedFluid = new PropertyState<string>(this); } else { InjectedFluid = (PropertyState<string>)replacement; } } } instance = InjectedFluid; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Creates a new instance and assigns unique identifiers to all children. /// </summary> /// <param name="context">The operation context.</param> /// <param name="parentId">An optional parent identifier.</param> /// <param name="referenceTypeId">The reference type from the parent.</param> /// <param name="browseName">The browse name.</param> /// <param name="instance">The instance to create.</param> /// <returns>The new node id.</returns> public NodeId CreateNode( ServerSystemContext context, NodeId parentId, NodeId referenceTypeId, QualifiedName browseName, BaseInstanceState instance) { ServerSystemContext contextToUse = (ServerSystemContext)m_systemContext.Copy(context); lock (Lock) { if (m_predefinedNodes == null) { m_predefinedNodes = new NodeIdDictionary<NodeState>(); } instance.ReferenceTypeId = referenceTypeId; NodeState parent = null; if (parentId != null) { if (!m_predefinedNodes.TryGetValue(parentId, out parent)) { throw ServiceResultException.Create( StatusCodes.BadNodeIdUnknown, "Cannot find parent with id: {0}", parentId); } parent.AddChild(instance); } instance.Create(contextToUse, null, browseName, null, true); AddPredefinedNode(contextToUse, instance); return instance.NodeId; } }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case FileSystem.BrowseNames.Temperature: { if (createOrReplace) { if (Temperature == null) { if (replacement == null) { Temperature = new AnalogItemState<double>(this); } else { Temperature = (AnalogItemState<double>)replacement; } } } instance = Temperature; break; } case FileSystem.BrowseNames.TemperatureSetPoint: { if (createOrReplace) { if (TemperatureSetPoint == null) { if (replacement == null) { TemperatureSetPoint = new AnalogItemState<double>(this); } else { TemperatureSetPoint = (AnalogItemState<double>)replacement; } } } instance = TemperatureSetPoint; break; } case FileSystem.BrowseNames.State: { if (createOrReplace) { if (State == null) { if (replacement == null) { State = new BaseDataVariableState<int>(this); } else { State = (BaseDataVariableState<int>)replacement; } } } instance = State; break; } case FileSystem.BrowseNames.PowerConsumption: { if (createOrReplace) { if (PowerConsumption == null) { if (replacement == null) { PowerConsumption = new DataItemState<double>(this); } else { PowerConsumption = (DataItemState<double>)replacement; } } } instance = PowerConsumption; break; } case FileSystem.BrowseNames.Start: { if (createOrReplace) { if (Start == null) { if (replacement == null) { Start = new MethodState(this); } else { Start = (MethodState)replacement; } } } instance = Start; break; } case FileSystem.BrowseNames.Stop: { if (createOrReplace) { if (Stop == null) { if (replacement == null) { Stop = new MethodState(this); } else { Stop = (MethodState)replacement; } } } instance = Stop; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case MemoryBuffer.BrowseNames.StartAddress: { if (createOrReplace) { if (StartAddress == null) { if (replacement == null) { StartAddress = new PropertyState<uint>(this); } else { StartAddress = (PropertyState<uint>)replacement; } } } instance = StartAddress; break; } case MemoryBuffer.BrowseNames.SizeInBytes: { if (createOrReplace) { if (SizeInBytes == null) { if (replacement == null) { SizeInBytes = new PropertyState<uint>(this); } else { SizeInBytes = (PropertyState<uint>)replacement; } } } instance = SizeInBytes; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case FileSystem.BrowseNames.Humidity: { if (createOrReplace) { if (Humidity == null) { if (replacement == null) { Humidity = new AnalogItemState<double>(this); } else { Humidity = (AnalogItemState<double>)replacement; } } } instance = Humidity; break; } case FileSystem.BrowseNames.HumiditySetPoint: { if (createOrReplace) { if (HumiditySetPoint == null) { if (replacement == null) { HumiditySetPoint = new AnalogItemState<double>(this); } else { HumiditySetPoint = (AnalogItemState<double>)replacement; } } } instance = HumiditySetPoint; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case FileSystem.BrowseNames.LastUpdateTime: { if (createOrReplace) { if (LastUpdateTime == null) { if (replacement == null) { LastUpdateTime = new PropertyState<DateTime>(this); } else { LastUpdateTime = (PropertyState<DateTime>)replacement; } } } instance = LastUpdateTime; break; } case FileSystem.BrowseNames.CreateController: { if (createOrReplace) { if (CreateController == null) { if (replacement == null) { CreateController = new CreateControllerMethodState(this); } else { CreateController = (CreateControllerMethodState)replacement; } } } instance = CreateController; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case DsatsDemo.BrowseNames.ChangePhase: { if (createOrReplace) { if (ChangePhase == null) { if (replacement == null) { ChangePhase = new ChangePhaseMethodState(this); } else { ChangePhase = (ChangePhaseMethodState)replacement; } } } instance = ChangePhase; break; } case DsatsDemo.BrowseNames.ChangePhaseWithString: { if (createOrReplace) { if (ChangePhaseWithString == null) { if (replacement == null) { ChangePhaseWithString = new PropertyState<string>(this); } else { ChangePhaseWithString = (PropertyState<string>)replacement; } } } instance = ChangePhaseWithString; break; } case DsatsDemo.BrowseNames.CurrentPhase: { if (createOrReplace) { if (CurrentPhase == null) { if (replacement == null) { CurrentPhase = new BaseDataVariableState<NodeId>(this); } else { CurrentPhase = (BaseDataVariableState<NodeId>)replacement; } } } instance = CurrentPhase; break; } case DsatsDemo.BrowseNames.Phases: { if (createOrReplace) { if (Phases == null) { if (replacement == null) { Phases = new FolderState(this); } else { Phases = (FolderState)replacement; } } } instance = Phases; break; } case DsatsDemo.BrowseNames.Locks: { if (createOrReplace) { if (Locks == null) { if (replacement == null) { Locks = new FolderState(this); } else { Locks = (FolderState)replacement; } } } instance = Locks; break; } case DsatsDemo.BrowseNames.TopDrive: { if (createOrReplace) { if (TopDrive == null) { if (replacement == null) { TopDrive = new TopDriveState(this); } else { TopDrive = (TopDriveState)replacement; } } } instance = TopDrive; break; } case DsatsDemo.BrowseNames.MudPumps: { if (createOrReplace) { if (MudPumps == null) { if (replacement == null) { MudPumps = new FolderState(this); } else { MudPumps = (FolderState)replacement; } } } instance = MudPumps; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case FileSystem.BrowseNames.GasFlow: { if (createOrReplace) { if (GasFlow == null) { if (replacement == null) { GasFlow = new DataItemState<double>(this); } else { GasFlow = (DataItemState<double>)replacement; } } } instance = GasFlow; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case TutorialModel.BrowseNames.Input: { if (createOrReplace) { if (Input == null) { if (replacement == null) { Input = new AnalogItemState<double>(this); } else { Input = (AnalogItemState<double>)replacement; } } } instance = Input; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case FileSystem.BrowseNames.Temperature: { if (createOrReplace) { if (Temperature == null) { if (replacement == null) { Temperature = new PropertyState<double>(this); } else { Temperature = (PropertyState<double>)replacement; } } } instance = Temperature; break; } case FileSystem.BrowseNames.State: { if (createOrReplace) { if (State == null) { if (replacement == null) { State = new PropertyState<int>(this); } else { State = (PropertyState<int>)replacement; } } } instance = State; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }
/// <summary> /// Finds the child with the specified browse name. /// </summary> protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, bool createOrReplace, BaseInstanceState replacement) { if (QualifiedName.IsNull(browseName)) { return null; } BaseInstanceState instance = null; switch (browseName.Name) { case TutorialModel.BrowseNames.FlowTransmitter: { if (createOrReplace) { if (FlowTransmitter == null) { if (replacement == null) { FlowTransmitter = new GenericSensorState(this); } else { FlowTransmitter = (GenericSensorState)replacement; } } } instance = FlowTransmitter; break; } case TutorialModel.BrowseNames.Valve: { if (createOrReplace) { if (Valve == null) { if (replacement == null) { Valve = new GenericActuatorState(this); } else { Valve = (GenericActuatorState)replacement; } } } instance = Valve; break; } case TutorialModel.BrowseNames.Calibration: { if (createOrReplace) { if (Calibration == null) { if (replacement == null) { Calibration = new BaseDataVariableState<CalibrationDataType>(this); } else { Calibration = (BaseDataVariableState<CalibrationDataType>)replacement; } } } instance = Calibration; break; } } if (instance != null) { return instance; } return base.FindChild(context, browseName, createOrReplace, replacement); }