/// <summary> /// Handles the open a close of the door in the refrigerator. /// </summary> /// <param name="context">Server Context</param> /// <param name="method">The method called.</param> /// <param name="inputarguments">The input arguments for the method that was called.</param> /// <param name="outputarguments">The output arguments for the method that was created.</param> /// <returns></returns> private ServiceResult OnOpenDoorCall(ISystemContext context, MethodState method, IList <object> inputarguments, IList <object> outputarguments) { if (inputarguments.Count != 1) { return(StatusCodes.BadArgumentsMissing); } if (Refrigerator.SetChildValue(context, DoorState.BrowseName, (bool)inputarguments[0], false)) { return(ServiceResult.Good); } return(StatusCodes.Bad); }
/// <summary> /// Creates a new refrigerator. /// </summary> /// <returns>Returns a reference for the new refrigerator created.</returns> private void CreateRefrigerator() { Refrigerator = m_nodeFactory.CreateObject(m_parentNode, m_refrigeratorName, m_refrigeratorName, m_namespaceindex); ActualTemperature = m_nodeFactory.CreateVariable(Refrigerator, "ActualTemperature", "ActualTemperature", BuiltInType.Double, ValueRanks.Scalar, m_namespaceindex); MotorTemperature = m_nodeFactory.CreateVariable(Refrigerator, "MotorTemperature", "MotorTemperature", BuiltInType.Double, ValueRanks.Scalar, m_namespaceindex); CoolingMotorRunning = m_nodeFactory.CreateVariable(Refrigerator, "CoolingMotorRunning", "CoolingMotorRunning", BuiltInType.Boolean, ValueRanks.Scalar, m_namespaceindex); DoorState = m_nodeFactory.CreateVariable(Refrigerator, "DoorState", "DoorState", BuiltInType.Boolean, ValueRanks.Scalar, m_namespaceindex); SetPointTemperature = m_nodeFactory.CreateVariable(Refrigerator, "SetPointTemperature", "SetPointTemperature", BuiltInType.Boolean, ValueRanks.Scalar, m_namespaceindex); LightStatus = m_nodeFactory.CreateVariable(Refrigerator, "LightStatus", "LightStatus", BuiltInType.Boolean, ValueRanks.Scalar, m_namespaceindex); State = m_nodeFactory.CreateVariable(Refrigerator, "State", "State", BuiltInType.Boolean, ValueRanks.Scalar, m_namespaceindex); _openClose = m_nodeFactory.CreateMethod(Refrigerator, "OpenCloseDoor", "OpenCloseDoor", m_namespaceindex); SetOpenCloseArguments(); // Set the Refrigerator into a Running State. Refrigerator.SetChildValue(m_systemContext, State.BrowseName, true, false); //return Refrigerator; }
private ServiceResult OnWriteValueDiscrete( ISystemContext context, NodeState node, NumericRange indexRange, QualifiedName dataEncoding, ref object value, ref StatusCode statusCode, ref DateTime timestamp) { MultiStateValueDiscreteState variable = node as MultiStateValueDiscreteState; TypeInfo typeInfo = TypeInfo.Construct(value); if (variable == null || typeInfo == null || typeInfo == Opc.Ua.TypeInfo.Unknown || !TypeInfo.IsNumericType(typeInfo.BuiltInType)) { return(StatusCodes.BadTypeMismatch); } if (indexRange != NumericRange.Empty) { return(StatusCodes.BadIndexRangeInvalid); } Int32 number = Convert.ToInt32(value); if (number >= variable.EnumValues.Value.Length || number < 0) { return(StatusCodes.BadOutOfRange); } if (!node.SetChildValue(context, BrowseNames.ValueAsText, variable.EnumValues.Value[number].DisplayName, true)) { return(StatusCodes.BadOutOfRange); } node.ClearChangeMasks(context, true); return(ServiceResult.Good); }