diff --git a/bsp_q7s/em/emObjectFactory.cpp b/bsp_q7s/em/emObjectFactory.cpp index d4500e0b..327e7b87 100644 --- a/bsp_q7s/em/emObjectFactory.cpp +++ b/bsp_q7s/em/emObjectFactory.cpp @@ -1,4 +1,5 @@ #include + #include "OBSWConfig.h" #include "bsp_q7s/core/CoreController.h" #include "bsp_q7s/core/ObjectFactory.h" diff --git a/bsp_q7s/obsw.cpp b/bsp_q7s/obsw.cpp index 1da60783..530c4904 100644 --- a/bsp_q7s/obsw.cpp +++ b/bsp_q7s/obsw.cpp @@ -4,11 +4,11 @@ #include #include "OBSWConfig.h" -#include "q7sConfig.h" #include "commonConfig.h" #include "core/InitMission.h" #include "fsfw/tasks/TaskFactory.h" #include "fsfw/version.h" +#include "q7sConfig.h" #include "watchdog/definitions.h" static int OBSW_ALREADY_RUNNING = -2; diff --git a/mission/devices/ACUHandler.cpp b/mission/devices/ACUHandler.cpp index bbb22f86..77386610 100644 --- a/mission/devices/ACUHandler.cpp +++ b/mission/devices/ACUHandler.cpp @@ -6,7 +6,8 @@ ACUHandler::ACUHandler(object_id_t objectId, object_id_t comIF, CookieIF *comCoo FailureIsolationBase *customFdir) : GomspaceDeviceHandler(objectId, comIF, comCookie, customFdir, ACU::MAX_CONFIGTABLE_ADDRESS, ACU::MAX_HKTABLE_ADDRESS, ACU::HK_TABLE_REPLY_SIZE), - coreHk(this), auxHk(this) {} + coreHk(this), + auxHk(this) {} ACUHandler::~ACUHandler() {} @@ -15,10 +16,7 @@ ReturnValue_t ACUHandler::buildNormalDeviceCommand(DeviceCommandId_t *id) { return buildCommandFromCommand(*id, NULL, 0); } -void ACUHandler::fillCommandAndReplyMap() { - GomspaceDeviceHandler::fillCommandAndReplyMap(); - this->insertInCommandMap(PRINT_CHANNEL_STATS); -} +void ACUHandler::fillCommandAndReplyMap() { GomspaceDeviceHandler::fillCommandAndReplyMap(); } void ACUHandler::letChildHandleHkReply(DeviceCommandId_t id, const uint8_t *packet) { parseHkTableReply(packet); @@ -26,15 +24,14 @@ void ACUHandler::letChildHandleHkReply(DeviceCommandId_t id, const uint8_t *pack #if OBSW_VERBOSE_LEVEL >= 1 PoolReadGuard pg0(&auxHk); PoolReadGuard pg1(&coreHk); - if(pg0.getReadResult() != RETURN_OK or pg1.getReadResult() != RETURN_OK) { + if (pg0.getReadResult() != RETURN_OK or pg1.getReadResult() != RETURN_OK) { return; } - for(size_t idx = 0; idx < 3; idx++) { + for (size_t idx = 0; idx < 3; idx++) { float tempC = coreHk.temperatures[idx] * 0.1; sif::info << "ACU: Temperature " << idx << ": " << tempC << " °C" << std::endl; } - sif::info << "ACU: Ground Watchdog Timer Count: " << auxHk.wdtCntGnd.value - << std::endl; + sif::info << "ACU: Ground Watchdog Timer Count: " << auxHk.wdtCntGnd.value << std::endl; sif::info << "ACU: Ground watchdog timer, seconds left before reboot: " << auxHk.wdtGndLeft.value << std::endl; #endif @@ -44,7 +41,7 @@ void ACUHandler::letChildHandleHkReply(DeviceCommandId_t id, const uint8_t *pack LocalPoolDataSetBase *ACUHandler::getDataSetHandle(sid_t sid) { if (sid == coreHk.getSid()) { return &coreHk; - } else if(sid == auxHk.getSid()) { + } else if (sid == auxHk.getSid()) { return &auxHk; } return nullptr; @@ -56,29 +53,28 @@ ReturnValue_t ACUHandler::parseHkTableReply(const uint8_t *packet) { PoolReadGuard pg1(&auxHk); auto res0 = pg0.getReadResult(); auto res1 = pg1.getReadResult(); - if(res0 != RETURN_OK) { + if (res0 != RETURN_OK) { return res0; } - if(res1 != RETURN_OK) { + if (res1 != RETURN_OK) { return res1; } dataOffset += 12; - for(size_t idx = 0; idx < 6; idx++) { + for (size_t idx = 0; idx < 6; idx++) { coreHk.currentInChannels[idx] = (packet[dataOffset] << 8) | packet[dataOffset + 1]; dataOffset += 4; } - for(size_t idx = 0; idx < 6; idx++) { + for (size_t idx = 0; idx < 6; idx++) { coreHk.voltageInChannels[idx] = (packet[dataOffset] << 8) | packet[dataOffset + 1]; dataOffset += 4; } - coreHk.vcc = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1); dataOffset += 4; coreHk.vbat = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1); dataOffset += 4; - for(size_t idx = 0; idx < 3; idx++) { + for (size_t idx = 0; idx < 3; idx++) { coreHk.temperatures[idx] = (packet[dataOffset] << 8) | packet[dataOffset + 1]; dataOffset += 4; } @@ -86,31 +82,31 @@ ReturnValue_t ACUHandler::parseHkTableReply(const uint8_t *packet) { coreHk.mpptMode = packet[dataOffset]; dataOffset += 3; - for(size_t idx = 0; idx < 6; idx++) { + for (size_t idx = 0; idx < 6; idx++) { coreHk.vboostInChannels[idx] = (packet[dataOffset] << 8) | packet[dataOffset + 1]; dataOffset += 4; } - for(size_t idx = 0; idx < 6; idx++) { + for (size_t idx = 0; idx < 6; idx++) { coreHk.powerInChannels[idx] = (packet[dataOffset] << 8) | packet[dataOffset + 1]; dataOffset += 4; } - for(size_t idx = 0; idx < 3; idx++) { + for (size_t idx = 0; idx < 3; idx++) { auxHk.dacEnables[idx] = packet[dataOffset]; dataOffset += 3; } - for(size_t idx = 0; idx < 6; idx++) { + for (size_t idx = 0; idx < 6; idx++) { auxHk.dacRawChannelVal0[idx] = (packet[dataOffset] << 8) | packet[dataOffset + 1]; dataOffset += 4; } auxHk.bootCause = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 | - *(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3); + *(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3); dataOffset += 6; coreHk.bootcnt = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 | - *(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3); + *(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3); dataOffset += 6; coreHk.uptime = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 | - *(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3); + *(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3); dataOffset += 6; auxHk.resetCause = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1); dataOffset += 4; @@ -121,20 +117,20 @@ ReturnValue_t ACUHandler::parseHkTableReply(const uint8_t *packet) { coreHk.mpptPeriod = *(packet + dataOffset) << 8 | *(packet + dataOffset + 1); dataOffset += 4; - for(size_t idx = 0; idx < 8; idx++) { + for (size_t idx = 0; idx < 8; idx++) { auxHk.deviceTypes[idx] = packet[dataOffset]; dataOffset += 3; } - for(size_t idx = 0; idx < 8; idx++) { + for (size_t idx = 0; idx < 8; idx++) { auxHk.devicesStatus[idx] = packet[dataOffset]; dataOffset += 3; } auxHk.wdtCntGnd = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 | - *(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3); + *(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3); dataOffset += 6; auxHk.wdtGndLeft = *(packet + dataOffset) << 24 | *(packet + dataOffset + 1) << 16 | - *(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3); + *(packet + dataOffset + 2) << 8 | *(packet + dataOffset + 3); dataOffset += 6; return RETURN_OK; } @@ -176,23 +172,10 @@ ReturnValue_t ACUHandler::initializeLocalDataPool(localpool::DataPool &localData return HasReturnvaluesIF::RETURN_OK; } -ReturnValue_t ACUHandler::childCommandHook(DeviceCommandId_t cmd, const uint8_t *commandData, - size_t commandDataLen) { - switch (cmd) { - case PRINT_CHANNEL_STATS: { - printChannelStats(); - return RETURN_OK; - } - default: { - return DeviceHandlerIF::COMMAND_NOT_IMPLEMENTED; - } - } -} - void ACUHandler::printChannelStats() { PoolReadGuard pg(&coreHk); sif::info << "ACU Info: Current [mA], Voltage [mV]" << std::endl; - for(size_t idx = 0; idx < 6; idx++) { + for (size_t idx = 0; idx < 6; idx++) { sif::info << std::setw(8) << std::left << "Channel " << idx << std::dec << "| " << static_cast(coreHk.currentInChannels[idx]) << std::setw(15) << std::right << coreHk.voltageInChannels[idx] << std::endl; @@ -200,3 +183,25 @@ void ACUHandler::printChannelStats() { } void ACUHandler::setDebugMode(bool enable) { this->debugMode = enable; } + +ReturnValue_t ACUHandler::printStatus(DeviceCommandId_t cmd) { + ReturnValue_t result = RETURN_OK; + switch (cmd) { + case (GOMSPACE::PRINT_SWITCH_V_I): { + PoolReadGuard pg(&coreHk); + result = pg.getReadResult(); + if (result != HasReturnvaluesIF::RETURN_OK) { + break; + } + printChannelStats(); + break; + } + default: { + return DeviceHandlerIF::COMMAND_NOT_SUPPORTED; + } + } + if (result != HasReturnvaluesIF::RETURN_OK) { + sif::warning << "Reading PDU1 HK table failed!" << std::endl; + } + return result; +} diff --git a/mission/devices/ACUHandler.h b/mission/devices/ACUHandler.h index ca0ccd2d..3154e547 100644 --- a/mission/devices/ACUHandler.h +++ b/mission/devices/ACUHandler.h @@ -29,16 +29,13 @@ class ACUHandler : public GomspaceDeviceHandler { */ virtual ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t* id) override; - virtual void fillCommandAndReplyMap() override; + ReturnValue_t printStatus(DeviceCommandId_t cmd) override; - virtual ReturnValue_t childCommandHook(DeviceCommandId_t cmd, const uint8_t* commandData, - size_t commandDataLen) override; + virtual void fillCommandAndReplyMap() override; LocalPoolDataSetBase* getDataSetHandle(sid_t sid) override; private: - static const DeviceCommandId_t PRINT_CHANNEL_STATS = 51; - ACU::CoreHk coreHk; ACU::AuxHk auxHk; bool debugMode = false; diff --git a/mission/devices/P60DockHandler.cpp b/mission/devices/P60DockHandler.cpp index f1df649d..25fb238f 100644 --- a/mission/devices/P60DockHandler.cpp +++ b/mission/devices/P60DockHandler.cpp @@ -251,7 +251,7 @@ ReturnValue_t P60DockHandler::printStatus(DeviceCommandId_t cmd) { return HasReturnvaluesIF::RETURN_OK; } default: { - return HasReturnvaluesIF::RETURN_FAILED; + return DeviceHandlerIF::COMMAND_NOT_SUPPORTED; } } sif::warning << "Reading P60 Dock HK table failed" << std::endl; diff --git a/mission/devices/PDU1Handler.cpp b/mission/devices/PDU1Handler.cpp index 44f8fb04..fca0fbeb 100644 --- a/mission/devices/PDU1Handler.cpp +++ b/mission/devices/PDU1Handler.cpp @@ -122,7 +122,7 @@ ReturnValue_t PDU1Handler::printStatus(DeviceCommandId_t cmd) { break; } default: { - return HasReturnvaluesIF::RETURN_FAILED; + return DeviceHandlerIF::COMMAND_NOT_SUPPORTED; } } if (result != HasReturnvaluesIF::RETURN_OK) { diff --git a/mission/devices/PDU2Handler.cpp b/mission/devices/PDU2Handler.cpp index 1476f95d..d0cef3f5 100644 --- a/mission/devices/PDU2Handler.cpp +++ b/mission/devices/PDU2Handler.cpp @@ -76,7 +76,7 @@ ReturnValue_t PDU2Handler::printStatus(DeviceCommandId_t cmd) { break; } default: { - return HasReturnvaluesIF::RETURN_FAILED; + return DeviceHandlerIF::COMMAND_NOT_SUPPORTED; } } if (result != HasReturnvaluesIF::RETURN_OK) { diff --git a/mission/devices/devicedefinitions/GomspaceDefinitions.h b/mission/devices/devicedefinitions/GomspaceDefinitions.h index 5314a280..0c7cc2d7 100644 --- a/mission/devices/devicedefinitions/GomspaceDefinitions.h +++ b/mission/devices/devicedefinitions/GomspaceDefinitions.h @@ -38,7 +38,8 @@ static const DeviceCommandId_t PARAM_GET = 0; //!< [EXPORT] : [COMMAND] static const DeviceCommandId_t PARAM_SET = 255; //!< [EXPORT] : [COMMAND] static const DeviceCommandId_t REQUEST_HK_TABLE = 16; //!< [EXPORT] : [COMMAND] -//!< [EXPORT] : [COMMAND] Print switch states, voltages and currents to the console +//! [EXPORT] : [COMMAND] Print switch states, voltages and currents to the console +//! For the ACU device, only print voltages and currents of the 6 ACU channels static const DeviceCommandId_t PRINT_SWITCH_V_I = 32; static const DeviceCommandId_t PRINT_LATCHUPS = 33; @@ -550,8 +551,8 @@ static const uint16_t MAX_HKTABLE_ADDRESS = 120; static const uint8_t HK_TABLE_ENTRIES = 64; static const uint16_t HK_TABLE_REPLY_SIZE = 262; -class CoreHk: public StaticLocalDataSet<14> { -public: +class CoreHk : public StaticLocalDataSet<14> { + public: CoreHk(HasLocalDataPoolIF* owner) : StaticLocalDataSet(owner, static_cast(::P60System::SetIds::ACU_CORE)) {} @@ -583,7 +584,6 @@ public: lp_var_t(sid.objectId, P60System::pool::ACU_MPPT_TIME, this); lp_var_t mpptPeriod = lp_var_t(sid.objectId, P60System::pool::ACU_MPPT_PERIOD, this); - }; /** * @brief This class defines a dataset for the hk table of the ACU. @@ -596,7 +596,6 @@ class AuxHk : public StaticLocalDataSet<12> { AuxHk(object_id_t objectId) : StaticLocalDataSet(sid_t(objectId, static_cast(::P60System::SetIds::ACU_AUX))) {} - lp_vec_t dacEnables = lp_vec_t(sid.objectId, P60System::pool::ACU_DAC_ENABLES, this); diff --git a/tmtc b/tmtc index ff66dd5d..c01f1d01 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit ff66dd5dd2bc2ee3150ce45160303bc79ed2599d +Subproject commit c01f1d01916160888cf745ee3db6a2c46d795408