The datapool variables definition has been corrected. The controller is now working apparently well. It still needs to be tested with real data and devices.

This commit is contained in:
mmode 2021-09-15 19:17:34 +02:00
parent 510949b54d
commit 02bde1133e
10 changed files with 51 additions and 119 deletions

Binary file not shown.

View File

@ -8,106 +8,64 @@
#include "../../../bsp_linux/fsfwconfig/datapool/dataPoolInit.h" #include "../../../bsp_linux/fsfwconfig/datapool/dataPoolInit.h"
void dataPoolInit(std::map<uint32_t, PoolEntryIF*>* pool_map) { void dataPoolInit(std::map<uint32_t, PoolEntryIF*>* pool_map) {
uint32_t testVar[1] = { 0 };
pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::DUMMY1,
new PoolEntry<uint32_t>(testVar, 1)));
pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::DUMMY2,
new PoolEntry<uint32_t>(testVar, 1)));
pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::DUMMY3,
new PoolEntry<uint32_t>(testVar, 1)));
pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::DUMMY4,
new PoolEntry<uint32_t>(testVar, 1)));
pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::DUMMY5,
new PoolEntry<uint32_t>(testVar, 1)));
pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::DUMMY6,
new PoolEntry<uint32_t>(testVar, 1)));
int32_t testVarSigned[1] = { 0 };
pool_map->insert(
std::pair<int32_t, PoolEntryIF*>(datapool::LIMIT_VAR,
new PoolEntry<int32_t>(testVarSigned, 1)));
/*float t_Centroid_PoolId[2] = {0,0}; //Here the pool map entries of the DH and CONTROLLER are defined.
pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::Centroid_PoolId,
new PoolEntry<float>(t_Centroid_PoolId, 2)));
uint32_t t_CentroidTime_PoolId[2] = {0,0};
pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::CentroidTime_PoolId,
new PoolEntry<uint32_t>(t_CentroidTime_PoolId, 2)));*/
//Here the pool map entries of the Arduino DH are defined
float Temperature_value[36] = {0}; float Temperature_value[36] = {0};
pool_map->insert( pool_map->insert(
std::pair<float, PoolEntryIF*>(datapool::Temperature_value, std::pair<uint32_t, PoolEntryIF*>(datapool::Temperature_value,
new PoolEntry<float>(Temperature_value, 36))); new PoolEntry<float>(Temperature_value, 36)));
unsigned int Temperature_Timestamp[36] = {0}; unsigned int Temperature_Timestamp[36] = {0};
pool_map->insert( pool_map->insert(
std::pair<unsigned int, PoolEntryIF*>(datapool::Temperature_Timestamp, std::pair<uint32_t, PoolEntryIF*>(datapool::Temperature_Timestamp,
new PoolEntry<unsigned int>(Temperature_Timestamp, 36))); new PoolEntry<unsigned int>(Temperature_Timestamp, 36)));
float Environmental_value[9] = {0}; float Environmental_value[9] = {0};
pool_map->insert( pool_map->insert(
std::pair<float, PoolEntryIF*>(datapool::Environmental_value, std::pair<uint32_t, PoolEntryIF*>(datapool::Environmental_value,
new PoolEntry<float>(Environmental_value, 9))); new PoolEntry<float>(Environmental_value, 9)));
unsigned int Environmental_Timestamp[9] = {0}; unsigned int Environmental_Timestamp[9] = {0};
pool_map->insert( pool_map->insert(
std::pair<unsigned int, PoolEntryIF*>(datapool::Environmental_Timestamp, std::pair<uint32_t, PoolEntryIF*>(datapool::Environmental_Timestamp,
new PoolEntry<unsigned int>(Environmental_Timestamp, 9))); new PoolEntry<unsigned int>(Environmental_Timestamp, 9)));
float Accelerometer_value[15] = {0}; float Accelerometer_value[15] = {0};
pool_map->insert( pool_map->insert(
std::pair<float, PoolEntryIF*>(datapool::Accelerometer_value, std::pair<uint32_t, PoolEntryIF*>(datapool::Accelerometer_value,
new PoolEntry<float>(Accelerometer_value, 15))); new PoolEntry<float>(Accelerometer_value, 15)));
unsigned int Accelerometer_Timestamp[15] = {0}; unsigned int Accelerometer_Timestamp[15] = {0};
pool_map->insert( pool_map->insert(
std::pair<unsigned int, PoolEntryIF*>(datapool::Accelerometer_Timestamp, std::pair<uint32_t, PoolEntryIF*>(datapool::Accelerometer_Timestamp,
new PoolEntry<unsigned int>(Accelerometer_Timestamp, 15))); new PoolEntry<unsigned int>(Accelerometer_Timestamp, 15)));
float TEMP_SENSOR_CH1[1] = {0}; float TEMP_SENSOR_CH1[1] = {0};
pool_map->insert( pool_map->insert(
std::pair<float, PoolEntryIF*>(datapool::TEMP_SENSOR_CH1, std::pair<uint32_t, PoolEntryIF*>(datapool::TEMP_SENSOR_CH1,
new PoolEntry<float>(TEMP_SENSOR_CH1, 1))); new PoolEntry<float>(TEMP_SENSOR_CH1, 1)));
float TEMP_SENSOR_CH2[1] = {0}; float TEMP_SENSOR_CH2[1] = {0};
pool_map->insert( pool_map->insert(
std::pair<float, PoolEntryIF*>(datapool::TEMP_SENSOR_CH2, std::pair<uint32_t, PoolEntryIF*>(datapool::TEMP_SENSOR_CH2,
new PoolEntry<float>(TEMP_SENSOR_CH2, 1))); new PoolEntry<float>(TEMP_SENSOR_CH2, 1)));
int8_t TargetState_COMPONENT_1[1] = {0};
/*uint32_t Temp_COMPONENT_1[1] = {0};
pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::Temp_COMPONENT_1,
new PoolEntry<uint32_t>(Temp_COMPONENT_1, 1)));*/
uint32_t TargetState_COMPONENT_1[1] = {0};
pool_map->insert( pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::TargetState_COMPONENT_1, std::pair<uint32_t, PoolEntryIF*>(datapool::TargetState_COMPONENT_1,
new PoolEntry<uint32_t>(TargetState_COMPONENT_1, 1))); new PoolEntry<int8_t>(TargetState_COMPONENT_1, 1)));
uint32_t CurrentState_COMPONENT_1[1] = {0}; int8_t CurrentState_COMPONENT_1[1] = {0};
pool_map->insert( pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::CurrentState_COMPONENT_1, std::pair<uint32_t, PoolEntryIF*>(datapool::CurrentState_COMPONENT_1,
new PoolEntry<uint32_t>(CurrentState_COMPONENT_1, 1))); new PoolEntry<int8_t>(CurrentState_COMPONENT_1, 1)));
uint32_t HeaterRequest_COMPONENT_1[1] = {0}; uint8_t HeaterRequest_COMPONENT_1[1] = {0};
pool_map->insert( pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::HeaterRequest_COMPONENT_1, std::pair<uint32_t, PoolEntryIF*>(datapool::HeaterRequest_COMPONENT_1,
new PoolEntry<uint32_t>(HeaterRequest_COMPONENT_1, 1))); new PoolEntry<uint8_t>(HeaterRequest_COMPONENT_1, 1)));
/*uint32_t Temp_COMPONENT_2[1] = {0}; int8_t TargetState_COMPONENT_2[1] = {0};
pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::Temp_COMPONENT_2,
new PoolEntry<uint32_t>(Temp_COMPONENT_2, 1)));*/
uint32_t TargetState_COMPONENT_2[1] = {0};
pool_map->insert( pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::TargetState_COMPONENT_2, std::pair<uint32_t, PoolEntryIF*>(datapool::TargetState_COMPONENT_2,
new PoolEntry<uint32_t>(TargetState_COMPONENT_2, 1))); new PoolEntry<int8_t>(TargetState_COMPONENT_2, 1)));
uint32_t CurrentState_COMPONENT_2[1] = {0}; int8_t CurrentState_COMPONENT_2[1] = {0};
pool_map->insert( pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::CurrentState_COMPONENT_2, std::pair<uint32_t, PoolEntryIF*>(datapool::CurrentState_COMPONENT_2,
new PoolEntry<uint32_t>(CurrentState_COMPONENT_2, 1))); new PoolEntry<int8_t>(CurrentState_COMPONENT_2, 1)));
uint32_t HeaterRequest_COMPONENT_2[1] = {0}; uint8_t HeaterRequest_COMPONENT_2[1] = {0};
pool_map->insert( pool_map->insert(
std::pair<uint32_t, PoolEntryIF*>(datapool::HeaterRequest_COMPONENT_2, std::pair<uint32_t, PoolEntryIF*>(datapool::HeaterRequest_COMPONENT_2,
new PoolEntry<uint32_t>(HeaterRequest_COMPONENT_2, 1))); new PoolEntry<uint8_t>(HeaterRequest_COMPONENT_2, 1)));
} }

View File

@ -12,60 +12,22 @@
namespace datapool { namespace datapool {
enum opus_variable_id { enum opus_variable_id {
DUMMY1 = 0x100000,
DUMMY2 = 0x100001,
DUMMY3 = 0x100002,
DUMMY4 = 0x100003,
DUMMY5 = 0x100004,
DUMMY6 = 0x100005,//TEST VAR
LIMIT_VAR = 0x100006,
TIME_STAMPER = 0x100007,
/* The IDs of the variables of the Arduino serial output are here defined.*/
/* // The IDs of the variables of the DH and CONTROLLER are here defined.
Temperature.start_string = 0x100008, Temperature_value = 0x100001,
Temperature.Typ = 0x100009, Temperature_Timestamp = 0x100002,
Temperature.SPCChNumber = 0x100010, Environmental_value = 0x10003,
Temperature.Value_Cnt = 0x100011, Environmental_Timestamp = 0x10004,
Temperature.temperature = 0x100012, Accelerometer_value = 0x10005,
Temperature.Timestamp = 0x100013, Accelerometer_Timestamp = 0x10006,
Temperature.end_string = 0x100014, TEMP_SENSOR_CH1 = 0x10007,
TEMP_SENSOR_CH2 = 0x10008,
Environmental.start_string = 0x100015, TargetState_COMPONENT_1 = 0x10009,
Environmental.Typ = 0x100016, CurrentState_COMPONENT_1 = 0x100010,
Environmental.SPCChNumber = 0x100017, HeaterRequest_COMPONENT_1 = 0x100011,
Environmental.Value_Cnt = 0x100018, TargetState_COMPONENT_2 = 0x100012,
Environmental.Value = 0x100019, CurrentState_COMPONENT_2 = 0x100013,
Environmental.Timestamp = 0x100020, HeaterRequest_COMPONENT_2 = 0x100014
Environmental.end_string = 0x100021,
Accelerometer.start_string = 0x100022,
Accelerometer.Typ = 0x100023,
Accelerometer.SPCChNumber = 0x100024,
Accelerometer.Value_Cnt = 0x100025,
Accelerometer.Value = 0x100026,
Accelerometer.Timestamp = 0x100027,
Accelerometer.end_string = 0x100028,
*/
Temperature_value = 0x100008,
Temperature_Timestamp = 0x100009,
Environmental_value = 0x100010,
Environmental_Timestamp = 0x100011,
Accelerometer_value = 0x100012,
Accelerometer_Timestamp = 0x100013,
TEMP_SENSOR_CH1 = 0x100014,
TEMP_SENSOR_CH2 = 0x100015,
TargetState_COMPONENT_1 = 0x100016,
CurrentState_COMPONENT_1 = 0x100017,
HeaterRequest_COMPONENT_1 = 0x100018,
TargetState_COMPONENT_2 = 0x100019,
CurrentState_COMPONENT_2 = 0x100020,
HeaterRequest_COMPONENT_2 = 0x100021
//Temp_COMPONENT_1 = 0x100098,
//Temp_COMPONENT_2 = 0x100099,
}; };

View File

@ -17,9 +17,9 @@ ReturnValue_t pollingSequenceArduinoFunction(
uint32_t length = thisSequence->getPeriodMs(); uint32_t length = thisSequence->getPeriodMs();
thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0, 0); thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0, 0);
thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0.3, 1); thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0.2, 1);
thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0.3, 2); thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0.3, 2);
thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0.4, 3); thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0.5, 3);
if (thisSequence->checkSequence() == HasReturnvaluesIF::RETURN_OK) { if (thisSequence->checkSequence() == HasReturnvaluesIF::RETURN_OK) {
return HasReturnvaluesIF::RETURN_OK; return HasReturnvaluesIF::RETURN_OK;

View File

@ -68,13 +68,25 @@ ReturnValue_t ArduinoDH::scanForReply(const uint8_t *start, size_t len,
if (len == *foundLen){ if (len == *foundLen){
// start character: '[' // start character: '['
if (*start == 91 ){ if (*start == 91 ){
return APERIODIC_REPLY; return APERIODIC_REPLY;
} else{ } else{
return DeviceHandlerIF::LENGTH_MISSMATCH; return DeviceHandlerIF::LENGTH_MISSMATCH;
} }
} else { } else {
return IGNORE_REPLY_DATA; return IGNORE_REPLY_DATA;
} }
/*if (len == *foundLen){
// start character: '['
if (*start == 91 ){
if (*start + 9 == 49) {
return APERIODIC_REPLY;
}
} else{
return DeviceHandlerIF::LENGTH_MISSMATCH;
}
} else {
return IGNORE_REPLY_DATA;
}*/
} }
ReturnValue_t ArduinoDH::interpretDeviceReply(DeviceCommandId_t id, ReturnValue_t ArduinoDH::interpretDeviceReply(DeviceCommandId_t id,