Some error fixed. two main problem to solve at this point: adjust the periodic reading of the data through the dh, adjust the operations of the components (error in reading the target state).
This commit is contained in:
parent
868a461acb
commit
04cfb85311
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -150,13 +150,13 @@ void InitMission::createTasks(){
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Main thread sleep
|
//Main thread sleep
|
||||||
sif::debug << "Starting Tasks in 2 seconds" << std::endl;
|
sif::debug << "Starting Tasks in 3.2 seconds" << std::endl;
|
||||||
TaskFactory::delayTask(2000);
|
TaskFactory::delayTask(3200);
|
||||||
distributerTask->startTask();
|
distributerTask->startTask();
|
||||||
udpBridgeTask->startTask();
|
udpBridgeTask->startTask();
|
||||||
udpPollingTask->startTask();
|
udpPollingTask->startTask();
|
||||||
//serializeTask->startTask();
|
//serializeTask->startTask();
|
||||||
arduinoTask->startTask();
|
//arduinoTask->startTask();
|
||||||
controllerTask->startTask();
|
controllerTask->startTask();
|
||||||
|
|
||||||
//payloadTask->startTask();
|
//payloadTask->startTask();
|
||||||
|
@ -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.2, 1);
|
thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0.8, 1);
|
||||||
thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0.4, 2);
|
thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0.8, 2);
|
||||||
thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0.6, 3);
|
thisSequence->addSlot(objects::ARDUINO_DEVICE_HANDLER, length * 0.8, 3);
|
||||||
|
|
||||||
if (thisSequence->checkSequence() == HasReturnvaluesIF::RETURN_OK) {
|
if (thisSequence->checkSequence() == HasReturnvaluesIF::RETURN_OK) {
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
@ -24,6 +24,13 @@ TCS_ThermalComponent::TCS_ThermalComponent(object_id_t reportingObjectId,
|
|||||||
ThermalComponentIF::STATE_REQUEST_NON_OPERATIONAL),
|
ThermalComponentIF::STATE_REQUEST_NON_OPERATIONAL),
|
||||||
Heater(Heater), RedundantHeater(RedundantHeater),
|
Heater(Heater), RedundantHeater(RedundantHeater),
|
||||||
nopParameters({ parameters.lowerNopLimit, parameters.upperNopLimit }) {
|
nopParameters({ parameters.lowerNopLimit, parameters.upperNopLimit }) {
|
||||||
|
|
||||||
|
//Set thermal state once, then leave to operator.
|
||||||
|
/*DataSet mySet;
|
||||||
|
PoolVariable<int8_t> writableTargetState(targetStatePoolId, &mySet, PoolVariableIF::VAR_WRITE);
|
||||||
|
writableTargetState = ThermalComponentIF::STATE_REQUEST_NON_OPERATIONAL;
|
||||||
|
mySet.commit(PoolVariableIF::VALID);*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TCS_ThermalComponent::~TCS_ThermalComponent() {
|
TCS_ThermalComponent::~TCS_ThermalComponent() {
|
||||||
@ -31,6 +38,7 @@ TCS_ThermalComponent::~TCS_ThermalComponent() {
|
|||||||
|
|
||||||
ThermalComponentIF::HeaterRequest TCS_ThermalComponent::performOperation(uint8_t opCode, bool redundancy, bool dual) {
|
ThermalComponentIF::HeaterRequest TCS_ThermalComponent::performOperation(uint8_t opCode, bool redundancy, bool dual) {
|
||||||
|
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 1"<<std::endl;
|
||||||
// Heater define the Internal State
|
// Heater define the Internal State
|
||||||
if (Heater != NULL) {
|
if (Heater != NULL) {
|
||||||
Heater->performOperation(0);
|
Heater->performOperation(0);
|
||||||
@ -40,9 +48,11 @@ ThermalComponentIF::HeaterRequest TCS_ThermalComponent::performOperation(uint8_t
|
|||||||
RedundantHeater->performOperation(0);
|
RedundantHeater->performOperation(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 2"<<std::endl;
|
||||||
|
|
||||||
HeaterRequest request = HEATER_DONT_CARE;
|
HeaterRequest request = HEATER_DONT_CARE;
|
||||||
request = CoreComponent::performOperation(0);
|
request = CoreComponent::performOperation(0);
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 3"<<std::endl;
|
||||||
|
|
||||||
/*if (Heater == NULL) {
|
/*if (Heater == NULL) {
|
||||||
informComponentsAboutHeaterState(false, NONE, priority, request);
|
informComponentsAboutHeaterState(false, NONE, priority, request);
|
||||||
@ -56,26 +66,38 @@ ThermalComponentIF::HeaterRequest TCS_ThermalComponent::performOperation(uint8_t
|
|||||||
//Components overwrite the module request.
|
//Components overwrite the module request.
|
||||||
heating = ((request == ThermalComponentIF::HEATER_REQUEST_ON) ||
|
heating = ((request == ThermalComponentIF::HEATER_REQUEST_ON) ||
|
||||||
(request == ThermalComponentIF::HEATER_REQUEST_EMERGENCY_ON));
|
(request == ThermalComponentIF::HEATER_REQUEST_EMERGENCY_ON));
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 4"<<std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// strategy NOT-PASSIVE as default
|
// strategy NOT-PASSIVE as default
|
||||||
if (heating) {
|
if (heating) {
|
||||||
ReturnValue_t result = Heater->set();
|
ReturnValue_t result = Heater->set();
|
||||||
if (redundancy){
|
if (redundancy){
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK || dual) {
|
if (result != HasReturnvaluesIF::RETURN_OK || dual) {
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 5"<<std::endl;
|
||||||
RedundantHeater->set();
|
RedundantHeater->set();
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 6"<<std::endl;
|
||||||
} else {
|
} else {
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 7"<<std::endl;
|
||||||
RedundantHeater->clear(false);
|
RedundantHeater->clear(false);
|
||||||
}
|
sif::debug<<"DEBUG_COMPONENT: 8"<<std::endl;
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK)
|
|
||||||
Heater->clear(false);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 9"<<std::endl;
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 10"<<std::endl;
|
||||||
|
Heater->clear(false);
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 11"<<std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 12"<<std::endl;
|
||||||
Heater->clear(false);
|
Heater->clear(false);
|
||||||
RedundantHeater->clear(false);
|
RedundantHeater->clear(false);
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 13"<<std::endl;
|
||||||
}
|
}
|
||||||
|
sif::debug<<"DEBUG_COMPONENT: 14"<<std::endl;
|
||||||
|
|
||||||
/*if (strategy == PASSIVE) {
|
/*if (strategy == PASSIVE) {
|
||||||
informComponentsAboutHeaterState(false, NONE, priority, request);
|
informComponentsAboutHeaterState(false, NONE, priority, request);
|
||||||
|
@ -44,11 +44,9 @@ protected:
|
|||||||
TCS_Heater *Heater;
|
TCS_Heater *Heater;
|
||||||
TCS_Heater *RedundantHeater;
|
TCS_Heater *RedundantHeater;
|
||||||
|
|
||||||
State getState(float temperature, CoreComponent::Parameters parameters,
|
State getState(float temperature, CoreComponent::Parameters parameters, int8_t targetState);
|
||||||
int8_t targetState);
|
|
||||||
virtual void checkLimits(State state);
|
virtual void checkLimits(State state);
|
||||||
virtual HeaterRequest getHeaterRequest(int8_t targetState, float temperature,
|
virtual HeaterRequest getHeaterRequest(int8_t targetState, float temperature, CoreComponent::Parameters parameters);
|
||||||
CoreComponent::Parameters parameters);
|
|
||||||
State getIgnoredState(int8_t state);
|
State getIgnoredState(int8_t state);
|
||||||
|
|
||||||
enum Informee {
|
enum Informee {
|
||||||
|
@ -10,17 +10,17 @@
|
|||||||
|
|
||||||
ThermalController::ThermalController(object_id_t objectId, object_id_t powerSwitcher, size_t commandQueueDepth):
|
ThermalController::ThermalController(object_id_t objectId, object_id_t powerSwitcher, size_t commandQueueDepth):
|
||||||
ControllerBase(objectId, 0, commandQueueDepth),
|
ControllerBase(objectId, 0, commandQueueDepth),
|
||||||
powerSwitcherId(powerSwitcher), TempValueVec(datapool::Temperature_value, &TCSData, PoolVariableIF::VAR_READ),
|
powerSwitcherId(powerSwitcher), TempValueVec(datapool::Temperature_value, &SensorData, PoolVariableIF::VAR_READ),
|
||||||
TEMPERATURE_SENSOR_CH1(objects::TCS_SENSOR_CH1, &TempValueVec[0], &TempValueVec, 0, TEMPERATURE_SENSOR_CONFIG, datapool::TEMP_SENSOR_CH1, &TCSData, NULL),
|
TEMPERATURE_SENSOR_CH1(objects::TCS_SENSOR_CH1, &TempValueVec[0], &TempValueVec, 0, TEMPERATURE_SENSOR_CONFIG, datapool::TEMP_SENSOR_CH1, &SensorData, NULL),
|
||||||
TEMPERATURE_SENSOR_CH2(objects::TCS_SENSOR_CH2, &TempValueVec[1], &TempValueVec, 1, TEMPERATURE_SENSOR_CONFIG, datapool::TEMP_SENSOR_CH2, &TCSData, NULL),
|
TEMPERATURE_SENSOR_CH2(objects::TCS_SENSOR_CH2, &TempValueVec[1], &TempValueVec, 1, TEMPERATURE_SENSOR_CONFIG, datapool::TEMP_SENSOR_CH2, &SensorData, NULL),
|
||||||
HEATER_1(objects::TCS_HEATER_1, objects::TCS_SWITCH_1),
|
HEATER_1(objects::TCS_HEATER_1, objects::TCS_SWITCH_1),
|
||||||
REDUNDANT_HEATER_1(objects::TCS_REDUNDANT_HEATER_1, objects::TCS_SWITCH_1R),
|
REDUNDANT_HEATER_1(objects::TCS_REDUNDANT_HEATER_1, objects::TCS_SWITCH_1R),
|
||||||
HEATER_2(objects::TCS_HEATER_2, objects::TCS_SWITCH_2),
|
HEATER_2(objects::TCS_HEATER_2, objects::TCS_SWITCH_2),
|
||||||
REDUNDANT_HEATER_2(objects::TCS_REDUNDANT_HEATER_2, objects::TCS_SWITCH_2R),
|
REDUNDANT_HEATER_2(objects::TCS_REDUNDANT_HEATER_2, objects::TCS_SWITCH_2R),
|
||||||
TEMPERATURE_COMPONENT_1(objects::TCS_COMPONENT_1, COMPONENT_DOMAIN_ID, datapool::TEMP_SENSOR_CH1, datapool::TargetState_COMPONENT_1, datapool::CurrentState_COMPONENT_1,
|
TEMPERATURE_COMPONENT_1(objects::TCS_COMPONENT_1, COMPONENT_DOMAIN_ID, datapool::TEMP_SENSOR_CH1, datapool::TargetState_COMPONENT_1, datapool::CurrentState_COMPONENT_1,
|
||||||
datapool::HeaterRequest_COMPONENT_1, &TCSData, &TEMPERATURE_SENSOR_CH1, NULL, NULL, &HEATER_1, &REDUNDANT_HEATER_1, NULL, COMPONENT1_CONFIG, ThermalComponentIF::SAFE),
|
datapool::HeaterRequest_COMPONENT_1, &ComponentData, &TEMPERATURE_SENSOR_CH1, NULL, NULL, &HEATER_1, &REDUNDANT_HEATER_1, NULL, COMPONENT1_CONFIG, ThermalComponentIF::SAFE),
|
||||||
TEMPERATURE_COMPONENT_2(objects::TCS_COMPONENT_2, COMPONENT_DOMAIN_ID + 1, datapool::TEMP_SENSOR_CH2, datapool::TargetState_COMPONENT_2, datapool::CurrentState_COMPONENT_2,
|
TEMPERATURE_COMPONENT_2(objects::TCS_COMPONENT_2, COMPONENT_DOMAIN_ID + 1, datapool::TEMP_SENSOR_CH2, datapool::TargetState_COMPONENT_2, datapool::CurrentState_COMPONENT_2,
|
||||||
datapool::HeaterRequest_COMPONENT_2, &TCSData, &TEMPERATURE_SENSOR_CH2, NULL, NULL, &HEATER_2, &REDUNDANT_HEATER_2, NULL, COMPONENT2_CONFIG, ThermalComponentIF::SAFE)
|
datapool::HeaterRequest_COMPONENT_2, &ComponentData, &TEMPERATURE_SENSOR_CH2, NULL, NULL, &HEATER_2, &REDUNDANT_HEATER_2, NULL, COMPONENT2_CONFIG, ThermalComponentIF::SAFE)
|
||||||
{
|
{
|
||||||
sensors.push_back(TEMPERATURE_SENSOR_CH1);
|
sensors.push_back(TEMPERATURE_SENSOR_CH1);
|
||||||
sensors.push_back(TEMPERATURE_SENSOR_CH2);
|
sensors.push_back(TEMPERATURE_SENSOR_CH2);
|
||||||
@ -88,38 +88,36 @@ ReturnValue_t ThermalController::handleCommandMessage(CommandMessage *message) {
|
|||||||
|
|
||||||
ReturnValue_t ThermalController::performOperation(uint8_t opCode) {
|
ReturnValue_t ThermalController::performOperation(uint8_t opCode) {
|
||||||
|
|
||||||
sif::debug<<"\nDEBUG_TCS: Start of controller operations"<<std::endl;
|
sif::debug<<"DEBUG_TCS: Start of controller operations"<<std::endl;
|
||||||
std::cout << "\nDEBUG_TCS: Start of controller operations" << std::endl;
|
|
||||||
|
|
||||||
for (std::list<ArduinoTCSTemperatureSensor>::iterator iter = sensors.begin(); iter != sensors.end(); iter++) {
|
for (std::list<ArduinoTCSTemperatureSensor>::iterator iter = sensors.begin(); iter != sensors.end(); iter++) {
|
||||||
iter->performHealthOp();
|
iter->performHealthOp();
|
||||||
}
|
}
|
||||||
sif::debug<<"\nDEBUG_TCS: Health ops"<<std::endl;
|
sif::debug<<"DEBUG_TCS: Health ops"<<std::endl;
|
||||||
|
|
||||||
ControllerBase::performOperation(0);
|
ControllerBase::performOperation(0);
|
||||||
sif::debug<<"\nDEBUG_TCS: Controller ops"<<std::endl;
|
sif::debug<<"DEBUG_TCS: Controller ops"<<std::endl;
|
||||||
|
|
||||||
if (mode == MODE_OFF) {
|
if (mode == MODE_OFF) {
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
TCSData.read();
|
SensorData.read();
|
||||||
for (std::list<ArduinoTCSTemperatureSensor>::iterator iter = sensors.begin(); iter != sensors.end(); iter++) {
|
for (std::list<ArduinoTCSTemperatureSensor>::iterator iter = sensors.begin(); iter != sensors.end(); iter++) {
|
||||||
iter->performOperation(0);
|
iter->performOperation(0);
|
||||||
}
|
}
|
||||||
TCSData.commit();
|
SensorData.commit();
|
||||||
sif::debug<<"\nDEBUG_TCS: Sensor ops"<<std::endl;
|
sif::debug<<"DEBUG_TCS: Sensor ops"<<std::endl;
|
||||||
|
|
||||||
TCSData.read(); // ?check the read, separate dataset
|
ComponentData.read();
|
||||||
//calculateStrategy(true, true);
|
//calculateStrategy(true, true);
|
||||||
ThermalComponentIF::HeaterRequest request;
|
ThermalComponentIF::HeaterRequest request;
|
||||||
for (std::list<TCS_ThermalComponent>::iterator iter = components.begin(); iter != components.end(); iter++) {
|
for (std::list<TCS_ThermalComponent>::iterator iter = components.begin(); iter != components.end(); iter++) {
|
||||||
request = iter->performOperation(0, true, false); // request returnvalue
|
request = iter->performOperation(0, true, false); // request returnvalue to check, overridden
|
||||||
//request = iter->performOperation(0, ThermalComponentIF::SAFE, true, false);
|
//request = iter->performOperation(0, ThermalComponentIF::SAFE, true, false);
|
||||||
}
|
}
|
||||||
TCSData.commit();
|
ComponentData.commit();
|
||||||
sif::debug<<"\nDEBUG_TCS: Component ops"<<std::endl;
|
sif::debug<<"DEBUG_TCS: Component ops"<<std::endl;
|
||||||
std::cout << "\nDEBUG_TCS: End of controller operations" << std::endl;
|
|
||||||
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,8 @@ private:
|
|||||||
object_id_t powerSwitcherId;
|
object_id_t powerSwitcherId;
|
||||||
|
|
||||||
// definition of dataset
|
// definition of dataset
|
||||||
DataSet TCSData;
|
DataSet SensorData;
|
||||||
|
DataSet ComponentData;
|
||||||
|
|
||||||
// definition of dataset variables from datapool
|
// definition of dataset variables from datapool
|
||||||
PoolVector <float, 36> TempValueVec;
|
PoolVector <float, 36> TempValueVec;
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
#include <mission/DeviceHandler/ArduinoCookie.h>
|
#include <mission/DeviceHandler/ArduinoCookie.h>
|
||||||
|
|
||||||
#include <fsfw/serialize/SerializeAdapter.h>
|
#include <fsfw/serialize/SerializeAdapter.h>
|
||||||
//#include <fsfw/serviceinterface/ServiceInterface.h>
|
|
||||||
#include <fsfw/tmtcservices/CommandingServiceBase.h>
|
#include <fsfw/tmtcservices/CommandingServiceBase.h>
|
||||||
#include <fsfw/tmtcpacket/pus/TmPacketStored.h>
|
#include <fsfw/tmtcpacket/pus/TmPacketStored.h>
|
||||||
|
|
||||||
@ -200,7 +199,7 @@ ReturnValue_t ArduinoComIF::readReceivedMessage(CookieIF *cookie,
|
|||||||
buffer = &buf_ptr;*/
|
buffer = &buf_ptr;*/
|
||||||
*buffer = read_buf;
|
*buffer = read_buf;
|
||||||
|
|
||||||
close(Cookie->Serial_port_number);
|
//close(Cookie->Serial_port_number);
|
||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -34,10 +34,6 @@ public:
|
|||||||
ArduinoComIF(object_id_t objectId);
|
ArduinoComIF(object_id_t objectId);
|
||||||
virtual ~ArduinoComIF();
|
virtual ~ArduinoComIF();
|
||||||
|
|
||||||
/**
|
|
||||||
* DeviceCommunicationIF overrides
|
|
||||||
* (see DeviceCommunicationIF documentation)
|
|
||||||
*/
|
|
||||||
ReturnValue_t initializeInterface(CookieIF * cookie) override;
|
ReturnValue_t initializeInterface(CookieIF * cookie) override;
|
||||||
ReturnValue_t sendMessage(CookieIF *cookie, const uint8_t * sendData,
|
ReturnValue_t sendMessage(CookieIF *cookie, const uint8_t * sendData,
|
||||||
size_t sendLen) override;
|
size_t sendLen) override;
|
||||||
@ -49,24 +45,22 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
// DELETE
|
||||||
/**
|
/**
|
||||||
* Send TM packet which contains received data as TM[17,130].
|
* Send TM packet which contains received data as TM[17,130].
|
||||||
* Wiretapping will do the same.
|
* Wiretapping will do the same.
|
||||||
* @param data
|
* @param data
|
||||||
* @param len
|
* @param len
|
||||||
*/
|
*/
|
||||||
void sendTmPacket(const uint8_t *data,uint32_t len);
|
//void sendTmPacket(const uint8_t *data,uint32_t len);
|
||||||
|
|
||||||
AcceptsTelemetryIF* funnel = nullptr;
|
/*AcceptsTelemetryIF* funnel = nullptr;
|
||||||
MessageQueueIF* tmQueue = nullptr;
|
MessageQueueIF* tmQueue = nullptr;
|
||||||
size_t replyMaxLen = 0;
|
size_t replyMaxLen = 0;
|
||||||
|
|
||||||
using ReplyBuffer = std::vector<uint8_t>;
|
using ReplyBuffer = std::vector<uint8_t>;
|
||||||
std::map<address_t, ReplyBuffer> replyMap;
|
std::map<address_t, ReplyBuffer> replyMap;
|
||||||
|
|
||||||
uint8_t dummyReplyCounter = 0;
|
uint8_t dummyReplyCounter = 0;
|
||||||
|
uint16_t packetSubCounter = 0;*/
|
||||||
uint16_t packetSubCounter = 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,5 +68,6 @@ void ObjectFactory::produceGenericObjects() {
|
|||||||
new TestDevice(objects::TEST_DEVICE_HANDLER, objects::TEST_ECHO_COM_IF,
|
new TestDevice(objects::TEST_DEVICE_HANDLER, objects::TEST_ECHO_COM_IF,
|
||||||
testCookie, true);
|
testCookie, true);
|
||||||
#endif*/
|
#endif*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user