This commit is contained in:
parent
8d4b980c32
commit
104a8cab33
@ -99,9 +99,13 @@ ReturnValue_t SyrlinksHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) {
|
||||
}
|
||||
|
||||
ReturnValue_t SyrlinksHandler::buildTransitionDeviceCommand(DeviceCommandId_t* id) {
|
||||
if(transState == TransitionState::CMD_PENDING or transState == TransitionState::DONE) {
|
||||
return NOTHING_TO_SEND;
|
||||
}
|
||||
switch (internalState) {
|
||||
case InternalState::ENABLE_TEMPERATURE_PROTECTION: {
|
||||
*id = syrlinks::WRITE_LCL_CONFIG;
|
||||
transState = TransitionState::CMD_PENDING;
|
||||
return buildCommandFromCommand(*id, nullptr, 0);
|
||||
}
|
||||
case InternalState::TX_TRANSITION: {
|
||||
@ -127,9 +131,11 @@ ReturnValue_t SyrlinksHandler::buildTransitionDeviceCommand(DeviceCommandId_t* i
|
||||
return buildCommandFromCommand(*id, nullptr, 0);
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
return NOTHING_TO_SEND;
|
||||
}
|
||||
}
|
||||
transState = TransitionState::CMD_PENDING;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
@ -629,8 +635,6 @@ void SyrlinksHandler::parseAgcHighByte(const uint8_t* packet) {
|
||||
agcValueHighByte = convertHexStringToUint8(reinterpret_cast<const char*>(packet + offset));
|
||||
}
|
||||
|
||||
void SyrlinksHandler::setNormalDatapoolEntriesInvalid() {}
|
||||
|
||||
uint32_t SyrlinksHandler::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) { return 2500; }
|
||||
|
||||
ReturnValue_t SyrlinksHandler::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||
@ -663,7 +667,7 @@ ReturnValue_t SyrlinksHandler::initializeLocalDataPool(localpool::DataPool& loca
|
||||
return returnvalue::OK;
|
||||
}
|
||||
|
||||
void SyrlinksHandler::setModeNormal() { setMode(MODE_NORMAL); }
|
||||
void SyrlinksHandler::setModeNormal() { setMode(_MODE_TO_NORMAL); }
|
||||
|
||||
float SyrlinksHandler::calcTempVal(uint16_t raw) { return 0.126984 * raw - 67.87; }
|
||||
|
||||
@ -730,7 +734,7 @@ ReturnValue_t SyrlinksHandler::handleAckReply(const uint8_t* packet) {
|
||||
|
||||
ReturnValue_t SyrlinksHandler::isModeCombinationValid(Mode_t mode, Submode_t submode) {
|
||||
if (mode == HasModesIF::MODE_ON or mode == DeviceHandlerIF::MODE_NORMAL) {
|
||||
if (submode >= com::Submode::NUM_SUBMODES) {
|
||||
if (submode >= com::Submode::NUM_SUBMODES or submode < com::Submode::RX_ONLY) {
|
||||
return HasModesIF::INVALID_SUBMODE;
|
||||
}
|
||||
return returnvalue::OK;
|
||||
@ -758,40 +762,44 @@ void SyrlinksHandler::setDebugMode(bool enable) { this->debugMode = enable; }
|
||||
void SyrlinksHandler::doTransition(Mode_t modeFrom, Submode_t subModeFrom) {
|
||||
Mode_t tgtMode = getBaseMode(getMode());
|
||||
if (transState == TransitionState::DONE) {
|
||||
setMode(tgtMode);
|
||||
internalState = InternalState::IDLE;
|
||||
transState = TransitionState::IDLE;
|
||||
DeviceHandlerBase::doTransition(modeFrom, subModeFrom);
|
||||
return;
|
||||
}
|
||||
auto txStandbyHandler = [&]() {
|
||||
txDataset.setReportingEnabled(false);
|
||||
poolManager.changeCollectionInterval(temperatureSet.getSid(), 60.0);
|
||||
transState = TransitionState::SET_TX_STANDBY;
|
||||
internalState = InternalState::TX_TRANSITION;
|
||||
};
|
||||
auto txOnHandler = [&]() {
|
||||
auto txOnHandler = [&](TransitionState tgtTransitionState) {
|
||||
txDataset.setReportingEnabled(true);
|
||||
poolManager.changeCollectionInterval(txDataset.getSid(), 10.0);
|
||||
poolManager.changeCollectionInterval(temperatureSet.getSid(), 5.0);
|
||||
internalState = InternalState::TX_TRANSITION;
|
||||
transState = tgtTransitionState;
|
||||
};
|
||||
if (tgtMode == HasModesIF::MODE_ON or tgtMode == DeviceHandlerIF::MODE_NORMAL) {
|
||||
if(getSubmode() == subModeFrom) {
|
||||
DeviceHandlerBase::doTransition(modeFrom, subModeFrom);
|
||||
}
|
||||
switch (getSubmode()) {
|
||||
case (com::Submode::RX_AND_TX_DEFAULT_DATARATE): {
|
||||
auto currentDatarate = com::getCurrentDatarate();
|
||||
txOnHandler();
|
||||
if (currentDatarate == com::Datarate::LOW_RATE_MODULATION_BPSK) {
|
||||
transState = TransitionState::SELECT_MODULATION_BPSK;
|
||||
txOnHandler(TransitionState::SELECT_MODULATION_BPSK);
|
||||
} else if (currentDatarate == com::Datarate::HIGH_RATE_MODULATION_0QPSK) {
|
||||
transState = TransitionState::SELECT_MODULATION_0QPSK;
|
||||
txOnHandler(TransitionState::SELECT_MODULATION_0QPSK);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case (com::Submode::RX_AND_TX_LOW_DATARATE): {
|
||||
txOnHandler();
|
||||
transState = TransitionState::SELECT_MODULATION_BPSK;
|
||||
txOnHandler(TransitionState::SELECT_MODULATION_BPSK);
|
||||
break;
|
||||
}
|
||||
case (com::Submode::RX_AND_TX_HIGH_DATARATE): {
|
||||
txOnHandler();
|
||||
transState = TransitionState::SELECT_MODULATION_0QPSK;
|
||||
txOnHandler(TransitionState::SELECT_MODULATION_0QPSK);
|
||||
break;
|
||||
}
|
||||
case (com::Submode::RX_ONLY): {
|
||||
@ -799,16 +807,16 @@ void SyrlinksHandler::doTransition(Mode_t modeFrom, Submode_t subModeFrom) {
|
||||
return;
|
||||
}
|
||||
case (com::Submode::RX_AND_TX_CW): {
|
||||
txOnHandler();
|
||||
transState = TransitionState::SET_TX_CW;
|
||||
txOnHandler(TransitionState::SET_TX_CW);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
sif::error << "SyrlinksHandler: Unexpected submode " << getSubmode() << std::endl;
|
||||
DeviceHandlerBase::doTransition(modeFrom, subModeFrom);
|
||||
}
|
||||
}
|
||||
} else if (tgtMode == HasModesIF::MODE_OFF) {
|
||||
txStandbyHandler();
|
||||
transState = TransitionState::SET_TX_STANDBY;
|
||||
}
|
||||
DeviceHandlerBase::doTransition(modeFrom, subModeFrom);
|
||||
}
|
||||
|
@ -46,7 +46,6 @@ class SyrlinksHandler : public DeviceHandlerBase {
|
||||
size_t* foundLen) override;
|
||||
ReturnValue_t interpretDeviceReply(DeviceCommandId_t id, const uint8_t* packet) override;
|
||||
ReturnValue_t getSwitches(const uint8_t** switches, uint8_t* numberOfSwitches) override;
|
||||
void setNormalDatapoolEntriesInvalid() override;
|
||||
uint32_t getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) override;
|
||||
ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||
LocalDataPoolManager& poolManager) override;
|
||||
@ -129,6 +128,7 @@ class SyrlinksHandler : public DeviceHandlerBase {
|
||||
SET_TX_MODULATION,
|
||||
SET_TX_CW,
|
||||
SET_TX_STANDBY,
|
||||
CMD_PENDING,
|
||||
DONE
|
||||
} transState = TransitionState::IDLE;
|
||||
|
||||
|
2
tmtc
2
tmtc
@ -1 +1 @@
|
||||
Subproject commit 6975fae511ca7b2fdef70858f8715908f300f434
|
||||
Subproject commit 50668ca7a74edd4219456e393cd10f7858591130
|
Loading…
x
Reference in New Issue
Block a user