Allow for adjustable CW Id levels.

This commit is contained in:
Jonathan Naylor 2016-10-10 17:35:33 +01:00
parent 1e0634c0b1
commit 3ef9e40137
6 changed files with 17 additions and 7 deletions

View File

@ -104,9 +104,9 @@ void CCWIdTX::process()
while (space > CYCLE_LENGTH) { while (space > CYCLE_LENGTH) {
bool b = READ_BIT1(m_poBuffer, m_poPtr); bool b = READ_BIT1(m_poBuffer, m_poPtr);
if (b) if (b)
io.write(STATE_DSTAR, TONE, CYCLE_LENGTH); io.write(STATE_CWID, TONE, CYCLE_LENGTH);
else else
io.write(STATE_DSTAR, SILENCE, CYCLE_LENGTH); io.write(STATE_CWID, SILENCE, CYCLE_LENGTH);
space -= CYCLE_LENGTH; space -= CYCLE_LENGTH;

View File

@ -52,7 +52,7 @@
// #define SEND_RSSI_DATA // #define SEND_RSSI_DATA
// Use the modem as a serial repeater for Nextion displays // Use the modem as a serial repeater for Nextion displays
// #define SERIAL_REPEATER #define SERIAL_REPEATER
#endif #endif

View File

@ -40,6 +40,9 @@ enum MMDVM_STATE {
STATE_DMR = 2, STATE_DMR = 2,
STATE_YSF = 3, STATE_YSF = 3,
STATE_P25 = 4, STATE_P25 = 4,
// Dummy states start at 90
STATE_CWID = 97,
STATE_DMRCAL = 98, STATE_DMRCAL = 98,
STATE_DSTARCAL = 99 STATE_DSTARCAL = 99
}; };

9
IO.cpp
View File

@ -125,6 +125,7 @@ m_C4FSKState(),
m_GMSKState(), m_GMSKState(),
m_pttInvert(false), m_pttInvert(false),
m_rxLevel(128 * 128), m_rxLevel(128 * 128),
m_cwIdTXLevel(128 * 128),
m_dstarTXLevel(128 * 128), m_dstarTXLevel(128 * 128),
m_dmrTXLevel(128 * 128), m_dmrTXLevel(128 * 128),
m_ysfTXLevel(128 * 128), m_ysfTXLevel(128 * 128),
@ -434,6 +435,9 @@ void CIO::write(MMDVM_STATE mode, q15_t* samples, uint16_t length, const uint8_t
q15_t txLevel = 0; q15_t txLevel = 0;
switch (mode) { switch (mode) {
case STATE_DSTAR:
txLevel = m_dstarTXLevel;
break;
case STATE_DMR: case STATE_DMR:
txLevel = m_dmrTXLevel; txLevel = m_dmrTXLevel;
break; break;
@ -444,7 +448,7 @@ void CIO::write(MMDVM_STATE mode, q15_t* samples, uint16_t length, const uint8_t
txLevel = m_p25TXLevel; txLevel = m_p25TXLevel;
break; break;
default: default:
txLevel = m_dstarTXLevel; txLevel = m_cwIdTXLevel;
break; break;
} }
@ -546,11 +550,12 @@ switch (m_modemState) {
#endif #endif
} }
void CIO::setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rxLevel, uint8_t dstarTXLevel, uint8_t dmrTXLevel, uint8_t ysfTXLevel, uint8_t p25TXLevel) 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)
{ {
m_pttInvert = pttInvert; m_pttInvert = pttInvert;
m_rxLevel = q15_t(rxLevel * 128); m_rxLevel = q15_t(rxLevel * 128);
m_cwIdTXLevel = q15_t(cwIdTXLevel * 128);
m_dstarTXLevel = q15_t(dstarTXLevel * 128); m_dstarTXLevel = q15_t(dstarTXLevel * 128);
m_dmrTXLevel = q15_t(dmrTXLevel * 128); m_dmrTXLevel = q15_t(dmrTXLevel * 128);
m_ysfTXLevel = q15_t(ysfTXLevel * 128); m_ysfTXLevel = q15_t(ysfTXLevel * 128);

3
IO.h
View File

@ -41,7 +41,7 @@ public:
void interrupt(); void interrupt();
void setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rxLevel, uint8_t dstarTXLevel, uint8_t dmrTXLevel, uint8_t ysfTXLevel, uint8_t p25TXLevel); 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);
void getOverflow(bool& adcOverflow, bool& dacOverflow); void getOverflow(bool& adcOverflow, bool& dacOverflow);
@ -81,6 +81,7 @@ private:
bool m_pttInvert; bool m_pttInvert;
q15_t m_rxLevel; q15_t m_rxLevel;
q15_t m_cwIdTXLevel;
q15_t m_dstarTXLevel; q15_t m_dstarTXLevel;
q15_t m_dmrTXLevel; q15_t m_dmrTXLevel;
q15_t m_ysfTXLevel; q15_t m_ysfTXLevel;

View File

@ -257,6 +257,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
m_sampleInsert = false; m_sampleInsert = false;
} }
uint8_t cwIdTXLevel = data[5U];
uint8_t dstarTXLevel = data[9U]; uint8_t dstarTXLevel = data[9U];
uint8_t dmrTXLevel = data[10U]; uint8_t dmrTXLevel = data[10U];
uint8_t ysfTXLevel = data[11U]; uint8_t ysfTXLevel = data[11U];
@ -281,7 +282,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
dmrDMORX.setColorCode(colorCode); dmrDMORX.setColorCode(colorCode);
dmrIdleRX.setColorCode(colorCode); dmrIdleRX.setColorCode(colorCode);
io.setParameters(rxInvert, txInvert, pttInvert, rxLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel, p25TXLevel); io.setParameters(rxInvert, txInvert, pttInvert, rxLevel, cwIdTXLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel, p25TXLevel);
io.start(); io.start();