/// <summary> /// Converts a UA value to an HDA attribute value. /// </summary> /// <param name="session">The session.</param> /// <param name="attributeId">The attribute id.</param> /// <param name="values">The values.</param> /// <param name="index">The index.</param> /// <returns></returns> private DaValue GetAttributeValue(Session session, uint attributeId, DataValueCollection values, int index) { switch (attributeId) { case Constants.OPCHDA_DATA_TYPE: { DaValue result = new DaValue(); DataValue value = values[index]; // check for valid node. if (StatusCode.IsBad(value.StatusCode)) { result.Error = ResultIds.E_UNKNOWNITEMID; return(result); } // covert to var type. NodeId dataTypeId = value.GetValue <NodeId>(DataTypeIds.BaseDataType); int valueRank = values[index + 1].GetValue <int>(ValueRanks.Scalar); BuiltInType builtInType = DataTypes.GetBuiltInType(dataTypeId, session.TypeTree); TypeInfo typeInfo = new TypeInfo(builtInType, valueRank); short varType = (short)ComUtils.GetVarType(typeInfo); result.Value = varType; result.Quality = ComUtils.GetQualityCode(value.StatusCode); result.Timestamp = value.ServerTimestamp; result.Error = ResultIds.S_OK; return(result); } case Constants.OPCHDA_DESCRIPTION: { DataValue value = values[index]; if (value.StatusCode == StatusCodes.BadAttributeIdInvalid) { DaValue result = new DaValue(); result.Error = ResultIds.E_INVALIDATTRID; return(result); } return(m_mapper.GetLocalDataValue(value)); } default: { return(ComHdaProxy.GetAttributeValue(session, m_mapper, attributeId, values[index])); } } }
/// <summary> /// Initializes a new instance of the <see cref="ComHdaBrowser"/> class. /// </summary> /// <param name="server">The server.</param> /// <param name="browseManager">The browse manager.</param> public ComHdaBrowser(ComHdaProxy server, ComDaBrowseManager browseManager) { m_server = server; m_browseManager = browseManager; }