public override void Map(IDictionary <MeasurementKey, IMeasurement> measurements) { SignalLookup.UpdateMeasurementLookup(measurements); TypeMapping inputMapping = MappingCompiler.GetTypeMapping(InputMapping); Reset(); openLSE.Model.LSE.Input inputData = CreateLSEInput(inputMapping); Reset(); openLSE.Model.LSE._InputMeta inputMeta = CreateLSE_InputMeta(inputMapping); Algorithm.Output algorithmOutput = Algorithm.Execute(inputData, inputMeta); Subscriber.SendMeasurements(m_unmapper.Unmap(algorithmOutput.OutputData, algorithmOutput.OutputMeta)); }
private openLSE.Model.LSE.Input CreateLSEInput(TypeMapping typeMapping) { Dictionary <string, FieldMapping> fieldLookup = typeMapping.FieldMappings.ToDictionary(mapping => mapping.Field.Identifier); openLSE.Model.LSE.Input obj = new openLSE.Model.LSE.Input(); { // Create openLSE.Model.ECA.Digitals UDT for "Digitals" field FieldMapping fieldMapping = fieldLookup["Digitals"]; TypeMapping nestedMapping = GetTypeMapping(fieldMapping); PushRelativeFrame(fieldMapping); obj.Digitals = CreateECADigitals(nestedMapping); PopRelativeFrame(fieldMapping); } { // Create openLSE.Model.ECA.StatusWords UDT for "StatusWords" field FieldMapping fieldMapping = fieldLookup["StatusWords"]; TypeMapping nestedMapping = GetTypeMapping(fieldMapping); PushRelativeFrame(fieldMapping); obj.StatusWords = CreateECAStatusWords(nestedMapping); PopRelativeFrame(fieldMapping); } { // Create openLSE.Model.ECA.PhasorCollection UDT for "VoltagePhasors" field FieldMapping fieldMapping = fieldLookup["VoltagePhasors"]; TypeMapping nestedMapping = GetTypeMapping(fieldMapping); PushRelativeFrame(fieldMapping); obj.VoltagePhasors = CreateECAPhasorCollection(nestedMapping); PopRelativeFrame(fieldMapping); } { // Create openLSE.Model.ECA.PhasorCollection UDT for "CurrentPhasors" field FieldMapping fieldMapping = fieldLookup["CurrentPhasors"]; TypeMapping nestedMapping = GetTypeMapping(fieldMapping); PushRelativeFrame(fieldMapping); obj.CurrentPhasors = CreateECAPhasorCollection(nestedMapping); PopRelativeFrame(fieldMapping); } return(obj); }