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 ?
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() )

Loading…
Cancel
Save

Powered by TurnKey Linux.