Update FSFW #51
@ -12,16 +12,13 @@
|
|||||||
class Gpio {
|
class Gpio {
|
||||||
public:
|
public:
|
||||||
Gpio(gpioId_t gpioId, GpioIF* gpioIF) : gpioId(gpioId), gpioIF(gpioIF) {
|
Gpio(gpioId_t gpioId, GpioIF* gpioIF) : gpioId(gpioId), gpioIF(gpioIF) {
|
||||||
if (gpioIF == nullptr) {
|
if (gpioIF == nullptr) {
|
||||||
sif::error << "Gpio::Gpio: Invalid GpioIF" << std::endl;
|
sif::error << "Gpio::Gpio: Invalid GpioIF" << std::endl;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
ReturnValue_t pullHigh() {
|
|
||||||
return gpioIF->pullHigh(gpioId);
|
|
||||||
}
|
|
||||||
ReturnValue_t pullLow() {
|
|
||||||
return gpioIF->pullLow(gpioId);
|
|
||||||
}
|
}
|
||||||
|
ReturnValue_t pullHigh() { return gpioIF->pullHigh(gpioId); }
|
||||||
|
ReturnValue_t pullLow() { return gpioIF->pullLow(gpioId); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
gpioId_t gpioId = gpio::NO_GPIO;
|
gpioId_t gpioId = gpio::NO_GPIO;
|
||||||
GpioIF* gpioIF = nullptr;
|
GpioIF* gpioIF = nullptr;
|
||||||
|
@ -18,8 +18,7 @@ class CommandActionHelper {
|
|||||||
virtual ~CommandActionHelper();
|
virtual ~CommandActionHelper();
|
||||||
ReturnValue_t commandAction(object_id_t commandTo, ActionId_t actionId,
|
ReturnValue_t commandAction(object_id_t commandTo, ActionId_t actionId,
|
||||||
const uint8_t* data = nullptr, uint32_t size = 0);
|
const uint8_t* data = nullptr, uint32_t size = 0);
|
||||||
ReturnValue_t commandAction(object_id_t commandTo, ActionId_t actionId,
|
ReturnValue_t commandAction(object_id_t commandTo, ActionId_t actionId, SerializeIF* data);
|
||||||
SerializeIF* data);
|
|
||||||
ReturnValue_t initialize();
|
ReturnValue_t initialize();
|
||||||
ReturnValue_t handleReply(CommandMessage* reply);
|
ReturnValue_t handleReply(CommandMessage* reply);
|
||||||
uint8_t getCommandCount() const;
|
uint8_t getCommandCount() const;
|
||||||
|
@ -125,13 +125,14 @@ ReturnValue_t DeviceHandlerBase::initialize() {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (this->fdirInstance == nullptr) {
|
if (this->fdirInstance == nullptr) {
|
||||||
this->fdirInstance = new DeviceHandlerFailureIsolation(this->getObjectId(), defaultFdirParentId);
|
this->fdirInstance =
|
||||||
|
new DeviceHandlerFailureIsolation(this->getObjectId(), defaultFdirParentId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this->parent != objects::NO_OBJECT) {
|
if (this->parent != objects::NO_OBJECT) {
|
||||||
HasModesIF* modeIF = ObjectManager::instance()->get<HasModesIF>(this->parent);
|
HasModesIF* modeIF = ObjectManager::instance()->get<HasModesIF>(this->parent);
|
||||||
HasHealthIF* healthIF = ObjectManager::instance()->get<HasHealthIF>(this->parent);
|
HasHealthIF* healthIF = ObjectManager::instance()->get<HasHealthIF>(this->parent);
|
||||||
if(modeIF != nullptr and healthIF != nullptr) {
|
if (modeIF != nullptr and healthIF != nullptr) {
|
||||||
setParentQueue(modeIF->getCommandQueue());
|
setParentQueue(modeIF->getCommandQueue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -361,14 +362,12 @@ void DeviceHandlerBase::doStateMachine() {
|
|||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case _MODE_WAIT_OFF: {
|
case _MODE_WAIT_OFF: {
|
||||||
uint32_t currentUptime;
|
|
||||||
Clock::getUptime(¤tUptime);
|
|
||||||
|
|
||||||
if (powerSwitcher == nullptr) {
|
if (powerSwitcher == nullptr) {
|
||||||
setMode(MODE_OFF);
|
setMode(MODE_OFF);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
uint32_t currentUptime;
|
||||||
|
Clock::getUptime(¤tUptime);
|
||||||
if (currentUptime - timeoutStart >= powerSwitcher->getSwitchDelayMs()) {
|
if (currentUptime - timeoutStart >= powerSwitcher->getSwitchDelayMs()) {
|
||||||
triggerEvent(MODE_TRANSITION_FAILED, PowerSwitchIF::SWITCH_TIMEOUT, 0);
|
triggerEvent(MODE_TRANSITION_FAILED, PowerSwitchIF::SWITCH_TIMEOUT, 0);
|
||||||
setMode(MODE_ERROR_ON);
|
setMode(MODE_ERROR_ON);
|
||||||
@ -467,16 +466,15 @@ size_t DeviceHandlerBase::getNextReplyLength(DeviceCommandId_t commandId) {
|
|||||||
DeviceCommandId_t replyId = NO_COMMAND_ID;
|
DeviceCommandId_t replyId = NO_COMMAND_ID;
|
||||||
DeviceCommandMap::iterator command = cookieInfo.pendingCommand;
|
DeviceCommandMap::iterator command = cookieInfo.pendingCommand;
|
||||||
if (command->second.useAlternativeReplyId) {
|
if (command->second.useAlternativeReplyId) {
|
||||||
replyId = command->second.alternativeReplyId;
|
replyId = command->second.alternativeReplyId;
|
||||||
}
|
} else {
|
||||||
else {
|
replyId = commandId;
|
||||||
replyId = commandId;
|
|
||||||
}
|
}
|
||||||
DeviceReplyIter iter = deviceReplyMap.find(replyId);
|
DeviceReplyIter iter = deviceReplyMap.find(replyId);
|
||||||
if (iter != deviceReplyMap.end()) {
|
if (iter != deviceReplyMap.end()) {
|
||||||
if (iter->second.delayCycles != 0) {
|
if (iter->second.delayCycles != 0) {
|
||||||
return iter->second.replyLen;
|
return iter->second.replyLen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1522,4 +1520,6 @@ void DeviceHandlerBase::setCustomFdir(FailureIsolationBase* fdir) { this->fdirIn
|
|||||||
|
|
||||||
void DeviceHandlerBase::setParent(object_id_t parent) { this->parent = parent; }
|
void DeviceHandlerBase::setParent(object_id_t parent) { this->parent = parent; }
|
||||||
|
|
||||||
void DeviceHandlerBase::setPowerSwitcher(PowerSwitchIF* switcher) { this->powerSwitcher = switcher; }
|
void DeviceHandlerBase::setPowerSwitcher(PowerSwitchIF* switcher) {
|
||||||
|
this->powerSwitcher = switcher;
|
||||||
|
}
|
||||||
|
@ -103,9 +103,9 @@ class DeviceHandlerBase : public DeviceHandlerIF,
|
|||||||
DeviceHandlerBase(object_id_t setObjectId, object_id_t deviceCommunication, CookieIF *comCookie,
|
DeviceHandlerBase(object_id_t setObjectId, object_id_t deviceCommunication, CookieIF *comCookie,
|
||||||
FailureIsolationBase *fdirInstance = nullptr, size_t cmdQueueSize = 20);
|
FailureIsolationBase *fdirInstance = nullptr, size_t cmdQueueSize = 20);
|
||||||
|
|
||||||
void setCustomFdir(FailureIsolationBase* fdir);
|
void setCustomFdir(FailureIsolationBase *fdir);
|
||||||
void setParent(object_id_t parent);
|
void setParent(object_id_t parent);
|
||||||
void setPowerSwitcher(PowerSwitchIF* switcher);
|
void setPowerSwitcher(PowerSwitchIF *switcher);
|
||||||
void setHkDestination(object_id_t hkDestination);
|
void setHkDestination(object_id_t hkDestination);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#ifndef FSFW_POWER_POWERSWITCHIF_H_
|
#ifndef FSFW_POWER_POWERSWITCHIF_H_
|
||||||
#define FSFW_POWER_POWERSWITCHIF_H_
|
#define FSFW_POWER_POWERSWITCHIF_H_
|
||||||
|
|
||||||
#include "definitions.h"
|
|
||||||
#include "../events/Event.h"
|
#include "../events/Event.h"
|
||||||
#include "../returnvalues/HasReturnvaluesIF.h"
|
#include "../returnvalues/HasReturnvaluesIF.h"
|
||||||
#include "definitions.h"
|
#include "definitions.h"
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
#include "definitions.h"
|
|
||||||
#include "fsfw/power/PowerSwitcher.h"
|
#include "fsfw/power/PowerSwitcher.h"
|
||||||
|
|
||||||
#include "definitions.h"
|
#include "definitions.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user