additional parameter to identify cmd source
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good

This commit is contained in:
Robin Müller 2022-05-12 20:12:01 +02:00
parent e25c492aa4
commit 21ba8c95ff
No known key found for this signature in database
GPG Key ID: 11D4952C8CCEF814
4 changed files with 20 additions and 8 deletions

2
fsfw

@ -1 +1 @@
Subproject commit c0ff84bb9d81bc3444992fef38b74d260d54d5a0 Subproject commit 02473a0cd7a71e2eac0479959ef576fd4b81e981

View File

@ -47,10 +47,6 @@ ReturnValue_t HeaterHandler::performOperation(uint8_t operationCode) {
for (const auto& heater : helper.heaters) { for (const auto& heater : helper.heaters) {
heater.first->performOperation(0); heater.first->performOperation(0);
} }
// for (const auto& heater : heaterVec) {
// sif::info << heater.switchState << ",";
// }
// sif::info << std::endl;
} catch (const std::out_of_range& e) { } catch (const std::out_of_range& e) {
sif::warning << "HeaterHandler::performOperation: " sif::warning << "HeaterHandler::performOperation: "
"Out of range error | " "Out of range error | "
@ -110,7 +106,7 @@ void HeaterHandler::readCommandQueue() {
ReturnValue_t HeaterHandler::executeAction(ActionId_t actionId, MessageQueueId_t commandedBy, ReturnValue_t HeaterHandler::executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
const uint8_t* data, size_t size) { const uint8_t* data, size_t size) {
if (data == nullptr or size < 2) { if (data == nullptr or size < 3) {
return HasActionsIF::INVALID_PARAMETERS; return HasActionsIF::INVALID_PARAMETERS;
} }
if (actionId != SWITCH_HEATER) { if (actionId != SWITCH_HEATER) {
@ -126,6 +122,15 @@ ReturnValue_t HeaterHandler::executeAction(ActionId_t actionId, MessageQueueId_t
health == HasHealthIF::NEEDS_RECOVERY) { health == HasHealthIF::NEEDS_RECOVERY) {
return HasHealthIF::OBJECT_NOT_HEALTHY; return HasHealthIF::OBJECT_NOT_HEALTHY;
} }
CmdSourceParam cmdSource = CmdSourceParam::EXTERNAL;
uint8_t cmdSourceRaw = data[2];
if(cmdSourceRaw > 1) {
return HasActionsIF::INVALID_PARAMETERS;
}
cmdSource = static_cast<CmdSourceParam>(data[2]);
if(health == HasHealthIF::EXTERNAL_CONTROL and cmdSource == CmdSourceParam::INTERNAL) {
return HasHealthIF::IS_EXTERNALLY_CONTROLLED;
}
if (heater.active) { if (heater.active) {
return COMMAND_ALREADY_WAITING; return COMMAND_ALREADY_WAITING;
} }
@ -142,16 +147,18 @@ ReturnValue_t HeaterHandler::executeAction(ActionId_t actionId, MessageQueueId_t
ReturnValue_t HeaterHandler::sendSwitchCommand(uint8_t switchNr, ReturnValue_t onOff) { ReturnValue_t HeaterHandler::sendSwitchCommand(uint8_t switchNr, ReturnValue_t onOff) {
ReturnValue_t result; ReturnValue_t result;
store_address_t storeAddress; store_address_t storeAddress;
uint8_t commandData[2] = {}; uint8_t commandData[3] = {};
switch (onOff) { switch (onOff) {
case PowerSwitchIF::SWITCH_ON: case PowerSwitchIF::SWITCH_ON:
commandData[0] = switchNr; commandData[0] = switchNr;
commandData[1] = SET_SWITCH_ON; commandData[1] = SET_SWITCH_ON;
commandData[2] = CmdSourceParam::INTERNAL;
break; break;
case PowerSwitchIF::SWITCH_OFF: case PowerSwitchIF::SWITCH_OFF:
commandData[0] = switchNr; commandData[0] = switchNr;
commandData[1] = SET_SWITCH_OFF; commandData[1] = SET_SWITCH_OFF;
commandData[2] = CmdSourceParam::INTERNAL;
break; break;
default: default:
sif::error << "HeaterHandler::sendSwitchCommand: Invalid switch request" << std::endl; sif::error << "HeaterHandler::sendSwitchCommand: Invalid switch request" << std::endl;

View File

@ -46,6 +46,11 @@ class HeaterHandler : public ExecutableObjectIF,
static const ReturnValue_t MAIN_SWITCH_SET_TIMEOUT = MAKE_RETURN_CODE(0xA4); static const ReturnValue_t MAIN_SWITCH_SET_TIMEOUT = MAKE_RETURN_CODE(0xA4);
static const ReturnValue_t COMMAND_ALREADY_WAITING = MAKE_RETURN_CODE(0xA5); static const ReturnValue_t COMMAND_ALREADY_WAITING = MAKE_RETURN_CODE(0xA5);
enum CmdSourceParam: uint8_t {
INTERNAL = 0,
EXTERNAL = 1
};
/** Device command IDs */ /** Device command IDs */
static const DeviceCommandId_t SWITCH_HEATER = 0x0; static const DeviceCommandId_t SWITCH_HEATER = 0x0;

2
tmtc

@ -1 +1 @@
Subproject commit eb4143e6b5144050abb6dfb965e74174d8bad063 Subproject commit 8e20c2ab0879e5b483308d0feb4aeb5951ce00c9