Changed EP to 1 Input

Signed-off-by: Bernardo Carvalho <bernardo.carvalho@tecnico.ulisboa.pt>
This commit is contained in:
2024-11-24 00:26:46 +00:00
parent 297a9abdfb
commit 3d1d1d2ecd
3 changed files with 170 additions and 186 deletions

View File

@@ -294,57 +294,10 @@ $MdsLoopApp = {
} }
} }
+GAMFileReader = { +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 Class = IOGAM
InputSignals = { InputSignals = {
Inputs = { Inputs = {
DataSource = FileReaderS_DS DataSource = FileReader_DS
Type = LangmuirStructure Type = LangmuirStructure
MemberAliases = { MemberAliases = {
Inputs.TimeSdas = TimeSdas 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 = { +GAMFileReaderS = {
Class = IOGAM Class = IOGAM
@@ -421,7 +402,36 @@ $MdsLoopApp = {
DataSource = FileSignalsWriter DataSource = FileSignalsWriter
Type = float32 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 = { +GAMFileWriter = {
Class = IOGAM Class = IOGAM
InputSignals = { InputSignals = {
@@ -429,11 +439,21 @@ $MdsLoopApp = {
DataSource = "DDB1" DataSource = "DDB1"
Type = uint32 Type = uint32
} }
//"LangmuirStrt.SignalsL[0]" = { Langmuir0 = {
LangmuirStrt_SignalArray = { DataSource = "DDB1"
Type = float32
}
Langmuir1 = {
DataSource = "DDB1"
Type = float32
}
SignalEP_OutR = {
DataSource = "DDB1"
Type = float32
}
SignalEP_OutZ = {
DataSource = "DDB1" DataSource = "DDB1"
Type = float32 Type = float32
NumberOfElements = 4
} }
} }
OutputSignals = { 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 = { +Data = {
Class = ReferenceContainer Class = ReferenceContainer
@@ -521,16 +507,6 @@ $MdsLoopApp = {
} }
} }
+FileReader_DS = { +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 Class = FileDataSource::FileReader
Filename = "../Analysis/LangmuirSdas_46241_strt.csv" Filename = "../Analysis/LangmuirSdas_46241_strt.csv"
FileFormat = "csv" FileFormat = "csv"
@@ -590,7 +566,7 @@ $MdsLoopApp = {
+Thread1 = { +Thread1 = {
Class = RealTimeThread Class = RealTimeThread
CPUs = 0x1 CPUs = 0x1
Functions = {GAMTimer GAMFileReader GAMFileReaderS FlatIOGAM GAMElectricProbes GAMFileWriter } Functions = {GAMTimer GAMFileReader FlatIOGAM GAMLangSigs GAMElectricProbes GAMFileWriter }
} }
} }
} }

View File

@@ -43,8 +43,8 @@ namespace MARTe {
/** /**
* The number of signals * The number of signals
*/ */
const uint32 EP_NUM_INPUTS = 4u; const uint32 EP_NUM_INPUTS = 4u;
const uint32 EP_NUM_OUTPUTS = 2u; const uint32 EP_NUM_OUTPUTS = 2u;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Method definitions */ /* Method definitions */
@@ -55,16 +55,17 @@ namespace MARTe {
MessageI() { MessageI() {
gain = 0u; gain = 0u;
numberOfSamplesAvg = 1u; numberOfSamplesAvg = 1u;
numberOfInputElements = 0u;
//outputSignals = NULL_PTR(MARTe::float32 **); //outputSignals = NULL_PTR(MARTe::float32 **);
/*
inputElectricTop = NULL_PTR(MARTe::float32 *); inputElectricTop = NULL_PTR(MARTe::float32 *);
inputElectricInner = NULL_PTR(MARTe::float32 *); inputElectricInner = NULL_PTR(MARTe::float32 *);
inputElectricOuter = NULL_PTR(MARTe::float32 *); inputElectricOuter = NULL_PTR(MARTe::float32 *);
inputElectricBottom = NULL_PTR(MARTe::float32 *); inputElectricBottom = NULL_PTR(MARTe::float32 *);
*/
lastInputs = NULL_PTR(MARTe::float32**); lastInputs = NULL_PTR(MARTe::float32**);
inputSignal = NULL; // NULL_PTR(MARTe::float32*);
outputEpR = NULL_PTR(MARTe::float32 *); outputEpR = NULL_PTR(MARTe::float32 *);
outputEpZ = NULL_PTR(MARTe::float32 *); outputEpZ = NULL_PTR(MARTe::float32 *);
@@ -72,9 +73,10 @@ namespace MARTe {
} }
ElectricProbesGAM::~ElectricProbesGAM() { ElectricProbesGAM::~ElectricProbesGAM() {
//if (inputSignals != NULL_PTR(MARTe::float32 **)) { //if (inputSignal != NULL_PTR(MARTe::float32 **)) {
// delete[] inputSignals; // delete[] inputSignal;
//} //}
inputSignal = NULL; //NULL_PTR(MARTe::float32*);
/*if (outputSignals != NULL_PTR(MARTe::float32 **)) { /*if (outputSignals != NULL_PTR(MARTe::float32 **)) {
delete[] outputSignals; delete[] outputSignals;
} }
@@ -149,91 +151,85 @@ namespace MARTe {
bool ElectricProbesGAM::Setup() { bool ElectricProbesGAM::Setup() {
using namespace MARTe; using namespace MARTe;
uint32 numberOfInputSignals = GetNumberOfInputSignals(); uint32 numberOfInputSignals = GetNumberOfInputSignals();
bool ok = (numberOfInputSignals == 4u); bool ok = (numberOfInputSignals == 1u);
if (!ok) { if (!ok) {
REPORT_ERROR(ErrorManagement::ParametersError, "The number of input signals shall be equal to 4. numberOfInputSignals = %d ", numberOfInputSignals); REPORT_ERROR(ErrorManagement::ParametersError, "The number of input signals shall be equal to 4. numberOfInputSignals = %d ", numberOfInputSignals);
} }
if (ok) { 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; uint32 n;
if (lastInputs != NULL_PTR(MARTe::float32**)) { for (n = 0u; n < numberOfInputElements ; n++) {
for (n = 0u; n < numberOfInputSignals ; n++) { if (numberOfSamplesAvg > 1u) {
if (numberOfSamplesAvg > 1u) { lastInputs[n] = new float32[numberOfSamplesAvg - 1u];
lastInputs[n] = new float32[numberOfSamplesAvg - 1u]; if (lastInputs[n] != NULL_PTR(MARTe::float32*)) {
if (lastInputs[n] != NULL_PTR(MARTe::float32*)) { uint32 i;
uint32 i; for (i = 0u; i < (numberOfSamplesAvg - 1u); i++) {
for (i = 0u; i < (numberOfSamplesAvg - 1u); i++) { lastInputs[n][i] = 0.0F;
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<float32 *>(GetInputSignalMemory(n));
// }
}
if (ok) {
inputElectricTop = reinterpret_cast<float32 *>(GetInputSignalMemory(0u));
inputElectricInner = reinterpret_cast<float32 *>(GetInputSignalMemory(1u));
inputElectricOuter = reinterpret_cast<float32 *>(GetInputSignalMemory(2u));
inputElectricBottom = reinterpret_cast<float32 *>(GetInputSignalMemory(3u));
REPORT_ERROR(ErrorManagement::Information, "InputSignals reinterpret_cast OK");
}
} }
if (ok) {
inputSignal = reinterpret_cast<float32 *>(GetInputSignalMemory(0u));
/*
inputElectricTop = reinterpret_cast<float32 *>(GetInputSignalMemory(0u));
inputElectricInner = reinterpret_cast<float32 *>(GetInputSignalMemory(1u));
inputElectricOuter = reinterpret_cast<float32 *>(GetInputSignalMemory(2u));
inputElectricBottom = reinterpret_cast<float32 *>(GetInputSignalMemory(3u));
*/
REPORT_ERROR(ErrorManagement::Information, "InputSignals reinterpret_cast OK");
}
// OutputSignals // OutputSignals
uint32 numberOfOutputSignals = GetNumberOfOutputSignals(); uint32 numberOfOutputSignals = GetNumberOfOutputSignals();
@@ -313,15 +309,15 @@ namespace MARTe {
} }
bool ElectricProbesGAM::Execute() { bool ElectricProbesGAM::Execute() {
//*outputSignal = *inputSignal; //*outputEpZ = 3.4;
*outputEpR = 4.3; *outputEpR = (inputSignal[2] - inputOffsets[2]) -
// *outputEpZ = 3.4; (inputSignal[1] - inputOffsets[1]);
*outputEpZ = *inputElectricTop - *inputElectricOuter; *outputEpZ = inputSignal[0] - inputSignal[3];
//*outputSignal1 = *inputSignals[0]; // - *inputSignals[1]; //;*inputElectricTop - *inputElectricOuter;
//*outputSignal1 = *inputSignals[0] - *inputSignals[1]; //*outputSignal1 = *inputSignals[0] - *inputSignals[1];
//update the last values //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) { if (numberOfSamplesAvg > 2u) {
/*lint -e{9117} implicit conversion is safe*/ /*lint -e{9117} implicit conversion is safe*/
@@ -329,7 +325,11 @@ namespace MARTe {
lastInputs[i][k] = lastInputs[i][k - 1]; lastInputs[i][k] = lastInputs[i][k - 1];
} }
} }
if (numberOfSamplesAvg > 1u) {
lastInputs[i][0] = inputSignal[i];
}
} }
/*
if (numberOfSamplesAvg > 1u) { if (numberOfSamplesAvg > 1u) {
lastInputs[0][0] = *inputElectricTop; lastInputs[0][0] = *inputElectricTop;
lastInputs[1][0] = *inputElectricInner; lastInputs[1][0] = *inputElectricInner;
@@ -337,7 +337,7 @@ namespace MARTe {
lastInputs[3][0] = *inputElectricBottom; lastInputs[3][0] = *inputElectricBottom;
//lastInputs[i][0] = input[i][numberOfSamples - 1u]; //lastInputs[i][0] = input[i][numberOfSamples - 1u];
} }
*/
return true; return true;
} }

View File

@@ -153,12 +153,20 @@ namespace MARTe {
* The input signals * The input signals
*/ */
/**
* The input signal
*/
float32 *inputSignal;
/*
MARTe::float32 *inputElectricTop; MARTe::float32 *inputElectricTop;
MARTe::float32 *inputElectricInner; MARTe::float32 *inputElectricInner;
MARTe::float32 *inputElectricOuter; MARTe::float32 *inputElectricOuter;
MARTe::float32 *inputElectricBottom; MARTe::float32 *inputElectricBottom;
*/
uint32 numberOfInputElements;
MARTe::float32 inputOffsets[4]; float32 inputOffsets[4];
MARTe::float32 **lastInputs; MARTe::float32 **lastInputs;