Add REMOVE_CALLSIGN_SUFFIX

pull/149/head
Geoffrey Merck 6 years ago committed by GitHub
parent f65132f596
commit 2b88523f04
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -61,32 +61,38 @@ CCallsign::CCallsign(const char *sz, uint32 dmrid)
// dmrid ok ? // dmrid ok ?
if ( m_uiDmrid == 0 ) if ( m_uiDmrid == 0 )
{ {
g_DmridDir.Lock(); g_DmridDir.Lock();
{ {
m_uiDmrid = g_DmridDir.FindDmrid(*this); m_uiDmrid = g_DmridDir.FindDmrid(*this);
} }
g_DmridDir.Unlock(); g_DmridDir.Unlock();
} }
} }
else if ( m_uiDmrid != 0 ) else if ( m_uiDmrid != 0 )
{ {
g_DmridDir.Lock(); g_DmridDir.Lock();
{ {
const CCallsign *callsign = g_DmridDir.FindCallsign(m_uiDmrid); const CCallsign *callsign = g_DmridDir.FindCallsign(m_uiDmrid);
if ( callsign != NULL ) if ( callsign != NULL )
{ {
::memcpy(m_Callsign, callsign->m_Callsign, sizeof(m_Callsign)); ::memcpy(m_Callsign, callsign->m_Callsign, sizeof(m_Callsign));
::memcpy(m_Suffix, callsign->m_Suffix, sizeof(m_Suffix)); #if (REMOVE_CALLSIGN_SUFFIX == 1)
} ::memcpy(m_Suffix, callsign->m_Suffix, sizeof(m_Suffix));
} #endif
g_DmridDir.Unlock(); }
}
g_DmridDir.Unlock();
} }
} }
CCallsign::CCallsign(const CCallsign &callsign) CCallsign::CCallsign(const CCallsign &callsign)
{ {
::memcpy(m_Callsign, callsign.m_Callsign, sizeof(m_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)); ::memcpy(m_Suffix, callsign.m_Suffix, sizeof(m_Suffix));
#endif
m_Module = callsign.m_Module; m_Module = callsign.m_Module;
m_uiDmrid = callsign.m_uiDmrid; m_uiDmrid = callsign.m_uiDmrid;
} }
@ -161,9 +167,9 @@ void CCallsign::SetCallsign(const char *sz, bool UpdateDmrid)
// and update dmrid // and update dmrid
if ( UpdateDmrid ) if ( UpdateDmrid )
{ {
g_DmridDir.Lock(); g_DmridDir.Lock();
{ {
m_uiDmrid = g_DmridDir.FindDmrid(*this); m_uiDmrid = g_DmridDir.FindDmrid(*this);
} }
g_DmridDir.Unlock(); g_DmridDir.Unlock();
} }
@ -188,9 +194,9 @@ void CCallsign::SetCallsign(const uint8 *buffer, int len, bool UpdateDmrid)
} }
if ( UpdateDmrid ) if ( UpdateDmrid )
{ {
g_DmridDir.Lock(); g_DmridDir.Lock();
{ {
m_uiDmrid = g_DmridDir.FindDmrid(*this); m_uiDmrid = g_DmridDir.FindDmrid(*this);
} }
g_DmridDir.Unlock(); g_DmridDir.Unlock();
} }
@ -201,15 +207,15 @@ void CCallsign::SetDmrid(uint32 dmrid, bool UpdateCallsign)
m_uiDmrid = dmrid; m_uiDmrid = dmrid;
if ( UpdateCallsign ) if ( UpdateCallsign )
{ {
g_DmridDir.Lock(); g_DmridDir.Lock();
{ {
const CCallsign *callsign = g_DmridDir.FindCallsign(dmrid); const CCallsign *callsign = g_DmridDir.FindCallsign(dmrid);
if ( callsign != NULL ) if ( callsign != NULL )
{ {
::memcpy(m_Callsign, callsign->m_Callsign, sizeof(m_Callsign)); ::memcpy(m_Callsign, callsign->m_Callsign, sizeof(m_Callsign));
} }
} }
g_DmridDir.Unlock(); g_DmridDir.Unlock();
} }
} }
@ -230,14 +236,18 @@ void CCallsign::SetModule(char c)
void CCallsign::SetSuffix(const char *sz) void CCallsign::SetSuffix(const char *sz)
{ {
::memset(m_Suffix, ' ', sizeof(m_Suffix)); ::memset(m_Suffix, ' ', sizeof(m_Suffix));
#if (REMOVE_CALLSIGN_SUFFIX == 1)
::memcpy(m_Suffix, sz, MIN(strlen(sz), sizeof(m_Suffix))); ::memcpy(m_Suffix, sz, MIN(strlen(sz), sizeof(m_Suffix)));
#endif
} }
void CCallsign::SetSuffix(const uint8 *buffer, int len) void CCallsign::SetSuffix(const uint8 *buffer, int len)
{ {
len = MIN(len, sizeof(m_Suffix));
::memset(m_Suffix, ' ', 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); ::memcpy(m_Suffix, buffer, len);
#endif
} }
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////
@ -326,17 +336,17 @@ bool CCallsign::operator ==(const CCallsign &callsign) const
CCallsign::operator const char *() const CCallsign::operator const char *() const
{ {
char *sz = (char *)(const char *)m_sz; char *sz = (char *)(const char *)m_sz;
// empty // empty
::memset(sz, 0, sizeof(m_sz)); ::memset(sz, 0, sizeof(m_sz));
// callsign // callsign
sz[CALLSIGN_LEN] = 0; sz[CALLSIGN_LEN] = 0;
::memcpy(sz, m_Callsign, sizeof(m_Callsign)); ::memcpy(sz, m_Callsign, sizeof(m_Callsign));
// module // module
if ( HasModule() ) if ( HasModule() )
{ {
sz[sizeof(m_Callsign)] = m_Module; sz[sizeof(m_Callsign)] = m_Module;
} }
// suffix // suffix
if ( HasSuffix() ) if ( HasSuffix() )

Loading…
Cancel
Save

Powered by TurnKey Linux.