|
|
|
@ -598,7 +598,7 @@ void HostSetup::saveConfig()
|
|
|
|
|
|
|
|
|
|
|
|
/* Helper to calculate the Rx/Tx frequencies. */
|
|
|
|
/* Helper to calculate the Rx/Tx frequencies. */
|
|
|
|
|
|
|
|
|
|
|
|
bool HostSetup::calculateRxTxFreq(bool consoleDisplay)
|
|
|
|
bool HostSetup::calculateRxTxFreq(bool consoleDisplay, uint32_t txFrequency)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
IdenTable entry = m_idenTable->find(m_channelId);
|
|
|
|
IdenTable entry = m_idenTable->find(m_channelId);
|
|
|
|
if (entry.baseFrequency() == 0U) {
|
|
|
|
if (entry.baseFrequency() == 0U) {
|
|
|
|
@ -610,37 +610,57 @@ bool HostSetup::calculateRxTxFreq(bool consoleDisplay)
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
yaml::Node systemConf = m_conf["system"];
|
|
|
|
if (txFrequency > 0U) {
|
|
|
|
yaml::Node rfssConfig = systemConf["config"];
|
|
|
|
uint32_t prevTxFrequency = m_txFrequency;
|
|
|
|
m_channelNo = (uint32_t)::strtoul(rfssConfig["channelNo"].as<std::string>("1").c_str(), NULL, 16);
|
|
|
|
m_txFrequency = txFrequency;
|
|
|
|
if (m_channelNo == 0U) { // clamp to 1
|
|
|
|
uint32_t prevRxFrequency = m_rxFrequency;
|
|
|
|
m_channelNo = 1U;
|
|
|
|
m_rxFrequency = m_txFrequency + (uint32_t)(entry.txOffsetMhz() * 1000000);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (m_channelNo > 4095U) { // clamp to 4095
|
|
|
|
|
|
|
|
m_channelNo = 4095U;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (m_startupDuplex) {
|
|
|
|
float spaceHz = entry.chSpaceKhz() * 1000.0;
|
|
|
|
if (entry.txOffsetMhz() == 0U) {
|
|
|
|
|
|
|
|
if (consoleDisplay) {
|
|
|
|
|
|
|
|
g_logDisplayLevel = 1U;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
::LogError(LOG_HOST, "Channel Id %u has an invalid Tx offset.", m_channelId);
|
|
|
|
uint32_t rootFreq = m_txFrequency - entry.baseFrequency();
|
|
|
|
return false;
|
|
|
|
uint8_t prevChannelNo = m_channelNo;
|
|
|
|
}
|
|
|
|
m_channelNo = (uint32_t)(rootFreq / spaceHz);
|
|
|
|
|
|
|
|
|
|
|
|
uint32_t calcSpace = (uint32_t)(entry.chSpaceKhz() / 0.125);
|
|
|
|
|
|
|
|
float calcTxOffset = entry.txOffsetMhz() * 1000000.0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_rxFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)) + (int32_t)calcTxOffset);
|
|
|
|
if (m_channelNo < 0 || m_channelNo > 4096) {
|
|
|
|
m_txFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)));
|
|
|
|
m_channelNo = prevChannelNo;
|
|
|
|
|
|
|
|
m_txFrequency = prevTxFrequency;
|
|
|
|
|
|
|
|
m_rxFrequency = prevRxFrequency;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
uint32_t calcSpace = (uint32_t)(entry.chSpaceKhz() / 0.125);
|
|
|
|
yaml::Node systemConf = m_conf["system"];
|
|
|
|
|
|
|
|
yaml::Node rfssConfig = systemConf["config"];
|
|
|
|
|
|
|
|
m_channelNo = (uint32_t)::strtoul(rfssConfig["channelNo"].as<std::string>("1").c_str(), NULL, 16);
|
|
|
|
|
|
|
|
if (m_channelNo == 0U) { // clamp to 1
|
|
|
|
|
|
|
|
m_channelNo = 1U;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (m_channelNo > 4095U) { // clamp to 4095
|
|
|
|
|
|
|
|
m_channelNo = 4095U;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (m_startupDuplex) {
|
|
|
|
|
|
|
|
if (entry.txOffsetMhz() == 0U) {
|
|
|
|
|
|
|
|
if (consoleDisplay) {
|
|
|
|
|
|
|
|
g_logDisplayLevel = 1U;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
::LogError(LOG_HOST, "Channel Id %u has an invalid Tx offset.", m_channelId);
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
m_rxFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)));
|
|
|
|
uint32_t calcSpace = (uint32_t)(entry.chSpaceKhz() / 0.125);
|
|
|
|
m_txFrequency = m_rxFrequency;
|
|
|
|
float calcTxOffset = entry.txOffsetMhz() * 1000000.0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_rxFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)) + (int32_t)calcTxOffset);
|
|
|
|
|
|
|
|
m_txFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
uint32_t calcSpace = (uint32_t)(entry.chSpaceKhz() / 0.125);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_rxFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)));
|
|
|
|
|
|
|
|
m_txFrequency = m_rxFrequency;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (m_isHotspot) {
|
|
|
|
if (m_isHotspot) {
|
|
|
|
|