diff --git a/ccallsign.cpp b/ccallsign.cpp
deleted file mode 100644
index 1992f59..0000000
--- a/ccallsign.cpp
+++ /dev/null
@@ -1,367 +0,0 @@
-//
-// ccallsign.cpp
-// xlxd
-//
-// Created by Jean-Luc Deltombe (LX3JL) on 31/10/2015.
-// Copyright © 2015 Jean-Luc Deltombe (LX3JL). All rights reserved.
-//
-// ----------------------------------------------------------------------------
-// This file is part of xlxd.
-//
-// xlxd is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// xlxd is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Foobar. If not, see .
-// ----------------------------------------------------------------------------
-
-#include "main.h"
-#include
-#include
-#include "cdmriddirfile.h"
-#include "cdmriddirhttp.h"
-#include "ccallsign.h"
-
-////////////////////////////////////////////////////////////////////////////////////////
-// constructors
-
-CCallsign::CCallsign()
-{
- // blank all
- ::memset(m_Callsign, ' ', sizeof(m_Callsign));
- ::memset(m_Suffix, ' ', sizeof(m_Suffix));
- m_Module = ' ';
- m_uiDmrid = 0;
-}
-
-CCallsign::CCallsign(const char *sz, uint32 dmrid)
-{
- // blank all
- ::memset(m_Callsign, ' ', sizeof(m_Callsign));
- ::memset(m_Suffix, ' ', sizeof(m_Suffix));
- m_Module = ' ';
- m_uiDmrid = dmrid;
-
- // and populate
- if ( ::strlen(sz) > 0 )
- {
- // callsign valid
- ::memcpy(m_Callsign, sz, MIN(strlen(sz), sizeof(m_Callsign)-1));
- if ( strlen(sz) >= sizeof(m_Callsign) )
- {
- m_Module = sz[sizeof(m_Callsign)-1];
- }
- // dmrid ok ?
- if ( m_uiDmrid == 0 )
- {
- 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();
- }
-}
-
-CCallsign::CCallsign(const CCallsign &callsign)
-{
- ::memcpy(m_Callsign, callsign.m_Callsign, sizeof(m_Callsign));
- ::memcpy(m_Suffix, callsign.m_Suffix, sizeof(m_Suffix));
- m_Module = callsign.m_Module;
- m_uiDmrid = callsign.m_uiDmrid;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-// status
-
-bool CCallsign::IsValid(void) const
-{
- bool valid = true;
- int i;
-
- // callsign
- // first 3 chars are letter or number but cannot be all number
- int iNum = 0;
- for ( i = 0; i < 3; i++ )
- {
- valid &= IsLetter(m_Callsign[i]) || IsNumber(m_Callsign[i]);
- if ( IsNumber(m_Callsign[i]) )
- {
- iNum++;
- }
- }
- valid &= (iNum < 3);
- // all remaining char are letter, number or space
- for ( ; i < CALLSIGN_LEN; i++)
- {
- valid &= IsLetter(m_Callsign[i]) || IsNumber(m_Callsign[i]) || IsSpace(m_Callsign[i]);
- }
-
- // prefix
- // all chars are number, uppercase or space
- for ( i = 0; i < CALLSUFFIX_LEN; i++ )
- {
- valid &= IsLetter(m_Suffix[i]) || IsNumber(m_Suffix[i]) || IsSpace(m_Suffix[i]);
- }
-
- // module
- // is an letter or space
- valid &= IsLetter(m_Module) || IsSpace(m_Module);
-
- // dmrid is not tested, as it can be NULL
- // if station does is not dmr registered
-
- // done
- return valid;
-}
-
-bool CCallsign::HasSuffix(void) const
-{
- bool has = false;
- for ( unsigned int i = 0; i < CALLSUFFIX_LEN; i++ )
- {
- has |= (m_Suffix[i] != ' ');
- }
- return has;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-// set
-
-void CCallsign::SetCallsign(const char *sz, bool UpdateDmrid)
-{
- // set callsign
- ::memset(m_Callsign, ' ', sizeof(m_Callsign));
- m_Module = ' ';
- ::memcpy(m_Callsign, sz, MIN(strlen(sz), sizeof(m_Callsign)-1));
- if ( strlen(sz) >= sizeof(m_Callsign) )
- {
- m_Module = sz[sizeof(m_Callsign)-1];
- }
- // and update dmrid
- if ( UpdateDmrid )
- {
- g_DmridDir.Lock();
- {
- m_uiDmrid = g_DmridDir.FindDmrid(*this);
- }
- g_DmridDir.Unlock();
- }
-}
-
-void CCallsign::SetCallsign(const uint8 *buffer, int len, bool UpdateDmrid)
-{
- // set callsign
- ::memset(m_Callsign, ' ', sizeof(m_Callsign));
- m_Module = ' ';
- ::memcpy(m_Callsign, buffer, MIN(len, sizeof(m_Callsign)-1));
- for ( unsigned int i = 0; i < sizeof(m_Callsign); i++ )
- {
- if ( m_Callsign[i] == 0 )
- {
- m_Callsign[i] = ' ';
- }
- }
- if ( ((unsigned int)len >= sizeof(m_Callsign)) && ((char)buffer[sizeof(m_Callsign)-1] != 0) )
- {
- m_Module = (char)buffer[sizeof(m_Callsign)-1];
- }
- if ( UpdateDmrid )
- {
- g_DmridDir.Lock();
- {
- m_uiDmrid = g_DmridDir.FindDmrid(*this);
- }
- g_DmridDir.Unlock();
- }
-}
-
-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();
- }
-}
-
-void CCallsign::SetDmrid(const uint8 *buffer, bool UpdateCallsign)
-{
- char sz[9];
- ::memcpy(sz, buffer, 8);
- sz[8] = 0;
- SetDmrid((uint32)::strtol(sz, NULL, 16), UpdateCallsign);
-}
-
-void CCallsign::SetModule(char c)
-{
- m_Module = c;
-}
-
-
-void CCallsign::SetSuffix(const char *sz)
-{
- ::memset(m_Suffix, ' ', sizeof(m_Suffix));
- ::memcpy(m_Suffix, sz, MIN(strlen(sz), sizeof(m_Suffix)));
-}
-
-void CCallsign::SetSuffix(const uint8 *buffer, int len)
-{
- len = MIN(len, sizeof(m_Suffix));
- ::memset(m_Suffix, ' ', sizeof(m_Suffix));
- ::memcpy(m_Suffix, buffer, len);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-// modify
-
-void CCallsign::PatchCallsign(int off, const uint8 *patch, int len)
-{
- if ( (unsigned int)off < sizeof(m_Callsign) )
- {
- ::memcpy(m_Callsign, patch, MIN(len, sizeof(m_Callsign) - off));
- }
-}
-
-
-////////////////////////////////////////////////////////////////////////////////////////
-// get
-
-void CCallsign::GetCallsign(uint8 *buffer) const
-{
- ::memcpy(buffer, m_Callsign, sizeof(m_Callsign));
- if ( HasModule() )
- {
- buffer[sizeof(m_Callsign)-1] = m_Module;
- }
-}
-
-void CCallsign::GetCallsignString(char *sz) const
-{
- int i;
- for ( i = 0; ((unsigned int)i < sizeof(m_Callsign)) && (m_Callsign[i] != ' '); i++ )
- {
- sz[i] = m_Callsign[i];
- }
- sz[i] = 0;
-}
-
-void CCallsign::GetSuffix(uint8 *buffer) const
-{
- ::memcpy(buffer, m_Suffix, sizeof(m_Suffix));
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-// compare
-
-bool CCallsign::HasSameCallsign(const CCallsign &Callsign) const
-{
- return (::memcmp(m_Callsign, Callsign.m_Callsign, sizeof(m_Callsign)) == 0);
-}
-
-bool CCallsign::HasSameCallsignWithWildcard(const CCallsign &callsign) const
-{
- bool same = true;
- bool done = false;
-
- for ( unsigned int i = 0; (i < sizeof(m_Callsign)) && same && !done; i++ )
- {
- if ( !(done = ((m_Callsign[i] == '*') || (callsign[i] == '*'))) )
- {
- same &= (m_Callsign[i] == callsign[i]);
- }
- }
- return same;
-}
-
-bool CCallsign::HasLowerCallsign(const CCallsign &Callsign) const
-{
- return (::memcmp(m_Callsign, Callsign.m_Callsign, sizeof(m_Callsign)) < 0);
-}
-
-bool CCallsign::HasSameModule(const CCallsign &Callsign) const
-{
- return (m_Module == Callsign.m_Module);
-}
-
-
-////////////////////////////////////////////////////////////////////////////////////////
-// operators
-
-bool CCallsign::operator ==(const CCallsign &callsign) const
-{
- return ((::memcmp(callsign.m_Callsign, m_Callsign, sizeof(m_Callsign)) == 0) &&
- (m_Module == callsign.m_Module) &&
- (::memcmp(callsign.m_Suffix, m_Suffix, sizeof(m_Suffix)) == 0) &&
- (m_uiDmrid == callsign.m_uiDmrid) );
-}
-
-CCallsign::operator const char *() const
-{
- 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;
- }
- // suffix
- if ( HasSuffix() )
- {
- ::strcat(sz, " / ");
- ::strncat(sz, m_Suffix, sizeof(m_Suffix));
- }
-
- // done
- return m_sz;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-// helper
-
-bool CCallsign::IsNumber(char c) const
-{
- return ((c >= '0') && (c <= '9'));
-}
-
-bool CCallsign::IsLetter(char c) const
-{
- return ((c >= 'A') && (c <= 'Z'));
-}
-
-bool CCallsign::IsSpace(char c) const
-{
- return (c == ' ');
-}