private TVA_LSETestHarness.Model.ECA.PhasorCollection CreateECAPhasorCollection(TypeMapping typeMapping) { Dictionary <string, FieldMapping> fieldLookup = typeMapping.FieldMappings.ToDictionary(mapping => mapping.Field.Identifier); TVA_LSETestHarness.Model.ECA.PhasorCollection obj = new TVA_LSETestHarness.Model.ECA.PhasorCollection(); { // Create TVA_LSETestHarness.Model.ECA.Phasor UDT array for "Phasors" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["Phasors"]; PushWindowFrame(arrayMapping); List <TVA_LSETestHarness.Model.ECA.Phasor> list = new List <TVA_LSETestHarness.Model.ECA.Phasor>(); int count = GetUDTArrayTypeMappingCount(arrayMapping); for (int i = 0; i < count; i++) { TypeMapping nestedMapping = GetUDTArrayTypeMapping(arrayMapping, i); list.Add(CreateECAPhasor(nestedMapping)); } obj.Phasors = list.ToArray(); PopWindowFrame(arrayMapping); } return(obj); }
public IEnumerable <IMeasurement> Unmap(TVA_LSETestHarness.Model.ECA.PhasorCollection outputData, TVA_LSETestHarness.Model.ECA._PhasorCollectionMeta outputMeta) { List <IMeasurement> measurements = new List <IMeasurement>(); TypeMapping outputMapping = MappingCompiler.GetTypeMapping(OutputMapping); Reset(); CollectFromECAPhasorCollection(measurements, outputMapping, outputData, outputMeta); return(measurements); }
public override void Map(IDictionary <MeasurementKey, IMeasurement> measurements) { SignalLookup.UpdateMeasurementLookup(measurements); TypeMapping inputMapping = MappingCompiler.GetTypeMapping(InputMapping); TVA_LSETestHarness.Model.ECA.PhasorCollection inputData = CreateECAPhasorCollection(inputMapping); KeyIndex = 0; TVA_LSETestHarness.Model.ECA._PhasorCollectionMeta inputMeta = CreateECA_PhasorCollectionMeta(inputMapping); Algorithm.Output algorithmOutput = Algorithm.Execute(inputData, inputMeta); Subscriber.SendMeasurements(m_unmapper.Unmap(algorithmOutput.OutputData, algorithmOutput.OutputMeta)); }
private void CollectFromECAPhasorCollection(List <IMeasurement> measurements, TypeMapping typeMapping, TVA_LSETestHarness.Model.ECA.PhasorCollection data, TVA_LSETestHarness.Model.ECA._PhasorCollectionMeta meta) { Dictionary <string, FieldMapping> fieldLookup = typeMapping.FieldMappings.ToDictionary(mapping => mapping.Field.Identifier); { // Convert values from TVA_LSETestHarness.Model.ECA.Phasor UDT array for "Phasors" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["Phasors"]; int dataLength = data.Phasors.Length; int metaLength = meta.Phasors.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"Phasors\" must be the same."); } PushWindowFrameTime(arrayMapping); for (int i = 0; i < dataLength; i++) { TypeMapping nestedMapping = GetUDTArrayTypeMapping(arrayMapping, i); CollectFromECAPhasor(measurements, nestedMapping, data.Phasors[i], meta.Phasors[i]); } PopWindowFrameTime(arrayMapping); } }