Merge pull request #134 from juribeparada/master

Adding 80 Hz square wave test signal support for MMDVMCal
dstar_correlator
Jonathan Naylor 2017-12-31 11:30:55 +00:00 committed by GitHub
commit 7b03336469
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 41 additions and 9 deletions

View File

@ -302,12 +302,33 @@ void CDMRTX::createData(uint8_t slotIndex)
void CDMRTX::createCal() void CDMRTX::createCal()
{ {
for (unsigned int i = 0U; i < DMR_FRAME_LENGTH_BYTES; i++) { // 1.2 kHz sine wave generation
m_poBuffer[i] = 0x5FU; // +3, +3, -3, -3 pattern for deviation cal. if (m_modemState == STATE_DMRCAL) {
m_markBuffer[i] = MARK_NONE; for (unsigned int i = 0U; i < DMR_FRAME_LENGTH_BYTES; i++) {
m_poBuffer[i] = 0x5FU; // +3, +3, -3, -3 pattern for deviation cal.
m_markBuffer[i] = MARK_NONE;
}
m_poLen = DMR_FRAME_LENGTH_BYTES;
}
// 80 Hz square wave generation
if (m_modemState == STATE_LFCAL) {
for (unsigned int i = 0U; i < 7U; i++) {
m_poBuffer[i] = 0x55U; // +3, +3, ... pattern
m_markBuffer[i] = MARK_NONE;
}
m_poBuffer[7U] = 0x5FU; // +3, +3, -3, -3 pattern
for (unsigned int i = 8U; i < 15U; i++) {
m_poBuffer[i] = 0xFFU; // -3, -3, ... pattern
m_markBuffer[i] = MARK_NONE;
}
m_poLen = 15U;
} }
m_poLen = DMR_FRAME_LENGTH_BYTES;
m_poPtr = 0U; m_poPtr = 0U;
} }

View File

@ -50,6 +50,7 @@ enum MMDVM_STATE {
STATE_P25 = 4, STATE_P25 = 4,
// Dummy states start at 90 // Dummy states start at 90
STATE_LFCAL = 95,
STATE_RSSICAL = 96, STATE_RSSICAL = 96,
STATE_CWID = 97, STATE_CWID = 97,
STATE_DMRCAL = 98, STATE_DMRCAL = 98,

View File

@ -93,7 +93,7 @@ void loop()
if (m_modemState == STATE_DSTARCAL) if (m_modemState == STATE_DSTARCAL)
calDStarTX.process(); calDStarTX.process();
if (m_modemState == STATE_DMRCAL) if (m_modemState == STATE_DMRCAL || m_modemState == STATE_LFCAL)
calDMR.process(); calDMR.process();
if (m_modemState == STATE_IDLE) if (m_modemState == STATE_IDLE)

View File

@ -90,7 +90,7 @@ void loop()
if (m_modemState == STATE_DSTARCAL) if (m_modemState == STATE_DSTARCAL)
calDStarTX.process(); calDStarTX.process();
if (m_modemState == STATE_DMRCAL) if (m_modemState == STATE_DMRCAL || m_modemState == STATE_LFCAL)
calDMR.process(); calDMR.process();
if (m_modemState == STATE_IDLE) if (m_modemState == STATE_IDLE)

View File

@ -243,7 +243,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
MMDVM_STATE modemState = MMDVM_STATE(data[3U]); MMDVM_STATE modemState = MMDVM_STATE(data[3U]);
if (modemState != STATE_IDLE && modemState != STATE_DSTAR && modemState != STATE_DMR && modemState != STATE_YSF && modemState != STATE_P25 && modemState != STATE_DSTARCAL && modemState != STATE_DMRCAL && modemState != STATE_RSSICAL) if (modemState != STATE_IDLE && modemState != STATE_DSTAR && modemState != STATE_DMR && modemState != STATE_YSF && modemState != STATE_P25 && modemState != STATE_DSTARCAL && modemState != STATE_DMRCAL && modemState != STATE_RSSICAL && modemState != STATE_LFCAL)
return 4U; return 4U;
if (modemState == STATE_DSTAR && !dstarEnable) if (modemState == STATE_DSTAR && !dstarEnable)
return 4U; return 4U;
@ -309,7 +309,7 @@ uint8_t CSerialPort::setMode(const uint8_t* data, uint8_t length)
if (modemState == m_modemState) if (modemState == m_modemState)
return 0U; return 0U;
if (modemState != STATE_IDLE && modemState != STATE_DSTAR && modemState != STATE_DMR && modemState != STATE_YSF && modemState != STATE_P25 && modemState != STATE_DSTARCAL && modemState != STATE_DMRCAL && modemState != STATE_RSSICAL) if (modemState != STATE_IDLE && modemState != STATE_DSTAR && modemState != STATE_DMR && modemState != STATE_YSF && modemState != STATE_P25 && modemState != STATE_DSTARCAL && modemState != STATE_DMRCAL && modemState != STATE_RSSICAL && modemState != STATE_LFCAL)
return 4U; return 4U;
if (modemState == STATE_DSTAR && !m_dstarEnable) if (modemState == STATE_DSTAR && !m_dstarEnable)
return 4U; return 4U;
@ -392,6 +392,16 @@ void CSerialPort::setMode(MMDVM_STATE modemState)
p25RX.reset(); p25RX.reset();
cwIdTX.reset(); cwIdTX.reset();
break; break;
case STATE_LFCAL:
DEBUG1("Mode set to 80 Hz Calibrate");
dmrIdleRX.reset();
dmrDMORX.reset();
dmrRX.reset();
dstarRX.reset();
ysfRX.reset();
p25RX.reset();
cwIdTX.reset();
break;
default: default:
DEBUG1("Mode set to Idle"); DEBUG1("Mode set to Idle");
// STATE_IDLE // STATE_IDLE
@ -473,7 +483,7 @@ void CSerialPort::process()
case MMDVM_CAL_DATA: case MMDVM_CAL_DATA:
if (m_modemState == STATE_DSTARCAL) if (m_modemState == STATE_DSTARCAL)
err = calDStarTX.write(m_buffer + 3U, m_len - 3U); err = calDStarTX.write(m_buffer + 3U, m_len - 3U);
if (m_modemState == STATE_DMRCAL) if (m_modemState == STATE_DMRCAL || m_modemState == STATE_LFCAL)
err = calDMR.write(m_buffer + 3U, m_len - 3U); err = calDMR.write(m_buffer + 3U, m_len - 3U);
if (err == 0U) { if (err == 0U) {
sendACK(); sendACK();