From be9409c80d0b4695870e111b0680fd12e5fe1b59 Mon Sep 17 00:00:00 2001 From: "Jakob.Meier" Date: Wed, 3 Feb 2021 08:09:54 +0100 Subject: [PATCH] save structs for datasets --- bsp_q7s/InitMission.cpp | 2 +- fsfwconfig/OBSWConfig.h | 2 +- mission/devices/ACUHandler.cpp | 2 +- mission/devices/ACUHandler.h | 5 +- mission/devices/GomspaceDeviceHandler.cpp | 15 +- mission/devices/GomspaceDeviceHandler.h | 4 +- mission/devices/HeaterHandler.cpp | 2 +- mission/devices/P60DockHandler.cpp | 2 +- mission/devices/P60DockHandler.h | 4 + mission/devices/PCDUHandler.cpp | 140 +-- mission/devices/PDU1Handler.cpp | 6 +- mission/devices/PDU1Handler.h | 2 +- mission/devices/PDU2Handler.cpp | 143 +-- mission/devices/PDU2Handler.h | 2 +- .../devicedefinitions/GomspaceDefinitions.h | 822 +++++++++++++----- 15 files changed, 792 insertions(+), 361 deletions(-) diff --git a/bsp_q7s/InitMission.cpp b/bsp_q7s/InitMission.cpp index 9a60a601..c237eb24 100644 --- a/bsp_q7s/InitMission.cpp +++ b/bsp_q7s/InitMission.cpp @@ -165,7 +165,7 @@ void InitMission::initTasks(){ UdpBridgeTask->startTask(); UdpPollingTask->startTask(); -// GomSpacePstTask->startTask(); + GomSpacePstTask->startTask(); PollingSequenceTableTaskDefault->startTask(); PusVerification->startTask(); diff --git a/fsfwconfig/OBSWConfig.h b/fsfwconfig/OBSWConfig.h index bc534929..0682a0c3 100644 --- a/fsfwconfig/OBSWConfig.h +++ b/fsfwconfig/OBSWConfig.h @@ -12,7 +12,7 @@ // debugging. #define OBSW_ENHANCED_PRINTOUT 1 -#define TE0720 1 +#define TE0720 0 #include "OBSWVersion.h" diff --git a/mission/devices/ACUHandler.cpp b/mission/devices/ACUHandler.cpp index 1e9c908a..d6337c79 100644 --- a/mission/devices/ACUHandler.cpp +++ b/mission/devices/ACUHandler.cpp @@ -3,7 +3,7 @@ ACUHandler::ACUHandler(object_id_t objectId, object_id_t comIF, CookieIF * comCookie, uint16_t maxConfigTableAddress, uint16_t maxHkTableAddress, uint16_t hkTableSize) : GomspaceDeviceHandler(objectId, comIF, comCookie, maxConfigTableAddress, maxHkTableAddress, - hkTableSize) { + hkTableSize, &acuHkTableDataset), acuHkTableDataset(this) { } ACUHandler::~ACUHandler() { diff --git a/mission/devices/ACUHandler.h b/mission/devices/ACUHandler.h index a6f7d046..f596ddd9 100644 --- a/mission/devices/ACUHandler.h +++ b/mission/devices/ACUHandler.h @@ -5,8 +5,8 @@ #include /** - * @brief Handler for the ACU of Gomspace. Monitors and controls the battery charging via - * the solar pannels. + * @brief Handler for the ACU from Gomspace. Monitors and controls the battery charging via + * the solar panels. */ class ACUHandler: public GomspaceDeviceHandler { public: @@ -19,6 +19,7 @@ protected: private: + ACU::HkTableDataset acuHkTableDataset; }; #endif /* MISSION_DEVICES_ACUHANDLER_H_ */ diff --git a/mission/devices/GomspaceDeviceHandler.cpp b/mission/devices/GomspaceDeviceHandler.cpp index 45d3ba22..a5c09d0b 100644 --- a/mission/devices/GomspaceDeviceHandler.cpp +++ b/mission/devices/GomspaceDeviceHandler.cpp @@ -3,12 +3,17 @@ GomspaceDeviceHandler::GomspaceDeviceHandler(object_id_t objectId, object_id_t comIF, CookieIF * comCookie, uint16_t maxConfigTableAddress, uint16_t maxHkTableAddress, - uint16_t hkTableSize) : - DeviceHandlerBase(objectId, comIF, comCookie), maxConfigTableAddress(maxConfigTableAddress), maxHkTableAddress( - maxHkTableAddress), hkTableSize(hkTableSize) { + uint16_t hkTableSize, LocalPoolDataSetBase* hkTableDataset) : + DeviceHandlerBase(objectId, comIF, comCookie), maxConfigTableAddress(maxConfigTableAddress), + maxHkTableAddress(maxHkTableAddress), hkTableSize(hkTableSize), hkTableDataset(hkTableDataset) { mode = MODE_NORMAL; if (comCookie == NULL) { - sif::error << "GomspaceDeviceHandler invalid com cookie" << std::endl; + sif::error << "GomspaceDeviceHandler::GomspaceDeviceHandler: Invalid com cookie" + << std::endl; + } + if (hkTableDataset == NULL) { + sif::error << "GomspaceDeviceHandler::GomspaceDeviceHandler: Invalid hk table data set" + << std::endl; } } @@ -88,7 +93,7 @@ void GomspaceDeviceHandler::fillCommandAndReplyMap(){ this->insertInCommandMap(GOMSPACE::REBOOT); this->insertInCommandAndReplyMap(GOMSPACE::PARAM_SET, 3); this->insertInCommandAndReplyMap(GOMSPACE::PARAM_GET, 3); - this->insertInCommandAndReplyMap(GOMSPACE::REQUEST_HK_TABLE, 3); + this->insertInCommandAndReplyMap(GOMSPACE::REQUEST_HK_TABLE, 3, hkTableDataset); this->insertInCommandMap(GOMSPACE::GNDWDT_RESET); } diff --git a/mission/devices/GomspaceDeviceHandler.h b/mission/devices/GomspaceDeviceHandler.h index 2ea8af4a..e23032a2 100644 --- a/mission/devices/GomspaceDeviceHandler.h +++ b/mission/devices/GomspaceDeviceHandler.h @@ -33,7 +33,7 @@ public: */ GomspaceDeviceHandler(object_id_t objectId, object_id_t comIF, CookieIF * comCookie, uint16_t maxConfigTableAddress, uint16_t maxHkTableAddress, - uint16_t hkTableSize); + uint16_t hkTableSize, LocalPoolDataSetBase* hkTableDataset); virtual ~GomspaceDeviceHandler(); protected: @@ -54,6 +54,8 @@ protected: /** The size of the housekeeping table (table id 4) */ uint16_t hkTableSize; + LocalPoolDataSetBase* hkTableDataset = nullptr; + void doStartUp() override; void doShutDown() override; virtual ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t * id) diff --git a/mission/devices/HeaterHandler.cpp b/mission/devices/HeaterHandler.cpp index 2393696e..99e43b95 100644 --- a/mission/devices/HeaterHandler.cpp +++ b/mission/devices/HeaterHandler.cpp @@ -190,7 +190,7 @@ void HeaterHandler::handleSwitchOnCommand(HeaterMapIter heaterMapIter) { /* Check if command waits for main switch being set on and whether the timeout has expired */ if (heaterMapIter->second.waitMainSwitchOn && heaterMapIter->second.mainSwitchCountdown.hasTimedOut()) { - //TODO: This requires the initiation of an FDIR procedure + //TODO - This requires the initiation of an FDIR procedure triggerEvent(MAIN_SWITCH_TIMEOUT); heaterMapIter->second.active = false; return; diff --git a/mission/devices/P60DockHandler.cpp b/mission/devices/P60DockHandler.cpp index 771a6533..690a17ad 100644 --- a/mission/devices/P60DockHandler.cpp +++ b/mission/devices/P60DockHandler.cpp @@ -3,7 +3,7 @@ P60DockHandler::P60DockHandler(object_id_t objectId, object_id_t comIF, CookieIF * comCookie, uint16_t maxConfigTableAddress, uint16_t maxHkTableAddress, uint16_t hkTableSize) : GomspaceDeviceHandler(objectId, comIF, comCookie, maxConfigTableAddress, maxHkTableAddress, - hkTableSize) { + hkTableSize, &p60dockHkTableDataset), p60dockHkTableDataset(this) { } P60DockHandler::~P60DockHandler() { diff --git a/mission/devices/P60DockHandler.h b/mission/devices/P60DockHandler.h index f23a365d..3c397758 100644 --- a/mission/devices/P60DockHandler.h +++ b/mission/devices/P60DockHandler.h @@ -2,6 +2,7 @@ #define MISSION_DEVICES_P60DOCKHANDLER_H_ #include "GomspaceDeviceHandler.h" +#include /** @@ -16,6 +17,9 @@ public: protected: virtual void letChildHandleHkReply(DeviceCommandId_t id, const uint8_t *packet) override; + +private: + P60Dock::HkTableDataset p60dockHkTableDataset; }; #endif /* MISSION_DEVICES_P60DOCKHANDLER_H_ */ diff --git a/mission/devices/PCDUHandler.cpp b/mission/devices/PCDUHandler.cpp index b5f593ad..aaa70c07 100644 --- a/mission/devices/PCDUHandler.cpp +++ b/mission/devices/PCDUHandler.cpp @@ -87,24 +87,23 @@ void PCDUHandler::handleChangedDataset(sid_t sid, store_address_t storeId) { if (sid == sid_t(objects::PCDU_HANDLER, PDU2::HK_TABLE_DATA_SET_ID)) { HousekeepingPacketUpdate packetUpdate(reinterpret_cast(&timeStamp), sizeof(timeStamp), &pdu2HkTableDataset); - const uint8_t** packet_ptr = NULL; + const uint8_t* packet_ptr = NULL; size_t size; - result = IPCStore->getData(storeId, packet_ptr, &size); + result = IPCStore->getData(storeId, &packet_ptr, &size); if (result != RETURN_OK) { sif::error << "PCDUHandler::handleChangedDataset: Failed to get data from IPCStore." << std::endl; - //TODO: Is it necessary to trigger an Event here? - result = IPCStore->deleteData(storeId); - if (result != RETURN_OK) { - sif::error << "PCDUHandler::handleChangedDataset: Failed to delete data in IPCStore" - << std::endl; - } } - result = packetUpdate.deSerialize(packet_ptr, &size, SerializeIF::Endianness::BIG); + result = packetUpdate.deSerialize(&packet_ptr, &size, SerializeIF::Endianness::BIG); if (result != RETURN_OK) { sif::error << "PCDUHandler::handleChangedDataset: Failed to deserialize packet in " << "pdu2HkTableDataset" << std::endl; } + result = IPCStore->deleteData(storeId); + if (result != RETURN_OK) { + sif::error << "PCDUHandler::handleChangedDataset: Failed to delete data in IPCStore" + << std::endl; + } updatePdu2SwitchStates(); } else { @@ -113,6 +112,7 @@ void PCDUHandler::handleChangedDataset(sid_t sid, store_address_t storeId) { } void PCDUHandler::updatePdu2SwitchStates() { + //TODO: pool read helper if (pdu2HkTableDataset.read() != RETURN_OK) { switchStates[pcduSwitches::Q7S] = pdu2HkTableDataset.outEnabledQ7S.value; switchStates[pcduSwitches::PAYLOAD_PCDU_CH1] = pdu2HkTableDataset.outEnabledPlPCDUCh1.value; @@ -224,95 +224,95 @@ object_id_t PCDUHandler::getObjectId() const { ReturnValue_t PCDUHandler::initializeLocalDataPool(localpool::DataPool &localDataPoolMap, LocalDataPoolManager &poolManager) { - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_Q7S, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH1, + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_Q7S, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH1, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_RW, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_TCS_BOARD_HEATER_IN, + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_RW, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_TCS_BOARD_HEATER_IN, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_SUS_REDUNDANT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_DEPLOYMENT_MECHANISM, + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_SUS_REDUNDANT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_DEPLOYMENT_MECHANISM, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH6, + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH6, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_ACS_BOARD_SIDE_B, + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_ACS_BOARD_SIDE_B, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_PAYLOAD_CAMERA, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_PAYLOAD_CAMERA, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_Q7S, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH1, + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_Q7S, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH1, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_RW, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_TCS_BOARD_HEATER_IN, + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_RW, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_TCS_BOARD_HEATER_IN, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_SUS_REDUNDANT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_DEPLOYMENT_MECHANISM, + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_SUS_REDUNDANT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_DEPLOYMENT_MECHANISM, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH6, + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH6, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_ACS_BOARD_SIDE_B, + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_ACS_BOARD_SIDE_B, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_PAYLOAD_CAMERA, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_PAYLOAD_CAMERA, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VCC, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VBAT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_TEMPERATURE, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CONV_EN, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VCC, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VBAT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_TEMPERATURE, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CONV_EN, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_Q7S, new PoolEntry( { + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_Q7S, new PoolEntry( { pcduSwitches::INIT_STATE_Q7S })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_PAYLOAD_PCDU_CH1, new PoolEntry( { + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_PCDU_CH1, new PoolEntry( { pcduSwitches::INIT_STATE_PAYLOAD_PCDU_CH1 })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_RW, new PoolEntry( { + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_RW, new PoolEntry( { pcduSwitches::INIT_STATE_RW })); #if TE0720 == 1 - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_TCS_BOARD_HEATER_IN, new PoolEntry( { 1 })); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_TCS_BOARD_HEATER_IN, new PoolEntry( { 1 })); #else - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_TCS_BOARD_HEATER_IN, new PoolEntry( {pcduSwitches::INIT_STATE_TCS_BOARD_8V_HEATER_IN})); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_TCS_BOARD_HEATER_IN, new PoolEntry( {pcduSwitches::INIT_STATE_TCS_BOARD_8V_HEATER_IN})); #endif - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_SUS_REDUNDANT, new PoolEntry( { + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_SUS_REDUNDANT, new PoolEntry( { pcduSwitches::INIT_STATE_SUS_REDUNDANT })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_DEPLOYMENT_MECHANISM, new PoolEntry( { + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_DEPLOYMENT_MECHANISM, new PoolEntry( { pcduSwitches::INIT_STATE_DEPLOYMENT_MECHANISM })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_PAYLOAD_PCDU_CH6, new PoolEntry( { + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_PCDU_CH6, new PoolEntry( { pcduSwitches::INIT_STATE_PAYLOAD_PCDU_CH6 })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_ACS_BOARD_SIDE_B, new PoolEntry( { + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_ACS_BOARD_SIDE_B, new PoolEntry( { pcduSwitches::INIT_STATE_ACS_BOARD_SIDE_B })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_PAYLOAD_CAMERA, new PoolEntry( { + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_CAMERA, new PoolEntry( { pcduSwitches::INIT_STATE_PAYLOAD_CAMERA })); - localDataPoolMap.emplace(PDU::PDU2_BOOTCAUSE, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_BOOTCNT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_UPTIME, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_RESETCAUSE, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_BATT_MODE, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_BOOTCAUSE, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_BOOTCNT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_UPTIME, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_RESETCAUSE, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_BATT_MODE, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_0, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_1, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_2, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_3, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_4, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_5, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_6, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_7, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_0, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_1, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_2, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_3, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_4, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_5, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_6, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_7, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_0_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_1_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_2_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_3_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_4_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_5_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_6_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_7_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_0_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_1_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_2_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_3_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_4_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_5_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_6_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_7_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CNT_GND, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CNT_I2C, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CNT_CAN, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CNT_CSP, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_GND_LEFT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_I2C_LEFT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CAN_LEFT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CSP_LEFT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_GND, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_I2C, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CAN, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CSP, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_GND_LEFT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_I2C_LEFT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CAN_LEFT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CSP_LEFT, new PoolEntry( { 0 })); return HasReturnvaluesIF::RETURN_OK; } diff --git a/mission/devices/PDU1Handler.cpp b/mission/devices/PDU1Handler.cpp index bd46d407..9b42bd03 100644 --- a/mission/devices/PDU1Handler.cpp +++ b/mission/devices/PDU1Handler.cpp @@ -4,7 +4,7 @@ PDU1Handler::PDU1Handler(object_id_t objectId, object_id_t comIF, CookieIF * comCookie, uint16_t maxConfigTableAddress, uint16_t maxHkTableAddress, uint16_t hkTableSize) : GomspaceDeviceHandler(objectId, comIF, comCookie, maxConfigTableAddress, maxHkTableAddress, - hkTableSize), hkTableDataset(this) { + hkTableSize, &pdu1HkTableDataset), pdu1HkTableDataset(this) { } PDU1Handler::~PDU1Handler() { @@ -19,8 +19,8 @@ ReturnValue_t PDU1Handler::buildNormalDeviceCommand( void PDU1Handler::letChildHandleHkReply(DeviceCommandId_t id, const uint8_t *packet) { const uint8_t* payloadPtr = packet + GOMSPACE::GS_HDR_LENGTH; size_t size = (size_t)hkTableSize; - hkTableDataset.deSerialize(&payloadPtr, &size, SerializeIF::Endianness::BIG); - FullTableReply fullTableReply(id, HK_TABLE_ID, &hkTableDataset); + pdu1HkTableDataset.deSerialize(&payloadPtr, &size, SerializeIF::Endianness::BIG); + FullTableReply fullTableReply(id, HK_TABLE_ID, &pdu1HkTableDataset); handleDeviceTM(&fullTableReply, id, true); } diff --git a/mission/devices/PDU1Handler.h b/mission/devices/PDU1Handler.h index ccbd0c2c..aadc9327 100644 --- a/mission/devices/PDU1Handler.h +++ b/mission/devices/PDU1Handler.h @@ -34,7 +34,7 @@ protected: private: /** Dataset for the housekeeping table of the PDU1 */ - PDU1::PDU1HkTableDataset hkTableDataset; + PDU1::PDU1HkTableDataset pdu1HkTableDataset; }; #endif /* MISSION_DEVICES_PDU1Handler_H_ */ diff --git a/mission/devices/PDU2Handler.cpp b/mission/devices/PDU2Handler.cpp index d008962b..e211fa87 100644 --- a/mission/devices/PDU2Handler.cpp +++ b/mission/devices/PDU2Handler.cpp @@ -2,10 +2,10 @@ #include #include -PDU2Handler::PDU2Handler(object_id_t objectId, object_id_t comIF, - CookieIF * comCookie, uint16_t maxConfigTableAddress, uint16_t maxHkTableAddress, - uint16_t hkTableSize) : GomspaceDeviceHandler(objectId, comIF, - comCookie, maxConfigTableAddress, maxHkTableAddress, hkTableSize), hkTableDataset(this) { +PDU2Handler::PDU2Handler(object_id_t objectId, object_id_t comIF, CookieIF * comCookie, + uint16_t maxConfigTableAddress, uint16_t maxHkTableAddress, uint16_t hkTableSize) : + GomspaceDeviceHandler(objectId, comIF, comCookie, maxConfigTableAddress, maxHkTableAddress, + hkTableSize, &pdu2HkTableDataset), pdu2HkTableDataset(this) { } PDU2Handler::~PDU2Handler() { @@ -18,88 +18,95 @@ ReturnValue_t PDU2Handler::buildNormalDeviceCommand( } void PDU2Handler::letChildHandleHkReply(DeviceCommandId_t id, const uint8_t *packet) { + /* Pointer points to beginning of payload data */ const uint8_t* payloadPtr = packet + GOMSPACE::GS_HDR_LENGTH; size_t size = (size_t)hkTableSize; - hkTableDataset.deSerialize(&payloadPtr, &size, SerializeIF::Endianness::BIG); - FullTableReply fullTableReply(id, HK_TABLE_ID, &hkTableDataset); + pdu2HkTableDataset.deSerialize(&payloadPtr, &size, SerializeIF::Endianness::BIG); + FullTableReply fullTableReply(id, HK_TABLE_ID, &pdu2HkTableDataset); handleDeviceTM(&fullTableReply, id, true); +#if OBSW_ENHANCED_PRINTOUT == 1 + pdu2HkTableDataset.read(); + float temperatureC = pdu2HkTableDataset.temperature.value; + sif::info << "PDU2 Temperature: " << temperatureC << "°C" << std::endl; + pdu2HkTableDataset.commit(); +#endif } ReturnValue_t PDU2Handler::initializeLocalDataPool( localpool::DataPool &localDataPoolMap, LocalDataPoolManager &poolManager) { - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_Q7S, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH1, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_RW, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_TCS_BOARD_HEATER_IN, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_SUS_REDUNDANT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_DEPLOYMENT_MECHANISM, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH6, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_ACS_BOARD_SIDE_B, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CURRENT_OUT_PAYLOAD_CAMERA, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_Q7S, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH1, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_RW, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_TCS_BOARD_HEATER_IN, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_SUS_REDUNDANT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_DEPLOYMENT_MECHANISM, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH6, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_ACS_BOARD_SIDE_B, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CURRENT_OUT_PAYLOAD_CAMERA, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_Q7S, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH1, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_RW, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_TCS_BOARD_HEATER_IN, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_TCS_BOARD_HEATER_IN, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_SUS_REDUNDANT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_DEPLOYMENT_MECHANISM, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH6, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_ACS_BOARD_SIDE_B, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VOLTAGE_OUT_PAYLOAD_CAMERA, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_Q7S, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH1, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_RW, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_TCS_BOARD_HEATER_IN, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_TCS_BOARD_HEATER_IN, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_SUS_REDUNDANT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_DEPLOYMENT_MECHANISM, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH6, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_ACS_BOARD_SIDE_B, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VOLTAGE_OUT_PAYLOAD_CAMERA, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VCC, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_VBAT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_TEMPERATURE, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_CONV_EN, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VCC, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_VBAT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_TEMPERATURE, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_CONV_EN, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_Q7S, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_PAYLOAD_PCDU_CH1, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_RW, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_Q7S, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_PCDU_CH1, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_RW, new PoolEntry( { 0 })); #if TE0720 == 1 - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_TCS_BOARD_HEATER_IN, new PoolEntry( { 1 })); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_TCS_BOARD_HEATER_IN, new PoolEntry( { 1 })); #else - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_TCS_BOARD_HEATER_IN, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_TCS_BOARD_HEATER_IN, new PoolEntry( { 0 })); #endif - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_SUS_REDUNDANT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_DEPLOYMENT_MECHANISM, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_PAYLOAD_PCDU_CH6, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_ACS_BOARD_SIDE_B, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_OUT_EN_PAYLOAD_CAMERA, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_SUS_REDUNDANT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_DEPLOYMENT_MECHANISM, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_PCDU_CH6, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_ACS_BOARD_SIDE_B, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_OUT_EN_PAYLOAD_CAMERA, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_BOOTCAUSE, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_BOOTCNT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_UPTIME, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_RESETCAUSE, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_BATT_MODE, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_BOOTCAUSE, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_BOOTCNT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_UPTIME, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_RESETCAUSE, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_BATT_MODE, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_0, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_1, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_2, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_3, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_4, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_5, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_6, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_7, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_0, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_1, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_2, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_3, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_4, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_5, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_6, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_7, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_0_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_1_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_2_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_3_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_4_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_5_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_6_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_DEVICE_7_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_0_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_1_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_2_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_3_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_4_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_5_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_6_STATUS, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_DEVICE_7_STATUS, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CNT_GND, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CNT_I2C, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CNT_CAN, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CNT_CSP, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_GND_LEFT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_I2C_LEFT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CAN_LEFT, new PoolEntry( { 0 })); - localDataPoolMap.emplace(PDU::PDU2_WDT_CSP_LEFT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_GND, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_I2C, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CAN, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CNT_CSP, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_GND_LEFT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_I2C_LEFT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CAN_LEFT, new PoolEntry( { 0 })); + localDataPoolMap.emplace(P60System::PDU2_WDT_CSP_LEFT, new PoolEntry( { 0 })); return HasReturnvaluesIF::RETURN_OK; } diff --git a/mission/devices/PDU2Handler.h b/mission/devices/PDU2Handler.h index ec7b6f9b..bc8c76da 100644 --- a/mission/devices/PDU2Handler.h +++ b/mission/devices/PDU2Handler.h @@ -36,7 +36,7 @@ protected: private: /** Dataset for the housekeeping table of the PDU2 */ - PDU2::PDU2HkTableDataset hkTableDataset; + PDU2::PDU2HkTableDataset pdu2HkTableDataset; }; #endif /* MISSION_DEVICES_PDU2HANDLER_H_ */ diff --git a/mission/devices/devicedefinitions/GomspaceDefinitions.h b/mission/devices/devicedefinitions/GomspaceDefinitions.h index 2986c5ae..3fed966d 100644 --- a/mission/devices/devicedefinitions/GomspaceDefinitions.h +++ b/mission/devices/devicedefinitions/GomspaceDefinitions.h @@ -35,92 +35,144 @@ namespace GOMSPACE{ static const DeviceCommandId_t REQUEST_HK_TABLE = 0x10; //!< [EXPORT] : [COMMAND] } +namespace P60System { + enum P60SytemPoolIds: lp_id_t { +// typedef struct CurrentOut { +// int16_t acuVcc; +// int16_t pdu1Vcc; +// int16_t x3VccIdle; +// int16_t pdu2Vcc; +// int16_t acuVbat; +// int16_t pdu1Vbat; +// int16_t x3VbatIdle; +// int16_t pdu2Vbat; +// int16_t stackVbat; +// int16_t stack3V3; +// int16_t stackV5; +// int16_t gs3v3; +// int16_t gs5V; +// } CurrentOut_t; + P60DOCK_CURRENT_ACU_VCC, + P60DOCK_CURRENT_PDU1_VCC, + P60DOCK_CURRENT_X3_IDLE_VCC, + P60DOCK_CURRENT_PDU2_VCC, + P60DOCK_CURRENT_ACU_VBAT, + P60DOCK_CURRENT_PDU1_VBAT, + P60DOCK_CURRENT_X3_IDLE_VBAT, + P60DOCK_CURRENT_PDU2_VBAT, + P60DOCK_CURRENT_STACK_VBAT, + P60DOCK_CURRENT_STACK_3V3, + P60DOCK_CURRENT_STACK_5V, + P60DOCK_CURRENT_GS3V3, + P60DOCK_CURRENT_GS5V, + P60DOCK_VOLTAGE_ACU_VCC, + P60DOCK_VOLTAGE_PDU1_VCC, + P60DOCK_VOLTAGE_X3_IDLE_VCC, + P60DOCK_VOLTAGE_PDU2_VCC, + P60DOCK_VOLTAGE_ACU_VBAT, + P60DOCK_VOLTAGE_PDU1_VBAT, + P60DOCK_VOLTAGE_X3_IDLE_VBAT, + P60DOCK_VOLTAGE_PDU2_VBAT, + P60DOCK_VOLTAGE_STACK_VBAT, + P60DOCK_VOLTAGE_STACK_3V3, + P60DOCK_VOLTAGE_STACK_5V, + P60DOCK_VOLTAGE_GS3V3, + P60DOCK_VOLTAGE_GS5V, -namespace P60Dock { - /* The maximum size of a reply from the P60 dock. Maximum size is reached - * when retrieving the full parameter configuration table. 412 bytes of - * payload data and 12 bytes of CSP header data. */ - static const uint16_t MAX_REPLY_LENGTH = 424; + P60DOCK_OUTPUT_ENABLE_STATES, + P60DOCK_TEMPERATURE, + P60DOCK_BOOT_CAUSE, + P60DOCK_BOOT_CNT, + P60DOCK_UPTIME, + P60DOCK_RESETCAUSE, + P60DOCK_BATT_MODE, + P60DOCK_HEATER_ON, + P60DOCK_CONV_5V_ENABLE_STATUS, + P60DOCK_LATCHUP_GROUP, + P60DOCK_VBAT_VALUE, + P60DOCK_VCC_CURRENT_VALUE, + P60DOCK_BATTERY_CURRENT, + P60DOCK_BATTERY_VOLTAGE, + P60DOCK_BATTERY_TEMPERATURES, + P60DOCK_DEVICE_TYPE_GROUP, + P60DOCK_DEVICE_STATUS_GROUP, + P60DOCK_DEARM_STATUS, + P60DOCK_WDT_CNT_GND, + P60DOCK_WDT_CNT_I2C, + P60DOCK_WDT_CNT_CAN, + P60DOCK_WDT_CNT_CSP_1, + P60DOCK_WDT_CNT_CSP_2, + P60DOCK_WDT_GND_LEFT, + P60DOCK_WDT_I2C_LEFT, + P60DOCK_WDT_CAN_LEFT, + P60DOCK_WDT_CSP_LEFT_1, + P60DOCK_WDT_CSP_LEFT_2, + P60DOCK_BATT_CHARGE_CURRENT, + P60DOCK_BATT_DISCHARGE_CURRENT, + P60DOCK_ANT6_DEPL, + P60DOCK_AR6_DEPL, - static const uint16_t MAX_CONFIGTABLE_ADDRESS = 408; - static const uint16_t MAX_HKTABLE_ADDRESS = 187; - static const uint16_t HK_TABLE_SIZE = 188; -} - - -/** - * @brief Constants common for both PDU1 and PDU2. - */ -namespace PDU{ - /* When retrieving full configuration parameter table */ - static const uint16_t MAX_REPLY_LENGTH = 318; - static const uint16_t MAX_CONFIGTABLE_ADDRESS = 316; - static const uint16_t MAX_HKTABLE_ADDRESS = 140; - static const uint16_t HK_TABLE_SIZE = 145; - static const uint8_t HK_TABLE_ENTRIES = 60; - - enum PDUPoolIds: lp_id_t { - PDU1_CURRENT_OUT_TCS_BOARD_3V3, - PDU1_CURRENT_OUT_SYRLINKS, - PDU1_CURRENT_OUT_STAR_TRACKER, - PDU1_CURRENT_OUT_MGT, - PDU1_CURRENT_OUT_SUS_NOMINAL, - PDU1_CURRENT_OUT_SOLAR_CELL_EXP, - PDU1_CURRENT_OUT_PLOC, - PDU1_CURRENT_OUT_ACS_BOARD_SIDE_A, - PDU1_CURRENT_OUT_CHANNEL8, - PDU1_VOLTAGE_OUT_TCS_BOARD_3V3, - PDU1_VOLTAGE_OUT_SYRLINKS, - PDU1_VOLTAGE_OUT_STAR_TRACKER, - PDU1_VOLTAGE_OUT_MGT, - PDU1_VOLTAGE_OUT_SUS_NOMINAL, - PDU1_VOLTAGE_OUT_SOLAR_CELL_EXP, - PDU1_VOLTAGE_OUT_PLOC, - PDU1_VOLTAGE_OUT_ACS_BOARD_SIDE_A, - PDU1_VOLTAGE_OUT_CHANNEL8, - PDU1_VCC, - PDU1_VBAT, - PDU1_TEMPERATURE, - PDU1_CONV_EN, - PDU1_OUT_EN_TCS_BOARD_3V3, - PDU1_OUT_EN_SYRLINKS, - PDU1_OUT_EN_STAR_TRACKER, - PDU1_OUT_EN_MGT, - PDU1_OUT_EN_SUS_NOMINAL, - PDU1_OUT_EN_SOLAR_CELL_EXP, - PDU1_OUT_EN_PLOC, - PDU1_OUT_EN_ACS_BOARD_SIDE_A, - PDU1_OUT_EN_CHANNEL8, - PDU1_BOOTCAUSE, - PDU1_BOOTCNT, - PDU1_UPTIME, - PDU1_RESETCAUSE, - PDU1_BATT_MODE, - PDU1_LATCHUP, - PDU1_DEVICE_0, - PDU1_DEVICE_1, - PDU1_DEVICE_2, - PDU1_DEVICE_3, - PDU1_DEVICE_4, - PDU1_DEVICE_5, - PDU1_DEVICE_6, - PDU1_DEVICE_7, - PDU1_DEVICE_0_STATUS, - PDU1_DEVICE_1_STATUS, - PDU1_DEVICE_2_STATUS, - PDU1_DEVICE_3_STATUS, - PDU1_DEVICE_4_STATUS, - PDU1_DEVICE_5_STATUS, - PDU1_DEVICE_6_STATUS, - PDU1_DEVICE_7_STATUS, - PDU1_WDT_CNT_GND, - PDU1_WDT_CNT_I2C, - PDU1_WDT_CNT_CAN, - PDU1_WDT_CNT_CSP, - PDU1_WDT_GND_LEFT, - PDU1_WDT_I2C_LEFT, - PDU1_WDT_CAN_LEFT, - PDU1_WDT_CSP_LEFT, + PDU1_CURRENT_OUT_TCS_BOARD_3V3, + PDU1_CURRENT_OUT_SYRLINKS, + PDU1_CURRENT_OUT_STAR_TRACKER, + PDU1_CURRENT_OUT_MGT, + PDU1_CURRENT_OUT_SUS_NOMINAL, + PDU1_CURRENT_OUT_SOLAR_CELL_EXP, + PDU1_CURRENT_OUT_PLOC, + PDU1_CURRENT_OUT_ACS_BOARD_SIDE_A, + PDU1_CURRENT_OUT_CHANNEL8, + PDU1_VOLTAGE_OUT_TCS_BOARD_3V3, + PDU1_VOLTAGE_OUT_SYRLINKS, + PDU1_VOLTAGE_OUT_STAR_TRACKER, + PDU1_VOLTAGE_OUT_MGT, + PDU1_VOLTAGE_OUT_SUS_NOMINAL, + PDU1_VOLTAGE_OUT_SOLAR_CELL_EXP, + PDU1_VOLTAGE_OUT_PLOC, + PDU1_VOLTAGE_OUT_ACS_BOARD_SIDE_A, + PDU1_VOLTAGE_OUT_CHANNEL8, + PDU1_VCC, + PDU1_VBAT, + PDU1_TEMPERATURE, + PDU1_CONV_EN, + PDU1_OUT_EN_TCS_BOARD_3V3, + PDU1_OUT_EN_SYRLINKS, + PDU1_OUT_EN_STAR_TRACKER, + PDU1_OUT_EN_MGT, + PDU1_OUT_EN_SUS_NOMINAL, + PDU1_OUT_EN_SOLAR_CELL_EXP, + PDU1_OUT_EN_PLOC, + PDU1_OUT_EN_ACS_BOARD_SIDE_A, + PDU1_OUT_EN_CHANNEL8, + PDU1_BOOTCAUSE, + PDU1_BOOTCNT, + PDU1_UPTIME, + PDU1_RESETCAUSE, + PDU1_BATT_MODE, + PDU1_LATCHUP, + PDU1_DEVICE_0, + PDU1_DEVICE_1, + PDU1_DEVICE_2, + PDU1_DEVICE_3, + PDU1_DEVICE_4, + PDU1_DEVICE_5, + PDU1_DEVICE_6, + PDU1_DEVICE_7, + PDU1_DEVICE_0_STATUS, + PDU1_DEVICE_1_STATUS, + PDU1_DEVICE_2_STATUS, + PDU1_DEVICE_3_STATUS, + PDU1_DEVICE_4_STATUS, + PDU1_DEVICE_5_STATUS, + PDU1_DEVICE_6_STATUS, + PDU1_DEVICE_7_STATUS, + PDU1_WDT_CNT_GND, + PDU1_WDT_CNT_I2C, + PDU1_WDT_CNT_CAN, + PDU1_WDT_CNT_CSP, + PDU1_WDT_GND_LEFT, + PDU1_WDT_I2C_LEFT, + PDU1_WDT_CAN_LEFT, + PDU1_WDT_CSP_LEFT, PDU2_CURRENT_OUT_Q7S, PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH1, @@ -182,11 +234,228 @@ namespace PDU{ PDU2_WDT_GND_LEFT, PDU2_WDT_I2C_LEFT, PDU2_WDT_CAN_LEFT, - PDU2_WDT_CSP_LEFT + PDU2_WDT_CSP_LEFT, + + ACU_CURRENT_IN_GROUP, + ACU_VOLTAGE_IN_GROUP, + ACU_VCC, + ACU_VBAT, + ACU_TEMPERATURE_GROUP, + ACU_MPPT_MODE, + ACU_VBOOST_GROUP, + ACU_POWER_GROUP, + ACU_DAC_EN_GROUP, + ACU_DAC_VAL_GROUP, + ACU_BOOTCAUSE, + ACU_BOOTCNT, + ACU_UPTIME, + ACU_RESET_CAUSE, + ACU_MPPT_TIME, + ACU_MPPT_PERIOD, + ACU_DEVICE_TYPE_GROUP, + ACU_DEVICE_STATUS_GROUP, + ACU_WDT_CNT_GND, + ACU_WDT_GND_LEFT }; } +namespace P60Dock { + /* The maximum size of a reply from the P60 dock. Maximum size is reached + * when retrieving the full parameter configuration table. 412 bytes of + * payload data and 12 bytes of CSP header data. */ + static const uint16_t MAX_REPLY_LENGTH = 424; + + static const uint16_t MAX_CONFIGTABLE_ADDRESS = 408; + static const uint16_t MAX_HKTABLE_ADDRESS = 187; + static const uint16_t HK_TABLE_SIZE = 188; + + static const uint8_t HK_TABLE_DATA_SET_ID = 0x3; + static const uint8_t HK_TABLE_ENTRIES = 35; + + typedef struct VoltageOut { + uint16_t acuVcc; + uint16_t pdu1Vcc; + uint16_t x3VccIdle; + uint16_t pdu2Vcc; + uint16_t acuVbat; + uint16_t pdu1Vbat; + uint16_t x3VbatIdle; + uint16_t pdu2Vbat; + uint16_t stackVbat; + uint16_t stack3V3; + uint16_t stackV5; + uint16_t gs3v3; + uint16_t gs5V; + } VoltageOut_t; + + /** 1 - output is enabled, 0 - output disabled. */ + typedef struct OuputEnableState { + uint8_t acuVcc; + uint8_t pdu1Vcc; + uint8_t x3VccIdle; + uint8_t pdu2Vcc; + uint8_t acuVbat; + uint8_t pdu1Vbat; + uint8_t x3VbatIdle; + uint8_t pdu2Vbat; + uint8_t stackVbat; + uint8_t stack3V3; + uint8_t stackV5; + uint8_t gs3v3; + uint8_t gs5V; + } OuputEnableState_t; + + /** Latchup count for output channels */ + typedef struct LatchupGroup { + uint16_t acuVcc; + uint16_t pdu1Vcc; + uint16_t x3VccIdle; + uint16_t pdu2Vcc; + uint16_t acuVbat; + uint16_t pdu1Vbat; + uint16_t x3VbatIdle; + uint16_t pdu2Vbat; + uint16_t stackVbat; + uint16_t stack3V3; + uint16_t stackV5; + uint16_t gs3v3; + uint16_t gs5V; + } LatchupGroup_t; + + typedef struct Temperature { + int16_t location1; + int16_t location2; + } Temperature_t; + + typedef struct BatteryPackTemperature { + int16_t location1; + int16_t location2; + } BatteryPackTemperature_t; + + typedef struct DeviceTypeGroup { + uint8_t device0; + uint8_t device1; + uint8_t device2; + uint8_t device3; + uint8_t device4; + uint8_t device5; + uint8_t device6; + uint8_t device7; + } DeviceTypeGroup_t; + + typedef struct DeviceStatusGroup { + uint8_t device0; + uint8_t device1; + uint8_t device2; + uint8_t device3; + uint8_t device4; + uint8_t device5; + uint8_t device6; + uint8_t device7; + } DeviceStatusGroup_t; + + /** + * @brief This class defines a dataset for the hk table of the P60 Dock. + */ + class HkTableDataset: + public StaticLocalDataSet { + public: + + HkTableDataset(HasLocalDataPoolIF* owner): + StaticLocalDataSet(owner, HK_TABLE_DATA_SET_ID) { + } + + HkTableDataset(object_id_t objectId): + StaticLocalDataSet(sid_t(objectId, HK_TABLE_DATA_SET_ID)) { + } + + lp_var_t currentsOut = lp_var_t(sid.objectId, + P60System::P60DOCK_CURRENTS_OUT, this); + lp_var_t voltagesOut = lp_var_t(sid.objectId, + P60System::P60DOCK_VOLTAGES_OUT, this); + lp_var_t outputEnableStates = lp_var_t(sid.objectId, + P60System::P60DOCK_OUTPUT_ENABLE_STATES, this); + lp_var_t temperatures = lp_var_t(sid.objectId, + P60System::P60DOCK_TEMPERATURE, this); + lp_var_t bootcause = lp_var_t(sid.objectId, + P60System::P60DOCK_BOOT_CAUSE, this); + lp_var_t bootCount = lp_var_t(sid.objectId, + P60System::P60DOCK_BOOT_CNT, this); + lp_var_t uptime = lp_var_t(sid.objectId, + P60System::P60DOCK_UPTIME, this); + lp_var_t resetcause = lp_var_t(sid.objectId, + P60System::P60DOCK_RESETCAUSE, this); + lp_var_t battMode = lp_var_t(sid.objectId, + P60System::P60DOCK_BATT_MODE, this); + /** Battery heater control only possible on BP4 packs */ + lp_var_t heaterOn = lp_var_t(sid.objectId, + P60System::P60DOCK_HEATER_ON, this); + lp_var_t converter5VStatus = lp_var_t(sid.objectId, + P60System::P60DOCK_CONV_5V_ENABLE_STATUS, this); + lp_var_t latchupGroup = lp_var_t(sid.objectId, + P60System::P60DOCK_LATCHUP_GROUP, this); + lp_var_t vbatVoltageValue = lp_var_t(sid.objectId, + P60System::P60DOCK_VBAT_VALUE, this); + lp_var_t vccCurrent = lp_var_t(sid.objectId, + P60System::P60DOCK_VCC_CURRENT_VALUE, this); + lp_var_t batteryCurrent = lp_var_t(sid.objectId, + P60System::P60DOCK_BATTERY_CURRENT, this); + lp_var_t batteryVoltage = lp_var_t(sid.objectId, + P60System::P60DOCK_BATTERY_VOLTAGE, this); + lp_var_t batteryTemperatures = lp_var_t(sid.objectId, + P60System::P60DOCK_BATTERY_TEMPERATURES, this); + lp_var_t deviceTypeGroup = lp_var_t(sid.objectId, + P60System::P60DOCK_DEVICE_TYPE_GROUP, this); + lp_var_t deviceStatusGroup = lp_var_t(sid.objectId, + P60System::P60DOCK_DEVICE_STATUS_GROUP, this); + lp_var_t dearmSatus = lp_var_t(sid.objectId, + P60System::P60DOCK_DEARM_STATUS, this); + lp_var_t wdtCntGnd = lp_var_t(sid.objectId, + P60System::P60DOCK_WDT_CNT_GND, this); + lp_var_t wdtCntI2c = lp_var_t(sid.objectId, + P60System::P60DOCK_WDT_CNT_I2C, this); + lp_var_t wdtCntCan = lp_var_t(sid.objectId, + P60System::P60DOCK_WDT_CNT_CAN, this); + lp_var_t wdtCntCsp1 = lp_var_t(sid.objectId, + P60System::P60DOCK_WDT_CNT_CSP_1, this); + lp_var_t wdtCntCsp2 = lp_var_t(sid.objectId, + P60System::P60DOCK_WDT_CNT_CSP_2, this); + lp_var_t wdtGndLeft = lp_var_t(sid.objectId, + P60System::P60DOCK_WDT_GND_LEFT, this); + lp_var_t wdtI2cLeft = lp_var_t(sid.objectId, + P60System::P60DOCK_WDT_I2C_LEFT, this); + lp_var_t wdtCanLeft = lp_var_t(sid.objectId, + P60System::P60DOCK_WDT_CAN_LEFT, this); + lp_var_t wdtCspLeft1 = lp_var_t(sid.objectId, + P60System::P60DOCK_WDT_CSP_LEFT_1, this); + lp_var_t wdtCspLeft2 = lp_var_t(sid.objectId, + P60System::P60DOCK_WDT_CSP_LEFT_2, this); + lp_var_t batteryChargeCurrent = lp_var_t(sid.objectId, + P60System::P60DOCK_BATT_CHARGE_CURRENT, this); + lp_var_t batteryDishargeCurrent = lp_var_t(sid.objectId, + P60System::P60DOCK_BATT_DISCHARGE_CURRENT, this); + lp_var_t ant6Depl = lp_var_t(sid.objectId, + P60System::P60DOCK_ANT6_DEPL, this); + lp_var_t ar6Depl = lp_var_t(sid.objectId, + P60System::P60DOCK_AR6_DEPL, this); + }; +} + + +/** + * @brief Constants common for both PDU1 and PDU2. + */ +namespace PDU{ + /* When retrieving full configuration parameter table */ + static const uint16_t MAX_REPLY_LENGTH = 318; + static const uint16_t MAX_CONFIGTABLE_ADDRESS = 316; + static const uint16_t MAX_HKTABLE_ADDRESS = 140; + static const uint16_t HK_TABLE_SIZE = 145; + static const uint8_t HK_TABLE_ENTRIES = 60; +} + + namespace PDU1 { static const uint32_t HK_TABLE_DATA_SET_ID = 0x1; // hk table has table id 4 /** @@ -220,146 +489,146 @@ namespace PDU1 { /** Measured output currents */ lp_var_t currentOutTCSBoard3V3 = lp_var_t(sid.objectId, - PDU::PDU1_CURRENT_OUT_TCS_BOARD_3V3, this); + P60System::PDU1_CURRENT_OUT_TCS_BOARD_3V3, this); lp_var_t currentOutSyrlinks = lp_var_t(sid.objectId, - PDU::PDU1_CURRENT_OUT_SYRLINKS, this); + P60System::PDU1_CURRENT_OUT_SYRLINKS, this); lp_var_t currentOutStarTracker = lp_var_t(sid.objectId, - PDU::PDU1_CURRENT_OUT_STAR_TRACKER, this); + P60System::PDU1_CURRENT_OUT_STAR_TRACKER, this); lp_var_t currentOutMGT = lp_var_t(sid.objectId, - PDU::PDU1_CURRENT_OUT_MGT, this); + P60System::PDU1_CURRENT_OUT_MGT, this); lp_var_t currentOutSUSNominal = lp_var_t(sid.objectId, - PDU::PDU1_CURRENT_OUT_SUS_NOMINAL, this); + P60System::PDU1_CURRENT_OUT_SUS_NOMINAL, this); lp_var_t currentOutSolarCellExp = lp_var_t(sid.objectId, - PDU::PDU1_CURRENT_OUT_SOLAR_CELL_EXP, this); + P60System::PDU1_CURRENT_OUT_SOLAR_CELL_EXP, this); lp_var_t currentOutPLOC = lp_var_t(sid.objectId, - PDU::PDU1_CURRENT_OUT_PLOC, this); + P60System::PDU1_CURRENT_OUT_PLOC, this); lp_var_t currentOutACSBoardSideA = lp_var_t(sid.objectId, - PDU::PDU1_CURRENT_OUT_ACS_BOARD_SIDE_A, this); + P60System::PDU1_CURRENT_OUT_ACS_BOARD_SIDE_A, this); lp_var_t currentOutChannel8 = lp_var_t(sid.objectId, - PDU::PDU1_CURRENT_OUT_CHANNEL8, this); + P60System::PDU1_CURRENT_OUT_CHANNEL8, this); /** Measured voltage of output channels */ lp_var_t voltageOutTCSBoard3V3 = lp_var_t(sid.objectId, - PDU::PDU1_VOLTAGE_OUT_TCS_BOARD_3V3, this); + P60System::PDU1_VOLTAGE_OUT_TCS_BOARD_3V3, this); lp_var_t voltageOutSyrlinks = lp_var_t(sid.objectId, - PDU::PDU1_VOLTAGE_OUT_SYRLINKS, this); + P60System::PDU1_VOLTAGE_OUT_SYRLINKS, this); lp_var_t voltageOutStarTracker = lp_var_t(sid.objectId, - PDU::PDU1_VOLTAGE_OUT_STAR_TRACKER, this); + P60System::PDU1_VOLTAGE_OUT_STAR_TRACKER, this); lp_var_t voltageOutMGT = lp_var_t(sid.objectId, - PDU::PDU1_VOLTAGE_OUT_MGT, this); + P60System::PDU1_VOLTAGE_OUT_MGT, this); lp_var_t voltageOutSUSNominal = lp_var_t(sid.objectId, - PDU::PDU1_VOLTAGE_OUT_SUS_NOMINAL, this); + P60System::PDU1_VOLTAGE_OUT_SUS_NOMINAL, this); lp_var_t voltageOutSolarCellExp = lp_var_t(sid.objectId, - PDU::PDU1_VOLTAGE_OUT_SOLAR_CELL_EXP, this); + P60System::PDU1_VOLTAGE_OUT_SOLAR_CELL_EXP, this); lp_var_t voltageOutPLOC = lp_var_t(sid.objectId, - PDU::PDU1_VOLTAGE_OUT_PLOC, this); + P60System::PDU1_VOLTAGE_OUT_PLOC, this); lp_var_t voltageOutACSBoardSideA = lp_var_t(sid.objectId, - PDU::PDU1_VOLTAGE_OUT_ACS_BOARD_SIDE_A, this); + P60System::PDU1_VOLTAGE_OUT_ACS_BOARD_SIDE_A, this); lp_var_t voltageOutChannel8 = lp_var_t(sid.objectId, - PDU::PDU1_VOLTAGE_OUT_CHANNEL8, this); + P60System::PDU1_VOLTAGE_OUT_CHANNEL8, this); /** Measured VCC */ lp_var_t vcc = lp_var_t(sid.objectId, - PDU::PDU1_VCC, this); + P60System::PDU1_VCC, this); /** Measured VBAT */ lp_var_t vbat = lp_var_t(sid.objectId, - PDU::PDU1_VBAT, this); + P60System::PDU1_VBAT, this); lp_var_t temperature = lp_var_t(sid.objectId, - PDU::PDU1_TEMPERATURE, this); + P60System::PDU1_TEMPERATURE, this); /** Output converter enable status */ lp_var_t converterEnable = lp_var_t(sid.objectId, - PDU::PDU1_CONV_EN, this); + P60System::PDU1_CONV_EN, this); /** Output channels enable status */ lp_var_t outEnabledTCSBoard3V3 = lp_var_t(sid.objectId, - PDU::PDU1_OUT_EN_TCS_BOARD_3V3, this); + P60System::PDU1_OUT_EN_TCS_BOARD_3V3, this); lp_var_t outEnabledSyrlinks = lp_var_t(sid.objectId, - PDU::PDU1_OUT_EN_SYRLINKS, this); + P60System::PDU1_OUT_EN_SYRLINKS, this); lp_var_t outEnabledStarTracker = lp_var_t(sid.objectId, - PDU::PDU1_OUT_EN_STAR_TRACKER, this); + P60System::PDU1_OUT_EN_STAR_TRACKER, this); lp_var_t outEnabledMGT = lp_var_t(sid.objectId, - PDU::PDU1_OUT_EN_MGT, this); + P60System::PDU1_OUT_EN_MGT, this); lp_var_t outEnabledSUSNominal = lp_var_t(sid.objectId, - PDU::PDU1_OUT_EN_SUS_NOMINAL, this); + P60System::PDU1_OUT_EN_SUS_NOMINAL, this); lp_var_t outEnabledSolarCellExp = lp_var_t(sid.objectId, - PDU::PDU1_OUT_EN_SOLAR_CELL_EXP, this); + P60System::PDU1_OUT_EN_SOLAR_CELL_EXP, this); lp_var_t outEnabledPLOC = lp_var_t(sid.objectId, - PDU::PDU1_OUT_EN_PLOC, this); + P60System::PDU1_OUT_EN_PLOC, this); lp_var_t outEnabledAcsBoardSideA = lp_var_t(sid.objectId, - PDU::PDU1_OUT_EN_ACS_BOARD_SIDE_A, this); + P60System::PDU1_OUT_EN_ACS_BOARD_SIDE_A, this); lp_var_t outEnabledChannel8 = lp_var_t(sid.objectId, - PDU::PDU1_OUT_EN_CHANNEL8, this); + P60System::PDU1_OUT_EN_CHANNEL8, this); lp_var_t bootcause = lp_var_t(sid.objectId, - PDU::PDU1_BOOTCAUSE, this); + P60System::PDU1_BOOTCAUSE, this); /** Number of reboots */ lp_var_t bootcount = lp_var_t(sid.objectId, - PDU::PDU1_BOOTCNT, this); + P60System::PDU1_BOOTCNT, this); /** Uptime in seconds */ lp_var_t uptime = lp_var_t(sid.objectId, - PDU::PDU1_UPTIME, this); + P60System::PDU1_UPTIME, this); lp_var_t resetcause = lp_var_t(sid.objectId, - PDU::PDU1_RESETCAUSE, this); + P60System::PDU1_RESETCAUSE, this); /** Battery mode: 1 = Critical, 2 = Safe, 3 = Normal, 4 = Full */ lp_var_t battMode = lp_var_t(sid.objectId, - PDU::PDU1_BATT_MODE, this); + P60System::PDU1_BATT_MODE, this); /** * There are 8 devices on the PDU. FRAM, ADCs, temperature sensor etc. Each device is * identified by an ID. Refer also to gs-man-nanopower-p60-pdu-200-1.pdf on pages 17 and 18. */ lp_var_t device0 = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_0, this); + P60System::PDU1_DEVICE_0, this); lp_var_t device1 = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_1, this); + P60System::PDU1_DEVICE_1, this); lp_var_t device2 = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_2, this); + P60System::PDU1_DEVICE_2, this); lp_var_t device3 = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_3, this); + P60System::PDU1_DEVICE_3, this); lp_var_t device4 = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_4, this); + P60System::PDU1_DEVICE_4, this); lp_var_t device5 = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_5, this); + P60System::PDU1_DEVICE_5, this); lp_var_t device6 = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_6, this); + P60System::PDU1_DEVICE_6, this); lp_var_t device7 = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_7, this); + P60System::PDU1_DEVICE_7, this); /** The status of each device. 0 = None, 1 = Ok, 2 = Error, 3 = Not found */ lp_var_t device0Status = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_0_STATUS, this); + P60System::PDU1_DEVICE_0_STATUS, this); lp_var_t device1Status = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_1_STATUS, this); + P60System::PDU1_DEVICE_1_STATUS, this); lp_var_t device2Status = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_2_STATUS, this); + P60System::PDU1_DEVICE_2_STATUS, this); lp_var_t device3Status = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_3_STATUS, this); + P60System::PDU1_DEVICE_3_STATUS, this); lp_var_t device4Status = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_4_STATUS, this); + P60System::PDU1_DEVICE_4_STATUS, this); lp_var_t device5Status = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_5_STATUS, this); + P60System::PDU1_DEVICE_5_STATUS, this); lp_var_t device6Status = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_6_STATUS, this); + P60System::PDU1_DEVICE_6_STATUS, this); lp_var_t device7Status = lp_var_t(sid.objectId, - PDU::PDU1_DEVICE_7_STATUS, this); + P60System::PDU1_DEVICE_7_STATUS, this); /** Number of reboots triggered by the ground watchdog */ lp_var_t gndWdtReboots = lp_var_t(sid.objectId, - PDU::PDU1_WDT_CNT_GND, this); + P60System::PDU1_WDT_CNT_GND, this); /** Number of reboots triggered through the I2C watchdog. Not relevant for EIVE. */ lp_var_t i2cWdtReboots = lp_var_t(sid.objectId, - PDU::PDU1_WDT_CNT_I2C, this); + P60System::PDU1_WDT_CNT_I2C, this); /** Number of reboots triggered through the CAN watchdog */ lp_var_t canWdtReboots = lp_var_t(sid.objectId, - PDU::PDU1_WDT_CNT_CAN, this); + P60System::PDU1_WDT_CNT_CAN, this); /** Number of reboots triggered through the CSP watchdog */ lp_var_t cspWdtReboots = lp_var_t(sid.objectId, - PDU::PDU1_WDT_CNT_CSP, this); + P60System::PDU1_WDT_CNT_CSP, this); /** Ground watchdog remaining seconds before rebooting */ lp_var_t groundWatchdogSecondsLeft = lp_var_t(sid.objectId, - PDU::PDU1_WDT_GND_LEFT, this); + P60System::PDU1_WDT_GND_LEFT, this); /** I2C watchdog remaining seconds before rebooting. Not relevant for EIVE. */ lp_var_t i2cWatchdogSecondsLeft = lp_var_t(sid.objectId, - PDU::PDU1_WDT_I2C_LEFT, this); + P60System::PDU1_WDT_I2C_LEFT, this); /** CAN watchdog remaining seconds before rebooting. */ lp_var_t canWatchdogSecondsLeft = lp_var_t(sid.objectId, - PDU::PDU1_WDT_CAN_LEFT, this); + P60System::PDU1_WDT_CAN_LEFT, this); /** CSP watchdog remaining seconds before rebooting. */ lp_var_t cspWatchdogSecondsLeft = lp_var_t(sid.objectId, - PDU::PDU1_WDT_CSP_LEFT, this); + P60System::PDU1_WDT_CSP_LEFT, this); }; } @@ -397,156 +666,299 @@ namespace PDU2 { /** Measured output currents */ lp_var_t currentOutQ7S = lp_var_t(sid.objectId, - PDU::PDU2_CURRENT_OUT_Q7S, this); + P60System::PDU2_CURRENT_OUT_Q7S, this); lp_var_t currentOutPayloadPCDUCh1 = lp_var_t(sid.objectId, - PDU::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH1, this); + P60System::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH1, this); lp_var_t currentOutReactionWheels = lp_var_t(sid.objectId, - PDU::PDU2_CURRENT_OUT_RW, this); + P60System::PDU2_CURRENT_OUT_RW, this); lp_var_t currentOutTCSBoardHeaterIn = lp_var_t(sid.objectId, - PDU::PDU2_CURRENT_OUT_TCS_BOARD_HEATER_IN, this); + P60System::PDU2_CURRENT_OUT_TCS_BOARD_HEATER_IN, this); lp_var_t currentOutSUSRedundant = lp_var_t(sid.objectId, - PDU::PDU2_CURRENT_OUT_SUS_REDUNDANT, this); + P60System::PDU2_CURRENT_OUT_SUS_REDUNDANT, this); lp_var_t currentOutDeplMechanism = lp_var_t(sid.objectId, - PDU::PDU2_CURRENT_OUT_DEPLOYMENT_MECHANISM, this); + P60System::PDU2_CURRENT_OUT_DEPLOYMENT_MECHANISM, this); lp_var_t currentOutPayloadPCDUCh6 = lp_var_t(sid.objectId, - PDU::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH6, this); + P60System::PDU2_CURRENT_OUT_PAYLOAD_PCDU_CH6, this); lp_var_t currentOutACSBoard = lp_var_t(sid.objectId, - PDU::PDU2_CURRENT_OUT_ACS_BOARD_SIDE_B, this); + P60System::PDU2_CURRENT_OUT_ACS_BOARD_SIDE_B, this); lp_var_t currentOutPayloadCamera = lp_var_t(sid.objectId, - PDU::PDU2_CURRENT_OUT_PAYLOAD_CAMERA, this); + P60System::PDU2_CURRENT_OUT_PAYLOAD_CAMERA, this); /** Measured voltage of output channels */ lp_var_t voltageOutQ7S = lp_var_t(sid.objectId, - PDU::PDU2_VOLTAGE_OUT_Q7S, this); + P60System::PDU2_VOLTAGE_OUT_Q7S, this); lp_var_t voltageOutPayloadPCDUCh1 = lp_var_t(sid.objectId, - PDU::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH1, this); + P60System::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH1, this); lp_var_t voltageOutReactionWheels = lp_var_t(sid.objectId, - PDU::PDU2_VOLTAGE_OUT_RW, this); + P60System::PDU2_VOLTAGE_OUT_RW, this); lp_var_t voltageOutTCSBoardHeaterIn = lp_var_t(sid.objectId, - PDU::PDU2_VOLTAGE_OUT_TCS_BOARD_HEATER_IN, this); + P60System::PDU2_VOLTAGE_OUT_TCS_BOARD_HEATER_IN, this); lp_var_t voltageOutSUS = lp_var_t(sid.objectId, - PDU::PDU2_VOLTAGE_OUT_SUS_REDUNDANT, this); + P60System::PDU2_VOLTAGE_OUT_SUS_REDUNDANT, this); lp_var_t voltageOutDeplMechanism = lp_var_t(sid.objectId, - PDU::PDU2_VOLTAGE_OUT_DEPLOYMENT_MECHANISM, this); + P60System::PDU2_VOLTAGE_OUT_DEPLOYMENT_MECHANISM, this); lp_var_t voltageOutPayloadPCDUCh6 = lp_var_t(sid.objectId, - PDU::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH6, this); + P60System::PDU2_VOLTAGE_OUT_PAYLOAD_PCDU_CH6, this); lp_var_t voltageOutACSBoard = lp_var_t(sid.objectId, - PDU::PDU2_VOLTAGE_OUT_ACS_BOARD_SIDE_B, this); + P60System::PDU2_VOLTAGE_OUT_ACS_BOARD_SIDE_B, this); lp_var_t voltageOutPayloadCamera = lp_var_t(sid.objectId, - PDU::PDU2_VOLTAGE_OUT_PAYLOAD_CAMERA, this); + P60System::PDU2_VOLTAGE_OUT_PAYLOAD_CAMERA, this); /** Measured VCC */ lp_var_t vcc = lp_var_t(sid.objectId, - PDU::PDU2_VCC, this); + P60System::PDU2_VCC, this); /** Measured VBAT */ lp_var_t vbat = lp_var_t(sid.objectId, - PDU::PDU2_VBAT, this); + P60System::PDU2_VBAT, this); lp_var_t temperature = lp_var_t(sid.objectId, - PDU::PDU2_TEMPERATURE, this); + P60System::PDU2_TEMPERATURE, this); /** Output converter enable status */ lp_var_t converterEnable = lp_var_t(sid.objectId, - PDU::PDU2_CONV_EN, this); + P60System::PDU2_CONV_EN, this); /** Output channels enable status */ lp_var_t outEnabledQ7S = lp_var_t(sid.objectId, - PDU::PDU2_OUT_EN_Q7S, this); + P60System::PDU2_OUT_EN_Q7S, this); lp_var_t outEnabledPlPCDUCh1 = lp_var_t(sid.objectId, - PDU::PDU2_OUT_EN_PAYLOAD_PCDU_CH1, this); + P60System::PDU2_OUT_EN_PAYLOAD_PCDU_CH1, this); lp_var_t outEnabledReactionWheels = lp_var_t(sid.objectId, - PDU::PDU2_OUT_EN_RW, this); + P60System::PDU2_OUT_EN_RW, this); lp_var_t outEnabledTCSBoardHeaterIn = lp_var_t(sid.objectId, - PDU::PDU2_OUT_EN_TCS_BOARD_HEATER_IN, this); + P60System::PDU2_OUT_EN_TCS_BOARD_HEATER_IN, this); lp_var_t outEnabledSUS = lp_var_t(sid.objectId, - PDU::PDU2_OUT_EN_SUS_REDUNDANT, this); + P60System::PDU2_OUT_EN_SUS_REDUNDANT, this); lp_var_t outEnabledDeplMechanism = lp_var_t(sid.objectId, - PDU::PDU2_OUT_EN_DEPLOYMENT_MECHANISM, this); + P60System::PDU2_OUT_EN_DEPLOYMENT_MECHANISM, this); lp_var_t outEnabledPlPCDUCh6 = lp_var_t(sid.objectId, - PDU::PDU2_OUT_EN_PAYLOAD_PCDU_CH6, this); + P60System::PDU2_OUT_EN_PAYLOAD_PCDU_CH6, this); lp_var_t outEnabledAcsBoard = lp_var_t(sid.objectId, - PDU::PDU2_OUT_EN_ACS_BOARD_SIDE_B, this); + P60System::PDU2_OUT_EN_ACS_BOARD_SIDE_B, this); lp_var_t outEnabledPayloadCamera = lp_var_t(sid.objectId, - PDU::PDU2_OUT_EN_PAYLOAD_CAMERA, this); + P60System::PDU2_OUT_EN_PAYLOAD_CAMERA, this); lp_var_t bootcause = lp_var_t(sid.objectId, - PDU::PDU2_BOOTCAUSE, this); + P60System::PDU2_BOOTCAUSE, this); /** Number of reboots */ lp_var_t bootcount = lp_var_t(sid.objectId, - PDU::PDU2_BOOTCNT, this); + P60System::PDU2_BOOTCNT, this); /** Uptime in seconds */ lp_var_t uptime = lp_var_t(sid.objectId, - PDU::PDU2_UPTIME, this); + P60System::PDU2_UPTIME, this); lp_var_t resetcause = lp_var_t(sid.objectId, - PDU::PDU2_RESETCAUSE, this); + P60System::PDU2_RESETCAUSE, this); /** Battery mode: 1 = Critical, 2 = Safe, 3 = Normal, 4 = Full */ lp_var_t battMode = lp_var_t(sid.objectId, - PDU::PDU2_BATT_MODE, this); + P60System::PDU2_BATT_MODE, this); /** * There are 8 devices on the PDU. FRAM, ADCs, temperature sensor etc. Each device is * identified by an ID. Refer also to gs-man-nanopower-p60-pdu-200-1.pdf on pages 17 and 18. */ lp_var_t device0 = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_0, this); + P60System::PDU2_DEVICE_0, this); lp_var_t device1 = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_1, this); + P60System::PDU2_DEVICE_1, this); lp_var_t device2 = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_2, this); + P60System::PDU2_DEVICE_2, this); lp_var_t device3 = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_3, this); + P60System::PDU2_DEVICE_3, this); lp_var_t device4 = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_4, this); + P60System::PDU2_DEVICE_4, this); lp_var_t device5 = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_5, this); + P60System::PDU2_DEVICE_5, this); lp_var_t device6 = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_6, this); + P60System::PDU2_DEVICE_6, this); lp_var_t device7 = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_7, this); + P60System::PDU2_DEVICE_7, this); /** The status of each device. 0 = None, 1 = Ok, 2 = Error, 3 = Not found */ lp_var_t device0Status = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_0_STATUS, this); + P60System::PDU2_DEVICE_0_STATUS, this); lp_var_t device1Status = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_1_STATUS, this); + P60System::PDU2_DEVICE_1_STATUS, this); lp_var_t device2Status = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_2_STATUS, this); + P60System::PDU2_DEVICE_2_STATUS, this); lp_var_t device3Status = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_3_STATUS, this); + P60System::PDU2_DEVICE_3_STATUS, this); lp_var_t device4Status = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_4_STATUS, this); + P60System::PDU2_DEVICE_4_STATUS, this); lp_var_t device5Status = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_5_STATUS, this); + P60System::PDU2_DEVICE_5_STATUS, this); lp_var_t device6Status = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_6_STATUS, this); + P60System::PDU2_DEVICE_6_STATUS, this); lp_var_t device7Status = lp_var_t(sid.objectId, - PDU::PDU2_DEVICE_7_STATUS, this); + P60System::PDU2_DEVICE_7_STATUS, this); /** Number of reboots triggered by the ground watchdog */ lp_var_t gndWdtReboots = lp_var_t(sid.objectId, - PDU::PDU2_WDT_CNT_GND, this); + P60System::PDU2_WDT_CNT_GND, this); /** Number of reboots triggered through the I2C watchdog. Not relevant for EIVE. */ lp_var_t i2cWdtReboots = lp_var_t(sid.objectId, - PDU::PDU2_WDT_CNT_I2C, this); + P60System::PDU2_WDT_CNT_I2C, this); /** Number of reboots triggered through the CAN watchdog */ lp_var_t canWdtReboots = lp_var_t(sid.objectId, - PDU::PDU2_WDT_CNT_CAN, this); + P60System::PDU2_WDT_CNT_CAN, this); /** Number of reboots triggered through the CSP watchdog */ lp_var_t cspWdtReboots = lp_var_t(sid.objectId, - PDU::PDU2_WDT_CNT_CSP, this); + P60System::PDU2_WDT_CNT_CSP, this); /** Ground watchdog remaining seconds before rebooting */ lp_var_t groundWatchdogSecondsLeft = lp_var_t(sid.objectId, - PDU::PDU2_WDT_GND_LEFT, this); + P60System::PDU2_WDT_GND_LEFT, this); /** I2C watchdog remaining seconds before rebooting. Not relevant for EIVE. */ lp_var_t i2cWatchdogSecondsLeft = lp_var_t(sid.objectId, - PDU::PDU2_WDT_I2C_LEFT, this); + P60System::PDU2_WDT_I2C_LEFT, this); /** CAN watchdog remaining seconds before rebooting. */ lp_var_t canWatchdogSecondsLeft = lp_var_t(sid.objectId, - PDU::PDU2_WDT_CAN_LEFT, this); + P60System::PDU2_WDT_CAN_LEFT, this); /** CSP watchdog remaining seconds before rebooting. */ lp_var_t cspWatchdogSecondsLeft = lp_var_t(sid.objectId, - PDU::PDU2_WDT_CSP_LEFT, this); + P60System::PDU2_WDT_CSP_LEFT, this); }; } namespace ACU { + + static const uint32_t HK_TABLE_DATA_SET_ID = 0x2; + /* When receiving full housekeeping (telemetry) table */ static const uint16_t MAX_REPLY_LENGTH = 124; static const uint16_t MAX_CONFIGTABLE_ADDRESS = 26; static const uint16_t MAX_HKTABLE_ADDRESS = 120; static const uint16_t HK_TABLE_SIZE = 125; + static const uint8_t HK_TABLE_ENTRIES = 21; + + typedef struct CurrentInGroup { + int16_t channel0; + int16_t channel1; + int16_t channel2; + int16_t channel3; + int16_t channel4; + int16_t channel5; + } CurrentInGroup_t; + + typedef struct VoltageInGroup { + uint16_t channel0; + uint16_t channel1; + uint16_t channel2; + uint16_t channel3; + uint16_t channel4; + uint16_t channel5; + } VoltageInGroup_t; + + typedef struct TemperatureGroup { + int16_t location1; + int16_t location2; + int16_t location3; + } TemperatureGroup_t; + + typedef struct VboostGroup { + uint16_t channel0; + uint16_t channel1; + uint16_t channel2; + uint16_t channel3; + uint16_t channel4; + uint16_t channel5; + } VboostGroup_t; + + typedef struct PowerGroup { + uint16_t channel0; + uint16_t channel1; + uint16_t channel2; + uint16_t channel3; + uint16_t channel4; + uint16_t channel5; + } PowerGroup_t; + + typedef struct DacEnablestatus { + uint8_t dac0; + uint8_t dac1; + uint8_t dac2; + } DacEnablestatus_t; + + + typedef struct DacRawChannelValues { + uint16_t channel0; + uint16_t channel1; + uint16_t channel2; + uint16_t channel3; + uint16_t channel4; + uint16_t channel5; + } DacRawChannelValues_t; + + typedef struct DeviceTypeGroup { + uint8_t device0; + uint8_t device1; + uint8_t device2; + uint8_t device3; + uint8_t device4; + uint8_t device5; + uint8_t device6; + uint8_t device7; + } DeviceTypeGroup_t; + + typedef struct DeviceStatusGroup { + uint8_t device0; + uint8_t device1; + uint8_t device2; + uint8_t device3; + uint8_t device4; + uint8_t device5; + uint8_t device6; + uint8_t device7; + } DeviceStatusGroup_t; + + /** + * @brief This class defines a dataset for the hk table of the ACU. + */ + class HkTableDataset: + public StaticLocalDataSet { + public: + + HkTableDataset(HasLocalDataPoolIF* owner): + StaticLocalDataSet(owner, HK_TABLE_DATA_SET_ID) { + } + + HkTableDataset(object_id_t objectId): + StaticLocalDataSet(sid_t(objectId, HK_TABLE_DATA_SET_ID)) { + } + + lp_var_t currentInGroup = lp_var_t(sid.objectId, + P60System::ACU_CURRENT_IN_GROUP, this); + lp_var_t voltageInGroup = lp_var_t(sid.objectId, + P60System::ACU_VOLTAGE_IN_GROUP, this); + lp_var_t vcc = lp_var_t(sid.objectId, + P60System::ACU_VCC, this); + lp_var_t vbat = lp_var_t(sid.objectId, + P60System::ACU_VBAT, this); + lp_var_t temperatureGroup = lp_var_t(sid.objectId, + P60System::ACU_TEMPERATURE_GROUP, this); + lp_var_t mpptMode = lp_var_t(sid.objectId, + P60System::ACU_MPPT_MODE, this); + lp_var_t vboostGroup = lp_var_t(sid.objectId, + P60System::ACU_VBOOST_GROUP, this); + lp_var_t powerGroup = lp_var_t(sid.objectId, + P60System::ACU_POWER_GROUP, this); + lp_var_t dacEnableStatusGroup = lp_var_t(sid.objectId, + P60System::ACU_DAC_EN_GROUP, this); + lp_var_t dacRawChannelValues = lp_var_t(sid.objectId, + P60System::ACU_DAC_VAL_GROUP, this); + lp_var_t bootCause = lp_var_t(sid.objectId, + P60System::ACU_BOOTCAUSE, this); + lp_var_t bootcause = lp_var_t(sid.objectId, + P60System::ACU_BOOTCAUSE, this); + lp_var_t bootcnt = lp_var_t(sid.objectId, + P60System::ACU_BOOTCNT, this); + lp_var_t uptime = lp_var_t(sid.objectId, + P60System::ACU_UPTIME, this); + lp_var_t resetCause = lp_var_t(sid.objectId, + P60System::ACU_RESET_CAUSE, this); + lp_var_t mpptTime = lp_var_t(sid.objectId, + P60System::ACU_MPPT_TIME, this); + lp_var_t mpptPeriod = lp_var_t(sid.objectId, + P60System::ACU_MPPT_PERIOD, this); + lp_var_t deviceTypeGroup = lp_var_t(sid.objectId, + P60System::ACU_DEVICE_TYPE_GROUP, this); + lp_var_t deviceStatusGroup = lp_var_t(sid.objectId, + P60System::ACU_DEVICE_STATUS_GROUP, this); + lp_var_t wdtCntGnd = lp_var_t(sid.objectId, + P60System::ACU_WDT_CNT_GND, this); + lp_var_t wdtGndLeft = lp_var_t(sid.objectId, + P60System::ACU_WDT_GND_LEFT, this); + }; } #endif /* MISSION_DEVICES_DEVICEDEFINITIONS_GOMSPACEDEFINITIONS_H_ */