Fixed issue with POCSAG under dualband board

pull/107/head
Abad-Vera 6 years ago
parent 8967348bcc
commit 3c63f30a08

@ -216,6 +216,10 @@ void CIO::ifConf(MMDVM_STATE modemState, bool reset)
m_frequency_rx = m_pocsag_freq_tx; m_frequency_rx = m_pocsag_freq_tx;
} }
#if defined (ZUMSPOT_ADF7021)
io.checkBand(m_frequency_rx, m_frequency_tx);
#endif
// Toggle CE pin for ADF7021 reset // Toggle CE pin for ADF7021 reset
if(reset) { if(reset) {
CE_pin(LOW); CE_pin(LOW);

@ -307,6 +307,45 @@ bool CIO::hasRXOverflow()
return m_rxBuffer.hasOverflowed(); return m_rxBuffer.hasOverflowed();
} }
void CIO::checkBand(uint32_t frequency_rx, uint32_t frequency_tx) {
if (!(io.hasSingleADF7021())) {
// There are two ADF7021s on the board
if (io.isDualBand()) {
// Dual band
if ((frequency_tx <= VHF2_MAX) && (frequency_rx <= VHF2_MAX)) {
// Turn on VHF side
io.setBandVHF(true);
} else if ((frequency_tx >= UHF1_MIN) && (frequency_rx >= UHF1_MIN)) {
// Turn on UHF side
io.setBandVHF(false);
}
}
}
}
uint8_t CIO::checkZUMspot(uint32_t frequency_rx, uint32_t frequency_tx) {
if (!(io.hasSingleADF7021())) {
// There are two ADF7021s on the board
if (io.isDualBand()) {
// Dual band
if ((frequency_tx <= VHF2_MAX) && (frequency_rx <= VHF2_MAX)) {
// Turn on VHF side
io.setBandVHF(true);
} else if ((frequency_tx >= UHF1_MIN) && (frequency_rx >= UHF1_MIN)) {
// Turn on UHF side
io.setBandVHF(false);
}
} else if (!io.isDualBand()) {
// Duplex board
if ((frequency_tx < UHF1_MIN) || (frequency_rx < UHF1_MIN)) {
// Reject VHF frequencies
return 4U;
}
}
}
return 0U;
}
uint8_t CIO::setFreq(uint32_t frequency_rx, uint32_t frequency_tx, uint8_t rf_power, uint32_t pocsag_freq_tx) uint8_t CIO::setFreq(uint32_t frequency_rx, uint32_t frequency_tx, uint8_t rf_power, uint32_t pocsag_freq_tx)
{ {
// Configure power level // Configure power level
@ -340,26 +379,9 @@ uint8_t CIO::setFreq(uint32_t frequency_rx, uint32_t frequency_tx, uint8_t rf_po
// Check if we have a single, dualband or duplex board // Check if we have a single, dualband or duplex board
#if defined (ZUMSPOT_ADF7021) #if defined (ZUMSPOT_ADF7021)
if (!(io.hasSingleADF7021())) { if (checkZUMspot(frequency_rx, frequency_tx) > 0) {
// There are two ADF7021s on the board
if (io.isDualBand()) {
// Dual band
if ((frequency_tx <= VHF2_MAX) && (frequency_rx <= VHF2_MAX)) {
// Turn on VHF side
io.setBandVHF(true);
} else if ((frequency_tx >= UHF1_MIN) && (frequency_rx >= UHF1_MIN)) {
// Turn on UHF side
io.setBandVHF(false);
}
} else if (!io.isDualBand()) {
// Duplex board
if ((frequency_tx < UHF1_MIN) || (frequency_rx < UHF1_MIN)) {
// Reject VHF frequencies
return 4U; return 4U;
} }
}
}
#endif #endif
// Configure frequency // Configure frequency

@ -115,6 +115,8 @@ public:
void process(void); void process(void);
bool hasTXOverflow(void); bool hasTXOverflow(void);
bool hasRXOverflow(void); bool hasRXOverflow(void);
void checkBand(uint32_t frequency_rx, uint32_t frequency_tx);
uint8_t checkZUMspot(uint32_t frequency_rx, uint32_t frequency_tx);
uint8_t setFreq(uint32_t frequency_rx, uint32_t frequency_tx, uint8_t rf_power, uint32_t pocsag_freq_tx); uint8_t setFreq(uint32_t frequency_rx, uint32_t frequency_tx, uint8_t rf_power, uint32_t pocsag_freq_tx);
void setPower(uint8_t power); void setPower(uint8_t power);
void setMode(MMDVM_STATE modemState); void setMode(MMDVM_STATE modemState);

Loading…
Cancel
Save

Powered by TurnKey Linux.