From 2b88523f04c801fa4365a07021be2b2f508574c0 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Thu, 23 Jan 2020 11:22:49 +0100 Subject: [PATCH] Add REMOVE_CALLSIGN_SUFFIX --- src/ccallsign.cpp | 78 ++++++++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 34 deletions(-) diff --git a/src/ccallsign.cpp b/src/ccallsign.cpp index 1e507a2..d04760b 100644 --- a/src/ccallsign.cpp +++ b/src/ccallsign.cpp @@ -61,32 +61,38 @@ CCallsign::CCallsign(const char *sz, uint32 dmrid) // dmrid ok ? if ( m_uiDmrid == 0 ) { - g_DmridDir.Lock(); - { - m_uiDmrid = g_DmridDir.FindDmrid(*this); + g_DmridDir.Lock(); + { + m_uiDmrid = g_DmridDir.FindDmrid(*this); } g_DmridDir.Unlock(); } } else if ( m_uiDmrid != 0 ) { - g_DmridDir.Lock(); - { - const CCallsign *callsign = g_DmridDir.FindCallsign(m_uiDmrid); - if ( callsign != NULL ) - { - ::memcpy(m_Callsign, callsign->m_Callsign, sizeof(m_Callsign)); - ::memcpy(m_Suffix, callsign->m_Suffix, sizeof(m_Suffix)); - } - } - g_DmridDir.Unlock(); + g_DmridDir.Lock(); + { + const CCallsign *callsign = g_DmridDir.FindCallsign(m_uiDmrid); + if ( callsign != NULL ) + { + ::memcpy(m_Callsign, callsign->m_Callsign, sizeof(m_Callsign)); +#if (REMOVE_CALLSIGN_SUFFIX == 1) + ::memcpy(m_Suffix, callsign->m_Suffix, sizeof(m_Suffix)); +#endif + } + } + g_DmridDir.Unlock(); } } CCallsign::CCallsign(const CCallsign &callsign) { ::memcpy(m_Callsign, callsign.m_Callsign, sizeof(m_Callsign)); +#if (REMOVE_CALLSIGN_SUFFIX == 1) + ::memset(m_Suffix, ' ', sizeof(m_Suffix)); +#else ::memcpy(m_Suffix, callsign.m_Suffix, sizeof(m_Suffix)); +#endif m_Module = callsign.m_Module; m_uiDmrid = callsign.m_uiDmrid; } @@ -161,9 +167,9 @@ void CCallsign::SetCallsign(const char *sz, bool UpdateDmrid) // and update dmrid if ( UpdateDmrid ) { - g_DmridDir.Lock(); - { - m_uiDmrid = g_DmridDir.FindDmrid(*this); + g_DmridDir.Lock(); + { + m_uiDmrid = g_DmridDir.FindDmrid(*this); } g_DmridDir.Unlock(); } @@ -188,9 +194,9 @@ void CCallsign::SetCallsign(const uint8 *buffer, int len, bool UpdateDmrid) } if ( UpdateDmrid ) { - g_DmridDir.Lock(); - { - m_uiDmrid = g_DmridDir.FindDmrid(*this); + g_DmridDir.Lock(); + { + m_uiDmrid = g_DmridDir.FindDmrid(*this); } g_DmridDir.Unlock(); } @@ -201,15 +207,15 @@ void CCallsign::SetDmrid(uint32 dmrid, bool UpdateCallsign) m_uiDmrid = dmrid; if ( UpdateCallsign ) { - g_DmridDir.Lock(); - { - const CCallsign *callsign = g_DmridDir.FindCallsign(dmrid); - if ( callsign != NULL ) - { - ::memcpy(m_Callsign, callsign->m_Callsign, sizeof(m_Callsign)); - } - } - g_DmridDir.Unlock(); + g_DmridDir.Lock(); + { + const CCallsign *callsign = g_DmridDir.FindCallsign(dmrid); + if ( callsign != NULL ) + { + ::memcpy(m_Callsign, callsign->m_Callsign, sizeof(m_Callsign)); + } + } + g_DmridDir.Unlock(); } } @@ -230,14 +236,18 @@ void CCallsign::SetModule(char c) void CCallsign::SetSuffix(const char *sz) { ::memset(m_Suffix, ' ', sizeof(m_Suffix)); +#if (REMOVE_CALLSIGN_SUFFIX == 1) ::memcpy(m_Suffix, sz, MIN(strlen(sz), sizeof(m_Suffix))); +#endif } void CCallsign::SetSuffix(const uint8 *buffer, int len) { - len = MIN(len, sizeof(m_Suffix)); ::memset(m_Suffix, ' ', sizeof(m_Suffix)); +#if (REMOVE_CALLSIGN_SUFFIX == 0) + len = MIN(len, sizeof(m_Suffix)); ::memcpy(m_Suffix, buffer, len); +#endif } //////////////////////////////////////////////////////////////////////////////////////// @@ -326,17 +336,17 @@ bool CCallsign::operator ==(const CCallsign &callsign) const CCallsign::operator const char *() const { - char *sz = (char *)(const char *)m_sz; - - // empty - ::memset(sz, 0, sizeof(m_sz)); + char *sz = (char *)(const char *)m_sz; + + // empty + ::memset(sz, 0, sizeof(m_sz)); // callsign sz[CALLSIGN_LEN] = 0; ::memcpy(sz, m_Callsign, sizeof(m_Callsign)); // module if ( HasModule() ) { - sz[sizeof(m_Callsign)] = m_Module; + sz[sizeof(m_Callsign)] = m_Module; } // suffix if ( HasSuffix() )