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 = {
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 }
}
}
}

View File

@@ -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<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
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;
}

View File

@@ -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;