diff --git a/SerialPort.cpp b/SerialPort.cpp index 7fbd004..a81e8a5 100644 --- a/SerialPort.cpp +++ b/SerialPort.cpp @@ -318,6 +318,28 @@ void SerialPort::process() #endif break; + case CMD_DMR_CLEAR1: +#if defined(DUPLEX) + if (m_dmrEnable) { + if (m_modemState == STATE_IDLE || m_modemState == STATE_P25) + dmrTX.resetFifo1(); + } +#else + sendNAK(RSN_INVALID_REQUEST); +#endif + break; + case CMD_DMR_CLEAR2: +#if defined(DUPLEX) + if (m_dmrEnable) { + if (m_modemState == STATE_IDLE || m_modemState == STATE_P25) + dmrTX.resetFifo2(); + } +#else + sendNAK(RSN_INVALID_REQUEST); +#endif + break; + + /** Project 25 */ case CMD_P25_DATA: if (m_p25Enable) { @@ -356,6 +378,12 @@ void SerialPort::process() sendNAK(err); } break; + case CMD_NXDN_CLEAR: + if (m_nxdnEnable) { + if (m_modemState == STATE_IDLE || m_modemState == STATE_P25) + nxdnTX.clear(); + } + break; default: // Handle this, send a NAK back diff --git a/SerialPort.h b/SerialPort.h index f70e54f..81ec3ef 100644 --- a/SerialPort.h +++ b/SerialPort.h @@ -93,6 +93,8 @@ enum DVM_COMMANDS { CMD_DMR_START = 0x1DU, CMD_DMR_ABORT = 0x1EU, CMD_DMR_CACH_AT_CTRL = 0x1FU, + CMD_DMR_CLEAR1 = 0x20U, + CMD_DMR_CLEAR2 = 0x21U, CMD_P25_DATA = 0x31U, CMD_P25_LOST = 0x32U, @@ -100,6 +102,7 @@ enum DVM_COMMANDS { CMD_NXDN_DATA = 0x41U, CMD_NXDN_LOST = 0x42U, + CMD_NXDN_CLEAR = 0x43U, CMD_ACK = 0x70U, CMD_NAK = 0x7FU,