From 83b27188e55ffb9a8bb71f1d911566994cc45577 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Thu, 11 Aug 2016 17:28:47 +0100 Subject: [PATCH] Alter the format of the returned RSSI data. --- DMRData.cpp | 6 +++--- DMRData.h | 6 +++--- DMRSlot.cpp | 13 +++++++------ DMRSlot.h | 2 +- DStarControl.cpp | 11 ++++++----- YSFControl.cpp | 11 ++++++----- 6 files changed, 26 insertions(+), 23 deletions(-) diff --git a/DMRData.cpp b/DMRData.cpp index 49f1fdb..b9308a2 100644 --- a/DMRData.cpp +++ b/DMRData.cpp @@ -47,7 +47,7 @@ m_dataType(0U), m_seqNo(0U), m_n(0U), m_ber(0U), -m_rssi(0) +m_rssi(0U) { m_data = new unsigned char[2U * DMR_FRAME_LENGTH_BYTES]; } @@ -158,12 +158,12 @@ void CDMRData::setBER(unsigned char ber) m_ber = ber; } -signed char CDMRData::getRSSI() const +unsigned char CDMRData::getRSSI() const { return m_rssi; } -void CDMRData::setRSSI(signed char rssi) +void CDMRData::setRSSI(unsigned char rssi) { m_rssi = rssi; } diff --git a/DMRData.h b/DMRData.h index e6d0640..5a5be24 100644 --- a/DMRData.h +++ b/DMRData.h @@ -48,8 +48,8 @@ public: unsigned char getBER() const; void setBER(unsigned char ber); - signed char getRSSI() const; - void setRSSI(signed char ber); + unsigned char getRSSI() const; + void setRSSI(unsigned char ber); void setData(const unsigned char* buffer); unsigned int getData(unsigned char* buffer) const; @@ -64,7 +64,7 @@ private: unsigned char m_seqNo; unsigned char m_n; unsigned char m_ber; - signed char m_rssi; + unsigned char m_rssi; }; #endif diff --git a/DMRSlot.cpp b/DMRSlot.cpp index 7661958..1bff663 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -87,7 +87,7 @@ m_netErrs(0U), m_lastFrame(NULL), m_lastFrameValid(false), m_lastEMB(), -m_rssi(0), +m_rssi(0U), m_fp(NULL) { m_lastFrame = new unsigned char[DMR_FRAME_LENGTH_BYTES + 2U]; @@ -123,11 +123,12 @@ void CDMRSlot::writeModem(unsigned char *data, unsigned int len) // Have we got RSSI bytes on the end? if (len == (DMR_FRAME_LENGTH_BYTES + 4U) && m_rssiMultiplier != 0) { - uint16_t rssi = 0U; - rssi |= (data[35U] << 8) & 0xFF00U; - rssi |= (data[36U] << 0) & 0x00FFU; - m_rssi = (rssi - m_rssiOffset) / m_rssiMultiplier; - LogDebug("DMR Slot %u, raw RSSI: %u, reported RSSI: %d dBm", m_slotNo, rssi, m_rssi); + uint16_t raw = 0U; + raw |= (data[35U] << 8) & 0xFF00U; + raw |= (data[36U] << 0) & 0x00FFU; + int rssi = (raw - m_rssiOffset) / m_rssiMultiplier; + m_rssi = (rssi >= 0) ? rssi : -rssi; + LogDebug("DMR Slot %u, raw RSSI: %u, reported RSSI: -%u dBm", m_slotNo, raw, m_rssi); } bool dataSync = (data[1U] & DMR_SYNC_DATA) == DMR_SYNC_DATA; diff --git a/DMRSlot.h b/DMRSlot.h index 236819f..ab4b74a 100644 --- a/DMRSlot.h +++ b/DMRSlot.h @@ -84,7 +84,7 @@ private: unsigned char* m_lastFrame; bool m_lastFrameValid; CDMREMB m_lastEMB; - signed char m_rssi; + unsigned char m_rssi; FILE* m_fp; static unsigned int m_id; diff --git a/DStarControl.cpp b/DStarControl.cpp index 24ffba1..aca1044 100644 --- a/DStarControl.cpp +++ b/DStarControl.cpp @@ -125,11 +125,12 @@ bool CDStarControl::writeModem(unsigned char *data, unsigned int len) // Have we got RSSI bytes on the end? if (len == (DSTAR_FRAME_LENGTH_BYTES + 3U) && m_rssiMultiplier != 0) { - uint16_t rssi = 0U; - rssi |= (data[13U] << 8) & 0xFF00U; - rssi |= (data[14U] << 0) & 0x00FFU; - signed char m_rssi = (rssi - m_rssiOffset) / m_rssiMultiplier; - LogDebug("D-Star, raw RSSI: %u, reported RSSI: %d dBm", rssi, m_rssi); + uint16_t raw = 0U; + raw |= (data[35U] << 8) & 0xFF00U; + raw |= (data[36U] << 0) & 0x00FFU; + int rssi = (raw - m_rssiOffset) / m_rssiMultiplier; + unsigned char m_rssi = (rssi >= 0) ? rssi : -rssi; + LogDebug("D-Star, raw RSSI: %u, reported RSSI: -%u dBm", raw, m_rssi); } if (type == TAG_HEADER) { diff --git a/YSFControl.cpp b/YSFControl.cpp index 4295ebd..3b20d1d 100644 --- a/YSFControl.cpp +++ b/YSFControl.cpp @@ -94,11 +94,12 @@ bool CYSFControl::writeModem(unsigned char *data, unsigned int len) // Have we got RSSI bytes on the end? if (len == (YSF_FRAME_LENGTH_BYTES + 4U) && m_rssiMultiplier != 0) { - uint16_t rssi = 0U; - rssi |= (data[122U] << 8) & 0xFF00U; - rssi |= (data[123U] << 0) & 0x00FFU; - signed char m_rssi = (rssi - m_rssiOffset) / m_rssiMultiplier; - LogDebug("YSF, raw RSSI: %u, reported RSSI: %d dBm", rssi, m_rssi); + uint16_t raw = 0U; + raw |= (data[35U] << 8) & 0xFF00U; + raw |= (data[36U] << 0) & 0x00FFU; + int rssi = (raw - m_rssiOffset) / m_rssiMultiplier; + unsigned char m_rssi = (rssi >= 0) ? rssi : -rssi; + LogDebug("YSF, raw RSSI: %u, reported RSSI: -%u dBm", raw, m_rssi); } CYSFFICH fich;