Пример #1
0
        public void TestKeyFrame(ProcessDataPointValue dataPoint)
        {
            ProcessDataSet dataSet = new ProcessDataSet("test-publisher", "test001", 123, ProcessDataSet.DataSetType.TimeSeries);

            dataSet.AddDataPoint(dataPoint);
            DecodeMessage decoder = new DecodeMessage();

            byte[]         encodedMeta        = dataSet.GetEncodedMetaFrame(new EncodingOptions(), 1, true);
            byte[]         encodedKey         = dataSet.GetEncodedKeyFrame(2);
            NetworkMessage metaNetworkMessage = decoder.ParseBinaryMessage(encodedMeta);

            Assert.That(metaNetworkMessage, Is.Not.Null);
            Assert.That(metaNetworkMessage, Is.InstanceOf(typeof(MetaFrame)));
            Assert.That(metaNetworkMessage.NetworkMessageHeader.UADPFlags.HasFlag(UADPFlags.PayloadHeaderEnabled), Is.False);
            NetworkMessage keyNetworkMessage = decoder.ParseBinaryMessage(encodedKey);

            Assert.That(keyNetworkMessage, Is.Not.Null);
            Assert.That(keyNetworkMessage, Is.InstanceOf(typeof(KeyFrame)));
            Assert.That(keyNetworkMessage.NetworkMessageHeader.UADPFlags.HasFlag(UADPFlags.PayloadHeaderEnabled), Is.True);
            KeyFrame decodedKeyMessage             = (KeyFrame)keyNetworkMessage;
            ProcessDataPointValue decodedDataPoint = (ProcessDataPointValue)decodedKeyMessage.Items[0];

            Common.AssertDataPointsAreEqual(dataPoint, decodedDataPoint);
            Assert.That(decodedKeyMessage, Is.Not.Null);
            Assert.That(decodedKeyMessage.Items, Is.Not.Empty);
            Assert.That(decodedKeyMessage.Items.Count, Is.EqualTo(1));
            Assert.That(decodedKeyMessage.NetworkMessageHeader.UADPFlags.HasFlag(UADPFlags.PayloadHeaderEnabled), Is.True);
        }
Пример #2
0
 public static void AssertDataPointsAreEqual(ProcessDataPointValue encoded, ProcessDataPointValue decoded)
 {
     Assert.That(encoded.Name, Is.EqualTo(decoded.Name));
     Assert.That(encoded.Orcat, Is.EqualTo(decoded.Orcat));
     Assert.That(encoded.Quality, Is.EqualTo(decoded.Quality));
     Assert.That(encoded.Value, Is.EqualTo(decoded.Value));
     Assert.That(encoded.Timestamp, Is.EqualTo(decoded.Timestamp));
 }
Пример #3
0
 public void AddDataPoint(ProcessDataPointValue dataPoint)
 {
     if (!m_ProcessValues.ContainsKey(dataPoint.Name))
     {
         DataPointEntry entry = new DataPointEntry
         {
             DataPoint  = dataPoint,
             IsModified = true
         };
         m_ProcessValues.Add(dataPoint.Name, entry);
         m_MetaFrame = null;
     }
 }
Пример #4
0
        public void UpdateDataPoint(ProcessDataPointValue dataPoint)
        {
            DataPointValue baseValue = GetDataPointValue(dataPoint.Name);

            if (baseValue == null)
            {
                AddDataPoint(dataPoint);
            }
            else
            {
                (baseValue as ProcessDataPointValue)?.Update(dataPoint);
                SetDataPointModified(baseValue.Name);
            }
        }
Пример #5
0
        internal static DataPointValue GetDataPointValue(DeltaEntry keyEntry, DataSetType dataSetType)
        {
            ProcessDataPointValue dpv = ProcessValueFactory.CreateValue(keyEntry.DataType);

            if (dpv == null)
            {
                Logger.Error($"Unable to create DataPoint for entry: {keyEntry}");
                return(null);
            }
            dpv.Orcat     = keyEntry.Orcat;
            dpv.Quality   = keyEntry.Quality;
            dpv.Timestamp = keyEntry.TimeStamp;
            dpv.Value     = keyEntry.Value;
            if (keyEntry is KeyEntry key)
            {
                dpv.Prefix  = key.Prefix;
                dpv.Unit    = key.Unit;
                dpv.FieldID = key.FieldID;
            }
            if (dpv is CounterValue)
            {
                dpv.SetAttributeValue(CounterValue.QuantityAttributeName, keyEntry.Value2);
            }
            if (dpv is StepPosValue || dpv is StepPosEvent)
            {
                dpv.SetAttributeValue(StepPosValue.TransientAttributeName, keyEntry.Value2);
            }
            if (dpv is ComplexMeasuredValue)
            {
                dpv.SetAttributeValue(ComplexMeasuredValue.AngleAttributeName, keyEntry.Value2);
            }
            if (dpv.Timestamp == 0)
            {
                dpv.Timestamp = DateTime.Now.ToFileTimeUtc();
            }
            return(dpv);
        }
Пример #6
0
        public void TestMetaFrame(ProcessDataPointValue dataPoint)
        {
            ProcessDataSet dataSet = new ProcessDataSet("test-publisher", "test001", 123, ProcessDataSet.DataSetType.TimeSeries);

            dataSet.AddDataPoint(dataPoint);

            byte[]         encodedMeta = dataSet.GetEncodedMetaFrame(new EncodingOptions(), 1, true);
            DecodeMessage  decoder     = new DecodeMessage();
            NetworkMessage decodedMeta = decoder.ParseBinaryMessage(encodedMeta);

            Assert.That(decodedMeta, Is.Not.Null);
            Assert.That(decodedMeta, Is.InstanceOf(typeof(MetaFrame)));
            Assert.That(decodedMeta.NetworkMessageHeader.ExtendedFlags2.MessageType, Is.EqualTo(Header.MessageType.DiscoveryResponse));
            Assert.That(decodedMeta.NetworkMessageHeader.ExtendedFlags2.Chunk, Is.False);
            Assert.That(decodedMeta.NetworkMessageHeader.UADPFlags.HasFlag(UADPFlags.PayloadHeaderEnabled), Is.False);

            decoder = new DecodeMessage();
            List <byte[]>  encodedMetaChunkedZero = dataSet.GetChunkedMetaFrame(0, new EncodingOptions(), 1);
            NetworkMessage decodedMetaChunkedZero = decoder.ParseBinaryMessage(encodedMetaChunkedZero[0]);

            Assert.That(decodedMetaChunkedZero, Is.Not.Null);
            Assert.That(decodedMetaChunkedZero, Is.InstanceOf(typeof(MetaFrame)));
            Assert.That(decodedMetaChunkedZero.NetworkMessageHeader.ExtendedFlags2.MessageType, Is.EqualTo(Header.MessageType.DiscoveryResponse));
            Assert.That(decodedMetaChunkedZero.NetworkMessageHeader.ExtendedFlags2.Chunk, Is.False);
            Assert.That(decodedMetaChunkedZero.NetworkMessageHeader.UADPFlags.HasFlag(UADPFlags.PayloadHeaderEnabled), Is.False);

            decoder = new DecodeMessage();
            List <byte[]>  encodedMetaChunked = dataSet.GetChunkedMetaFrame(1024 * 14, new EncodingOptions(), 1);
            NetworkMessage decodedMetaChunked = decoder.ParseBinaryMessage(encodedMetaChunked[0]);

            Assert.That(decodedMetaChunked, Is.Not.Null);
            Assert.That(decodedMetaChunked, Is.InstanceOf(typeof(MetaFrame)));
            Assert.That(decodedMetaChunked.NetworkMessageHeader.ExtendedFlags2.MessageType, Is.EqualTo(Header.MessageType.DiscoveryResponse));
            Assert.That(decodedMetaChunked.NetworkMessageHeader.ExtendedFlags2.Chunk, Is.True);
            Assert.That(decodedMetaChunked.NetworkMessageHeader.UADPFlags.HasFlag(UADPFlags.PayloadHeaderEnabled), Is.True);
        }