Merge pull request 'More TMP1075 bugfixes' (#727) from more-tmp-bugfixes into main
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #727 Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
This commit is contained in:
commit
a7a530cb59
@ -27,6 +27,9 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
|
|
||||||
- TMP1075: Set dataset invalid on shutdown explicitely
|
- TMP1075: Set dataset invalid on shutdown explicitely
|
||||||
- Small fixes for TMP1075 FDIR: Use strange and missed reply counters.
|
- Small fixes for TMP1075 FDIR: Use strange and missed reply counters.
|
||||||
|
- TMP1075: Devices did not go to OFF mode when being set faulty.
|
||||||
|
- Update PL PCDU 1 in TCS mode tree on the EM.
|
||||||
|
- TMP1075: Possibly ignored health commands.
|
||||||
|
|
||||||
# [v6.0.0] 2023-07-02
|
# [v6.0.0] 2023-07-02
|
||||||
|
|
||||||
|
@ -168,5 +168,5 @@ void ObjectFactory::produce(void* args) {
|
|||||||
HeaterHandler* heaterHandler;
|
HeaterHandler* heaterHandler;
|
||||||
createHeaterComponents(gpioComIF, pwrSwitcher, healthTable, heaterHandler);
|
createHeaterComponents(gpioComIF, pwrSwitcher, healthTable, heaterHandler);
|
||||||
createThermalController(*heaterHandler, true);
|
createThermalController(*heaterHandler, true);
|
||||||
satsystem::init();
|
satsystem::init(true);
|
||||||
}
|
}
|
||||||
|
@ -133,5 +133,5 @@ void ObjectFactory::produce(void* args) {
|
|||||||
createMiscComponents();
|
createMiscComponents();
|
||||||
createThermalController(*heaterHandler, false);
|
createThermalController(*heaterHandler, false);
|
||||||
createAcsController(true, enableHkSets);
|
createAcsController(true, enableHkSets);
|
||||||
satsystem::init();
|
satsystem::init(false);
|
||||||
}
|
}
|
||||||
|
@ -172,10 +172,6 @@ void ObjectFactory::createTmpComponents(std::vector<std::pair<object_id_t, addre
|
|||||||
new Tmp1075Handler(tmpDevsToAdd[idx].first, objects::I2C_COM_IF, tmpDevCookies[idx]);
|
new Tmp1075Handler(tmpDevsToAdd[idx].first, objects::I2C_COM_IF, tmpDevCookies[idx]);
|
||||||
tmpDevHandler->setCustomFdir(new TmpDevFdir(tmpDevsToAdd[idx].first));
|
tmpDevHandler->setCustomFdir(new TmpDevFdir(tmpDevsToAdd[idx].first));
|
||||||
tmpDevHandler->connectModeTreeParent(satsystem::tcs::SUBSYSTEM);
|
tmpDevHandler->connectModeTreeParent(satsystem::tcs::SUBSYSTEM);
|
||||||
// TODO: Remove this after TCS subsystem was added
|
|
||||||
// These devices are connected to the 3V3 stack and should be powered permanently. Therefore,
|
|
||||||
// we set them to normal mode immediately here.
|
|
||||||
tmpDevHandler->setModeNormal();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,15 +7,21 @@ using namespace returnvalue;
|
|||||||
Max31865Dummy::Max31865Dummy(object_id_t objectId, object_id_t comif, CookieIF *comCookie)
|
Max31865Dummy::Max31865Dummy(object_id_t objectId, object_id_t comif, CookieIF *comCookie)
|
||||||
: DeviceHandlerBase(objectId, comif, comCookie), set(this, EiveMax31855::EXCHANGE_SET_ID) {}
|
: DeviceHandlerBase(objectId, comif, comCookie), set(this, EiveMax31855::EXCHANGE_SET_ID) {}
|
||||||
void Max31865Dummy::doStartUp() { setMode(MODE_ON); }
|
void Max31865Dummy::doStartUp() { setMode(MODE_ON); }
|
||||||
void Max31865Dummy::doShutDown() { setMode(_MODE_POWER_DOWN); }
|
void Max31865Dummy::doShutDown() {
|
||||||
|
PoolReadGuard pg(&set);
|
||||||
|
set.setValidity(false, true);
|
||||||
|
setMode(MODE_OFF);
|
||||||
|
}
|
||||||
ReturnValue_t Max31865Dummy::buildNormalDeviceCommand(DeviceCommandId_t *id) {
|
ReturnValue_t Max31865Dummy::buildNormalDeviceCommand(DeviceCommandId_t *id) {
|
||||||
return NOTHING_TO_SEND;
|
return NOTHING_TO_SEND;
|
||||||
}
|
}
|
||||||
ReturnValue_t Max31865Dummy::buildTransitionDeviceCommand(DeviceCommandId_t *id) { return OK; }
|
ReturnValue_t Max31865Dummy::buildTransitionDeviceCommand(DeviceCommandId_t *id) {
|
||||||
|
return NOTHING_TO_SEND;
|
||||||
|
}
|
||||||
ReturnValue_t Max31865Dummy::buildCommandFromCommand(DeviceCommandId_t deviceCommand,
|
ReturnValue_t Max31865Dummy::buildCommandFromCommand(DeviceCommandId_t deviceCommand,
|
||||||
const uint8_t *commandData,
|
const uint8_t *commandData,
|
||||||
size_t commandDataLen) {
|
size_t commandDataLen) {
|
||||||
return 0;
|
return NOTHING_TO_SEND;
|
||||||
}
|
}
|
||||||
ReturnValue_t Max31865Dummy::scanForReply(const uint8_t *start, size_t len,
|
ReturnValue_t Max31865Dummy::scanForReply(const uint8_t *start, size_t len,
|
||||||
DeviceCommandId_t *foundId, size_t *foundLen) {
|
DeviceCommandId_t *foundId, size_t *foundLen) {
|
||||||
|
@ -9,7 +9,11 @@ Tmp1075Dummy::Tmp1075Dummy(object_id_t objectId, object_id_t comif, CookieIF *co
|
|||||||
: DeviceHandlerBase(objectId, comif, comCookie), set(this) {}
|
: DeviceHandlerBase(objectId, comif, comCookie), set(this) {}
|
||||||
|
|
||||||
void Tmp1075Dummy::doStartUp() { setMode(MODE_ON); }
|
void Tmp1075Dummy::doStartUp() { setMode(MODE_ON); }
|
||||||
void Tmp1075Dummy::doShutDown() { setMode(MODE_OFF); }
|
void Tmp1075Dummy::doShutDown() {
|
||||||
|
PoolReadGuard pg(&set);
|
||||||
|
set.setValidity(false, true);
|
||||||
|
setMode(MODE_OFF);
|
||||||
|
}
|
||||||
|
|
||||||
ReturnValue_t Tmp1075Dummy::buildNormalDeviceCommand(DeviceCommandId_t *id) {
|
ReturnValue_t Tmp1075Dummy::buildNormalDeviceCommand(DeviceCommandId_t *id) {
|
||||||
return NOTHING_TO_SEND;
|
return NOTHING_TO_SEND;
|
||||||
@ -50,4 +54,11 @@ ReturnValue_t Tmp1075Dummy::initializeLocalDataPool(localpool::DataPool &localDa
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReturnValue_t Tmp1075Dummy::setHealth(HealthState health) {
|
||||||
|
if (health == FAULTY or health == PERMANENT_FAULTY) {
|
||||||
|
setMode(_MODE_SHUT_DOWN);
|
||||||
|
}
|
||||||
|
return DeviceHandlerBase::setHealth(health);
|
||||||
|
}
|
||||||
|
|
||||||
LocalPoolDataSetBase *Tmp1075Dummy::getDataSetHandle(sid_t sid) { return &set; }
|
LocalPoolDataSetBase *Tmp1075Dummy::getDataSetHandle(sid_t sid) { return &set; }
|
||||||
|
@ -26,6 +26,7 @@ class Tmp1075Dummy : public DeviceHandlerBase {
|
|||||||
uint32_t getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) override;
|
uint32_t getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) override;
|
||||||
ReturnValue_t initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
|
ReturnValue_t initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
|
||||||
LocalDataPoolManager &poolManager) override;
|
LocalDataPoolManager &poolManager) override;
|
||||||
|
ReturnValue_t setHealth(HealthState health) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
LocalPoolDataSetBase *getDataSetHandle(sid_t sid) override;
|
LocalPoolDataSetBase *getDataSetHandle(sid_t sid) override;
|
||||||
|
@ -31,12 +31,12 @@ void buildPtgInertialSequence(Subsystem& ss, ModeListEntry& eh);
|
|||||||
static const auto OFF = HasModesIF::MODE_OFF;
|
static const auto OFF = HasModesIF::MODE_OFF;
|
||||||
static const auto NML = DeviceHandlerIF::MODE_NORMAL;
|
static const auto NML = DeviceHandlerIF::MODE_NORMAL;
|
||||||
|
|
||||||
void satsystem::init() {
|
void satsystem::init(bool commandPlPcdu1) {
|
||||||
auto& acsSubsystem = acs::init();
|
auto& acsSubsystem = acs::init();
|
||||||
acsSubsystem.connectModeTreeParent(EIVE_SYSTEM);
|
acsSubsystem.connectModeTreeParent(EIVE_SYSTEM);
|
||||||
auto& payloadSubsystem = payload::init();
|
auto& payloadSubsystem = payload::init();
|
||||||
payloadSubsystem.connectModeTreeParent(EIVE_SYSTEM);
|
payloadSubsystem.connectModeTreeParent(EIVE_SYSTEM);
|
||||||
auto& tcsSubsystem = tcs::init();
|
auto& tcsSubsystem = tcs::init(commandPlPcdu1);
|
||||||
tcsSubsystem.connectModeTreeParent(EIVE_SYSTEM);
|
tcsSubsystem.connectModeTreeParent(EIVE_SYSTEM);
|
||||||
auto& comSubsystem = com::init();
|
auto& comSubsystem = com::init();
|
||||||
comSubsystem.connectModeTreeParent(EIVE_SYSTEM);
|
comSubsystem.connectModeTreeParent(EIVE_SYSTEM);
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
namespace satsystem {
|
namespace satsystem {
|
||||||
|
|
||||||
void init();
|
void init(bool commandPlPcdu1);
|
||||||
|
|
||||||
extern EiveSystem EIVE_SYSTEM;
|
extern EiveSystem EIVE_SYSTEM;
|
||||||
|
|
||||||
|
@ -10,8 +10,8 @@ TcsSubsystem satsystem::tcs::SUBSYSTEM(objects::TCS_SUBSYSTEM, 12, 24);
|
|||||||
namespace {
|
namespace {
|
||||||
// Alias for checker function
|
// Alias for checker function
|
||||||
const auto check = subsystem::checkInsert;
|
const auto check = subsystem::checkInsert;
|
||||||
void buildOffSequence(Subsystem& ss, ModeListEntry& eh);
|
void buildOffSequence(Subsystem& ss, ModeListEntry& eh, bool commandPlPcdu1);
|
||||||
void buildNormalSequence(Subsystem& ss, ModeListEntry& eh);
|
void buildNormalSequence(Subsystem& ss, ModeListEntry& eh, bool commandPlPcdu1);
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
static const auto OFF = HasModesIF::MODE_OFF;
|
static const auto OFF = HasModesIF::MODE_OFF;
|
||||||
@ -27,17 +27,17 @@ auto TCS_TABLE_NORMAL_TGT = std::make_pair((NML << 24) | 1, FixedArrayList<ModeL
|
|||||||
auto TCS_TABLE_NORMAL_TRANS_0 = std::make_pair((NML << 24) | 2, FixedArrayList<ModeListEntry, 7>());
|
auto TCS_TABLE_NORMAL_TRANS_0 = std::make_pair((NML << 24) | 2, FixedArrayList<ModeListEntry, 7>());
|
||||||
auto TCS_TABLE_NORMAL_TRANS_1 = std::make_pair((NML << 24) | 3, FixedArrayList<ModeListEntry, 2>());
|
auto TCS_TABLE_NORMAL_TRANS_1 = std::make_pair((NML << 24) | 3, FixedArrayList<ModeListEntry, 2>());
|
||||||
|
|
||||||
Subsystem& satsystem::tcs::init() {
|
Subsystem& satsystem::tcs::init(bool commandPlPcdu1) {
|
||||||
ModeListEntry entry;
|
ModeListEntry entry;
|
||||||
buildOffSequence(SUBSYSTEM, entry);
|
buildOffSequence(SUBSYSTEM, entry, commandPlPcdu1);
|
||||||
buildNormalSequence(SUBSYSTEM, entry);
|
buildNormalSequence(SUBSYSTEM, entry, commandPlPcdu1);
|
||||||
SUBSYSTEM.setInitialMode(OFF);
|
SUBSYSTEM.setInitialMode(OFF);
|
||||||
return SUBSYSTEM;
|
return SUBSYSTEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
void buildOffSequence(Subsystem& ss, ModeListEntry& eh) {
|
void buildOffSequence(Subsystem& ss, ModeListEntry& eh, bool commandPlPcdu1) {
|
||||||
std::string context = "satsystem::tcs::buildOffSequence";
|
std::string context = "satsystem::tcs::buildOffSequence";
|
||||||
auto ctxc = context.c_str();
|
auto ctxc = context.c_str();
|
||||||
// Insert Helper Table
|
// Insert Helper Table
|
||||||
@ -67,7 +67,9 @@ void buildOffSequence(Subsystem& ss, ModeListEntry& eh) {
|
|||||||
iht(objects::TMP1075_HANDLER_TCS_0, OFF, 0, TCS_TABLE_OFF_TRANS_1.second);
|
iht(objects::TMP1075_HANDLER_TCS_0, OFF, 0, TCS_TABLE_OFF_TRANS_1.second);
|
||||||
iht(objects::TMP1075_HANDLER_TCS_1, OFF, 0, TCS_TABLE_OFF_TRANS_1.second);
|
iht(objects::TMP1075_HANDLER_TCS_1, OFF, 0, TCS_TABLE_OFF_TRANS_1.second);
|
||||||
iht(objects::TMP1075_HANDLER_PLPCDU_0, OFF, 0, TCS_TABLE_OFF_TRANS_1.second);
|
iht(objects::TMP1075_HANDLER_PLPCDU_0, OFF, 0, TCS_TABLE_OFF_TRANS_1.second);
|
||||||
// TMP PL PCDU 1 is damaged
|
if (commandPlPcdu1) {
|
||||||
|
iht(objects::TMP1075_HANDLER_PLPCDU_1, OFF, 0, TCS_TABLE_OFF_TRANS_1.second);
|
||||||
|
}
|
||||||
iht(objects::TMP1075_HANDLER_IF_BOARD, OFF, 0, TCS_TABLE_OFF_TRANS_1.second);
|
iht(objects::TMP1075_HANDLER_IF_BOARD, OFF, 0, TCS_TABLE_OFF_TRANS_1.second);
|
||||||
check(ss.addTable(TableEntry(TCS_TABLE_OFF_TRANS_1.first, &TCS_TABLE_OFF_TRANS_1.second)), ctxc);
|
check(ss.addTable(TableEntry(TCS_TABLE_OFF_TRANS_1.first, &TCS_TABLE_OFF_TRANS_1.second)), ctxc);
|
||||||
|
|
||||||
@ -79,7 +81,7 @@ void buildOffSequence(Subsystem& ss, ModeListEntry& eh) {
|
|||||||
ctxc);
|
ctxc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void buildNormalSequence(Subsystem& ss, ModeListEntry& eh) {
|
void buildNormalSequence(Subsystem& ss, ModeListEntry& eh, bool commandPlPcdu1) {
|
||||||
std::string context = "satsystem::tcs::buildNormalSequence";
|
std::string context = "satsystem::tcs::buildNormalSequence";
|
||||||
auto ctxc = context.c_str();
|
auto ctxc = context.c_str();
|
||||||
// Insert Helper Table
|
// Insert Helper Table
|
||||||
@ -105,7 +107,9 @@ void buildNormalSequence(Subsystem& ss, ModeListEntry& eh) {
|
|||||||
iht(objects::TMP1075_HANDLER_TCS_0, NML, 0, TCS_TABLE_NORMAL_TRANS_0.second);
|
iht(objects::TMP1075_HANDLER_TCS_0, NML, 0, TCS_TABLE_NORMAL_TRANS_0.second);
|
||||||
iht(objects::TMP1075_HANDLER_TCS_1, NML, 0, TCS_TABLE_NORMAL_TRANS_0.second);
|
iht(objects::TMP1075_HANDLER_TCS_1, NML, 0, TCS_TABLE_NORMAL_TRANS_0.second);
|
||||||
iht(objects::TMP1075_HANDLER_PLPCDU_0, NML, 0, TCS_TABLE_NORMAL_TRANS_0.second);
|
iht(objects::TMP1075_HANDLER_PLPCDU_0, NML, 0, TCS_TABLE_NORMAL_TRANS_0.second);
|
||||||
// TMP PL PCDU 1 is damaged
|
if (commandPlPcdu1) {
|
||||||
|
iht(objects::TMP1075_HANDLER_PLPCDU_1, NML, 0, TCS_TABLE_NORMAL_TRANS_0.second);
|
||||||
|
}
|
||||||
iht(objects::TMP1075_HANDLER_IF_BOARD, NML, 0, TCS_TABLE_NORMAL_TRANS_0.second);
|
iht(objects::TMP1075_HANDLER_IF_BOARD, NML, 0, TCS_TABLE_NORMAL_TRANS_0.second);
|
||||||
check(ss.addTable(TableEntry(TCS_TABLE_NORMAL_TRANS_0.first, &TCS_TABLE_NORMAL_TRANS_0.second)),
|
check(ss.addTable(TableEntry(TCS_TABLE_NORMAL_TRANS_0.first, &TCS_TABLE_NORMAL_TRANS_0.second)),
|
||||||
ctxc);
|
ctxc);
|
||||||
|
@ -7,7 +7,7 @@ namespace satsystem {
|
|||||||
namespace tcs {
|
namespace tcs {
|
||||||
|
|
||||||
extern TcsSubsystem SUBSYSTEM;
|
extern TcsSubsystem SUBSYSTEM;
|
||||||
Subsystem& init();
|
Subsystem& init(bool commandPlPcdu1);
|
||||||
|
|
||||||
} // namespace tcs
|
} // namespace tcs
|
||||||
} // namespace satsystem
|
} // namespace satsystem
|
||||||
|
@ -133,12 +133,14 @@ ReturnValue_t Tmp1075Handler::initializeLocalDataPool(localpool::DataPool &local
|
|||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tmp1075Handler::setModeNormal() { setMode(_MODE_TO_NORMAL); }
|
|
||||||
|
|
||||||
ReturnValue_t Tmp1075Handler::setHealth(HealthState health) {
|
ReturnValue_t Tmp1075Handler::setHealth(HealthState health) {
|
||||||
if (health != FAULTY and health != PERMANENT_FAULTY and health != HEALTHY and
|
if (health != FAULTY and health != PERMANENT_FAULTY and health != HEALTHY and
|
||||||
health != EXTERNAL_CONTROL) {
|
health != EXTERNAL_CONTROL) {
|
||||||
return returnvalue::FAILED;
|
return returnvalue::FAILED;
|
||||||
}
|
}
|
||||||
return returnvalue::OK;
|
// Required because we do not have an assembly.
|
||||||
|
if (health == FAULTY or health == PERMANENT_FAULTY) {
|
||||||
|
setMode(_MODE_SHUT_DOWN);
|
||||||
|
}
|
||||||
|
return DeviceHandlerBase::setHealth(health);
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,6 @@ class Tmp1075Handler : public DeviceHandlerBase {
|
|||||||
Tmp1075Handler(object_id_t objectId, object_id_t comIF, CookieIF *comCookie);
|
Tmp1075Handler(object_id_t objectId, object_id_t comIF, CookieIF *comCookie);
|
||||||
virtual ~Tmp1075Handler();
|
virtual ~Tmp1075Handler();
|
||||||
|
|
||||||
void setModeNormal();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void doStartUp() override;
|
void doStartUp() override;
|
||||||
void doShutDown() override;
|
void doShutDown() override;
|
||||||
|
2
tmtc
2
tmtc
@ -1 +1 @@
|
|||||||
Subproject commit c48f04eed5152f319b217870292968fb67b763d4
|
Subproject commit 6d5bde40db69534a8cea923f96145bdeb62b79af
|
Loading…
Reference in New Issue
Block a user