mirror of
https://github.com/juribeparada/MMDVM_HS.git
synced 2026-04-05 06:15:15 +00:00
Adding RSSI support for ADF7021, and RSSI for DStar and DMR
This commit is contained in:
parent
d1976f1049
commit
7d40e245bd
9 changed files with 197 additions and 66 deletions
31
DMRDMORX.cpp
31
DMRDMORX.cpp
|
|
@ -110,7 +110,7 @@ void CDMRDMORX::databit(bool bit)
|
|||
switch (dataType) {
|
||||
case DT_DATA_HEADER:
|
||||
DEBUG2("DMRDMORX: data header found pos", m_syncPtr);
|
||||
serial.writeDMRData(true, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
writeRSSIData(frame);
|
||||
m_state = DMORXS_DATA;
|
||||
m_type = 0x00U;
|
||||
break;
|
||||
|
|
@ -119,32 +119,32 @@ void CDMRDMORX::databit(bool bit)
|
|||
case DT_RATE_1_DATA:
|
||||
if (m_state == DMORXS_DATA) {
|
||||
DEBUG2("DMRDMORX: data payload found pos", m_syncPtr);
|
||||
serial.writeDMRData(true, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
writeRSSIData(frame);
|
||||
m_type = dataType;
|
||||
}
|
||||
break;
|
||||
case DT_VOICE_LC_HEADER:
|
||||
DEBUG2("DMRDMORX: voice header found pos", m_syncPtr);
|
||||
serial.writeDMRData(true, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
writeRSSIData(frame);
|
||||
m_state = DMORXS_VOICE;
|
||||
break;
|
||||
case DT_VOICE_PI_HEADER:
|
||||
if (m_state == DMORXS_VOICE) {
|
||||
DEBUG2("DMRDMORX: voice pi header found pos", m_syncPtr);
|
||||
serial.writeDMRData(true, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
writeRSSIData(frame);
|
||||
}
|
||||
m_state = DMORXS_VOICE;
|
||||
break;
|
||||
case DT_TERMINATOR_WITH_LC:
|
||||
if (m_state == DMORXS_VOICE) {
|
||||
DEBUG2("DMRDMORX: voice terminator found pos", m_syncPtr);
|
||||
serial.writeDMRData(true, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
writeRSSIData(frame);
|
||||
reset();
|
||||
}
|
||||
break;
|
||||
default: // DT_CSBK
|
||||
DEBUG2("DMRDMORX: csbk found pos", m_syncPtr);
|
||||
serial.writeDMRData(true, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
writeRSSIData(frame);
|
||||
reset();
|
||||
break;
|
||||
}
|
||||
|
|
@ -152,7 +152,7 @@ void CDMRDMORX::databit(bool bit)
|
|||
} else if (m_control == CONTROL_VOICE) {
|
||||
// Voice sync
|
||||
DEBUG2("DMRDMORX: voice sync found pos", m_syncPtr);
|
||||
serial.writeDMRData(true, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
writeRSSIData(frame);
|
||||
|
||||
m_state = DMORXS_VOICE;
|
||||
m_syncCount = 0U;
|
||||
|
|
@ -177,7 +177,7 @@ void CDMRDMORX::databit(bool bit)
|
|||
} else if (m_state == DMORXS_DATA) {
|
||||
if (m_type != 0x00U) {
|
||||
frame[0U] = CONTROL_DATA | m_type;
|
||||
serial.writeDMRData(true, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
writeRSSIData(frame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -254,3 +254,18 @@ void CDMRDMORX::setColorCode(uint8_t colorCode)
|
|||
{
|
||||
m_colorCode = colorCode;
|
||||
}
|
||||
|
||||
void CDMRDMORX::writeRSSIData(uint8_t* frame)
|
||||
{
|
||||
#if defined(SEND_RSSI_DATA)
|
||||
uint16_t rssi = io.readRSSI();
|
||||
|
||||
frame[34U] = (rssi >> 8) & 0xFFU;
|
||||
frame[35U] = (rssi >> 0) & 0xFFU;
|
||||
|
||||
serial.writeDMRData(true, frame, DMR_FRAME_LENGTH_BYTES + 3U);
|
||||
#else
|
||||
serial.writeDMRData(true, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue