mirror of https://github.com/g4klx/MMDVM.git
Code reordering and cleanup
This commit is contained in:
parent
4871ad1210
commit
e1d1faea82
126
CalDMR.cpp
126
CalDMR.cpp
|
@ -31,48 +31,30 @@ const uint8_t DATATERMLC_1K[] = {0x00U,
|
|||
0xC0U, 0x84U, 0xADU, 0xFFU, 0x57U, 0xD7U, 0x5DU, 0xF5U, 0xD9U, 0x65U, 0x24U,
|
||||
0x02U, 0x28U, 0x06U, 0x20U, 0x0FU, 0x80U, 0x1BU, 0xC1U, 0x07U, 0x80U, 0x5CU};
|
||||
|
||||
const uint8_t VOICE0_1K[] = {0x00U,
|
||||
const uint8_t AMBE_1K[] = {0x00U,
|
||||
0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU, 0xCEU, 0xA8U,
|
||||
0xFEU, 0x83U, 0xA7U, 0x55U, 0xFDU, 0x7DU, 0xF7U, 0x5FU, 0x7CU, 0xC4U, 0x58U,
|
||||
0xFEU, 0x83U, 0xA0U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x0CU, 0xC4U, 0x58U,
|
||||
0x20U, 0x0AU, 0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU};
|
||||
|
||||
//0xA1U, 0x30U, 0x00U, 0x00U, 0x90U, 0x09U, 0x1CU,
|
||||
const uint8_t VOICE1_1K[] = {0x00U,
|
||||
0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU, 0xCEU, 0xA8U,
|
||||
0xFEU, 0x83U, 0xA1U, 0x30U, 0x00U, 0x00U, 0x90U, 0x09U, 0x1CU, 0xC4U, 0x58U,
|
||||
0x20U, 0x0AU, 0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU};
|
||||
|
||||
//0xA1U, 0x70U, 0x00U, 0x90U, 0x00U, 0x07U, 0x4CU,
|
||||
const uint8_t VOICE2_1K[] = {0x00U,
|
||||
0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU, 0xCEU, 0xA8U,
|
||||
0xFEU, 0x83U, 0xA1U, 0x70U, 0x00U, 0x90U, 0x00U, 0x07U, 0x4CU, 0xC4U, 0x58U,
|
||||
0x20U, 0x0AU, 0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU};
|
||||
|
||||
//0xA1U, 0x70U, 0x00U, 0x31U, 0x40U, 0x07U, 0x4CU,
|
||||
const uint8_t VOICE3_1K[] = {0x00U,
|
||||
0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU, 0xCEU, 0xA8U,
|
||||
0xFEU, 0x83U, 0xA1U, 0x70U, 0x00U, 0x31U, 0x40U, 0x07U, 0x4CU, 0xC4U, 0x58U,
|
||||
0x20U, 0x0AU, 0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU};
|
||||
|
||||
//0xA1U, 0x50U, 0xA1U, 0x71U, 0xD1U, 0x70U, 0x7CU,
|
||||
const uint8_t VOICE4_1K[] = {0x00U,
|
||||
0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU, 0xCEU, 0xA8U,
|
||||
0xFEU, 0x83U, 0xA1U, 0x50U, 0xA1U, 0x71U, 0xD1U, 0x70U, 0x7CU, 0xC4U, 0x58U,
|
||||
0x20U, 0x0AU, 0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU};
|
||||
|
||||
//0xA1U, 0x10U, 0x00U, 0x00U, 0x00U, 0x0EU, 0x2CU,
|
||||
const uint8_t VOICE5_1K[] = {0x00U,
|
||||
0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU, 0xCEU, 0xA8U,
|
||||
0xFEU, 0x83U, 0xA1U, 0x10U, 0x00U, 0x00U, 0x00U, 0x0EU, 0x2CU, 0xC4U, 0x58U,
|
||||
0x20U, 0x0AU, 0xCEU, 0xA8U, 0xFEU, 0x83U, 0xACU, 0xC4U, 0x58U, 0x20U, 0x0AU};
|
||||
const uint8_t SYNCEMB_1K[6][7] = {
|
||||
{0x07U, 0x55U, 0xFDU, 0x7DU, 0xF7U, 0x5FU, 0x70U},
|
||||
{0x01U, 0x30U, 0x00U, 0x00U, 0x90U, 0x09U, 0x10U},
|
||||
{0x01U, 0x70U, 0x00U, 0x90U, 0x00U, 0x07U, 0x40U},
|
||||
{0x01U, 0x70U, 0x00U, 0x31U, 0x40U, 0x07U, 0x40U},
|
||||
{0x01U, 0x50U, 0xA1U, 0x71U, 0xD1U, 0x70U, 0x70U},
|
||||
{0x01U, 0x10U, 0x00U, 0x00U, 0x00U, 0x0EU, 0x20U},
|
||||
};
|
||||
|
||||
const uint8_t SHORTLC_1K[] = {0x33U, 0x3AU, 0xA0U, 0x30U, 0x00U, 0x55U, 0xA6U, 0x5FU, 0x50U};
|
||||
|
||||
CCalDMR::CCalDMR() :
|
||||
m_transmit(false),
|
||||
m_state(DMR1KCAL_IDLE),
|
||||
m_frame_start(0U)
|
||||
m_frame_start(0U),
|
||||
m_dmr1k(),
|
||||
m_rfN(0)
|
||||
{
|
||||
::memcpy(m_dmr1k, AMBE_1K, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
}
|
||||
|
||||
void CCalDMR::process()
|
||||
|
@ -95,70 +77,52 @@ void CCalDMR::process()
|
|||
}
|
||||
}
|
||||
|
||||
void CCalDMR::createData1k(uint8_t n)
|
||||
{
|
||||
for(uint8_t i = 0; i < 5U; i++)
|
||||
m_dmr1k[i + 15U] = SYNCEMB_1K[n][i + 1U];
|
||||
|
||||
m_dmr1k[14U] &= 0xF0U;
|
||||
m_dmr1k[20U] &= 0x0FU;
|
||||
m_dmr1k[14U] |= SYNCEMB_1K[n][0] & 0x0FU;
|
||||
m_dmr1k[20U] |= SYNCEMB_1K[n][6] & 0xF0U;
|
||||
}
|
||||
|
||||
void CCalDMR::dmr1kcal()
|
||||
{
|
||||
dmrTX.process();
|
||||
|
||||
uint16_t space = dmrTX.getSpace2();
|
||||
if (space < 1U)
|
||||
return;
|
||||
|
||||
switch (m_state) {
|
||||
case DMR1KCAL_IDLE:
|
||||
dmrTX.setStart(false);
|
||||
dmrTX.resetFifo2();
|
||||
m_state = DMR1KCAL_IDLE;
|
||||
m_rfN = 0U;
|
||||
break;
|
||||
case DMR1KCAL_DATALC:
|
||||
dmrTX.setColorCode(1U);
|
||||
dmrTX.writeShortLC(SHORTLC_1K, 9U);
|
||||
dmrTX.writeData2(DATALC_1K, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
dmrTX.setStart(true);
|
||||
if (dmrTX.writeData2(DATALC_1K, DMR_FRAME_LENGTH_BYTES + 1U) == 5U)
|
||||
m_state = DMR1KCAL_DATALC;
|
||||
else
|
||||
m_state = DMR1KCAL_V0;
|
||||
m_state = DMR1KCAL_VOICE;
|
||||
break;
|
||||
case DMR1KCAL_V0:
|
||||
if (dmrTX.writeData2(VOICE0_1K, DMR_FRAME_LENGTH_BYTES + 1U) == 5U)
|
||||
m_state = DMR1KCAL_V0;
|
||||
else
|
||||
m_state = DMR1KCAL_V1;
|
||||
break;
|
||||
case DMR1KCAL_V1:
|
||||
if (dmrTX.writeData2(VOICE1_1K, DMR_FRAME_LENGTH_BYTES + 1U) == 5U)
|
||||
m_state = DMR1KCAL_V1;
|
||||
else
|
||||
m_state = DMR1KCAL_V2;
|
||||
break;
|
||||
case DMR1KCAL_V2:
|
||||
if (dmrTX.writeData2(VOICE2_1K, DMR_FRAME_LENGTH_BYTES + 1U) == 5U)
|
||||
m_state = DMR1KCAL_V2;
|
||||
else
|
||||
m_state = DMR1KCAL_V3;
|
||||
break;
|
||||
case DMR1KCAL_V3:
|
||||
if (dmrTX.writeData2(VOICE3_1K, DMR_FRAME_LENGTH_BYTES + 1U) == 5U)
|
||||
m_state = DMR1KCAL_V3;
|
||||
else
|
||||
m_state = DMR1KCAL_V4;
|
||||
break;
|
||||
case DMR1KCAL_V4:
|
||||
if (dmrTX.writeData2(VOICE4_1K, DMR_FRAME_LENGTH_BYTES + 1U) == 5U)
|
||||
m_state = DMR1KCAL_V4;
|
||||
else
|
||||
m_state = DMR1KCAL_V5;
|
||||
break;
|
||||
case DMR1KCAL_V5:
|
||||
if (dmrTX.writeData2(VOICE5_1K, DMR_FRAME_LENGTH_BYTES + 1U) == 5U)
|
||||
m_state = DMR1KCAL_V5;
|
||||
else {
|
||||
if(m_transmit)
|
||||
m_state = DMR1KCAL_V0;
|
||||
else
|
||||
case DMR1KCAL_VOICE:
|
||||
createData1k(m_rfN);
|
||||
dmrTX.writeData2(m_dmr1k, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
if(m_rfN == 5U) {
|
||||
m_rfN = 0U;
|
||||
if(!m_transmit)
|
||||
m_state = DMR1KCAL_TERMLC;
|
||||
}
|
||||
} else
|
||||
m_rfN++;
|
||||
break;
|
||||
case DMR1KCAL_TERMLC:
|
||||
if (dmrTX.writeData2(DATATERMLC_1K, DMR_FRAME_LENGTH_BYTES + 1U) == 5U)
|
||||
m_state = DMR1KCAL_TERMLC;
|
||||
else {
|
||||
m_state = DMR1KCAL_WAIT;
|
||||
m_frame_start = dmrTX.getFrameCount();
|
||||
}
|
||||
dmrTX.writeData2(DATATERMLC_1K, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
m_frame_start = dmrTX.getFrameCount();
|
||||
m_state = DMR1KCAL_WAIT;
|
||||
break;
|
||||
case DMR1KCAL_WAIT:
|
||||
if (dmrTX.getFrameCount() > (m_frame_start + 30U))
|
||||
|
|
10
CalDMR.h
10
CalDMR.h
|
@ -26,12 +26,7 @@
|
|||
enum DMR1KCAL {
|
||||
DMR1KCAL_IDLE,
|
||||
DMR1KCAL_DATALC,
|
||||
DMR1KCAL_V0,
|
||||
DMR1KCAL_V1,
|
||||
DMR1KCAL_V2,
|
||||
DMR1KCAL_V3,
|
||||
DMR1KCAL_V4,
|
||||
DMR1KCAL_V5,
|
||||
DMR1KCAL_VOICE,
|
||||
DMR1KCAL_TERMLC,
|
||||
DMR1KCAL_WAIT
|
||||
};
|
||||
|
@ -42,6 +37,7 @@ public:
|
|||
|
||||
void process();
|
||||
void dmr1kcal();
|
||||
void createData1k(uint8_t n);
|
||||
|
||||
uint8_t write(const uint8_t* data, uint8_t length);
|
||||
|
||||
|
@ -49,6 +45,8 @@ private:
|
|||
bool m_transmit;
|
||||
DMR1KCAL m_state;
|
||||
uint32_t m_frame_start;
|
||||
uint8_t m_dmr1k[DMR_FRAME_LENGTH_BYTES + 1U];
|
||||
uint8_t m_rfN;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -77,7 +77,7 @@ void loop()
|
|||
if (m_dstarEnable && m_modemState == STATE_DSTAR)
|
||||
dstarTX.process();
|
||||
|
||||
if ((m_dmrEnable && m_modemState == STATE_DMR) || m_modemState == STATE_DMR1KCAL) {
|
||||
if (m_dmrEnable && m_modemState == STATE_DMR) {
|
||||
if (m_duplex)
|
||||
dmrTX.process();
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue