From 3d1d1d2ecdec1c1a386aef774e60f0bf1a9f7729 Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Sun, 24 Nov 2024 00:26:46 +0000 Subject: [PATCH] Changed EP to 1 Input Signed-off-by: Bernardo Carvalho --- Configurations/RTApp-Isttok-File.cfg | 168 ++++++++--------- GAMs/ElectricProbesGAM/ElectricProbesGAM.cpp | 178 +++++++++---------- GAMs/ElectricProbesGAM/ElectricProbesGAM.h | 10 +- 3 files changed, 170 insertions(+), 186 deletions(-) diff --git a/Configurations/RTApp-Isttok-File.cfg b/Configurations/RTApp-Isttok-File.cfg index 1a9f6a4..9552ad3 100644 --- a/Configurations/RTApp-Isttok-File.cfg +++ b/Configurations/RTApp-Isttok-File.cfg @@ -294,57 +294,10 @@ $MdsLoopApp = { } } +GAMFileReader = { - Class = IOGAM - InputSignals = { - Time = { - DataSource = FileReader_DS - Type = uint32 - } - Langmuir0 = { - DataSource = FileReader_DS - Type = float32 - } - Langmuir1 = { - DataSource = FileReader_DS - Type = float32 - } - Langmuir2 = { - DataSource = FileReader_DS - Type = float32 - } - Langmuir3= { - DataSource = FileReader_DS - Type = float32 - } - } - OutputSignals = { - TimeSdasA = { - DataSource = "DDB1" - Type = uint32 - } - Langmuir0= { - DataSource = "DDB1" - Type = float32 - } - Langmuir1= { - DataSource = "DDB1" - Type = float32 - } - Langmuir2= { - DataSource = "DDB1" - Type = float32 - } - Langmuir3= { - DataSource = "DDB1" - Type = float32 - } - } - } - +GAMFileReaderS = { Class = IOGAM InputSignals = { Inputs = { - DataSource = FileReaderS_DS + DataSource = FileReader_DS Type = LangmuirStructure MemberAliases = { Inputs.TimeSdas = TimeSdas @@ -383,6 +336,34 @@ $MdsLoopApp = { } } + +GAMLangSigs= { + Class = IOGAM + InputSignals = { + LangmuirStrt_SignalArray = { + DataSource = "DDB1" + Type = float32 + NumberOfElements = 4 + } + } + OutputSignals = { + Langmuir0 = { + DataSource = "DDB1" + Type = float32 + } + Langmuir1 = { + DataSource = "DDB1" + Type = float32 + } + Langmuir2 = { + DataSource = "DDB1" + Type = float32 + } + Langmuir3 = { + DataSource = "DDB1" + Type = float32 + } + } + } /* +GAMFileReaderS = { Class = IOGAM @@ -421,7 +402,36 @@ $MdsLoopApp = { DataSource = FileSignalsWriter Type = float32 } + //"LangmuirStrt.SignalsL[0]" = { + LangmuirStrt_SignalArray = { + DataSource = "DDB1" + Type = float32 + NumberOfElements = 4 + } */ + +GAMElectricProbes = { + Class = ElectricProbesGAM + Gain = 5 //Compulsory + NumberOfSamplesAvg = 5 //Compulsory + ResetInEachState = 0//Compulsory. 1–> reset in each state, 0–> reset if the previous state is different from the next state + InputSignals = { + LangmuirStrt_SignalArray = { + DataSource = "DDB1" + Type = float32 + NumberOfElements = 4 + } + } + OutputSignals = { + SignalEP_OutR = { + DataSource = "DDB1" + Type = float32 + } + SignalEP_OutZ = { + DataSource = "DDB1" + Type = float32 + } + } + } +GAMFileWriter = { Class = IOGAM InputSignals = { @@ -429,11 +439,21 @@ $MdsLoopApp = { DataSource = "DDB1" Type = uint32 } - //"LangmuirStrt.SignalsL[0]" = { - LangmuirStrt_SignalArray = { + Langmuir0 = { + DataSource = "DDB1" + Type = float32 + } + Langmuir1 = { + DataSource = "DDB1" + Type = float32 + } + SignalEP_OutR = { + DataSource = "DDB1" + Type = float32 + } + SignalEP_OutZ = { DataSource = "DDB1" Type = float32 - NumberOfElements = 4 } } OutputSignals = { @@ -460,40 +480,6 @@ $MdsLoopApp = { } } - +GAMElectricProbes = { - Class = ElectricProbesGAM - Gain = 5 //Compulsory - NumberOfSamplesAvg = 4 //Compulsory - ResetInEachState = 0//Compulsory. 1–> reset in each state, 0–> reset if the previous state is different from the next state - InputSignals = { - Langmuir0 = { - DataSource = "DDB1" - Type = float32 - } - Langmuir1 = { - DataSource = "DDB1" - Type = float32 - } - Langmuir2 = { - DataSource = "DDB1" - Type = float32 - } - Langmuir3 = { - DataSource = "DDB1" - Type = float32 - } - } - OutputSignals = { - SignalEP_OutR = { - DataSource = "DDB1" - Type = float32 - } - SignalEP_OutZ = { - DataSource = "DDB1" - Type = float32 - } - } - } } +Data = { Class = ReferenceContainer @@ -521,16 +507,6 @@ $MdsLoopApp = { } } +FileReader_DS = { - Class = FileDataSource::FileReader - Filename = "../Analysis/LangmuirSdas_46241.csv" - FileFormat = "csv" - CSVSeparator = "," - Interpolate = "no" - Preload = "yes" //Optional - EOF = "Last" // "Rewind" - } - - +FileReaderS_DS = { Class = FileDataSource::FileReader Filename = "../Analysis/LangmuirSdas_46241_strt.csv" FileFormat = "csv" @@ -590,7 +566,7 @@ $MdsLoopApp = { +Thread1 = { Class = RealTimeThread CPUs = 0x1 - Functions = {GAMTimer GAMFileReader GAMFileReaderS FlatIOGAM GAMElectricProbes GAMFileWriter } + Functions = {GAMTimer GAMFileReader FlatIOGAM GAMLangSigs GAMElectricProbes GAMFileWriter } } } } diff --git a/GAMs/ElectricProbesGAM/ElectricProbesGAM.cpp b/GAMs/ElectricProbesGAM/ElectricProbesGAM.cpp index a7ab9a0..03d2779 100644 --- a/GAMs/ElectricProbesGAM/ElectricProbesGAM.cpp +++ b/GAMs/ElectricProbesGAM/ElectricProbesGAM.cpp @@ -43,8 +43,8 @@ namespace MARTe { /** * The number of signals */ - const uint32 EP_NUM_INPUTS = 4u; - const uint32 EP_NUM_OUTPUTS = 2u; + const uint32 EP_NUM_INPUTS = 4u; + const uint32 EP_NUM_OUTPUTS = 2u; /*---------------------------------------------------------------------------*/ /* Method definitions */ @@ -55,16 +55,17 @@ namespace MARTe { MessageI() { gain = 0u; numberOfSamplesAvg = 1u; + numberOfInputElements = 0u; //outputSignals = NULL_PTR(MARTe::float32 **); - +/* inputElectricTop = NULL_PTR(MARTe::float32 *); inputElectricInner = NULL_PTR(MARTe::float32 *); inputElectricOuter = NULL_PTR(MARTe::float32 *); inputElectricBottom = NULL_PTR(MARTe::float32 *); - +*/ lastInputs = NULL_PTR(MARTe::float32**); - + inputSignal = NULL; // NULL_PTR(MARTe::float32*); outputEpR = NULL_PTR(MARTe::float32 *); outputEpZ = NULL_PTR(MARTe::float32 *); @@ -72,9 +73,10 @@ namespace MARTe { } ElectricProbesGAM::~ElectricProbesGAM() { - //if (inputSignals != NULL_PTR(MARTe::float32 **)) { - // delete[] inputSignals; + //if (inputSignal != NULL_PTR(MARTe::float32 **)) { + // delete[] inputSignal; //} + inputSignal = NULL; //NULL_PTR(MARTe::float32*); /*if (outputSignals != NULL_PTR(MARTe::float32 **)) { delete[] outputSignals; } @@ -149,91 +151,85 @@ namespace MARTe { bool ElectricProbesGAM::Setup() { using namespace MARTe; uint32 numberOfInputSignals = GetNumberOfInputSignals(); - bool ok = (numberOfInputSignals == 4u); + bool ok = (numberOfInputSignals == 1u); if (!ok) { REPORT_ERROR(ErrorManagement::ParametersError, "The number of input signals shall be equal to 4. numberOfInputSignals = %d ", numberOfInputSignals); } - if (ok) { - lastInputs = new float32*[numberOfInputSignals]; + + StreamString inputSignalName; + ok = GetSignalName(InputSignals, 0u, inputSignalName); + TypeDescriptor inputSignalType = GetSignalType(InputSignals, 0u); + ok = (inputSignalType == Float32Bit); + if (!ok) { + const char8 * const inputSignalTypeStr = TypeDescriptor::GetTypeNameFromTypeDescriptor(inputSignalType); + REPORT_ERROR(ErrorManagement::ParametersError, + "The type of the input signals shall be float32. inputSignalType = %s", inputSignalTypeStr); + } + uint32 numberOfInputSamples = 0u; + if (ok) { + ok = GetSignalNumberOfSamples(InputSignals, 0u, numberOfInputSamples); + } + + if (ok) { + ok = (numberOfInputSamples == 1u); + } + if (!ok) { + REPORT_ERROR(ErrorManagement::ParametersError, + "The number of input signals samples shall be equal to 1. numberOfInputSamples = %d", numberOfInputSamples); + } + uint32 numberOfInputDimensions = 0u; + if (ok) { + ok = GetSignalNumberOfDimensions(InputSignals, 0u, numberOfInputDimensions); + } + + if (ok) { + ok = (numberOfInputDimensions == 0u); + if (!ok) { + REPORT_ERROR( + ErrorManagement::ParametersError, + "The number of input signals dimensions shall be equal to 0. numberOfInputDimensions(%s) = %d", inputSignalName.Buffer(), numberOfInputDimensions); + } + } + if (ok) { + ok = GetSignalNumberOfElements(InputSignals, 0u, numberOfInputElements); + } + if (ok) { + ok = (numberOfInputElements == 4u); + } + if (!ok) { + REPORT_ERROR(ErrorManagement::ParametersError, + "The number of input signal elements shall be equal to 4. numberOfInputElements(%s) = %d", inputSignalName.Buffer(), numberOfInputElements); + } + + + } + if (ok) { + lastInputs = new float32*[numberOfInputElements]; uint32 n; - if (lastInputs != NULL_PTR(MARTe::float32**)) { - for (n = 0u; n < numberOfInputSignals ; n++) { - if (numberOfSamplesAvg > 1u) { - lastInputs[n] = new float32[numberOfSamplesAvg - 1u]; - if (lastInputs[n] != NULL_PTR(MARTe::float32*)) { - uint32 i; - for (i = 0u; i < (numberOfSamplesAvg - 1u); i++) { - lastInputs[n][i] = 0.0F; - } + for (n = 0u; n < numberOfInputElements ; n++) { + if (numberOfSamplesAvg > 1u) { + lastInputs[n] = new float32[numberOfSamplesAvg - 1u]; + if (lastInputs[n] != NULL_PTR(MARTe::float32*)) { + uint32 i; + for (i = 0u; i < (numberOfSamplesAvg - 1u); i++) { + lastInputs[n][i] = 0.0F; } } } } - - for (n = 0u; (n < numberOfInputSignals) && (ok); n++) { - StreamString inputSignalName; - ok = GetSignalName(InputSignals, n, inputSignalName); - TypeDescriptor inputSignalType = GetSignalType(InputSignals, n); - ok = (inputSignalType == Float32Bit); - if (!ok) { - const char8 * const inputSignalTypeStr = TypeDescriptor::GetTypeNameFromTypeDescriptor(inputSignalType); - REPORT_ERROR(ErrorManagement::ParametersError, - "The type of the input signals shall be float32. inputSignalType = %s", inputSignalTypeStr); - } - uint32 numberOfInputSamples = 0u; - if (ok) { - ok = GetSignalNumberOfSamples(InputSignals, n, numberOfInputSamples); - } - - if (ok) { - ok = (numberOfInputSamples == 1u); - } - if (!ok) { - REPORT_ERROR(ErrorManagement::ParametersError, - "The number of input signals samples shall be equal to 1. numberOfInputSamples = %d", numberOfInputSamples); - } - uint32 numberOfInputDimensions = 0u; - if (ok) { - ok = GetSignalNumberOfDimensions(InputSignals, n, numberOfInputDimensions); - } - - if (ok) { - ok = (numberOfInputDimensions == 0u); - if (!ok) { - REPORT_ERROR( - ErrorManagement::ParametersError, - "The number of input signals dimensions shall be equal to 0. numberOfInputDimensions(%s) = %d", inputSignalName.Buffer(), numberOfInputDimensions); - } - } - uint32 numberOfInputElements = 0u; - if (ok) { - ok = GetSignalNumberOfElements(InputSignals, n, numberOfInputElements); - } - if (ok) { - ok = (numberOfInputElements == 1u); - } - if (!ok) { - REPORT_ERROR(ErrorManagement::ParametersError, - "The number of input signal elements shall be equal to 1. numberOfInputElements(%s) = %d", inputSignalName.Buffer(), numberOfInputElements); - } - -// if (ok) { -// inputSignals[n] = reinterpret_cast(GetInputSignalMemory(n)); -// } - - - } - if (ok) { - inputElectricTop = reinterpret_cast(GetInputSignalMemory(0u)); - inputElectricInner = reinterpret_cast(GetInputSignalMemory(1u)); - inputElectricOuter = reinterpret_cast(GetInputSignalMemory(2u)); - inputElectricBottom = reinterpret_cast(GetInputSignalMemory(3u)); - - REPORT_ERROR(ErrorManagement::Information, "InputSignals reinterpret_cast OK"); - } - } + if (ok) { + inputSignal = reinterpret_cast(GetInputSignalMemory(0u)); +/* + inputElectricTop = reinterpret_cast(GetInputSignalMemory(0u)); + inputElectricInner = reinterpret_cast(GetInputSignalMemory(1u)); + inputElectricOuter = reinterpret_cast(GetInputSignalMemory(2u)); + inputElectricBottom = reinterpret_cast(GetInputSignalMemory(3u)); +*/ + REPORT_ERROR(ErrorManagement::Information, "InputSignals reinterpret_cast OK"); + } + // OutputSignals uint32 numberOfOutputSignals = GetNumberOfOutputSignals(); @@ -313,15 +309,15 @@ namespace MARTe { } bool ElectricProbesGAM::Execute() { - //*outputSignal = *inputSignal; - *outputEpR = 4.3; -// *outputEpZ = 3.4; - *outputEpZ = *inputElectricTop - *inputElectricOuter; - //*outputSignal1 = *inputSignals[0]; // - *inputSignals[1]; + //*outputEpZ = 3.4; + *outputEpR = (inputSignal[2] - inputOffsets[2]) - + (inputSignal[1] - inputOffsets[1]); + *outputEpZ = inputSignal[0] - inputSignal[3]; + //;*inputElectricTop - *inputElectricOuter; //*outputSignal1 = *inputSignals[0] - *inputSignals[1]; //update the last values - for (MARTe::uint32 i = 0u; i < EP_NUM_INPUTS; i++) { + for (MARTe::uint32 i = 0u; i < numberOfInputElements; i++) { if (numberOfSamplesAvg > 2u) { /*lint -e{9117} implicit conversion is safe*/ @@ -329,7 +325,11 @@ namespace MARTe { lastInputs[i][k] = lastInputs[i][k - 1]; } } + if (numberOfSamplesAvg > 1u) { + lastInputs[i][0] = inputSignal[i]; + } } + /* if (numberOfSamplesAvg > 1u) { lastInputs[0][0] = *inputElectricTop; lastInputs[1][0] = *inputElectricInner; @@ -337,7 +337,7 @@ namespace MARTe { lastInputs[3][0] = *inputElectricBottom; //lastInputs[i][0] = input[i][numberOfSamples - 1u]; } - +*/ return true; } diff --git a/GAMs/ElectricProbesGAM/ElectricProbesGAM.h b/GAMs/ElectricProbesGAM/ElectricProbesGAM.h index adb49a0..45104c5 100644 --- a/GAMs/ElectricProbesGAM/ElectricProbesGAM.h +++ b/GAMs/ElectricProbesGAM/ElectricProbesGAM.h @@ -153,12 +153,20 @@ namespace MARTe { * The input signals */ + /** + * The input signal + */ + float32 *inputSignal; + + /* MARTe::float32 *inputElectricTop; MARTe::float32 *inputElectricInner; MARTe::float32 *inputElectricOuter; MARTe::float32 *inputElectricBottom; + */ + uint32 numberOfInputElements; - MARTe::float32 inputOffsets[4]; + float32 inputOffsets[4]; MARTe::float32 **lastInputs;