diff --git a/src/ccallsign.cpp b/src/ccallsign.cpp index 23cdb3e..d04760b 100644 --- a/src/ccallsign.cpp +++ b/src/ccallsign.cpp @@ -61,31 +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)); - } - } - 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; } @@ -160,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(); } @@ -187,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(); } @@ -200,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(); } } @@ -229,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 } //////////////////////////////////////////////////////////////////////////////////////// @@ -325,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() ) diff --git a/src/cdvheaderpacket.cpp b/src/cdvheaderpacket.cpp index 3a281b2..4029824 100644 --- a/src/cdvheaderpacket.cpp +++ b/src/cdvheaderpacket.cpp @@ -68,6 +68,7 @@ CDvHeaderPacket::CDvHeaderPacket(uint32 my, const CCallsign &ur, const CCallsign m_csRPT1 = rpt1; m_csRPT2 = rpt2; m_csMY = CCallsign("", my); + m_csMY.SetSuffix("DMR"); } // YSF constructor @@ -83,6 +84,7 @@ CDvHeaderPacket::CDvHeaderPacket(const CCallsign &my, const CCallsign &ur, const m_csRPT1 = rpt1; m_csRPT2 = rpt2; m_csMY = my; + m_csMY.SetSuffix("YSF"); } diff --git a/src/main.h b/src/main.h index f7c8226..7c19c7f 100644 --- a/src/main.h +++ b/src/main.h @@ -158,6 +158,9 @@ #define YSFNODEDB_PATH "/xlxd/ysfnode.dat" // local file path #define YSFNODEDB_REFRESH_RATE 180 // in minutes +//Set to 1 to get rid of Suffixes for legal reasons e.g. LX +#define REMOVE_CALLSIGN_SUFFIX 0 + // xml & json reporting ----------------------------------------- #define LASTHEARD_USERS_MAX_SIZE 100