diff --git a/DMRDMOTX.cpp b/DMRDMOTX.cpp index dec2577..eca1a4b 100644 --- a/DMRDMOTX.cpp +++ b/DMRDMOTX.cpp @@ -94,7 +94,7 @@ void CDMRDMOTX::process() for (unsigned int i = 0U; i < DMR_FRAME_LENGTH_BYTES; i++) { m_poBuffer[i + 3U] = m_fifo.get(); - m_poBuffer[i + 39U] = IDLE_DATA[i]; + m_poBuffer[i + 39U] = m_idle[i]; } m_poLen = 72U; @@ -210,3 +210,11 @@ void CDMRDMOTX::createCACH(uint8_t* buffer, uint8_t slotIndex) m_cachPtr += 3U; } + +void CDMRDMOTX::setColorCode(uint8_t colorCode) +{ + ::memcpy(m_idle, IDLE_DATA, DMR_FRAME_LENGTH_BYTES); + + CDMRSlotType slotType; + slotType.encode(colorCode, DT_IDLE, m_idle); +} diff --git a/DMRDMOTX.h b/DMRDMOTX.h index 98ffdb0..7401fc6 100644 --- a/DMRDMOTX.h +++ b/DMRDMOTX.h @@ -36,6 +36,8 @@ public: void setTXDelay(uint8_t delay); uint8_t getSpace() const; + + void setColorCode(uint8_t colorCode); private: @@ -47,6 +49,7 @@ private: uint16_t m_poPtr; uint32_t m_txDelay; uint8_t m_cachPtr; + uint8_t m_idle[DMR_FRAME_LENGTH_BYTES]; void createCACH(uint8_t* buffer, uint8_t slotIndex); void writeByte(uint8_t c); diff --git a/SerialPort.cpp b/SerialPort.cpp index fd2678f..a22e129 100644 --- a/SerialPort.cpp +++ b/SerialPort.cpp @@ -271,6 +271,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length) dmrDMOTX.setTXDelay(txDelay); dmrTX.setColorCode(colorCode); + dmrDMOTX.setColorCode(colorCode); dmrRX.setColorCode(colorCode); dmrRX.setDelay(dmrDelay); dmrDMORX.setColorCode(colorCode);