Update Package #95
@ -14,7 +14,8 @@
|
||||
#include "mission/core/GenericFactory.h"
|
||||
#include "mission/utility/TmFunnel.h"
|
||||
#include <mission/devices/GPSHyperionHandler.h>
|
||||
#include "mission/devices/MGMHandlerLIS3MDL.h"
|
||||
#include <mission/devices/MgmLIS3MDLHandler.h>
|
||||
|
||||
#include "mission/devices/MGMHandlerRM3100.h"
|
||||
#include "mission/devices/GyroADIS16507Handler.h"
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
#include <mission/devices/MgmLIS3MDLHandler.h>
|
||||
#include "ObjectFactory.h"
|
||||
#include "OBSWConfig.h"
|
||||
#include "devConf.h"
|
||||
@ -36,7 +37,6 @@
|
||||
#include "mission/devices/GyroADIS16507Handler.h"
|
||||
#include "mission/devices/IMTQHandler.h"
|
||||
#include "mission/devices/SyrlinksHkHandler.h"
|
||||
#include "mission/devices/MGMHandlerLIS3MDL.h"
|
||||
#include "mission/devices/PlocMPSoCHandler.h"
|
||||
#include "mission/devices/RadiationSensorHandler.h"
|
||||
#include "mission/devices/RwHandler.h"
|
||||
@ -449,7 +449,7 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF *gpioComIF, UartComI
|
||||
SpiCookie* spiCookie = new SpiCookie(addresses::MGM_0_LIS3, gpioIds::MGM_0_LIS3_CS, spiDev,
|
||||
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
|
||||
auto mgmLis3Handler = new MGMHandlerLIS3MDL(objects::MGM_0_LIS3_HANDLER,
|
||||
objects::SPI_COM_IF, spiCookie);
|
||||
objects::SPI_COM_IF, spiCookie, 0);
|
||||
mgmLis3Handler->setStartUpImmediately();
|
||||
|
||||
spiCookie = new SpiCookie(addresses::MGM_1_RM3100, gpioIds::MGM_1_RM3100_CS, spiDev,
|
||||
@ -462,7 +462,7 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF *gpioComIF, UartComI
|
||||
spiCookie = new SpiCookie(addresses::MGM_2_LIS3, gpioIds::MGM_2_LIS3_CS, spiDev,
|
||||
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
|
||||
auto mgmLis3Handler2 = new MGMHandlerLIS3MDL(objects::MGM_2_LIS3_HANDLER,
|
||||
objects::SPI_COM_IF, spiCookie);
|
||||
objects::SPI_COM_IF, spiCookie, 0);
|
||||
mgmLis3Handler2->setStartUpImmediately();
|
||||
|
||||
spiCookie = new SpiCookie(addresses::MGM_3_RM3100, gpioIds::MGM_3_RM3100_CS, spiDev,
|
||||
|
@ -1,6 +1,6 @@
|
||||
target_sources(${TARGET_NAME} PUBLIC
|
||||
GPSHyperionHandler.cpp
|
||||
MGMHandlerLIS3MDL.cpp
|
||||
MgmLIS3MDLHandler.cpp
|
||||
GomspaceDeviceHandler.cpp
|
||||
Tmp1075Handler.cpp
|
||||
PCDUHandler.cpp
|
||||
|
@ -1,12 +1,11 @@
|
||||
#include "MGMHandlerLIS3MDL.h"
|
||||
|
||||
#include <mission/devices/MgmLIS3MDLHandler.h>
|
||||
#include "fsfw/datapool/PoolReadGuard.h"
|
||||
#if OBSW_VERBOSE_LEVEL >= 1
|
||||
#include "fsfw/globalfunctions/PeriodicOperationDivider.h"
|
||||
#endif
|
||||
|
||||
MGMHandlerLIS3MDL::MGMHandlerLIS3MDL(object_id_t objectId,
|
||||
object_id_t deviceCommunication, CookieIF* comCookie):
|
||||
MGMHandlerLIS3MDL::MGMHandlerLIS3MDL(object_id_t objectId, object_id_t deviceCommunication,
|
||||
CookieIF* comCookie, uint8_t switchId, uint32_t transitionDelay):
|
||||
DeviceHandlerBase(objectId, deviceCommunication, comCookie),
|
||||
dataset(this) {
|
||||
#if OBSW_VERBOSE_LEVEL >= 1
|
@ -30,8 +30,8 @@ public:
|
||||
//Notifies a command to change the setup parameters
|
||||
static const Event CHANGE_OF_SETUP_PARAMETER = MAKE_EVENT(0, severity::LOW);
|
||||
|
||||
MGMHandlerLIS3MDL(uint32_t objectId, object_id_t deviceCommunication,
|
||||
CookieIF* comCookie);
|
||||
MGMHandlerLIS3MDL(uint32_t objectId, object_id_t deviceCommunication, CookieIF* comCookie,
|
||||
uint8_t switchId, uint32_t transitionDelay = 10000);
|
||||
virtual ~MGMHandlerLIS3MDL();
|
||||
|
||||
protected:
|
||||
@ -59,6 +59,34 @@ protected:
|
||||
|
||||
private:
|
||||
MGMLIS3MDL::MgmPrimaryDataset dataset;
|
||||
//Length a sindgle command SPI answer
|
||||
static const uint8_t SINGLE_COMMAND_ANSWER_LEN = 2;
|
||||
|
||||
//Single SPIcommand has 2 bytes, first for adress, second for content
|
||||
size_t singleComandSize = 2;
|
||||
//has the size for all adresses of the lis3mdl + the continous write bit
|
||||
uint8_t commandBuffer[MGMLIS3MDL::NR_OF_DATA_AND_CFG_REGISTERS + 1];
|
||||
|
||||
/**
|
||||
* We want to save the registers we set, so we dont have to read the
|
||||
* registers when we want to change something.
|
||||
* --> everytime we change set a register we have to save it
|
||||
*/
|
||||
uint8_t registers[MGMLIS3MDL::NR_OF_CTRL_REGISTERS];
|
||||
|
||||
uint8_t statusRegister = 0;
|
||||
|
||||
enum class InternalState {
|
||||
STATE_NONE,
|
||||
STATE_FIRST_CONTACT,
|
||||
STATE_SETUP,
|
||||
STATE_CHECK_REGISTERS,
|
||||
STATE_NORMAL
|
||||
};
|
||||
|
||||
InternalState internalState = InternalState::STATE_NONE;
|
||||
CommunicationStep communicationStep = CommunicationStep::DATA;
|
||||
bool commandExecuted = false;
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
/* Device specific commands and variables */
|
||||
@ -119,24 +147,6 @@ private:
|
||||
virtual ReturnValue_t setOperatingMode(const uint8_t *commandData,
|
||||
size_t commandDataLen);
|
||||
|
||||
|
||||
//Length a sindgle command SPI answer
|
||||
static const uint8_t SINGLE_COMMAND_ANSWER_LEN = 2;
|
||||
|
||||
//Single SPIcommand has 2 bytes, first for adress, second for content
|
||||
size_t singleComandSize = 2;
|
||||
//has the size for all adresses of the lis3mdl + the continous write bit
|
||||
uint8_t commandBuffer[MGMLIS3MDL::NR_OF_DATA_AND_CFG_REGISTERS + 1];
|
||||
|
||||
/**
|
||||
* We want to save the registers we set, so we dont have to read the
|
||||
* registers when we want to change something.
|
||||
* --> everytime we change set a register we have to save it
|
||||
*/
|
||||
uint8_t registers[MGMLIS3MDL::NR_OF_CTRL_REGISTERS];
|
||||
|
||||
uint8_t statusRegister = 0;
|
||||
|
||||
/**
|
||||
* We always update all registers together, so this method updates
|
||||
* the rawpacket and rawpacketLen, so we just manipulate the local
|
||||
@ -145,18 +155,6 @@ private:
|
||||
*/
|
||||
ReturnValue_t prepareCtrlRegisterWrite();
|
||||
|
||||
enum class InternalState {
|
||||
STATE_NONE,
|
||||
STATE_FIRST_CONTACT,
|
||||
STATE_SETUP,
|
||||
STATE_CHECK_REGISTERS,
|
||||
STATE_NORMAL
|
||||
};
|
||||
|
||||
InternalState internalState = InternalState::STATE_NONE;
|
||||
CommunicationStep communicationStep = CommunicationStep::DATA;
|
||||
bool commandExecuted = false;
|
||||
|
||||
#if OBSW_VERBOSE_LEVEL >= 1
|
||||
PeriodicOperationDivider* debugDivider;
|
||||
#endif
|
@ -312,6 +312,18 @@ ReturnValue_t PDU2Handler::initializeLocalDataPool(
|
||||
|
||||
ReturnValue_t PDU2Handler::printStatus(DeviceCommandId_t cmd) {
|
||||
switch(cmd) {
|
||||
case(GOMSPACE::PRINT_ALL): {
|
||||
PoolReadGuard pg(&pdu2HkTableDataset);
|
||||
ReturnValue_t readResult = pg.getReadResult();
|
||||
if(readResult != HasReturnvaluesIF::RETURN_OK) {
|
||||
sif::warning << "Reading PDU2 HK table failed!" << std::endl;
|
||||
return HasReturnvaluesIF::RETURN_FAILED;
|
||||
}
|
||||
printOutputSwitchStates();
|
||||
printOutputCurrents();
|
||||
printOutputVoltages();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
case(GOMSPACE::PRINT_OUT_ENB_STATUS): {
|
||||
PoolReadGuard pg(&pdu2HkTableDataset);
|
||||
ReturnValue_t readResult = pg.getReadResult();
|
||||
@ -322,6 +334,26 @@ ReturnValue_t PDU2Handler::printStatus(DeviceCommandId_t cmd) {
|
||||
printOutputSwitchStates();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
case(GOMSPACE::PRINT_OUT_CURRENTS): {
|
||||
PoolReadGuard pg(&pdu2HkTableDataset);
|
||||
ReturnValue_t readResult = pg.getReadResult();
|
||||
if(readResult != HasReturnvaluesIF::RETURN_OK) {
|
||||
sif::warning << "Reading PDU2 HK table failed!" << std::endl;
|
||||
return HasReturnvaluesIF::RETURN_FAILED;
|
||||
}
|
||||
printOutputCurrents();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
case(GOMSPACE::PRINT_OUT_VOLTAGES): {
|
||||
PoolReadGuard pg(&pdu2HkTableDataset);
|
||||
ReturnValue_t readResult = pg.getReadResult();
|
||||
if(readResult != HasReturnvaluesIF::RETURN_OK) {
|
||||
sif::warning << "Reading PDU2 HK table failed!" << std::endl;
|
||||
return HasReturnvaluesIF::RETURN_FAILED;
|
||||
}
|
||||
printOutputVoltages();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
default: {
|
||||
return HasReturnvaluesIF::RETURN_FAILED;
|
||||
}
|
||||
@ -348,3 +380,45 @@ void PDU2Handler::printOutputSwitchStates() {
|
||||
sif::info << "PDU2 payload camera enable state: "
|
||||
<< unsigned(pdu2HkTableDataset.outEnabledPayloadCamera.value) << std::endl;
|
||||
}
|
||||
|
||||
void PDU2Handler::printOutputCurrents() {
|
||||
sif::info << "PDU2 Q7S current: " <<
|
||||
pdu2HkTableDataset.currentOutQ7S.value << std::endl;
|
||||
sif::info << "PDU2 Payload PCDU current: " <<
|
||||
pdu2HkTableDataset.currentOutPayloadPCDUCh1.value << std::endl;
|
||||
sif::info << "PDU2 RW currents: " <<
|
||||
pdu2HkTableDataset.currentOutReactionWheels.value << std::endl;
|
||||
sif::info << "PDU2 TCS Board Heater In Current: " <<
|
||||
pdu2HkTableDataset.currentOutTCSBoardHeaterIn.value << std::endl;
|
||||
sif::info << "PDU2 SuS Redundant current: " <<
|
||||
pdu2HkTableDataset.currentOutSUSRedundant.value << std::endl;
|
||||
sif::info << "PDU2 Depl-Mechanism current: " <<
|
||||
pdu2HkTableDataset.currentOutDeplMechanism.value << std::endl;
|
||||
sif::info << "PDU2 Payload PCDU current: " <<
|
||||
pdu2HkTableDataset.currentOutPayloadPCDUCh6.value << std::endl;
|
||||
sif::info << "PDU2 ACS Board current: " <<
|
||||
pdu2HkTableDataset.currentOutACSBoardSideB.value << std::endl;
|
||||
sif::info << "PDU2 Payload Camera current: " <<
|
||||
pdu2HkTableDataset.currentOutPayloadCamera.value << std::endl;
|
||||
}
|
||||
|
||||
void PDU2Handler::printOutputVoltages() {
|
||||
sif::info << "PDU2 Q7S voltage: " <<
|
||||
pdu2HkTableDataset.voltageOutQ7S.value << std::endl;
|
||||
sif::info << "PDU2 Payload PCDU voltage: " <<
|
||||
pdu2HkTableDataset.voltageOutPayloadPCDUCh1.value << std::endl;
|
||||
sif::info << "PDU2 RW voltage: " <<
|
||||
pdu2HkTableDataset.voltageOutReactionWheels.value << std::endl;
|
||||
sif::info << "PDU2 TCS Board Heater In voltage: " <<
|
||||
pdu2HkTableDataset.voltageOutTCSBoardHeaterIn.value << std::endl;
|
||||
sif::info << "PDU2 SuS Redundant voltage: " <<
|
||||
pdu2HkTableDataset.voltageOutSUSRedundant.value << std::endl;
|
||||
sif::info << "PDU2 Depl-Mechanism voltage: " <<
|
||||
pdu2HkTableDataset.voltageOutDeplMechanism.value << std::endl;
|
||||
sif::info << "PDU2 Payload PCDU voltage: " <<
|
||||
pdu2HkTableDataset.voltageOutPayloadPCDUCh6.value << std::endl;
|
||||
sif::info << "PDU2 ACS Board voltage: " <<
|
||||
pdu2HkTableDataset.voltageOutACSBoardSideB.value << std::endl;
|
||||
sif::info << "PDU2 Payload Camera voltage: " <<
|
||||
pdu2HkTableDataset.voltageOutPayloadCamera.value << std::endl;
|
||||
}
|
||||
|
@ -40,6 +40,9 @@ private:
|
||||
PDU2::PDU2HkTableDataset pdu2HkTableDataset;
|
||||
|
||||
void printOutputSwitchStates();
|
||||
void printOutputCurrents();
|
||||
void printOutputVoltages();
|
||||
|
||||
void parseHkTableReply(const uint8_t *packet);
|
||||
};
|
||||
|
||||
|
@ -33,7 +33,11 @@ static const DeviceCommandId_t GNDWDT_RESET = 9; //!< [EXPORT] : [COMMAND]
|
||||
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]
|
||||
static const DeviceCommandId_t PRINT_OUT_ENB_STATUS = 17; //!< [EXPORT] : [COMMAND]
|
||||
static const DeviceCommandId_t PRINT_ALL = 32; //!< [EXPORT] : [COMMAND]
|
||||
static const DeviceCommandId_t PRINT_OUT_ENB_STATUS = 33; //!< [EXPORT] : [COMMAND]
|
||||
static const DeviceCommandId_t PRINT_OUT_CURRENTS = 34; //!< [EXPORT] : [COMMAND]
|
||||
static const DeviceCommandId_t PRINT_OUT_VOLTAGES = 35; //!< [EXPORT] : [COMMAND]
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user