mirror of https://github.com/g4klx/MMDVM.git
Merge branch 'master' into boxcar
This commit is contained in:
commit
bf1de4f307
6
IO.cpp
6
IO.cpp
|
@ -48,6 +48,7 @@ m_dstarTXLevel(128 * 128),
|
||||||
m_dmrTXLevel(128 * 128),
|
m_dmrTXLevel(128 * 128),
|
||||||
m_ysfTXLevel(128 * 128),
|
m_ysfTXLevel(128 * 128),
|
||||||
m_p25TXLevel(128 * 128),
|
m_p25TXLevel(128 * 128),
|
||||||
|
m_rxDCOffset(DC_OFFSET),
|
||||||
m_txDCOffset(DC_OFFSET),
|
m_txDCOffset(DC_OFFSET),
|
||||||
m_ledCount(0U),
|
m_ledCount(0U),
|
||||||
m_ledValue(true),
|
m_ledValue(true),
|
||||||
|
@ -216,7 +217,7 @@ void CIO::process()
|
||||||
if (m_detect && (sample == 0U || sample == 4095U))
|
if (m_detect && (sample == 0U || sample == 4095U))
|
||||||
m_adcOverflow++;
|
m_adcOverflow++;
|
||||||
|
|
||||||
q15_t res1 = q15_t(sample) - DC_OFFSET;
|
q15_t res1 = q15_t(sample) - m_rxDCOffset;
|
||||||
q31_t res2 = res1 * m_rxLevel;
|
q31_t res2 = res1 * m_rxLevel;
|
||||||
samples[i] = q15_t(__SSAT((res2 >> 15), 16));
|
samples[i] = q15_t(__SSAT((res2 >> 15), 16));
|
||||||
}
|
}
|
||||||
|
@ -366,7 +367,7 @@ void CIO::setMode()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void CIO::setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rxLevel, uint8_t cwIdTXLevel, uint8_t dstarTXLevel, uint8_t dmrTXLevel, uint8_t ysfTXLevel, uint8_t p25TXLevel, int16_t txDCOffset)
|
void CIO::setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rxLevel, uint8_t cwIdTXLevel, uint8_t dstarTXLevel, uint8_t dmrTXLevel, uint8_t ysfTXLevel, uint8_t p25TXLevel, int16_t txDCOffset, int16_t rxDCOffset)
|
||||||
{
|
{
|
||||||
m_pttInvert = pttInvert;
|
m_pttInvert = pttInvert;
|
||||||
|
|
||||||
|
@ -377,6 +378,7 @@ void CIO::setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rx
|
||||||
m_ysfTXLevel = q15_t(ysfTXLevel * 128);
|
m_ysfTXLevel = q15_t(ysfTXLevel * 128);
|
||||||
m_p25TXLevel = q15_t(p25TXLevel * 128);
|
m_p25TXLevel = q15_t(p25TXLevel * 128);
|
||||||
|
|
||||||
|
m_rxDCOffset = DC_OFFSET + rxDCOffset;
|
||||||
m_txDCOffset = DC_OFFSET + txDCOffset;
|
m_txDCOffset = DC_OFFSET + txDCOffset;
|
||||||
|
|
||||||
if (rxInvert)
|
if (rxInvert)
|
||||||
|
|
3
IO.h
3
IO.h
|
@ -42,7 +42,7 @@ public:
|
||||||
|
|
||||||
void interrupt();
|
void interrupt();
|
||||||
|
|
||||||
void setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rxLevel, uint8_t cwIdTXLevel, uint8_t dstarTXLevel, uint8_t dmrTXLevel, uint8_t ysfTXLevel, uint8_t p25TXLevel, int16_t txDCOffset);
|
void setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rxLevel, uint8_t cwIdTXLevel, uint8_t dstarTXLevel, uint8_t dmrTXLevel, uint8_t ysfTXLevel, uint8_t p25TXLevel, int16_t txDCOffset, int16_t rxDCOffset);
|
||||||
|
|
||||||
void getOverflow(bool& adcOverflow, bool& dacOverflow);
|
void getOverflow(bool& adcOverflow, bool& dacOverflow);
|
||||||
|
|
||||||
|
@ -77,6 +77,7 @@ private:
|
||||||
q15_t m_ysfTXLevel;
|
q15_t m_ysfTXLevel;
|
||||||
q15_t m_p25TXLevel;
|
q15_t m_p25TXLevel;
|
||||||
|
|
||||||
|
uint16_t m_rxDCOffset;
|
||||||
uint16_t m_txDCOffset;
|
uint16_t m_txDCOffset;
|
||||||
|
|
||||||
uint32_t m_ledCount;
|
uint32_t m_ledCount;
|
||||||
|
|
|
@ -642,12 +642,13 @@ void CIO::startInt()
|
||||||
// TIM2 output frequency
|
// TIM2 output frequency
|
||||||
#if defined(EXTERNAL_OSC) && !defined(STM32F4_PI)
|
#if defined(EXTERNAL_OSC) && !defined(STM32F4_PI)
|
||||||
timerInitStructure.TIM_Prescaler = (uint16_t) ((EXTERNAL_OSC/(2*SAMP_FREQ)) - 1);
|
timerInitStructure.TIM_Prescaler = (uint16_t) ((EXTERNAL_OSC/(2*SAMP_FREQ)) - 1);
|
||||||
|
timerInitStructure.TIM_Period = 1;
|
||||||
#else
|
#else
|
||||||
timerInitStructure.TIM_Prescaler = (uint16_t) ((SystemCoreClock/(4*SAMP_FREQ)) - 1);
|
timerInitStructure.TIM_Prescaler = (uint16_t) ((SystemCoreClock/(6*SAMP_FREQ)) - 1);
|
||||||
|
timerInitStructure.TIM_Period = 2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
timerInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
timerInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
||||||
timerInitStructure.TIM_Period = 1;
|
|
||||||
timerInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
timerInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
||||||
timerInitStructure.TIM_RepetitionCounter = 0;
|
timerInitStructure.TIM_RepetitionCounter = 0;
|
||||||
TIM_TimeBaseInit(TIM2, &timerInitStructure);
|
TIM_TimeBaseInit(TIM2, &timerInitStructure);
|
||||||
|
|
|
@ -221,7 +221,7 @@ void CSerialPort::getVersion()
|
||||||
|
|
||||||
uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
|
uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
|
||||||
{
|
{
|
||||||
if (length < 14U)
|
if (length < 15U)
|
||||||
return 4U;
|
return 4U;
|
||||||
|
|
||||||
bool rxInvert = (data[0U] & 0x01U) == 0x01U;
|
bool rxInvert = (data[0U] & 0x01U) == 0x01U;
|
||||||
|
@ -269,6 +269,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
|
||||||
uint8_t p25TXLevel = data[12U];
|
uint8_t p25TXLevel = data[12U];
|
||||||
|
|
||||||
int16_t txDCOffset = int16_t(data[13U]) - 128;
|
int16_t txDCOffset = int16_t(data[13U]) - 128;
|
||||||
|
int16_t rxDCOffset = int16_t(data[14U]) - 128;
|
||||||
|
|
||||||
m_modemState = modemState;
|
m_modemState = modemState;
|
||||||
|
|
||||||
|
@ -291,7 +292,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
|
||||||
|
|
||||||
ysfTX.setLoDev(ysfLoDev);
|
ysfTX.setLoDev(ysfLoDev);
|
||||||
|
|
||||||
io.setParameters(rxInvert, txInvert, pttInvert, rxLevel, cwIdTXLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel, p25TXLevel, txDCOffset);
|
io.setParameters(rxInvert, txInvert, pttInvert, rxLevel, cwIdTXLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel, p25TXLevel, txDCOffset, rxDCOffset);
|
||||||
|
|
||||||
io.start();
|
io.start();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue