Improve Subsystem DHB logic #112

Merged
muellerr merged 16 commits from mueller/improve-ss-dhb-logic into develop 2022-11-02 10:32:27 +01:00
3 changed files with 23 additions and 9 deletions
Showing only changes of commit acab5f6bce - Show all commits

View File

@ -20,11 +20,15 @@ ControllerBase::ControllerBase(object_id_t setObjectId, size_t commandQueueDepth
ControllerBase::~ControllerBase() { QueueFactory::instance()->deleteMessageQueue(commandQueue); } ControllerBase::~ControllerBase() { QueueFactory::instance()->deleteMessageQueue(commandQueue); }
ReturnValue_t ControllerBase::initialize() { ReturnValue_t ControllerBase::initialize() {
ReturnValue_t result = SystemObject::initialize(); ReturnValue_t result = modeHelper.initialize();
if (result != returnvalue::OK) { if(result != returnvalue::OK) {
return result; return result;
} }
return returnvalue::OK; result = healthHelper.initialize();
if(result != returnvalue::OK) {
return result;
}
return SystemObject::initialize();
} }
MessageQueueId_t ControllerBase::getCommandQueue() const { return commandQueue->getId(); } MessageQueueId_t ControllerBase::getCommandQueue() const { return commandQueue->getId(); }

View File

@ -129,7 +129,17 @@ ReturnValue_t SubsystemBase::updateChildChangedHealth(MessageQueueId_t queue, bo
MessageQueueId_t SubsystemBase::getCommandQueue() const { return commandQueue->getId(); } MessageQueueId_t SubsystemBase::getCommandQueue() const { return commandQueue->getId(); }
ReturnValue_t SubsystemBase::initialize() { return SystemObject::initialize(); } ReturnValue_t SubsystemBase::initialize() {
ReturnValue_t result = modeHelper.initialize();
if(result != returnvalue::OK) {
return result;
}
result = healthHelper.initialize();
if(result != returnvalue::OK) {
return result;
}
return SystemObject::initialize();
}
ReturnValue_t SubsystemBase::performOperation(uint8_t opCode) { ReturnValue_t SubsystemBase::performOperation(uint8_t opCode) {
childrenChangedMode = false; childrenChangedMode = false;
@ -187,7 +197,7 @@ ReturnValue_t SubsystemBase::checkTable(HybridIterator<ModeListEntry> tableIter)
using namespace std; using namespace std;
sif::warning << "SubsystemBase::checkTable: Could not find Object " << setfill('0') << hex sif::warning << "SubsystemBase::checkTable: Could not find Object " << setfill('0') << hex
<< "0x" << setw(8) << tableIter.value->getObject() << " in object " << setw(8) << "0x" << setw(8) << tableIter.value->getObject() << " in object " << setw(8)
<< "0x" << SystemObject::getObjectId() << dec << std::endl; << setw(0) << "0x" << setw(8) << SystemObject::getObjectId() << dec << std::endl;
#endif #endif
return TABLE_CONTAINS_INVALID_OBJECT_ID; return TABLE_CONTAINS_INVALID_OBJECT_ID;
} }

View File

@ -62,13 +62,13 @@ class SubsystemBase : public SystemObject,
*/ */
ReturnValue_t registerChild(const ModeTreeChildIF &child) override; ReturnValue_t registerChild(const ModeTreeChildIF &child) override;
virtual ReturnValue_t initialize() override; ReturnValue_t initialize() override;
virtual ReturnValue_t performOperation(uint8_t opCode) override; ReturnValue_t performOperation(uint8_t opCode) override;
virtual ReturnValue_t setHealth(HealthState health) override; ReturnValue_t setHealth(HealthState health) override;
virtual HasHealthIF::HealthState getHealth() override; HasHealthIF::HealthState getHealth() override;
protected: protected:
struct ChildInfo { struct ChildInfo {