From bf128e76f3fed5382bc152a55155995cddab53e0 Mon Sep 17 00:00:00 2001 From: phl0 Date: Sat, 16 Apr 2016 21:45:49 +0200 Subject: [PATCH 1/8] Add output of information about incoming reflector --- DStarControl.cpp | 17 +++++++++++++---- Display.h | 2 +- HD44780.cpp | 9 +++++++-- HD44780.h | 2 +- Nextion.cpp | 2 +- Nextion.h | 2 +- NullDisplay.cpp | 2 +- NullDisplay.h | 2 +- TFTSerial.cpp | 2 +- TFTSerial.h | 2 +- 10 files changed, 28 insertions(+), 14 deletions(-) diff --git a/DStarControl.cpp b/DStarControl.cpp index a95100d..f974461 100644 --- a/DStarControl.cpp +++ b/DStarControl.cpp @@ -203,7 +203,7 @@ bool CDStarControl::writeModem(unsigned char *data) m_rfState = RS_RF_AUDIO; if (m_netState == RS_NET_IDLE) - m_display->writeDStar((char*)my1, (char*)my2, (char*)your, "R"); + m_display->writeDStar((char*)my1, (char*)my2, (char*)your, "R", ""); LogMessage("D-Star, received RF header from %8.8s/%4.4s to %8.8s", my1, my2, your); } else if (type == TAG_EOT) { @@ -374,7 +374,7 @@ bool CDStarControl::writeModem(unsigned char *data) m_rfN = (m_rfN + 1U) % 21U; if (m_netState == RS_NET_IDLE) - m_display->writeDStar((char*)my1, (char*)my2, (char*)your, "R"); + m_display->writeDStar((char*)my1, (char*)my2, (char*)your, "R", ""); LogMessage("D-Star, received RF late entry from %8.8s/%4.4s to %8.8s", my1, my2, your); } @@ -491,9 +491,18 @@ void CDStarControl::writeNetwork() #endif m_netState = RS_NET_AUDIO; - m_display->writeDStar((char*)my1, (char*)my2, (char*)your, "N"); + LINK_STATUS status = LS_NONE; + unsigned char reflector[DSTAR_LONG_CALLSIGN_LENGTH]; + if (m_network != NULL) + m_network->getStatus(status, reflector); - LogMessage("D-Star, received network header from %8.8s/%4.4s to %8.8s", my1, my2, your); + m_display->writeDStar((char*)my1, (char*)my2, (char*)your, "N", (char*) reflector); + + if (strcmp(reflector, " ") == 0) { + LogMessage("D-Star, received network header from %8.8s/%4.4s to %8.8s", my1, my2, your); + } else { + LogMessage("D-Star, received network header from %8.8s/%4.4s to %8.8s via %8.8s", my1, my2, your, reflector); + } } else if (type == TAG_EOT) { if (m_netState != RS_NET_AUDIO) return; diff --git a/Display.h b/Display.h index 6baeefd..61dcb6e 100644 --- a/Display.h +++ b/Display.h @@ -33,7 +33,7 @@ public: virtual void setLockout() = 0; virtual void setError(const char* text) = 0; - virtual void writeDStar(const char* my1, const char* my2, const char* your, const char* type) = 0; + virtual void writeDStar(const char* my1, const char* my2, const char* your, const char* type, const char* reflector) = 0; virtual void clearDStar() = 0; virtual void writeDMR(unsigned int slotNo, const char* src, bool group, const char* dst, const char* type) = 0; diff --git a/HD44780.cpp b/HD44780.cpp index 80f5a45..874e927 100644 --- a/HD44780.cpp +++ b/HD44780.cpp @@ -107,12 +107,13 @@ void CHD44780::setLockout() m_dmr = false; } -void CHD44780::writeDStar(const char* my1, const char* my2, const char* your, const char* type) +void CHD44780::writeDStar(const char* my1, const char* my2, const char* your, const char* type, const char* reflector) { assert(my1 != NULL); assert(my2 != NULL); assert(your != NULL); assert(type != NULL); + assert(reflector != NULL); ::lcdClear(m_fd); @@ -130,7 +131,11 @@ void CHD44780::writeDStar(const char* my1, const char* my2, const char* your, co ::lcdPosition(m_fd, 0, 1); ::lcdPrintf(m_fd, "%.*s", m_cols, buffer); - ::sprintf(buffer, "%.8s", your); + if (strcmp(reflector, " ") == 0) { + ::sprintf(buffer, "%.8s", your); + } else { + ::sprintf(buffer, "%.8s <- %.8s", your, reflector); + } ::lcdPosition(m_fd, 0, 2); ::lcdPrintf(m_fd, "%.*s", m_cols, buffer); } else if (m_rows == 2 && m_cols == 40U) { diff --git a/HD44780.h b/HD44780.h index 1241d14..814b22a 100644 --- a/HD44780.h +++ b/HD44780.h @@ -37,7 +37,7 @@ public: virtual void setError(const char* text); virtual void setLockout(); - virtual void writeDStar(const char* my1, const char* my2, const char* your, const char* type); + virtual void writeDStar(const char* my1, const char* my2, const char* your, const char* type, const char* reflector); virtual void clearDStar(); virtual void writeDMR(unsigned int slotNo, const char* src, bool group, const char* dst, const char* type); diff --git a/Nextion.cpp b/Nextion.cpp index d4ef953..9c5d1c7 100644 --- a/Nextion.cpp +++ b/Nextion.cpp @@ -93,7 +93,7 @@ void CNextion::setLockout() m_mode = MODE_LOCKOUT; } -void CNextion::writeDStar(const char* my1, const char* my2, const char* your, const char* type) +void CNextion::writeDStar(const char* my1, const char* my2, const char* your, const char* type, const char* reflector) { assert(my1 != NULL); assert(my2 != NULL); diff --git a/Nextion.h b/Nextion.h index fafb37a..b8c3fce 100644 --- a/Nextion.h +++ b/Nextion.h @@ -38,7 +38,7 @@ public: virtual void setError(const char* text); virtual void setLockout(); - virtual void writeDStar(const char* my1, const char* my2, const char* your, const char* type); + virtual void writeDStar(const char* my1, const char* my2, const char* your, const char* type, const char* reflector); virtual void clearDStar(); virtual void writeDMR(unsigned int slotNo, const char* src, bool group, const char* dst, const char* type); diff --git a/NullDisplay.cpp b/NullDisplay.cpp index 2841110..b02fad4 100644 --- a/NullDisplay.cpp +++ b/NullDisplay.cpp @@ -43,7 +43,7 @@ void CNullDisplay::setLockout() { } -void CNullDisplay::writeDStar(const char* my1, const char* my2, const char* your, const char* type) +void CNullDisplay::writeDStar(const char* my1, const char* my2, const char* your, const char* type, const char* reflector) { } diff --git a/NullDisplay.h b/NullDisplay.h index 92acf58..27f6331 100644 --- a/NullDisplay.h +++ b/NullDisplay.h @@ -36,7 +36,7 @@ public: virtual void setError(const char* text); virtual void setLockout(); - virtual void writeDStar(const char* my1, const char* my2, const char* your, const char* type); + virtual void writeDStar(const char* my1, const char* my2, const char* your, const char* type, const char* reflector); virtual void clearDStar(); virtual void writeDMR(unsigned int slotNo, const char* src, bool group, const char* dst, const char* type); diff --git a/TFTSerial.cpp b/TFTSerial.cpp index 632e96b..749c089 100644 --- a/TFTSerial.cpp +++ b/TFTSerial.cpp @@ -142,7 +142,7 @@ void CTFTSerial::setLockout() m_mode = MODE_LOCKOUT; } -void CTFTSerial::writeDStar(const char* my1, const char* my2, const char* your, const char* type) +void CTFTSerial::writeDStar(const char* my1, const char* my2, const char* your, const char* type. const char* reflector) { assert(my1 != NULL); assert(my2 != NULL); diff --git a/TFTSerial.h b/TFTSerial.h index da54623..53f6479 100644 --- a/TFTSerial.h +++ b/TFTSerial.h @@ -38,7 +38,7 @@ public: virtual void setError(const char* text); virtual void setLockout(); - virtual void writeDStar(const char* my1, const char* my2, const char* your, const char* type); + virtual void writeDStar(const char* my1, const char* my2, const char* your, const char* type, const char* reflector); virtual void clearDStar(); virtual void writeDMR(unsigned int slotNo, const char* src, bool group, const char* dst, const char* type); From 4c86422da3d84f533867efbef9002da8de1cd8ec Mon Sep 17 00:00:00 2001 From: phl0 Date: Sat, 16 Apr 2016 21:59:31 +0200 Subject: [PATCH 2/8] Add forgotten include of cstring --- HD44780.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/HD44780.cpp b/HD44780.cpp index 874e927..9c97ed3 100644 --- a/HD44780.cpp +++ b/HD44780.cpp @@ -24,6 +24,7 @@ #include #include +#include const char* LISTENING = "Listening "; From ff06b1af64d4b6b0d499db2cbe1cd2545f92e8ef Mon Sep 17 00:00:00 2001 From: phl0 Date: Sat, 16 Apr 2016 22:04:23 +0200 Subject: [PATCH 3/8] Corrected typo --- TFTSerial.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TFTSerial.cpp b/TFTSerial.cpp index 749c089..0a1bb0a 100644 --- a/TFTSerial.cpp +++ b/TFTSerial.cpp @@ -142,7 +142,7 @@ void CTFTSerial::setLockout() m_mode = MODE_LOCKOUT; } -void CTFTSerial::writeDStar(const char* my1, const char* my2, const char* your, const char* type. const char* reflector) +void CTFTSerial::writeDStar(const char* my1, const char* my2, const char* your, const char* type, const char* reflector) { assert(my1 != NULL); assert(my2 != NULL); From 78c80f4d5cac3237e9b1d1bbd7befced3eea72df Mon Sep 17 00:00:00 2001 From: phl0 Date: Sat, 16 Apr 2016 22:08:55 +0200 Subject: [PATCH 4/8] Add cast --- DStarControl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DStarControl.cpp b/DStarControl.cpp index f974461..a01d99f 100644 --- a/DStarControl.cpp +++ b/DStarControl.cpp @@ -498,7 +498,7 @@ void CDStarControl::writeNetwork() m_display->writeDStar((char*)my1, (char*)my2, (char*)your, "N", (char*) reflector); - if (strcmp(reflector, " ") == 0) { + if (strcmp((char*) reflector, " ") == 0) { LogMessage("D-Star, received network header from %8.8s/%4.4s to %8.8s", my1, my2, your); } else { LogMessage("D-Star, received network header from %8.8s/%4.4s to %8.8s via %8.8s", my1, my2, your, reflector); From 961288ed90e588cdaae1e3853bbe093fbbf9a1fd Mon Sep 17 00:00:00 2001 From: phl0 Date: Sat, 16 Apr 2016 22:13:06 +0200 Subject: [PATCH 5/8] Add reflector info for 2x40 LCDs --- HD44780.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/HD44780.cpp b/HD44780.cpp index 9c97ed3..d18284b 100644 --- a/HD44780.cpp +++ b/HD44780.cpp @@ -141,7 +141,11 @@ void CHD44780::writeDStar(const char* my1, const char* my2, const char* your, co ::lcdPrintf(m_fd, "%.*s", m_cols, buffer); } else if (m_rows == 2 && m_cols == 40U) { char buffer[40U]; - ::sprintf(buffer, "%s %.8s/%.4s > %.8s", type, my1, my2, your); + if (strcmp(reflector, " ") == 0) { + ::sprintf(buffer, "%s %.8s/%.4s > %.8s", type, my1, my2, your); + } else { + ::sprintf(buffer, "%s %.8s/%.4s > %.8s via %.8s", type, my1, my2, your, reflector); + } ::lcdPosition(m_fd, 0, 1); ::lcdPrintf(m_fd, "%.*s", m_cols, buffer); } From c4d5dd870ec340e8833921d2dbeb40a2d366267b Mon Sep 17 00:00:00 2001 From: phl0 Date: Sat, 16 Apr 2016 22:20:18 +0200 Subject: [PATCH 6/8] Reflector output on Nextion displays --- Nextion.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Nextion.cpp b/Nextion.cpp index 9c5d1c7..3670f05 100644 --- a/Nextion.cpp +++ b/Nextion.cpp @@ -99,6 +99,7 @@ void CNextion::writeDStar(const char* my1, const char* my2, const char* your, co assert(my2 != NULL); assert(your != NULL); assert(type != NULL); + assert(reflector != NULL); if (m_mode != MODE_DSTAR) sendCommand("page DStar"); @@ -107,7 +108,11 @@ void CNextion::writeDStar(const char* my1, const char* my2, const char* your, co ::sprintf(text, "t0.txt=\"%s %.8s/%4.4s\"", type, my1, my2); sendCommand(text); - ::sprintf(text, "t1.txt=\"%.8s\"", your); + if (strcmp(reflector, " ") == 0) { + ::sprintf(text, "t1.txt=\"%.8s\"", your); + } else { + ::sprintf(text, "t1.txt=\"%.8s <- %-8s\"", your, reflector); + } sendCommand(text); m_mode = MODE_DSTAR; From d0f9ae053196e0600323b6a11315eaf723d207af Mon Sep 17 00:00:00 2001 From: phl0 Date: Sat, 16 Apr 2016 22:25:51 +0200 Subject: [PATCH 7/8] Add reflector info to TFTSerial --- TFTSerial.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/TFTSerial.cpp b/TFTSerial.cpp index 0a1bb0a..775f2e6 100644 --- a/TFTSerial.cpp +++ b/TFTSerial.cpp @@ -148,6 +148,7 @@ void CTFTSerial::writeDStar(const char* my1, const char* my2, const char* your, assert(my2 != NULL); assert(your != NULL); assert(type != NULL); + assert(reflector != NULL); if (m_mode != MODE_DSTAR) { // Clear the screen @@ -165,7 +166,11 @@ void CTFTSerial::writeDStar(const char* my1, const char* my2, const char* your, gotoPosPixel(5U, 80U); displayText(text); - ::sprintf(text, "%.8s", your); + if (strcmp(reflector, " ") == 0) { + ::sprintf(text, "%.8s", your); + } else { + ::sprintf(text, "%.8s <- %.8s", your, reflector); + } gotoPosPixel(5U, 100U); displayText(text); From b8a74c03401d892677911a5b6d8e53998c1c7358 Mon Sep 17 00:00:00 2001 From: phl0 Date: Sat, 16 Apr 2016 22:31:49 +0200 Subject: [PATCH 8/8] Use 8 spaces as empty callsign as that is the case for the rest of the code as well --- DStarControl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DStarControl.cpp b/DStarControl.cpp index a01d99f..aff53eb 100644 --- a/DStarControl.cpp +++ b/DStarControl.cpp @@ -203,7 +203,7 @@ bool CDStarControl::writeModem(unsigned char *data) m_rfState = RS_RF_AUDIO; if (m_netState == RS_NET_IDLE) - m_display->writeDStar((char*)my1, (char*)my2, (char*)your, "R", ""); + m_display->writeDStar((char*)my1, (char*)my2, (char*)your, "R", " "); LogMessage("D-Star, received RF header from %8.8s/%4.4s to %8.8s", my1, my2, your); } else if (type == TAG_EOT) { @@ -374,7 +374,7 @@ bool CDStarControl::writeModem(unsigned char *data) m_rfN = (m_rfN + 1U) % 21U; if (m_netState == RS_NET_IDLE) - m_display->writeDStar((char*)my1, (char*)my2, (char*)your, "R", ""); + m_display->writeDStar((char*)my1, (char*)my2, (char*)your, "R", " "); LogMessage("D-Star, received RF late entry from %8.8s/%4.4s to %8.8s", my1, my2, your); }