Merge branch 'DMO'

This commit is contained in:
Jonathan Naylor 2016-09-03 14:07:41 +01:00
commit 23faa81030
10 changed files with 826 additions and 19 deletions

View file

@ -153,8 +153,13 @@ void CSerialPort::getStatus()
reply[6U] = 0U;
if (m_dmrEnable) {
reply[7U] = dmrTX.getSpace1();
reply[8U] = dmrTX.getSpace2();
if (m_duplex) {
reply[7U] = dmrTX.getSpace1();
reply[8U] = dmrTX.getSpace2();
} else {
reply[7U] = 10U;
reply[8U] = dmrDMOTX.getSpace();
}
} else {
reply[7U] = 0U;
reply[8U] = 0U;
@ -195,7 +200,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
bool rxInvert = (data[0U] & 0x01U) == 0x01U;
bool txInvert = (data[0U] & 0x02U) == 0x02U;
bool pttInvert = (data[0U] & 0x04U) == 0x04U;
bool duplex = (data[0U] & 0x80U) == 0x80U;
bool simplex = (data[0U] & 0x80U) == 0x80U;
bool dstarEnable = (data[1U] & 0x01U) == 0x01U;
bool dmrEnable = (data[1U] & 0x02U) == 0x02U;
@ -245,14 +250,16 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
m_dstarEnable = dstarEnable;
m_dmrEnable = dmrEnable;
m_ysfEnable = ysfEnable;
m_duplex = duplex;
m_duplex = !simplex;
dstarTX.setTXDelay(txDelay);
ysfTX.setTXDelay(txDelay);
dmrDMOTX.setTXDelay(txDelay);
dmrTX.setColorCode(colorCode);
dmrRX.setColorCode(colorCode);
dmrRX.setDelay(dmrDelay);
dmrDMORX.setColorCode(colorCode);
dmrIdleRX.setColorCode(colorCode);
io.setParameters(rxInvert, txInvert, pttInvert, rxLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel);
@ -298,6 +305,7 @@ void CSerialPort::setMode(MMDVM_STATE modemState)
case STATE_DSTAR:
DEBUG1("Mode set to D-Star");
dmrIdleRX.reset();
dmrDMORX.reset();
dmrRX.reset();
ysfRX.reset();
cwIdTX.reset();
@ -305,6 +313,7 @@ void CSerialPort::setMode(MMDVM_STATE modemState)
case STATE_YSF:
DEBUG1("Mode set to System Fusion");
dmrIdleRX.reset();
dmrDMORX.reset();
dmrRX.reset();
dstarRX.reset();
cwIdTX.reset();
@ -312,6 +321,7 @@ void CSerialPort::setMode(MMDVM_STATE modemState)
case STATE_DSTARCAL:
DEBUG1("Mode set to D-Star Calibrate");
dmrIdleRX.reset();
dmrDMORX.reset();
dmrRX.reset();
dstarRX.reset();
ysfRX.reset();
@ -320,6 +330,7 @@ void CSerialPort::setMode(MMDVM_STATE modemState)
case STATE_DMRCAL:
DEBUG1("Mode set to DMR Calibrate");
dmrIdleRX.reset();
dmrDMORX.reset();
dmrRX.reset();
dstarRX.reset();
ysfRX.reset();
@ -475,8 +486,10 @@ void CSerialPort::process()
case MMDVM_DMR_DATA1:
if (m_dmrEnable) {
if (m_modemState == STATE_IDLE || m_modemState == STATE_DMR)
err = dmrTX.writeData1(m_buffer + 3U, m_len - 3U);
if (m_modemState == STATE_IDLE || m_modemState == STATE_DMR) {
if (m_duplex)
err = dmrTX.writeData1(m_buffer + 3U, m_len - 3U);
}
}
if (err == 0U) {
if (m_modemState == STATE_IDLE)
@ -489,8 +502,12 @@ void CSerialPort::process()
case MMDVM_DMR_DATA2:
if (m_dmrEnable) {
if (m_modemState == STATE_IDLE || m_modemState == STATE_DMR)
err = dmrTX.writeData2(m_buffer + 3U, m_len - 3U);
if (m_modemState == STATE_IDLE || m_modemState == STATE_DMR) {
if (m_duplex)
err = dmrTX.writeData2(m_buffer + 3U, m_len - 3U);
else
err = dmrDMOTX.writeData(m_buffer + 3U, m_len - 3U);
}
}
if (err == 0U) {
if (m_modemState == STATE_IDLE)