mirror of https://github.com/g4klx/MMDVM.git
Put the scaffolding in for DMR DMO mode.
This commit is contained in:
parent
a866d04078
commit
69f02f6649
|
@ -45,6 +45,8 @@ enum MMDVM_STATE {
|
|||
|
||||
#include "SerialPort.h"
|
||||
#include "DMRIdleRX.h"
|
||||
#include "DMRDMORX.h"
|
||||
#include "DMRDMOTX.h"
|
||||
#include "DStarRX.h"
|
||||
#include "DStarTX.h"
|
||||
#include "DMRRX.h"
|
||||
|
@ -90,6 +92,9 @@ extern CDMRIdleRX dmrIdleRX;
|
|||
extern CDMRRX dmrRX;
|
||||
extern CDMRTX dmrTX;
|
||||
|
||||
extern CDMRDMORX dmrDMORX;
|
||||
extern CDMRDMOTX dmrDMOTX;
|
||||
|
||||
extern CYSFRX ysfRX;
|
||||
extern CYSFTX ysfTX;
|
||||
|
||||
|
|
22
IO.cpp
22
IO.cpp
|
@ -358,8 +358,12 @@ void CIO::process()
|
|||
q15_t C4FSKVals[RX_BLOCK_SIZE + 1U];
|
||||
::arm_fir_fast_q15(&m_C4FSKFilter, samples, C4FSKVals, blockSize);
|
||||
|
||||
if (m_dmrEnable)
|
||||
dmrIdleRX.samples(C4FSKVals, blockSize);
|
||||
if (m_dmrEnable) {
|
||||
if (m_duplex)
|
||||
dmrIdleRX.samples(C4FSKVals, blockSize);
|
||||
else
|
||||
dmrDMORX.samples(C4FSKVals, blockSize);
|
||||
}
|
||||
|
||||
if (m_ysfEnable)
|
||||
ysfRX.samples(C4FSKVals, blockSize);
|
||||
|
@ -376,11 +380,15 @@ void CIO::process()
|
|||
q15_t C4FSKVals[RX_BLOCK_SIZE + 1U];
|
||||
::arm_fir_fast_q15(&m_C4FSKFilter, samples, C4FSKVals, blockSize);
|
||||
|
||||
// If the transmitter isn't on, use the DMR idle RX to detect the wakeup CSBKs
|
||||
if (m_tx)
|
||||
dmrRX.samples(C4FSKVals, control, blockSize);
|
||||
else
|
||||
dmrIdleRX.samples(C4FSKVals, blockSize);
|
||||
if (m_duplex) {
|
||||
// If the transmitter isn't on, use the DMR idle RX to detect the wakeup CSBKs
|
||||
if (m_tx)
|
||||
dmrRX.samples(C4FSKVals, control, blockSize);
|
||||
else
|
||||
dmrIdleRX.samples(C4FSKVals, blockSize);
|
||||
} else {
|
||||
dmrDMORX.samples(c4FSKVals, blockSize);
|
||||
}
|
||||
}
|
||||
} else if (m_modemState == STATE_YSF) {
|
||||
if (m_ysfEnable) {
|
||||
|
|
11
MMDVM.cpp
11
MMDVM.cpp
|
@ -44,6 +44,9 @@ CDMRIdleRX dmrIdleRX;
|
|||
CDMRRX dmrRX;
|
||||
CDMRTX dmrTX;
|
||||
|
||||
CDMRDMORX dmrDMORX;
|
||||
CDMRDMOTX dmrDMOTX;
|
||||
|
||||
CYSFRX ysfRX;
|
||||
CYSFTX ysfTX;
|
||||
|
||||
|
@ -71,8 +74,12 @@ void loop()
|
|||
if (m_dstarEnable && m_modemState == STATE_DSTAR)
|
||||
dstarTX.process();
|
||||
|
||||
if (m_dmrEnable && m_modemState == STATE_DMR)
|
||||
dmrTX.process();
|
||||
if (m_dmrEnable && m_modemState == STATE_DMR) {
|
||||
if (m_duplex)
|
||||
dmrTX.process();
|
||||
else
|
||||
dmrDMOTX.process();
|
||||
}
|
||||
|
||||
if (m_ysfEnable && m_modemState == STATE_YSF)
|
||||
ysfTX.process();
|
||||
|
|
11
MMDVM.ino
11
MMDVM.ino
|
@ -41,6 +41,9 @@ CDMRIdleRX dmrIdleRX;
|
|||
CDMRRX dmrRX;
|
||||
CDMRTX dmrTX;
|
||||
|
||||
CDMRDMORX dmrDMORX;
|
||||
CDMRDMOTX dmrDMOTX;
|
||||
|
||||
CYSFRX ysfRX;
|
||||
CYSFTX ysfTX;
|
||||
|
||||
|
@ -68,8 +71,12 @@ void loop()
|
|||
if (m_dstarEnable && m_modemState == STATE_DSTAR)
|
||||
dstarTX.process();
|
||||
|
||||
if (m_dmrEnable && m_modemState == STATE_DMR)
|
||||
dmrTX.process();
|
||||
if (m_dmrEnable && m_modemState == STATE_DMR) {
|
||||
if (m_duplex)
|
||||
dmrTX.process();
|
||||
else
|
||||
dmrDMOTX.process();
|
||||
}
|
||||
|
||||
if (m_ysfEnable && m_modemState == STATE_YSF)
|
||||
ysfTX.process();
|
||||
|
|
|
@ -149,8 +149,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] = 0U;
|
||||
reply[8U] = dmrDMOTX.getSpace();
|
||||
}
|
||||
} else {
|
||||
reply[7U] = 0U;
|
||||
reply[8U] = 0U;
|
||||
|
@ -249,6 +254,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
|
|||
dmrTX.setColorCode(colorCode);
|
||||
dmrRX.setColorCode(colorCode);
|
||||
dmrRX.setDelay(dmrDelay);
|
||||
dmrDMORX.setColorCode(colorCode);
|
||||
dmrIdleRX.setColorCode(colorCode);
|
||||
|
||||
io.setParameters(rxInvert, txInvert, pttInvert, rxLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel);
|
||||
|
@ -471,8 +477,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)
|
||||
|
@ -485,8 +493,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)
|
||||
|
|
Loading…
Reference in New Issue