This commit is contained in:
@ -7,14 +7,15 @@
|
||||
#include "OBSWConfig.h"
|
||||
|
||||
RwHandler::RwHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie,
|
||||
GpioIF* gpioComIF, gpioId_t enableGpio)
|
||||
GpioIF* gpioComIF, gpioId_t enableGpio, uint8_t rwIdx)
|
||||
: DeviceHandlerBase(objectId, comIF, comCookie),
|
||||
gpioComIF(gpioComIF),
|
||||
enableGpio(enableGpio),
|
||||
statusSet(this),
|
||||
lastResetStatusSet(this),
|
||||
tmDataset(this),
|
||||
rwSpeedActuationSet(*this) {
|
||||
rwSpeedActuationSet(*this),
|
||||
rwIdx(rwIdx) {
|
||||
if (comCookie == nullptr) {
|
||||
sif::error << "RwHandler: Invalid com cookie" << std::endl;
|
||||
}
|
||||
@ -43,6 +44,10 @@ void RwHandler::doShutDown() {
|
||||
|
||||
ReturnValue_t RwHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) {
|
||||
switch (internalState) {
|
||||
case InternalState::SET_SPEED:
|
||||
*id = RwDefinitions::SET_SPEED;
|
||||
internalState = InternalState::GET_RESET_STATUS;
|
||||
break;
|
||||
case InternalState::GET_RESET_STATUS:
|
||||
*id = RwDefinitions::GET_LAST_RESET_STATUS;
|
||||
internalState = InternalState::READ_TEMPERATURE;
|
||||
@ -53,10 +58,6 @@ ReturnValue_t RwHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) {
|
||||
break;
|
||||
case InternalState::GET_RW_SATUS:
|
||||
*id = RwDefinitions::GET_RW_STATUS;
|
||||
internalState = InternalState::SET_SPEED;
|
||||
break;
|
||||
case InternalState::SET_SPEED:
|
||||
*id = RwDefinitions::SET_SPEED;
|
||||
internalState = InternalState::CLEAR_RESET_STATUS;
|
||||
break;
|
||||
case InternalState::CLEAR_RESET_STATUS:
|
||||
@ -107,29 +108,26 @@ ReturnValue_t RwHandler::buildCommandFromCommand(DeviceCommandId_t deviceCommand
|
||||
<< " invalid length" << std::endl;
|
||||
return SET_SPEED_COMMAND_INVALID_LENGTH;
|
||||
}
|
||||
// Commands override anything which was set in the software
|
||||
if (commandData != nullptr) {
|
||||
rwSpeedActuationSet.setValidityBufferGeneration(false);
|
||||
result = rwSpeedActuationSet.deSerialize(&commandData, &commandDataLen,
|
||||
SerializeIF::Endianness::NETWORK);
|
||||
rwSpeedActuationSet.setValidityBufferGeneration(true);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
result = rwSpeedActuationSet.commit();
|
||||
if (result != returnvalue::OK) {
|
||||
sif::error << "RwHandler::buildCommandFromCommand: commit failed" << std::endl;
|
||||
}
|
||||
} else {
|
||||
// Read set rw speed value from local pool
|
||||
|
||||
{
|
||||
PoolReadGuard pg(&rwSpeedActuationSet);
|
||||
// Commands override anything which was set in the software
|
||||
if (commandData != nullptr) {
|
||||
rwSpeedActuationSet.setValidityBufferGeneration(false);
|
||||
result = rwSpeedActuationSet.deSerialize(&commandData, &commandDataLen,
|
||||
SerializeIF::Endianness::NETWORK);
|
||||
rwSpeedActuationSet.setValidityBufferGeneration(true);
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ACTUATION_WIRETAPPING) {
|
||||
int32_t speed;
|
||||
uint16_t rampTime;
|
||||
int32_t speed = 0;
|
||||
uint16_t rampTime = 0;
|
||||
rwSpeedActuationSet.getRwSpeed(speed, rampTime);
|
||||
sif::debug << "Actuating RW with speed = " << speed << " and rampTime = " << rampTime
|
||||
<< std::endl;
|
||||
sif::debug << "Actuating RW " << static_cast<int>(rwIdx) << " with speed = " << speed
|
||||
<< " and rampTime = " << rampTime << std::endl;
|
||||
}
|
||||
result = checkSpeedAndRampTime();
|
||||
if (result != returnvalue::OK) {
|
||||
|
Reference in New Issue
Block a user