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 "SerialPort.h"
|
||||||
#include "DMRIdleRX.h"
|
#include "DMRIdleRX.h"
|
||||||
|
#include "DMRDMORX.h"
|
||||||
|
#include "DMRDMOTX.h"
|
||||||
#include "DStarRX.h"
|
#include "DStarRX.h"
|
||||||
#include "DStarTX.h"
|
#include "DStarTX.h"
|
||||||
#include "DMRRX.h"
|
#include "DMRRX.h"
|
||||||
|
@ -90,6 +92,9 @@ extern CDMRIdleRX dmrIdleRX;
|
||||||
extern CDMRRX dmrRX;
|
extern CDMRRX dmrRX;
|
||||||
extern CDMRTX dmrTX;
|
extern CDMRTX dmrTX;
|
||||||
|
|
||||||
|
extern CDMRDMORX dmrDMORX;
|
||||||
|
extern CDMRDMOTX dmrDMOTX;
|
||||||
|
|
||||||
extern CYSFRX ysfRX;
|
extern CYSFRX ysfRX;
|
||||||
extern CYSFTX ysfTX;
|
extern CYSFTX ysfTX;
|
||||||
|
|
||||||
|
|
22
IO.cpp
22
IO.cpp
|
@ -358,8 +358,12 @@ void CIO::process()
|
||||||
q15_t C4FSKVals[RX_BLOCK_SIZE + 1U];
|
q15_t C4FSKVals[RX_BLOCK_SIZE + 1U];
|
||||||
::arm_fir_fast_q15(&m_C4FSKFilter, samples, C4FSKVals, blockSize);
|
::arm_fir_fast_q15(&m_C4FSKFilter, samples, C4FSKVals, blockSize);
|
||||||
|
|
||||||
if (m_dmrEnable)
|
if (m_dmrEnable) {
|
||||||
dmrIdleRX.samples(C4FSKVals, blockSize);
|
if (m_duplex)
|
||||||
|
dmrIdleRX.samples(C4FSKVals, blockSize);
|
||||||
|
else
|
||||||
|
dmrDMORX.samples(C4FSKVals, blockSize);
|
||||||
|
}
|
||||||
|
|
||||||
if (m_ysfEnable)
|
if (m_ysfEnable)
|
||||||
ysfRX.samples(C4FSKVals, blockSize);
|
ysfRX.samples(C4FSKVals, blockSize);
|
||||||
|
@ -376,11 +380,15 @@ void CIO::process()
|
||||||
q15_t C4FSKVals[RX_BLOCK_SIZE + 1U];
|
q15_t C4FSKVals[RX_BLOCK_SIZE + 1U];
|
||||||
::arm_fir_fast_q15(&m_C4FSKFilter, samples, C4FSKVals, blockSize);
|
::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_duplex) {
|
||||||
if (m_tx)
|
// If the transmitter isn't on, use the DMR idle RX to detect the wakeup CSBKs
|
||||||
dmrRX.samples(C4FSKVals, control, blockSize);
|
if (m_tx)
|
||||||
else
|
dmrRX.samples(C4FSKVals, control, blockSize);
|
||||||
dmrIdleRX.samples(C4FSKVals, blockSize);
|
else
|
||||||
|
dmrIdleRX.samples(C4FSKVals, blockSize);
|
||||||
|
} else {
|
||||||
|
dmrDMORX.samples(c4FSKVals, blockSize);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (m_modemState == STATE_YSF) {
|
} else if (m_modemState == STATE_YSF) {
|
||||||
if (m_ysfEnable) {
|
if (m_ysfEnable) {
|
||||||
|
|
11
MMDVM.cpp
11
MMDVM.cpp
|
@ -44,6 +44,9 @@ CDMRIdleRX dmrIdleRX;
|
||||||
CDMRRX dmrRX;
|
CDMRRX dmrRX;
|
||||||
CDMRTX dmrTX;
|
CDMRTX dmrTX;
|
||||||
|
|
||||||
|
CDMRDMORX dmrDMORX;
|
||||||
|
CDMRDMOTX dmrDMOTX;
|
||||||
|
|
||||||
CYSFRX ysfRX;
|
CYSFRX ysfRX;
|
||||||
CYSFTX ysfTX;
|
CYSFTX ysfTX;
|
||||||
|
|
||||||
|
@ -71,8 +74,12 @@ void loop()
|
||||||
if (m_dstarEnable && m_modemState == STATE_DSTAR)
|
if (m_dstarEnable && m_modemState == STATE_DSTAR)
|
||||||
dstarTX.process();
|
dstarTX.process();
|
||||||
|
|
||||||
if (m_dmrEnable && m_modemState == STATE_DMR)
|
if (m_dmrEnable && m_modemState == STATE_DMR) {
|
||||||
dmrTX.process();
|
if (m_duplex)
|
||||||
|
dmrTX.process();
|
||||||
|
else
|
||||||
|
dmrDMOTX.process();
|
||||||
|
}
|
||||||
|
|
||||||
if (m_ysfEnable && m_modemState == STATE_YSF)
|
if (m_ysfEnable && m_modemState == STATE_YSF)
|
||||||
ysfTX.process();
|
ysfTX.process();
|
||||||
|
|
11
MMDVM.ino
11
MMDVM.ino
|
@ -41,6 +41,9 @@ CDMRIdleRX dmrIdleRX;
|
||||||
CDMRRX dmrRX;
|
CDMRRX dmrRX;
|
||||||
CDMRTX dmrTX;
|
CDMRTX dmrTX;
|
||||||
|
|
||||||
|
CDMRDMORX dmrDMORX;
|
||||||
|
CDMRDMOTX dmrDMOTX;
|
||||||
|
|
||||||
CYSFRX ysfRX;
|
CYSFRX ysfRX;
|
||||||
CYSFTX ysfTX;
|
CYSFTX ysfTX;
|
||||||
|
|
||||||
|
@ -68,8 +71,12 @@ void loop()
|
||||||
if (m_dstarEnable && m_modemState == STATE_DSTAR)
|
if (m_dstarEnable && m_modemState == STATE_DSTAR)
|
||||||
dstarTX.process();
|
dstarTX.process();
|
||||||
|
|
||||||
if (m_dmrEnable && m_modemState == STATE_DMR)
|
if (m_dmrEnable && m_modemState == STATE_DMR) {
|
||||||
dmrTX.process();
|
if (m_duplex)
|
||||||
|
dmrTX.process();
|
||||||
|
else
|
||||||
|
dmrDMOTX.process();
|
||||||
|
}
|
||||||
|
|
||||||
if (m_ysfEnable && m_modemState == STATE_YSF)
|
if (m_ysfEnable && m_modemState == STATE_YSF)
|
||||||
ysfTX.process();
|
ysfTX.process();
|
||||||
|
|
|
@ -149,8 +149,13 @@ void CSerialPort::getStatus()
|
||||||
reply[6U] = 0U;
|
reply[6U] = 0U;
|
||||||
|
|
||||||
if (m_dmrEnable) {
|
if (m_dmrEnable) {
|
||||||
reply[7U] = dmrTX.getSpace1();
|
if (m_duplex) {
|
||||||
reply[8U] = dmrTX.getSpace2();
|
reply[7U] = dmrTX.getSpace1();
|
||||||
|
reply[8U] = dmrTX.getSpace2();
|
||||||
|
} else {
|
||||||
|
reply[7U] = 0U;
|
||||||
|
reply[8U] = dmrDMOTX.getSpace();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
reply[7U] = 0U;
|
reply[7U] = 0U;
|
||||||
reply[8U] = 0U;
|
reply[8U] = 0U;
|
||||||
|
@ -249,6 +254,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
|
||||||
dmrTX.setColorCode(colorCode);
|
dmrTX.setColorCode(colorCode);
|
||||||
dmrRX.setColorCode(colorCode);
|
dmrRX.setColorCode(colorCode);
|
||||||
dmrRX.setDelay(dmrDelay);
|
dmrRX.setDelay(dmrDelay);
|
||||||
|
dmrDMORX.setColorCode(colorCode);
|
||||||
dmrIdleRX.setColorCode(colorCode);
|
dmrIdleRX.setColorCode(colorCode);
|
||||||
|
|
||||||
io.setParameters(rxInvert, txInvert, pttInvert, rxLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel);
|
io.setParameters(rxInvert, txInvert, pttInvert, rxLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel);
|
||||||
|
@ -471,8 +477,10 @@ void CSerialPort::process()
|
||||||
|
|
||||||
case MMDVM_DMR_DATA1:
|
case MMDVM_DMR_DATA1:
|
||||||
if (m_dmrEnable) {
|
if (m_dmrEnable) {
|
||||||
if (m_modemState == STATE_IDLE || m_modemState == STATE_DMR)
|
if (m_modemState == STATE_IDLE || m_modemState == STATE_DMR) {
|
||||||
err = dmrTX.writeData1(m_buffer + 3U, m_len - 3U);
|
if (m_duplex)
|
||||||
|
err = dmrTX.writeData1(m_buffer + 3U, m_len - 3U);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (err == 0U) {
|
if (err == 0U) {
|
||||||
if (m_modemState == STATE_IDLE)
|
if (m_modemState == STATE_IDLE)
|
||||||
|
@ -485,8 +493,12 @@ void CSerialPort::process()
|
||||||
|
|
||||||
case MMDVM_DMR_DATA2:
|
case MMDVM_DMR_DATA2:
|
||||||
if (m_dmrEnable) {
|
if (m_dmrEnable) {
|
||||||
if (m_modemState == STATE_IDLE || m_modemState == STATE_DMR)
|
if (m_modemState == STATE_IDLE || m_modemState == STATE_DMR) {
|
||||||
err = dmrTX.writeData2(m_buffer + 3U, m_len - 3U);
|
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 (err == 0U) {
|
||||||
if (m_modemState == STATE_IDLE)
|
if (m_modemState == STATE_IDLE)
|
||||||
|
|
Loading…
Reference in New Issue