Opc.Ua.Server.AggregateCalculator.SteppedInterpolate C# (CSharp) Method

SteppedInterpolate() public static method

Calculate the value at the timestamp using slopped interpolation.
public static SteppedInterpolate ( System.DateTime timestamp, DataValue earlyBound ) : DataValue
timestamp System.DateTime
earlyBound DataValue
return DataValue
        public static DataValue SteppedInterpolate(DateTime timestamp, DataValue earlyBound)
        {
            // can't interpolate if no start bound.
            if (StatusCode.IsBad(earlyBound.StatusCode))
            {
                return new DataValue(Variant.Null, StatusCodes.BadNoData, timestamp, timestamp);
            }

            DataValue dataValue = new DataValue();
            dataValue.WrappedValue = earlyBound.WrappedValue;
            dataValue.SourceTimestamp = timestamp;
            dataValue.ServerTimestamp = timestamp;
            dataValue.StatusCode = StatusCodes.Good;

            // update status code.
            if (StatusCode.IsBad(earlyBound.StatusCode))
            {
                dataValue.StatusCode = StatusCodes.BadNoData;
            }

            // update status code.
            if (StatusCode.IsNotGood(earlyBound.StatusCode))
            {
                dataValue.StatusCode = StatusCodes.UncertainDataSubNormal;
            }

            dataValue.StatusCode = dataValue.StatusCode.SetAggregateBits(AggregateBits.Interpolated);
            return dataValue;
        }