/// <summary> /// Gets the local data value. /// </summary> /// <param name="remoteValue">The remote value.</param> /// <returns>The local data value.</returns> public DaValue GetLocalDataValue(DataValue remoteValue) { DaValue localValue = new DaValue(); localValue.Error = ComDaProxy.MapReadStatusToErrorCode(remoteValue.StatusCode); if (localValue.Error >= 0) { localValue.HdaQuality = ComUtils.GetHdaQualityCode(remoteValue.StatusCode); localValue.Timestamp = remoteValue.SourceTimestamp; localValue.Error = ResultIds.S_OK; if (localValue.Timestamp == DateTime.MinValue) { localValue.Timestamp = remoteValue.ServerTimestamp; } try { localValue.Value = GetLocalValue(remoteValue.WrappedValue); } catch { localValue.Error = ResultIds.E_BADTYPE; } } return(localValue); }
/// <summary> /// Reads the attribute values from the server. /// </summary> /// <param name="valuesToWrite">The values to write.</param> /// <returns>The results.</returns> public int[] Write(WriteValueCollection valuesToWrite) { TraceState("Write", valuesToWrite.Count); // check for valid session. Session session = m_session; if (session == null) { throw ComUtils.CreateComException(ResultIds.E_FAIL); } int masterError = ResultIds.E_FAIL; int[] errors = new int[valuesToWrite.Count]; if (session != null) { try { // write the values. StatusCodeCollection results = null; DiagnosticInfoCollection diagnosticInfos = null; session.Write( null, valuesToWrite, out results, out diagnosticInfos); ClientBase.ValidateResponse(results, valuesToWrite); ClientBase.ValidateDiagnosticInfos(diagnosticInfos, valuesToWrite); // convert the response. for (int ii = 0; ii < results.Count; ii++) { errors[ii] = ComDaProxy.MapWriteStatusToErrorCode(valuesToWrite[ii].Value, results[ii]); } // return the results. return(errors); } catch (Exception e) { masterError = ComUtils.GetErrorCode(e, ResultIds.E_FAIL); } } // report any unexpected errors. for (int ii = 0; ii < errors.Length; ii++) { errors[ii] = masterError; } return(errors); }