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