Add more NXDN support files.
This commit is contained in:
parent
d0bb0dc5f3
commit
5291a6427c
25 changed files with 1190 additions and 39 deletions
20
Conf.cpp
20
Conf.cpp
|
@ -34,6 +34,7 @@ enum SECTION {
|
||||||
SECTION_LOG,
|
SECTION_LOG,
|
||||||
SECTION_CWID,
|
SECTION_CWID,
|
||||||
SECTION_DMRID_LOOKUP,
|
SECTION_DMRID_LOOKUP,
|
||||||
|
SECTION_NXDNID_LOOKUP,
|
||||||
SECTION_MODEM,
|
SECTION_MODEM,
|
||||||
SECTION_UMP,
|
SECTION_UMP,
|
||||||
SECTION_DSTAR,
|
SECTION_DSTAR,
|
||||||
|
@ -80,6 +81,8 @@ m_cwIdTime(10U),
|
||||||
m_cwIdCallsign(),
|
m_cwIdCallsign(),
|
||||||
m_dmrIdLookupFile(),
|
m_dmrIdLookupFile(),
|
||||||
m_dmrIdLookupTime(0U),
|
m_dmrIdLookupTime(0U),
|
||||||
|
m_nxdnIdLookupFile(),
|
||||||
|
m_nxdnIdLookupTime(0U),
|
||||||
m_modemPort(),
|
m_modemPort(),
|
||||||
m_modemRXInvert(false),
|
m_modemRXInvert(false),
|
||||||
m_modemTXInvert(false),
|
m_modemTXInvert(false),
|
||||||
|
@ -246,6 +249,8 @@ bool CConf::read()
|
||||||
section = SECTION_CWID;
|
section = SECTION_CWID;
|
||||||
else if (::strncmp(buffer, "[DMR Id Lookup]", 15U) == 0)
|
else if (::strncmp(buffer, "[DMR Id Lookup]", 15U) == 0)
|
||||||
section = SECTION_DMRID_LOOKUP;
|
section = SECTION_DMRID_LOOKUP;
|
||||||
|
else if (::strncmp(buffer, "[NXDN Id Lookup]", 16U) == 0)
|
||||||
|
section = SECTION_NXDNID_LOOKUP;
|
||||||
else if (::strncmp(buffer, "[Modem]", 7U) == 0)
|
else if (::strncmp(buffer, "[Modem]", 7U) == 0)
|
||||||
section = SECTION_MODEM;
|
section = SECTION_MODEM;
|
||||||
else if (::strncmp(buffer, "[UMP]", 5U) == 0)
|
else if (::strncmp(buffer, "[UMP]", 5U) == 0)
|
||||||
|
@ -361,6 +366,11 @@ bool CConf::read()
|
||||||
m_dmrIdLookupFile = value;
|
m_dmrIdLookupFile = value;
|
||||||
else if (::strcmp(key, "Time") == 0)
|
else if (::strcmp(key, "Time") == 0)
|
||||||
m_dmrIdLookupTime = (unsigned int)::atoi(value);
|
m_dmrIdLookupTime = (unsigned int)::atoi(value);
|
||||||
|
} else if (section == SECTION_NXDNID_LOOKUP) {
|
||||||
|
if (::strcmp(key, "File") == 0)
|
||||||
|
m_nxdnIdLookupFile = value;
|
||||||
|
else if (::strcmp(key, "Time") == 0)
|
||||||
|
m_nxdnIdLookupTime = (unsigned int)::atoi(value);
|
||||||
} else if (section == SECTION_MODEM) {
|
} else if (section == SECTION_MODEM) {
|
||||||
if (::strcmp(key, "Port") == 0)
|
if (::strcmp(key, "Port") == 0)
|
||||||
m_modemPort = value;
|
m_modemPort = value;
|
||||||
|
@ -824,6 +834,16 @@ unsigned int CConf::getDMRIdLookupTime() const
|
||||||
return m_dmrIdLookupTime;
|
return m_dmrIdLookupTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string CConf::getNXDNIdLookupFile() const
|
||||||
|
{
|
||||||
|
return m_nxdnIdLookupFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int CConf::getNXDNIdLookupTime() const
|
||||||
|
{
|
||||||
|
return m_nxdnIdLookupTime;
|
||||||
|
}
|
||||||
|
|
||||||
std::string CConf::getModemPort() const
|
std::string CConf::getModemPort() const
|
||||||
{
|
{
|
||||||
return m_modemPort;
|
return m_modemPort;
|
||||||
|
|
7
Conf.h
7
Conf.h
|
@ -64,6 +64,10 @@ public:
|
||||||
std::string getDMRIdLookupFile() const;
|
std::string getDMRIdLookupFile() const;
|
||||||
unsigned int getDMRIdLookupTime() const;
|
unsigned int getDMRIdLookupTime() const;
|
||||||
|
|
||||||
|
// The NXDN Id section
|
||||||
|
std::string getNXDNIdLookupFile() const;
|
||||||
|
unsigned int getNXDNIdLookupTime() const;
|
||||||
|
|
||||||
// The Modem section
|
// The Modem section
|
||||||
std::string getModemPort() const;
|
std::string getModemPort() const;
|
||||||
bool getModemRXInvert() const;
|
bool getModemRXInvert() const;
|
||||||
|
@ -263,6 +267,9 @@ private:
|
||||||
std::string m_dmrIdLookupFile;
|
std::string m_dmrIdLookupFile;
|
||||||
unsigned int m_dmrIdLookupTime;
|
unsigned int m_dmrIdLookupTime;
|
||||||
|
|
||||||
|
std::string m_nxdnIdLookupFile;
|
||||||
|
unsigned int m_nxdnIdLookupTime;
|
||||||
|
|
||||||
std::string m_modemPort;
|
std::string m_modemPort;
|
||||||
bool m_modemRXInvert;
|
bool m_modemRXInvert;
|
||||||
bool m_modemTXInvert;
|
bool m_modemTXInvert;
|
||||||
|
|
|
@ -118,7 +118,7 @@ bool CDMRLookup::load()
|
||||||
{
|
{
|
||||||
FILE* fp = ::fopen(m_filename.c_str(), "rt");
|
FILE* fp = ::fopen(m_filename.c_str(), "rt");
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
LogWarning("Cannot open the Id lookup file - %s", m_filename.c_str());
|
LogWarning("Cannot open the DMR Id lookup file - %s", m_filename.c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ bool CDMRLookup::load()
|
||||||
if (size == 0U)
|
if (size == 0U)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
LogInfo("Loaded %u Ids to the callsign lookup table", size);
|
LogInfo("Loaded %u Ids to the DMR callsign lookup table", size);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
|
@ -36,6 +36,10 @@ Time=10
|
||||||
File=DMRIds.dat
|
File=DMRIds.dat
|
||||||
Time=24
|
Time=24
|
||||||
|
|
||||||
|
[NXDN Id Lookup]
|
||||||
|
File=nxuid_export.csv
|
||||||
|
Time=24
|
||||||
|
|
||||||
[Modem]
|
[Modem]
|
||||||
# Port=/dev/ttyACM0
|
# Port=/dev/ttyACM0
|
||||||
Port=\\.\COM3
|
Port=\\.\COM3
|
||||||
|
|
|
@ -158,7 +158,8 @@ m_ysfEnabled(false),
|
||||||
m_p25Enabled(false),
|
m_p25Enabled(false),
|
||||||
m_nxdnEnabled(false),
|
m_nxdnEnabled(false),
|
||||||
m_cwIdTime(0U),
|
m_cwIdTime(0U),
|
||||||
m_lookup(NULL),
|
m_dmrLookup(NULL),
|
||||||
|
m_nxdnLookup(NULL),
|
||||||
m_callsign(),
|
m_callsign(),
|
||||||
m_id(0U),
|
m_id(0U),
|
||||||
m_cwCallsign()
|
m_cwCallsign()
|
||||||
|
@ -341,8 +342,8 @@ int CMMDVMHost::run()
|
||||||
if (reloadTime > 0U)
|
if (reloadTime > 0U)
|
||||||
LogInfo(" Reload: %u hours", reloadTime);
|
LogInfo(" Reload: %u hours", reloadTime);
|
||||||
|
|
||||||
m_lookup = new CDMRLookup(lookupFile, reloadTime);
|
m_dmrLookup = new CDMRLookup(lookupFile, reloadTime);
|
||||||
m_lookup->read();
|
m_dmrLookup->read();
|
||||||
}
|
}
|
||||||
|
|
||||||
CStopWatch stopWatch;
|
CStopWatch stopWatch;
|
||||||
|
@ -439,7 +440,7 @@ int CMMDVMHost::run()
|
||||||
dmrBeaconIntervalTimer.start();
|
dmrBeaconIntervalTimer.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
dmr = new CDMRControl(id, colorCode, callHang, selfOnly, embeddedLCOnly, dumpTAData, prefixes, blackList, whiteList, slot1TGWhiteList, slot2TGWhiteList, m_timeout, m_modem, m_dmrNetwork, m_display, m_duplex, m_lookup, rssi);
|
dmr = new CDMRControl(id, colorCode, callHang, selfOnly, embeddedLCOnly, dumpTAData, prefixes, blackList, whiteList, slot1TGWhiteList, slot2TGWhiteList, m_timeout, m_modem, m_dmrNetwork, m_display, m_duplex, m_dmrLookup, rssi);
|
||||||
|
|
||||||
m_dmrTXTimer.setTimeout(txHang);
|
m_dmrTXTimer.setTimeout(txHang);
|
||||||
}
|
}
|
||||||
|
@ -483,11 +484,22 @@ int CMMDVMHost::run()
|
||||||
LogInfo(" Remote Gateway: %s", remoteGateway ? "yes" : "no");
|
LogInfo(" Remote Gateway: %s", remoteGateway ? "yes" : "no");
|
||||||
LogInfo(" Mode Hang: %us", m_p25RFModeHang);
|
LogInfo(" Mode Hang: %us", m_p25RFModeHang);
|
||||||
|
|
||||||
p25 = new CP25Control(nac, id, selfOnly, uidOverride, m_p25Network, m_display, m_timeout, m_duplex, m_lookup, remoteGateway, rssi);
|
p25 = new CP25Control(nac, id, selfOnly, uidOverride, m_p25Network, m_display, m_timeout, m_duplex, m_dmrLookup, remoteGateway, rssi);
|
||||||
}
|
}
|
||||||
|
|
||||||
CNXDNControl* nxdn = NULL;
|
CNXDNControl* nxdn = NULL;
|
||||||
if (m_nxdnEnabled) {
|
if (m_nxdnEnabled) {
|
||||||
|
std::string lookupFile = m_conf.getNXDNIdLookupFile();
|
||||||
|
unsigned int reloadTime = m_conf.getNXDNIdLookupTime();
|
||||||
|
|
||||||
|
LogInfo("NXDN Id Lookups");
|
||||||
|
LogInfo(" File: %s", lookupFile.length() > 0U ? lookupFile.c_str() : "None");
|
||||||
|
if (reloadTime > 0U)
|
||||||
|
LogInfo(" Reload: %u hours", reloadTime);
|
||||||
|
|
||||||
|
m_nxdnLookup = new CNXDNLookup(lookupFile, reloadTime);
|
||||||
|
m_nxdnLookup->read();
|
||||||
|
|
||||||
unsigned int id = m_conf.getNXDNId();
|
unsigned int id = m_conf.getNXDNId();
|
||||||
unsigned int ran = m_conf.getNXDNRAN();
|
unsigned int ran = m_conf.getNXDNRAN();
|
||||||
bool selfOnly = m_conf.getNXDNSelfOnly();
|
bool selfOnly = m_conf.getNXDNSelfOnly();
|
||||||
|
@ -501,7 +513,7 @@ int CMMDVMHost::run()
|
||||||
LogInfo(" Remote Gateway: %s", remoteGateway ? "yes" : "no");
|
LogInfo(" Remote Gateway: %s", remoteGateway ? "yes" : "no");
|
||||||
LogInfo(" Mode Hang: %us", m_nxdnRFModeHang);
|
LogInfo(" Mode Hang: %us", m_nxdnRFModeHang);
|
||||||
|
|
||||||
nxdn = new CNXDNControl(ran, id, selfOnly, m_nxdnNetwork, m_display, m_timeout, m_duplex, remoteGateway, rssi);
|
nxdn = new CNXDNControl(ran, id, selfOnly, m_nxdnNetwork, m_display, m_timeout, m_duplex, remoteGateway, m_nxdnLookup, rssi);
|
||||||
}
|
}
|
||||||
|
|
||||||
setMode(MODE_IDLE);
|
setMode(MODE_IDLE);
|
||||||
|
@ -881,8 +893,11 @@ int CMMDVMHost::run()
|
||||||
delete m_ump;
|
delete m_ump;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_lookup != NULL)
|
if (m_dmrLookup != NULL)
|
||||||
m_lookup->stop();
|
m_dmrLookup->stop();
|
||||||
|
|
||||||
|
if (m_nxdnLookup != NULL)
|
||||||
|
m_nxdnLookup->stop();
|
||||||
|
|
||||||
if (m_dstarNetwork != NULL) {
|
if (m_dstarNetwork != NULL) {
|
||||||
m_dstarNetwork->close();
|
m_dstarNetwork->close();
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
#include "DStarNetwork.h"
|
#include "DStarNetwork.h"
|
||||||
#include "NXDNNetwork.h"
|
#include "NXDNNetwork.h"
|
||||||
|
#include "NXDNLookup.h"
|
||||||
#include "YSFNetwork.h"
|
#include "YSFNetwork.h"
|
||||||
#include "P25Network.h"
|
#include "P25Network.h"
|
||||||
#include "DMRNetwork.h"
|
#include "DMRNetwork.h"
|
||||||
|
@ -73,7 +74,8 @@ private:
|
||||||
bool m_p25Enabled;
|
bool m_p25Enabled;
|
||||||
bool m_nxdnEnabled;
|
bool m_nxdnEnabled;
|
||||||
unsigned int m_cwIdTime;
|
unsigned int m_cwIdTime;
|
||||||
CDMRLookup* m_lookup;
|
CDMRLookup* m_dmrLookup;
|
||||||
|
CNXDNLookup* m_nxdnLookup;
|
||||||
std::string m_callsign;
|
std::string m_callsign;
|
||||||
unsigned int m_id;
|
unsigned int m_id;
|
||||||
std::string m_cwCallsign;
|
std::string m_cwCallsign;
|
||||||
|
|
|
@ -194,8 +194,11 @@
|
||||||
<ClInclude Include="Nextion.h" />
|
<ClInclude Include="Nextion.h" />
|
||||||
<ClInclude Include="NullDisplay.h" />
|
<ClInclude Include="NullDisplay.h" />
|
||||||
<ClInclude Include="NXDNControl.h" />
|
<ClInclude Include="NXDNControl.h" />
|
||||||
|
<ClInclude Include="NXDNConvolution.h" />
|
||||||
|
<ClInclude Include="NXDNCRC.h" />
|
||||||
<ClInclude Include="NXDNDefines.h" />
|
<ClInclude Include="NXDNDefines.h" />
|
||||||
<ClInclude Include="NXDNLICH.h" />
|
<ClInclude Include="NXDNLICH.h" />
|
||||||
|
<ClInclude Include="NXDNLookup.h" />
|
||||||
<ClInclude Include="NXDNNetwork.h" />
|
<ClInclude Include="NXDNNetwork.h" />
|
||||||
<ClInclude Include="P25Audio.h" />
|
<ClInclude Include="P25Audio.h" />
|
||||||
<ClInclude Include="P25Control.h" />
|
<ClInclude Include="P25Control.h" />
|
||||||
|
@ -270,7 +273,10 @@
|
||||||
<ClCompile Include="Nextion.cpp" />
|
<ClCompile Include="Nextion.cpp" />
|
||||||
<ClCompile Include="NullDisplay.cpp" />
|
<ClCompile Include="NullDisplay.cpp" />
|
||||||
<ClCompile Include="NXDNControl.cpp" />
|
<ClCompile Include="NXDNControl.cpp" />
|
||||||
|
<ClCompile Include="NXDNConvolution.cpp" />
|
||||||
|
<ClCompile Include="NXDNCRC.cpp" />
|
||||||
<ClCompile Include="NXDNLICH.cpp" />
|
<ClCompile Include="NXDNLICH.cpp" />
|
||||||
|
<ClCompile Include="NXDNLookup.cpp" />
|
||||||
<ClCompile Include="NXDNNetwork.cpp" />
|
<ClCompile Include="NXDNNetwork.cpp" />
|
||||||
<ClCompile Include="P25Audio.cpp" />
|
<ClCompile Include="P25Audio.cpp" />
|
||||||
<ClCompile Include="P25Control.cpp" />
|
<ClCompile Include="P25Control.cpp" />
|
||||||
|
|
|
@ -242,6 +242,15 @@
|
||||||
<ClInclude Include="NXDNLICH.h">
|
<ClInclude Include="NXDNLICH.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="NXDNConvolution.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="NXDNCRC.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="NXDNLookup.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="BPTC19696.cpp">
|
<ClCompile Include="BPTC19696.cpp">
|
||||||
|
@ -451,5 +460,14 @@
|
||||||
<ClCompile Include="NXDNLICH.cpp">
|
<ClCompile Include="NXDNLICH.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="NXDNConvolution.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="NXDNCRC.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="NXDNLookup.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
8
Makefile
8
Makefile
|
@ -9,10 +9,10 @@ LDFLAGS = -g
|
||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||||
Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o NXDNLICH.o \
|
Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
||||||
NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o \
|
NXDNConvolution.o NXDNCRC.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o \
|
||||||
SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o \
|
P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o \
|
||||||
YSFNetwork.o YSFPayload.o
|
UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||||
|
|
||||||
all: MMDVMHost
|
all: MMDVMHost
|
||||||
|
|
||||||
|
|
|
@ -9,10 +9,10 @@ LDFLAGS = -g -L/usr/local/lib
|
||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||||
Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o NXDNLICH.o \
|
Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
||||||
NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o \
|
NXDNConvolution.o NXDNCRC.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o \
|
||||||
SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o \
|
P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o \
|
||||||
YSFPayload.o
|
UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||||
|
|
||||||
all: MMDVMHost
|
all: MMDVMHost
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,9 @@ OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||||
Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
||||||
NXDNLICH.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o \
|
NXDNConvolution.o NXDNCRC.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o \
|
||||||
SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o \
|
QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o \
|
||||||
YSFPayload.o
|
YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||||
|
|
||||||
all: MMDVMHost
|
all: MMDVMHost
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,9 @@ OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||||
Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
||||||
NXDNLICH.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o \
|
NXDNConvolution.o NXDNCRC.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o \
|
||||||
SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o \
|
QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o \
|
||||||
YSFPayload.o
|
YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||||
|
|
||||||
all: MMDVMHost
|
all: MMDVMHost
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,9 @@ OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||||
Golay24128.o Hamming.o JitterBuffer.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
Golay24128.o Hamming.o JitterBuffer.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
||||||
NXDNLICH.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o \
|
NXDNConvolution.o NXDNCRC.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o \
|
||||||
SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o \
|
QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o \
|
||||||
YSFPayload.o
|
YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||||
|
|
||||||
all: MMDVMHost
|
all: MMDVMHost
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,9 @@ OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||||
Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
||||||
NXDNLICH.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o \
|
NXDNConvolution.o NXDNCRC.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o \
|
||||||
SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o \
|
QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o \
|
||||||
YSFPayload.o
|
YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||||
|
|
||||||
all: MMDVMHost
|
all: MMDVMHost
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,9 @@ OBJECTS = \
|
||||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||||
Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o NXDNControl.o \
|
||||||
NXDNLICH.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o \
|
NXDNConvolution.o NXDNCRC.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o \
|
||||||
RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o \
|
P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o \
|
||||||
YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||||
|
|
||||||
all: MMDVMHost
|
all: MMDVMHost
|
||||||
|
|
||||||
|
|
240
NXDNCRC.cpp
Normal file
240
NXDNCRC.cpp
Normal file
|
@ -0,0 +1,240 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2015,2016,2018 by Jonathan Naylor G4KLX
|
||||||
|
*
|
||||||
|
* This program 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 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program 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 this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "NXDNCRC.h"
|
||||||
|
|
||||||
|
#include "Utils.h"
|
||||||
|
#include "Log.h"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cassert>
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
|
const uint8_t CRC8_TABLE[] = {
|
||||||
|
0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, 0x38, 0x3F, 0x36, 0x31,
|
||||||
|
0x24, 0x23, 0x2A, 0x2D, 0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65,
|
||||||
|
0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D, 0xE0, 0xE7, 0xEE, 0xE9,
|
||||||
|
0xFC, 0xFB, 0xF2, 0xF5, 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD,
|
||||||
|
0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, 0xA8, 0xAF, 0xA6, 0xA1,
|
||||||
|
0xB4, 0xB3, 0xBA, 0xBD, 0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2,
|
||||||
|
0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA, 0xB7, 0xB0, 0xB9, 0xBE,
|
||||||
|
0xAB, 0xAC, 0xA5, 0xA2, 0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A,
|
||||||
|
0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32, 0x1F, 0x18, 0x11, 0x16,
|
||||||
|
0x03, 0x04, 0x0D, 0x0A, 0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42,
|
||||||
|
0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A, 0x89, 0x8E, 0x87, 0x80,
|
||||||
|
0x95, 0x92, 0x9B, 0x9C, 0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4,
|
||||||
|
0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xEC, 0xC1, 0xC6, 0xCF, 0xC8,
|
||||||
|
0xDD, 0xDA, 0xD3, 0xD4, 0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C,
|
||||||
|
0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44, 0x19, 0x1E, 0x17, 0x10,
|
||||||
|
0x05, 0x02, 0x0B, 0x0C, 0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3A, 0x33, 0x34,
|
||||||
|
0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, 0x76, 0x71, 0x78, 0x7F,
|
||||||
|
0x6A, 0x6D, 0x64, 0x63, 0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B,
|
||||||
|
0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13, 0xAE, 0xA9, 0xA0, 0xA7,
|
||||||
|
0xB2, 0xB5, 0xBC, 0xBB, 0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83,
|
||||||
|
0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 0xE6, 0xE1, 0xE8, 0xEF,
|
||||||
|
0xFA, 0xFD, 0xF4, 0xF3, 0x01 };
|
||||||
|
|
||||||
|
const uint16_t CCITT16_TABLE1[] = {
|
||||||
|
0x0000U, 0x1189U, 0x2312U, 0x329bU, 0x4624U, 0x57adU, 0x6536U, 0x74bfU,
|
||||||
|
0x8c48U, 0x9dc1U, 0xaf5aU, 0xbed3U, 0xca6cU, 0xdbe5U, 0xe97eU, 0xf8f7U,
|
||||||
|
0x1081U, 0x0108U, 0x3393U, 0x221aU, 0x56a5U, 0x472cU, 0x75b7U, 0x643eU,
|
||||||
|
0x9cc9U, 0x8d40U, 0xbfdbU, 0xae52U, 0xdaedU, 0xcb64U, 0xf9ffU, 0xe876U,
|
||||||
|
0x2102U, 0x308bU, 0x0210U, 0x1399U, 0x6726U, 0x76afU, 0x4434U, 0x55bdU,
|
||||||
|
0xad4aU, 0xbcc3U, 0x8e58U, 0x9fd1U, 0xeb6eU, 0xfae7U, 0xc87cU, 0xd9f5U,
|
||||||
|
0x3183U, 0x200aU, 0x1291U, 0x0318U, 0x77a7U, 0x662eU, 0x54b5U, 0x453cU,
|
||||||
|
0xbdcbU, 0xac42U, 0x9ed9U, 0x8f50U, 0xfbefU, 0xea66U, 0xd8fdU, 0xc974U,
|
||||||
|
0x4204U, 0x538dU, 0x6116U, 0x709fU, 0x0420U, 0x15a9U, 0x2732U, 0x36bbU,
|
||||||
|
0xce4cU, 0xdfc5U, 0xed5eU, 0xfcd7U, 0x8868U, 0x99e1U, 0xab7aU, 0xbaf3U,
|
||||||
|
0x5285U, 0x430cU, 0x7197U, 0x601eU, 0x14a1U, 0x0528U, 0x37b3U, 0x263aU,
|
||||||
|
0xdecdU, 0xcf44U, 0xfddfU, 0xec56U, 0x98e9U, 0x8960U, 0xbbfbU, 0xaa72U,
|
||||||
|
0x6306U, 0x728fU, 0x4014U, 0x519dU, 0x2522U, 0x34abU, 0x0630U, 0x17b9U,
|
||||||
|
0xef4eU, 0xfec7U, 0xcc5cU, 0xddd5U, 0xa96aU, 0xb8e3U, 0x8a78U, 0x9bf1U,
|
||||||
|
0x7387U, 0x620eU, 0x5095U, 0x411cU, 0x35a3U, 0x242aU, 0x16b1U, 0x0738U,
|
||||||
|
0xffcfU, 0xee46U, 0xdcddU, 0xcd54U, 0xb9ebU, 0xa862U, 0x9af9U, 0x8b70U,
|
||||||
|
0x8408U, 0x9581U, 0xa71aU, 0xb693U, 0xc22cU, 0xd3a5U, 0xe13eU, 0xf0b7U,
|
||||||
|
0x0840U, 0x19c9U, 0x2b52U, 0x3adbU, 0x4e64U, 0x5fedU, 0x6d76U, 0x7cffU,
|
||||||
|
0x9489U, 0x8500U, 0xb79bU, 0xa612U, 0xd2adU, 0xc324U, 0xf1bfU, 0xe036U,
|
||||||
|
0x18c1U, 0x0948U, 0x3bd3U, 0x2a5aU, 0x5ee5U, 0x4f6cU, 0x7df7U, 0x6c7eU,
|
||||||
|
0xa50aU, 0xb483U, 0x8618U, 0x9791U, 0xe32eU, 0xf2a7U, 0xc03cU, 0xd1b5U,
|
||||||
|
0x2942U, 0x38cbU, 0x0a50U, 0x1bd9U, 0x6f66U, 0x7eefU, 0x4c74U, 0x5dfdU,
|
||||||
|
0xb58bU, 0xa402U, 0x9699U, 0x8710U, 0xf3afU, 0xe226U, 0xd0bdU, 0xc134U,
|
||||||
|
0x39c3U, 0x284aU, 0x1ad1U, 0x0b58U, 0x7fe7U, 0x6e6eU, 0x5cf5U, 0x4d7cU,
|
||||||
|
0xc60cU, 0xd785U, 0xe51eU, 0xf497U, 0x8028U, 0x91a1U, 0xa33aU, 0xb2b3U,
|
||||||
|
0x4a44U, 0x5bcdU, 0x6956U, 0x78dfU, 0x0c60U, 0x1de9U, 0x2f72U, 0x3efbU,
|
||||||
|
0xd68dU, 0xc704U, 0xf59fU, 0xe416U, 0x90a9U, 0x8120U, 0xb3bbU, 0xa232U,
|
||||||
|
0x5ac5U, 0x4b4cU, 0x79d7U, 0x685eU, 0x1ce1U, 0x0d68U, 0x3ff3U, 0x2e7aU,
|
||||||
|
0xe70eU, 0xf687U, 0xc41cU, 0xd595U, 0xa12aU, 0xb0a3U, 0x8238U, 0x93b1U,
|
||||||
|
0x6b46U, 0x7acfU, 0x4854U, 0x59ddU, 0x2d62U, 0x3cebU, 0x0e70U, 0x1ff9U,
|
||||||
|
0xf78fU, 0xe606U, 0xd49dU, 0xc514U, 0xb1abU, 0xa022U, 0x92b9U, 0x8330U,
|
||||||
|
0x7bc7U, 0x6a4eU, 0x58d5U, 0x495cU, 0x3de3U, 0x2c6aU, 0x1ef1U, 0x0f78U };
|
||||||
|
|
||||||
|
const uint16_t CCITT16_TABLE2[] = {
|
||||||
|
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
|
||||||
|
0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
|
||||||
|
0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
|
||||||
|
0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
|
||||||
|
0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
|
||||||
|
0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
|
||||||
|
0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
|
||||||
|
0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
|
||||||
|
0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
|
||||||
|
0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
|
||||||
|
0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
|
||||||
|
0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
|
||||||
|
0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
|
||||||
|
0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
|
||||||
|
0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
|
||||||
|
0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
|
||||||
|
0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
|
||||||
|
0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
|
||||||
|
0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
|
||||||
|
0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
|
||||||
|
0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
|
||||||
|
0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
|
||||||
|
0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
|
||||||
|
0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
|
||||||
|
0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
|
||||||
|
0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
|
||||||
|
0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
|
||||||
|
0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
|
||||||
|
0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
|
||||||
|
0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
|
||||||
|
0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
|
||||||
|
0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 };
|
||||||
|
|
||||||
|
|
||||||
|
bool CNXDNCRC::checkFiveBit(bool* in, unsigned int tcrc)
|
||||||
|
{
|
||||||
|
assert(in != NULL);
|
||||||
|
|
||||||
|
unsigned int crc;
|
||||||
|
encodeFiveBit(in, crc);
|
||||||
|
|
||||||
|
return crc == tcrc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNXDNCRC::encodeFiveBit(const bool* in, unsigned int& tcrc)
|
||||||
|
{
|
||||||
|
assert(in != NULL);
|
||||||
|
|
||||||
|
unsigned short total = 0U;
|
||||||
|
for (unsigned int i = 0U; i < 72U; i += 8U) {
|
||||||
|
unsigned char c;
|
||||||
|
CUtils::bitsToByteBE(in + i, c);
|
||||||
|
total += c;
|
||||||
|
}
|
||||||
|
|
||||||
|
total %= 31U;
|
||||||
|
|
||||||
|
tcrc = total;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNXDNCRC::addCCITT162(unsigned char *in, unsigned int length)
|
||||||
|
{
|
||||||
|
assert(in != NULL);
|
||||||
|
assert(length > 2U);
|
||||||
|
|
||||||
|
union {
|
||||||
|
uint16_t crc16;
|
||||||
|
uint8_t crc8[2U];
|
||||||
|
};
|
||||||
|
|
||||||
|
crc16 = 0U;
|
||||||
|
|
||||||
|
for (unsigned i = 0U; i < (length - 2U); i++)
|
||||||
|
crc16 = (uint16_t(crc8[0U]) << 8) ^ CCITT16_TABLE2[crc8[1U] ^ in[i]];
|
||||||
|
|
||||||
|
crc16 = ~crc16;
|
||||||
|
|
||||||
|
in[length - 1U] = crc8[0U];
|
||||||
|
in[length - 2U] = crc8[1U];
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CNXDNCRC::checkCCITT162(const unsigned char *in, unsigned int length)
|
||||||
|
{
|
||||||
|
assert(in != NULL);
|
||||||
|
assert(length > 2U);
|
||||||
|
|
||||||
|
union {
|
||||||
|
uint16_t crc16;
|
||||||
|
uint8_t crc8[2U];
|
||||||
|
};
|
||||||
|
|
||||||
|
crc16 = 0U;
|
||||||
|
|
||||||
|
for (unsigned i = 0U; i < (length - 2U); i++)
|
||||||
|
crc16 = (uint16_t(crc8[0U]) << 8) ^ CCITT16_TABLE2[crc8[1U] ^ in[i]];
|
||||||
|
|
||||||
|
crc16 = ~crc16;
|
||||||
|
|
||||||
|
return crc8[0U] == in[length - 1U] && crc8[1U] == in[length - 2U];
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNXDNCRC::addCCITT161(unsigned char *in, unsigned int length)
|
||||||
|
{
|
||||||
|
assert(in != NULL);
|
||||||
|
assert(length > 2U);
|
||||||
|
|
||||||
|
union {
|
||||||
|
uint16_t crc16;
|
||||||
|
uint8_t crc8[2U];
|
||||||
|
};
|
||||||
|
|
||||||
|
crc16 = 0xFFFFU;
|
||||||
|
|
||||||
|
for (unsigned int i = 0U; i < (length - 2U); i++)
|
||||||
|
crc16 = uint16_t(crc8[1U]) ^ CCITT16_TABLE1[crc8[0U] ^ in[i]];
|
||||||
|
|
||||||
|
crc16 = ~crc16;
|
||||||
|
|
||||||
|
in[length - 2U] = crc8[0U];
|
||||||
|
in[length - 1U] = crc8[1U];
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CNXDNCRC::checkCCITT161(const unsigned char *in, unsigned int length)
|
||||||
|
{
|
||||||
|
assert(in != NULL);
|
||||||
|
assert(length > 2U);
|
||||||
|
|
||||||
|
union {
|
||||||
|
uint16_t crc16;
|
||||||
|
uint8_t crc8[2U];
|
||||||
|
};
|
||||||
|
|
||||||
|
crc16 = 0xFFFFU;
|
||||||
|
|
||||||
|
for (unsigned int i = 0U; i < (length - 2U); i++)
|
||||||
|
crc16 = uint16_t(crc8[1U]) ^ CCITT16_TABLE1[crc8[0U] ^ in[i]];
|
||||||
|
|
||||||
|
crc16 = ~crc16;
|
||||||
|
|
||||||
|
return crc8[0U] == in[length - 2U] && crc8[1U] == in[length - 1U];
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char CNXDNCRC::crc8(const unsigned char *in, unsigned int length)
|
||||||
|
{
|
||||||
|
assert(in != NULL);
|
||||||
|
|
||||||
|
uint8_t crc = 0U;
|
||||||
|
|
||||||
|
for (unsigned int i = 0U; i < length; i++)
|
||||||
|
crc = CRC8_TABLE[crc ^ in[i]];
|
||||||
|
|
||||||
|
return crc;
|
||||||
|
}
|
37
NXDNCRC.h
Normal file
37
NXDNCRC.h
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2015,2016,2018 by Jonathan Naylor G4KLX
|
||||||
|
*
|
||||||
|
* This program 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 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program 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 this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(NXDNCRC_H)
|
||||||
|
#define NXDNCRC_H
|
||||||
|
|
||||||
|
class CNXDNCRC
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static bool checkFiveBit(bool* in, unsigned int tcrc);
|
||||||
|
static void encodeFiveBit(const bool* in, unsigned int& tcrc);
|
||||||
|
|
||||||
|
static void addCCITT161(unsigned char* in, unsigned int length);
|
||||||
|
static void addCCITT162(unsigned char* in, unsigned int length);
|
||||||
|
|
||||||
|
static bool checkCCITT161(const unsigned char* in, unsigned int length);
|
||||||
|
static bool checkCCITT162(const unsigned char* in, unsigned int length);
|
||||||
|
|
||||||
|
static unsigned char crc8(const unsigned char* in, unsigned int length);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -28,7 +28,7 @@ const unsigned char SCRAMBLER[] = {
|
||||||
|
|
||||||
// #define DUMP_NXDN
|
// #define DUMP_NXDN
|
||||||
|
|
||||||
CNXDNControl::CNXDNControl(unsigned int ran, unsigned int id, bool selfOnly, CNXDNNetwork* network, CDisplay* display, unsigned int timeout, bool duplex, bool remoteGateway, CRSSIInterpolator* rssiMapper) :
|
CNXDNControl::CNXDNControl(unsigned int ran, unsigned int id, bool selfOnly, CNXDNNetwork* network, CDisplay* display, unsigned int timeout, bool duplex, bool remoteGateway, CNXDNLookup* lookup, CRSSIInterpolator* rssiMapper) :
|
||||||
m_ran(ran),
|
m_ran(ran),
|
||||||
m_id(id),
|
m_id(id),
|
||||||
m_selfOnly(selfOnly),
|
m_selfOnly(selfOnly),
|
||||||
|
@ -36,6 +36,7 @@ m_network(network),
|
||||||
m_display(display),
|
m_display(display),
|
||||||
m_duplex(duplex),
|
m_duplex(duplex),
|
||||||
m_remoteGateway(remoteGateway),
|
m_remoteGateway(remoteGateway),
|
||||||
|
m_lookup(lookup),
|
||||||
m_queue(5000U, "NXDN Control"),
|
m_queue(5000U, "NXDN Control"),
|
||||||
m_rfState(RS_RF_LISTENING),
|
m_rfState(RS_RF_LISTENING),
|
||||||
m_netState(RS_NET_IDLE),
|
m_netState(RS_NET_IDLE),
|
||||||
|
@ -62,6 +63,7 @@ m_rssiCount(0U),
|
||||||
m_fp(NULL)
|
m_fp(NULL)
|
||||||
{
|
{
|
||||||
assert(display != NULL);
|
assert(display != NULL);
|
||||||
|
assert(lookup != NULL);
|
||||||
assert(rssiMapper != NULL);
|
assert(rssiMapper != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include "RSSIInterpolator.h"
|
#include "RSSIInterpolator.h"
|
||||||
#include "NXDNNetwork.h"
|
#include "NXDNNetwork.h"
|
||||||
#include "NXDNDefines.h"
|
#include "NXDNDefines.h"
|
||||||
// #include "YSFPayload.h"
|
#include "NXDNLookup.h"
|
||||||
#include "RingBuffer.h"
|
#include "RingBuffer.h"
|
||||||
#include "StopWatch.h"
|
#include "StopWatch.h"
|
||||||
#include "NXDNLICH.h"
|
#include "NXDNLICH.h"
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
class CNXDNControl {
|
class CNXDNControl {
|
||||||
public:
|
public:
|
||||||
CNXDNControl(unsigned int ran, unsigned int id, bool selfOnly, CNXDNNetwork* network, CDisplay* display, unsigned int timeout, bool duplex, bool remoteGateway, CRSSIInterpolator* rssiMapper);
|
CNXDNControl(unsigned int ran, unsigned int id, bool selfOnly, CNXDNNetwork* network, CDisplay* display, unsigned int timeout, bool duplex, bool remoteGateway, CNXDNLookup* lookup, CRSSIInterpolator* rssiMapper);
|
||||||
~CNXDNControl();
|
~CNXDNControl();
|
||||||
|
|
||||||
bool writeModem(unsigned char* data, unsigned int len);
|
bool writeModem(unsigned char* data, unsigned int len);
|
||||||
|
@ -52,6 +52,7 @@ private:
|
||||||
CDisplay* m_display;
|
CDisplay* m_display;
|
||||||
bool m_duplex;
|
bool m_duplex;
|
||||||
bool m_remoteGateway;
|
bool m_remoteGateway;
|
||||||
|
CNXDNLookup* m_lookup;
|
||||||
CRingBuffer<unsigned char> m_queue;
|
CRingBuffer<unsigned char> m_queue;
|
||||||
RPT_RF_STATE m_rfState;
|
RPT_RF_STATE m_rfState;
|
||||||
RPT_NET_STATE m_netState;
|
RPT_NET_STATE m_netState;
|
||||||
|
|
141
NXDNConvolution.cpp
Normal file
141
NXDNConvolution.cpp
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2009-2016,2018 by Jonathan Naylor G4KLX
|
||||||
|
*
|
||||||
|
* This program 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 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program 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 this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "NXDNConvolution.h"
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cassert>
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
const unsigned char BIT_MASK_TABLE[] = {0x80U, 0x40U, 0x20U, 0x10U, 0x08U, 0x04U, 0x02U, 0x01U};
|
||||||
|
|
||||||
|
#define WRITE_BIT1(p,i,b) p[(i)>>3] = (b) ? (p[(i)>>3] | BIT_MASK_TABLE[(i)&7]) : (p[(i)>>3] & ~BIT_MASK_TABLE[(i)&7])
|
||||||
|
#define READ_BIT1(p,i) (p[(i)>>3] & BIT_MASK_TABLE[(i)&7])
|
||||||
|
|
||||||
|
const uint8_t BRANCH_TABLE1[] = {0U, 0U, 0U, 0U, 1U, 1U, 1U, 1U};
|
||||||
|
const uint8_t BRANCH_TABLE2[] = {0U, 1U, 1U, 0U, 0U, 1U, 1U, 0U};
|
||||||
|
|
||||||
|
const unsigned int NUM_OF_STATES_D2 = 8U;
|
||||||
|
const unsigned int NUM_OF_STATES = 16U;
|
||||||
|
const uint32_t M = 2U;
|
||||||
|
const unsigned int K = 5U;
|
||||||
|
|
||||||
|
CNXDNConvolution::CNXDNConvolution() :
|
||||||
|
m_metrics1(NULL),
|
||||||
|
m_metrics2(NULL),
|
||||||
|
m_oldMetrics(NULL),
|
||||||
|
m_newMetrics(NULL),
|
||||||
|
m_decisions(NULL),
|
||||||
|
m_dp(NULL)
|
||||||
|
{
|
||||||
|
m_metrics1 = new uint16_t[16U];
|
||||||
|
m_metrics2 = new uint16_t[16U];
|
||||||
|
m_decisions = new uint64_t[180U];
|
||||||
|
}
|
||||||
|
|
||||||
|
CNXDNConvolution::~CNXDNConvolution()
|
||||||
|
{
|
||||||
|
delete[] m_metrics1;
|
||||||
|
delete[] m_metrics2;
|
||||||
|
delete[] m_decisions;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNXDNConvolution::start()
|
||||||
|
{
|
||||||
|
::memset(m_metrics1, 0x00U, NUM_OF_STATES * sizeof(uint16_t));
|
||||||
|
::memset(m_metrics2, 0x00U, NUM_OF_STATES * sizeof(uint16_t));
|
||||||
|
|
||||||
|
m_oldMetrics = m_metrics1;
|
||||||
|
m_newMetrics = m_metrics2;
|
||||||
|
m_dp = m_decisions;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNXDNConvolution::decode(uint8_t s0, uint8_t s1)
|
||||||
|
{
|
||||||
|
*m_dp = 0U;
|
||||||
|
|
||||||
|
for (uint8_t i = 0U; i < NUM_OF_STATES_D2; i++) {
|
||||||
|
uint8_t j = i * 2U;
|
||||||
|
|
||||||
|
uint16_t metric = (BRANCH_TABLE1[i] ^ s0) + (BRANCH_TABLE2[i] ^ s1);
|
||||||
|
|
||||||
|
uint16_t m0 = m_oldMetrics[i] + metric;
|
||||||
|
uint16_t m1 = m_oldMetrics[i + NUM_OF_STATES_D2] + (M - metric);
|
||||||
|
uint8_t decision0 = (m0 >= m1) ? 1U : 0U;
|
||||||
|
m_newMetrics[j + 0U] = decision0 != 0U ? m1 : m0;
|
||||||
|
|
||||||
|
m0 = m_oldMetrics[i] + (M - metric);
|
||||||
|
m1 = m_oldMetrics[i + NUM_OF_STATES_D2] + metric;
|
||||||
|
uint8_t decision1 = (m0 >= m1) ? 1U : 0U;
|
||||||
|
m_newMetrics[j + 1U] = decision1 != 0U ? m1 : m0;
|
||||||
|
|
||||||
|
*m_dp |= (uint64_t(decision1) << (j + 1U)) | (uint64_t(decision0) << (j + 0U));
|
||||||
|
}
|
||||||
|
|
||||||
|
++m_dp;
|
||||||
|
|
||||||
|
assert((m_dp - m_decisions) <= 180);
|
||||||
|
|
||||||
|
uint16_t* tmp = m_oldMetrics;
|
||||||
|
m_oldMetrics = m_newMetrics;
|
||||||
|
m_newMetrics = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNXDNConvolution::chainback(unsigned char* out, unsigned int nBits)
|
||||||
|
{
|
||||||
|
assert(out != NULL);
|
||||||
|
|
||||||
|
uint32_t state = 0U;
|
||||||
|
|
||||||
|
while (nBits-- > 0) {
|
||||||
|
--m_dp;
|
||||||
|
|
||||||
|
uint32_t i = state >> (9 - K);
|
||||||
|
uint8_t bit = uint8_t(*m_dp >> i) & 1;
|
||||||
|
state = (bit << 7) | (state >> 1);
|
||||||
|
|
||||||
|
WRITE_BIT1(out, nBits, bit != 0U);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNXDNConvolution::encode(const unsigned char* in, unsigned char* out, unsigned int nBits) const
|
||||||
|
{
|
||||||
|
assert(in != NULL);
|
||||||
|
assert(out != NULL);
|
||||||
|
assert(nBits > 0U);
|
||||||
|
|
||||||
|
uint8_t d1 = 0U, d2 = 0U, d3 = 0U, d4 = 0U;
|
||||||
|
uint32_t k = 0U;
|
||||||
|
for (unsigned int i = 0U; i < nBits; i++) {
|
||||||
|
uint8_t d = READ_BIT1(in, i) ? 1U : 0U;
|
||||||
|
|
||||||
|
uint8_t g1 = (d + d3 + d4) & 1;
|
||||||
|
uint8_t g2 = (d + d1 + d2 + d4) & 1;
|
||||||
|
|
||||||
|
d4 = d3;
|
||||||
|
d3 = d2;
|
||||||
|
d2 = d1;
|
||||||
|
d1 = d;
|
||||||
|
|
||||||
|
WRITE_BIT1(out, k, g1 != 0U);
|
||||||
|
k++;
|
||||||
|
|
||||||
|
WRITE_BIT1(out, k, g2 != 0U);
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
}
|
45
NXDNConvolution.h
Normal file
45
NXDNConvolution.h
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2015,2016,2018 by Jonathan Naylor G4KLX
|
||||||
|
*
|
||||||
|
* This program 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 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program 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 this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(NXDNConvolution_H)
|
||||||
|
#define NXDNConvolution_H
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
class CNXDNConvolution {
|
||||||
|
public:
|
||||||
|
CNXDNConvolution();
|
||||||
|
~CNXDNConvolution();
|
||||||
|
|
||||||
|
void start();
|
||||||
|
void decode(uint8_t s0, uint8_t s1);
|
||||||
|
void chainback(unsigned char* out, unsigned int nBits);
|
||||||
|
|
||||||
|
void encode(const unsigned char* in, unsigned char* out, unsigned int nBits) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint16_t* m_metrics1;
|
||||||
|
uint16_t* m_metrics2;
|
||||||
|
uint16_t* m_oldMetrics;
|
||||||
|
uint16_t* m_newMetrics;
|
||||||
|
uint64_t* m_decisions;
|
||||||
|
uint64_t* m_dp;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
158
NXDNLookup.cpp
Normal file
158
NXDNLookup.cpp
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2016,2017,2018 by Jonathan Naylor G4KLX
|
||||||
|
*
|
||||||
|
* This program 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 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program 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 this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "NXDNLookup.h"
|
||||||
|
#include "Timer.h"
|
||||||
|
#include "Log.h"
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cctype>
|
||||||
|
|
||||||
|
CNXDNLookup::CNXDNLookup(const std::string& filename, unsigned int reloadTime) :
|
||||||
|
CThread(),
|
||||||
|
m_filename(filename),
|
||||||
|
m_reloadTime(reloadTime),
|
||||||
|
m_table(),
|
||||||
|
m_mutex(),
|
||||||
|
m_stop(false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CNXDNLookup::~CNXDNLookup()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CNXDNLookup::read()
|
||||||
|
{
|
||||||
|
bool ret = load();
|
||||||
|
|
||||||
|
if (m_reloadTime > 0U)
|
||||||
|
run();
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNXDNLookup::entry()
|
||||||
|
{
|
||||||
|
LogInfo("Started the NXDN Id lookup reload thread");
|
||||||
|
|
||||||
|
CTimer timer(1U, 3600U * m_reloadTime);
|
||||||
|
timer.start();
|
||||||
|
|
||||||
|
while (!m_stop) {
|
||||||
|
sleep(1000U);
|
||||||
|
|
||||||
|
timer.clock();
|
||||||
|
if (timer.hasExpired()) {
|
||||||
|
load();
|
||||||
|
timer.start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LogInfo("Stopped the NXDN Id lookup reload thread");
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNXDNLookup::stop()
|
||||||
|
{
|
||||||
|
if (m_reloadTime == 0U) {
|
||||||
|
delete this;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_stop = true;
|
||||||
|
|
||||||
|
wait();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string CNXDNLookup::find(unsigned int id)
|
||||||
|
{
|
||||||
|
std::string callsign;
|
||||||
|
|
||||||
|
if (id == 0xFFFFU)
|
||||||
|
return std::string("ALL");
|
||||||
|
|
||||||
|
m_mutex.lock();
|
||||||
|
|
||||||
|
try {
|
||||||
|
callsign = m_table.at(id);
|
||||||
|
} catch (...) {
|
||||||
|
char text[10U];
|
||||||
|
::sprintf(text, "%u", id);
|
||||||
|
callsign = std::string(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_mutex.unlock();
|
||||||
|
|
||||||
|
return callsign;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CNXDNLookup::exists(unsigned int id)
|
||||||
|
{
|
||||||
|
m_mutex.lock();
|
||||||
|
|
||||||
|
bool found = m_table.count(id) == 1U;
|
||||||
|
|
||||||
|
m_mutex.unlock();
|
||||||
|
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CNXDNLookup::load()
|
||||||
|
{
|
||||||
|
FILE* fp = ::fopen(m_filename.c_str(), "rt");
|
||||||
|
if (fp == NULL) {
|
||||||
|
LogWarning("Cannot open the NXDN Id lookup file - %s", m_filename.c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_mutex.lock();
|
||||||
|
|
||||||
|
// Remove the old entries
|
||||||
|
m_table.clear();
|
||||||
|
|
||||||
|
char buffer[100U];
|
||||||
|
while (::fgets(buffer, 100U, fp) != NULL) {
|
||||||
|
if (buffer[0U] == '#')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
char* p1 = ::strtok(buffer, ",\t\r\n");
|
||||||
|
char* p2 = ::strtok(NULL, ",\t\r\n");
|
||||||
|
|
||||||
|
if (p1 != NULL && p2 != NULL) {
|
||||||
|
unsigned int id = (unsigned int)::atoi(p1);
|
||||||
|
for (char* p = p2; *p != 0x00U; p++)
|
||||||
|
*p = ::toupper(*p);
|
||||||
|
|
||||||
|
m_table[id] = std::string(p2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_mutex.unlock();
|
||||||
|
|
||||||
|
::fclose(fp);
|
||||||
|
|
||||||
|
size_t size = m_table.size();
|
||||||
|
if (size == 0U)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
LogInfo("Loaded %u Ids to the NXDN callsign lookup table", size);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
53
NXDNLookup.h
Normal file
53
NXDNLookup.h
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2016,2017,2018 by Jonathan Naylor G4KLX
|
||||||
|
*
|
||||||
|
* This program 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 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program 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 this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef NXDNLookup_H
|
||||||
|
#define NXDNLookup_H
|
||||||
|
|
||||||
|
#include "Thread.h"
|
||||||
|
#include "Mutex.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
|
class CNXDNLookup : public CThread {
|
||||||
|
public:
|
||||||
|
CNXDNLookup(const std::string& filename, unsigned int reloadTime);
|
||||||
|
virtual ~CNXDNLookup();
|
||||||
|
|
||||||
|
bool read();
|
||||||
|
|
||||||
|
virtual void entry();
|
||||||
|
|
||||||
|
std::string find(unsigned int id);
|
||||||
|
|
||||||
|
bool exists(unsigned int id);
|
||||||
|
|
||||||
|
void stop();
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_filename;
|
||||||
|
unsigned int m_reloadTime;
|
||||||
|
std::unordered_map<unsigned int, std::string> m_table;
|
||||||
|
CMutex m_mutex;
|
||||||
|
bool m_stop;
|
||||||
|
|
||||||
|
bool load();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -19,8 +19,6 @@
|
||||||
#if !defined(YSFConvolution_H)
|
#if !defined(YSFConvolution_H)
|
||||||
#define YSFConvolution_H
|
#define YSFConvolution_H
|
||||||
|
|
||||||
#include "YSFConvolution.h"
|
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
class CYSFConvolution {
|
class CYSFConvolution {
|
||||||
|
|
404
nxuid_export.csv
Normal file
404
nxuid_export.csv
Normal file
|
@ -0,0 +1,404 @@
|
||||||
|
UID,Call,Name,Location,Notes,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12246,KD4ACG,Jason,"Hudson, FL",Icom Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12245,KD4ACG,Jason,"Hudson, FL",Icom Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25068,N1QD,Joe,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12204,WX3C,Juan Arias,Florida,Orlando metro,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
6801,hb9vsd,relais de verbier,verbier,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57035,VA3RQ,Jon,Oakville ON,Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
74,N2IXC,Ed,Chatsworth NJ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3452,K0KAD,CHAD TAYLOR,"SPOKANE VALLEY, WA",Mobile Radio,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3451,K0KAD,CHAD TAYLOR,"SPOKANE VALLEY, WA",My Base Station,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3450,K0KAD,CHAD TAYLOR,"SPOKANE VALLEY, WA",My Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12016,K4NBC,Miguel,"Palm Bay, Florida",M2 Icom F6061D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57034,VE3DJZ,Huey,"Hamilton, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57033,VE3DJZ,Huey,"Hamilton, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57032,VE3AEP,Dom 2,"Toronto, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57031,VE3KFQ,Doug,"Toronto, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57030,VE3KFQ,Doug,"Toronto, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57029,VA3KY,Shelly,"Thornhill, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57028,VA3KY,Shelly,"Thornhill, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57027,VA3VAD,Arpad,"Hamilton, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57026,VA3PAD,Andrew,"Scarborough, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57025,VA3PAD,Andrew,"Scarborough, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57024,VA3CQA,Brian,"Scarborough, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57023,ve3ips,John,"Toronto, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57022,ve3fkn,Tom,"Stoney Creek, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57021,va3wjo,Walter,"Toronto, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57020,VA3PEO,Adrian,"Toronto, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57019,VE3AEP,Dom,"Toronto, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57018,VE3RZR,Richard,"Toronto, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57017,VE3UBI,Paul,"Scarborough, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57016,VE3UBI,Paul,"Scarborough, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57015,VE3HY,Frank,"Caledon, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57014,VE3BWP,Brian,"Caledon, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57013,VA3AGV,cottage,"Toronto, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57012,VA3WZW,Andre,"Durham, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57011,VA3WZW,Andre,"Durham, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57010,va3mk,Mark,"Oakville, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57009,va3mk,Mark,"Oakville, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57008,ve3ogb,Randy,"Toronto, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57007,va3rq,Jon,"Oakville, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57006,VE3JLU,Sherwin,"Scarborough, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57005,VE3NBI,Anoop,"Scarborough, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57004,VE3CCD,Curtis,"Scarborough, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57003,VE3OKZ,Janusz,"Toronto, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57002,VE3OKZ,Janusz,"Toronto, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57001,VE3SP,Andre,"Toronto, ON",handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57000,VE3SP,Andre,"Toronto, ON",mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25901,N1MRC,Matt,"Bridgewater, MA",N1MRC P-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
4020,K4XXX,Ed,"London, KY",NX820 Base,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
24020,K4XXX,Ed,"London, KY",NX5800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
24021,K4XXX,Ed,"London, KY",NX5700,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
14020,K4XXX,Ed,"London, KY",NX5300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
14021,K4XXX,Ed,"London, KY",NX5200,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1066,KM4JXP,Peter Tasker,Longboat Key,NX5300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
995,K1IFF/Base,Cliff,"Brsitol, CT",NXR710 link radio,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
28001,K3KRS,rYAN,CLEVLAND,OHIO,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1954,W4BPT,BILLY TAYLOR,"RINGGOLD,GA.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5101,KC5YQB,Paul Blair,"Fayetteville, AR",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5100,K5SRS,Michael Smith,"Fayetteville, AR",NX-5800 Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
40124,N5YEI,Jeff Dalrymple,"Jay, Oklahoma",NX-5300 Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
40024,N5YEI,Jeff Dalrymple,"Jay, Oklahoma",NX-5800 Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1997,KC1AJR,Giovanni,East Hampton CT,kenwood NX800 K2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
9,KE8BGA,Lowell Katz,"Cleveland, Ohio","on the north shore, NX-800",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12015,K4NBC,K4NBC-Miguel UHF Mobile,"Palm Bay, Florida",Future UHF Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12014,K4NBC,Miguel Orama,"Palm Bay, Florida",Kenwood NX200 VHF HT,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12013,K4NBC,Miguel Orama,"Palm Bay, Florida",Icom F4146DS UHF Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
30571,WX4RCF,Ryan F.,"Tampa, FL",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
27202,KP4OO,Carlos,"Palm Bay, FL",Icom Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
27102,KP4OO,Carlos,"Palm Bay, FL",Icom Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
27201,KI4SWB,Mark,"Melbourne Beach, FL",Icom Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
27101,KI4SWB,Mark,"Melbourne Beach, FL",Icom Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
49106,WX7Y-6,Bret Mills,Castle Dale,WX7Y-6 Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
49104,WX7Y-4,Bret Mills,"Castle Dale, Utah",WX7Y-4 Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
49102,WX7Y-2,Bret Mills,"Caslte Dale, Utah",WX7Y-2 Hand held,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
49101,WX7Y-1,Bret Mills,Castle Dale Utah,WX7y-1 Hand Held 1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
6802,HB9YRB,Alex,Verbier,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
6804,HB9FMF,Didier,Rougemont,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12234,KD4TWJ,Dean,EL98,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
980,W1RHS,Rick,Connecticut,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3112205,N2HUC,Phil Roberts,"Port St. Lucie, FL",DV4MINI AMBE voice,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
31146,KD2KWD,Michael Santamaria,"Brandon, FL",Kenwood,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
4804,hb9fmf,Didier,Rougemont,NX5300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
4802,hb3yrb,Alex,Verbier,nx5300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1966,ZS6IIX,Henry,Petit South Africa,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5151,KC6HFJ,Tamara,"Los Angeles, CA",NX-300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5150,WY6NN,Doug,"Los Angeles, CA",NX-300/5300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5125,AE5OQ,Armstead,"Higden, AR",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3280,KD4EFM,Evans,"Lakeland, Florida",work radio,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25585,N1AVA,Ken Howland,"DARTMOUTH,MA",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25582,N1KXJ,Ray,"E. Bridgewater, MA.",Port.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3118365,NA9VY,Chris Gilbert,"New Palestine, IN",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3142058,N3BAH,L. Abraham Smith,Southwestern Pennsylvania,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3118366,N9UMJ,Rick Nicholson,Buddha Indiana,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3106418,N5ICK,Nicholas Nixon,"Rialto, Ca",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
141,KF2M,Greg Popovich,"Mt Laurel, NJ",IC-F4161DT,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
37009,KA4YMY,Steve,"Charlotte, NC",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
37010,KA4YMY,Steve,"Charlotte, NC",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25022,KE5UZU,Raymond Prince,"England, AR",Icom Handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25021,KE5UZU,Raymond Prince,"England, AR",Kenwood Handheld,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3079,NN4TT,Dave,Orlando,NX300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25125,N1TI,Tim,"Mattapoisett, MA",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25246,WG1U,Ken,"Assonet, MA",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25125,N1TI,Tim,"Mattapoisett, MA",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
37010,KA4YMY,Steve,"Charlotte, NC",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
7,F1PRY,Emmanuel,BEAUVAIS FR,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25700,NN1D,Tony Souza,"Swansea, MA",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1008,DK6PX,Stefan,Germany nr Bad Toelz,Coming up FR6000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25582,N1KXJ,Ray Wall,East Bridgewater,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
17,KC2SNI,Jim Hannon,"West Berlin, New Jersey",My Radio is an Icom IC-3161DT,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
80,W2FLY/M,Harry,Southern NJ,VHF NX-5700 mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
88,W2FLY/P,Harry,Southern NJ,VHF NX-220 portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
85,W2FLY/M,Harry,Southern NJ,VHF NX_700 van,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
86,W2FLY,Harry,"Mullica Hill, NJ",VHF NX-700 base,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
87,W2FLY/M,Harry,Southern NJ,VHF NX-700 mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
82,W2FLY/P,Harry,"Somers Point, NJ",VHF NX-700 Shore Base,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
89,WB2RUH,Bruce,Vineland NJ,VHF NX-700 base,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
26,WB2RUH/M,Bruce,Southern NJ,UHF NX-800 mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25,WB2RUH/P,Bruce,Southern NJ,UHF NX-320,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
8,W2FLY/P,Harry,Southern NJ,UHF NX-820 Port 2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
4,W2FLY/M,Harry,Southern NJ,UHF NX-800 Van,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
2,W2FLY/M,Harry,Southern NJ,UHF NX-800 mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3,WB2OOM/M,Tina,Southern NJ,UHF NX-800 Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
76,W2FLY/P,Harry,Southern NJ,UFH NX5300 Port 1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
77,W2FLY/P,Harry,"Somers Point, NJ",UHF NX-800 Shore Base,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
78,W2FLY,Harry,"Mullica Hill, NJ",UHF NX-800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
79,W2FLY/M,Harry,Southern NJ,UHF NX-5800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
36134,N2SRO,Mike,"Pitman, NJ",Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
134,N2SRO,Mike,Pitman,Mobile Radio,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5125,AE5OQ,Armstead,AR,entered by k1iff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25830,KB1CHU,Steve,MA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12010,kd4dwp,Ben,Orlando,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
972,N1ODJ,Kenny Schmitz,Middletown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
909,AB1UB V,Woody,"Bristol, CT",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1956,KC7SDD,Dana Hanford,"Bainbridge Island, WA","Member BARC, W7NPC.org",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1963,N5JRN,David Barts,"Bainbridge Island, WA","Handheld, Icom 4161",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
44002,K2BUI,Eric,"Providence, RI",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
30505,KG6MQE,Jim,MT,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
17855,AG6RN,Demian,CA,NX-210,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13815,KG4BKO,Bill,GA,nx320,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
973,W1VLF,Paul,CT,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1010,KE4GWW,James,AL,NX800 Mobile#2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1009,KE4GWW,James,AL,NX800 Mobile#1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1008,KE4GWW,James,AL,NX700 Mobile#2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1006,KE4GWW,James,AL,NX800 Base,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1005,KE4GWW,James,AL,NX700 Base,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1004,KE4GWW,James,AL,NX300 Portable #2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1003,KE4GWW,James,AL,NX300 Portable #1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1002,KE4GWW,James,AL,NX200 Portable #2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1001,KE4GWW,James,AL,NX200 Portable #1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
971,N1ELE,Paul,CT,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
970,KB1VRI,Nick,CT,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1007,KE4GWW,James M. Nelson,"Dothan, AL",NX700 Mobile#1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
909,AB1UB,Woody,"Bristol, CT",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
952,K1KGQ,Joel,CT,Truck radio,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
134,N2SRO,Mike,NJ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
55704,WB9HKE,Rick,WI,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
55700,WB9HKE,Rick,WI,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
44001,K2BUI,Eric,RI,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57002,VE3EI,Eric,,Eric - Dongle,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57001,VE3EI,Eric,,Eric - Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
44298,N1JBC,Jed,,JED,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
44007,W2DAN,Dave,,Dave - NX700,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
43751,N4IRS,Steve,,Steve,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
37001,KA4YMY,Steve,NC,"Steve, Charlotte, NC NX320",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
36003,KC2VOB,Asad,NY,"Asad, NYC, NX-300GK",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
36002,KC2VOB,Asad,NY,"Asad, NYC, NX-5800",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
36001,W2CCR,Chris,NY,"Chris, Galway, NY NX300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
34002,N2WNS,Bill,NJ,N2WNS Base,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
34001,N2WNS,Bill,NJ,N2WNS Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
33002,N1PA,Paul,NH,PAUL - NEW HAMPSHIRE,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
33001,N1PA,Paul,NH,PAUL - NEW HAMPSHIRE,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
33000,N1PA-R,Paul,NH,PAUL - NEW HAMPSHIRE REPEATER,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
31117,K4QHR,Pete,,Pete,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25957,KC1HO,Steve,,STEVE,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25901,N1ZZR,Matt,,Matt,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25900,N1ZZR,Matt,,Matt - mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25889,AB1CQ,Gary,,Gary,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25888,K1WGU,Bob,,Bob,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25874,KB1KVD,Jason,,Jason - Icom Mob & Port,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25863,N1ZZN,Jeff,,JEFF,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25777,W1BON,Bump,,Bump,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25746,N1OTY,John,,JOHN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25743,WG1U,Kenny,,KEN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25740,WG1U,Kenny,,KEN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25555,WA1MNQ,Mike,,Mike,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25444,W1TAV,Steve,,Steve,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25390,KC1JET,Jim,,JIM (MOBILE),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25390,KC1JET,Jim,,JIM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25333,W1AKN,Jack,,Jack Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25222,KE4SDC,Ron,,Ron - Portable NX300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25221,N0XIA,James,,James - Kenwood Mobile and Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25144,W1WCF,Walter,,Walter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25070,WD1L,John,,John,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25069,N1COP,Bob,,Bob,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25039,KC1JET,Jim,,JIM (BASE),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25035,KG5BMB,Glenda,AR,"KG5BMB, Glenda McCord, Searcy, AR, Icom F4161DS",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25034,KF5TPF,Ryan,AR,"KF5TPF, Ryan Nelson, Edgemont, AR - ICOM 4161",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25033,AF5OD,Landon,AR,"AF5OD, Landon McCord, Searcy, AR, Icom F4161DS",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25032,KC5DFH,Kirk,AR,"KC5DFH, Kirk Williams, Searcy, AR - Kenwood NX-340",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25031,KJ5SF,Stan,AR,"KJ5SF, Stan Rongey, Searcy, AR - Kenwood NX-340",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25030,AC5AV,Larry,AR,"AC5AV, Larry Sicks, Searcy, AR",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25029,KF5WHX,Trey,AR,"KF5WHX, Trey Ferguson, Searcy, AR - Kenwood NX-320",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25028,WA8UBL,Allen,AR,"WA8UBL, Allen Herrick, Beebe, AR - Kenwood NX-220",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25027,KF5TPF,Ryan,AR,"KF5TPF, Ryan Nelson, Edgemont, AR - Kenwood NX-200",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25026,WA8UBL,Allen,AR,"WA8UBL, Allen Herrick, Beebe, AR - Kenwood NX-320",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25025,KJ5ORD,John,AR,"KJ5ORD, John Ord, Searcy, AR - Kenwood NX-xxx VHF",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25024,KG5CHM,Colt,AR,"KG5CHM, Colt Boyd, Searcy, AR - Kenwood NX-300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25023,KE5YZP,Ryan,AR,"KE5YZP, Ryan A Schwarck, Batesville, AR - Icom",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25022,KE5YZP,Ryan,AR,"KE5YZP, Ryan A Schwarck, Batesville, AR - Icom",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25021,AF5OD,Landon,AR,"AF5OD, Landon McCord, Searcy, AR",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25020,KB5ZUH,Todd,AR,"KB5ZUH, Todd Williams, Searcy, AR - Kenwood NX-320",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25019,KB5ZUH,Todd,AR,"KB5ZUH, Todd Williams, Searcy, AR - Kenwood NX-340",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25018,KB5ZUH,Todd,AR,"KB5ZUH, Todd Williams, Searcy, AR - Kenwood NX-340",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25017,KB5ZUH,Todd,AR,"KB5ZUH, Todd Williams, Searcy, AR - Kenwood NX-320",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25016,KB5RFF,Scott,AR,"KB5RFF, Scott Gray, Searcy, AR - Kenwood NX-300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25015,KJ5ORD,John,AR,"KJ5ORD, John Ord, Searcy, AR - Kenwood NX-300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25014,N5LKE,James,AR,"N5LKE, James Ferguson, Searcy, AR - Kenwood NX-5300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25013,KK5WA,Darin,AR,"KK5WA, Darin Dykes, Beebe, AR - Kenwood NX-320",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25012,KD5HRT,Heath,AR,"KD5HRT, Heath Taylor, McRae, AR - Kenwood NX-300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25011,W5ZN,Joel,AR,"W5ZN, Joel Harrison, Judsonia, AR - Kenwood NX-300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25010,KD5OOW,Tom,AR,"KD5OOW, Tom McGee, Searcy, AR - Kenwood NX-300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25009,AC5AV,Larry,AR,"AC5AV, Larry Sicks, Searcy, AR - Kenwood NX-300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25008,N5QT,Dawn,AR,"N5QT, Dawn Gray, Searcy, AR - Kenwood NX-200",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25007,N5QT,Dawn,AR,"N5QT, Dawn Gray, Searcy, AR - Kenwood NX-300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25006,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-340U",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25005,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-320",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25004,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-200",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25003,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25002,N5QZ,Ryan,AR,"N5QZ, Ryan McAfee, Searcy, AR - Kenwood NX-200",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25001,N5QZ,Ryan,AR,"N5QZ, Ryan McAfee, Searcy, AR - Kenwood NX-300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
21014,K2BUI,Eric,,Eric,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
21007,WA1LMV,Rick,,Rick,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
17011,N9BRG,Dan,,Dan kenwood nx800k2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
17009,KC9PHK,Michael,,F4061DS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
17008,KC9RHH,Jesse,,F4101D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
17007,KC9NPJ,Jarrett,,Jarrett F4231DS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
17006,KC9GMX,Stephen,,Stephen - F4161DS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
17005,KC9NPJ,Jarrett,,Jarrett F6121D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
17004,KC9GMX,Stephen,,Stephen - F6061D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
17002,KC9GMX,Stephen,,Stephen - Base F6121D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15027,KB5RFF,Scott,AR,"KB5RFF, Scott Gray, Searcy, AR - Kenwood NX-800",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15026,AF5OD,Landon,AR,"AF5OD, Landon McCord, Searcy, AR",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15025,KE5YZP,Ryan,AR,"KE5YZP, Ryan Schwarck, Batesville, AR NX-700",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15024,KF5TPF,Ryan,AR,"KF5TPF, Ryan Nelson, Edgemont, AR NX-700",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15023,N5ZA,Joel,AR,"N5ZA, Joe Belew, Beebe, AR - Kenwood NX-700",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15022,WA8UBL,Allen,AR,"WA8UBL, Allen Herrick, Beebe, AR - Kenwood NX-800",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15021,KD5HRT,Heath,AR,"KD5HRT, Heath Taylor, McRae, AR, Kenwood NX-800",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15020,WA8UBL,Allen,AR,"WA8UBL, Allen Herrick, Beebe, AR, Kenwood NX-700",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15019,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR ATV Mobile",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15018,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR ATV Mobile",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15017,KG5KS,Kenny,,"KG5KS, Kenny Thompson - Kenwood NX-800HK",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15016,KG5KS,Kenny,,"KG5KS, Kenny Thompson - Kenwood NX-700HK",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15015,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR Motorcycle Mobile",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15014,N5QT,Dawn,AR,"N5QT, Dawn Gray, Searcy, AR - Kenwood NX-700",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15013,AC5AV,Larry,AR,"AC5AV, Larry Sicks, Searcy, AR - Kenwood NX-700",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15012,AC5AV,Larry,AR,"AC5AV, Larry Sicks, Searcy, AR - Kenwood NX-800",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15011,N5QT,Dawn,AR,"N5QT, Dawn Gray, Searcy, AR - Kenwood NX-800",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15010,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-700 (Vehicle 3)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15009,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-800 (Vehicle 3)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15008,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-700 (Vehicle 2)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15007,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-800 (Vehicle 2)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15006,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-700 (Vehicle 1)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15005,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-800 (Vehicle 1)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15004,N5QZ,Ryan,AR,"N5QZ, Ryan McAfee, Searcy, AR - Kenwood NX-700 (Vehicle 2)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15003,N5QZ,Ryan,AR,"N5QZ, Ryan McAfee, Searcy, AR - Kenwood NX-800 (Vehicle 2)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15002,N5QZ,Ryan,AR,"N5QZ, Ryan McAfee, Searcy, AR - Kenwood NX-700 (Vehicle 1)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15001,N5QZ,Ryan,AR,"N5QZ, Ryan McAfee, Searcy, AR - Kenwood NX-800H (Vehicle 1)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13401,W1KFR,Bill,,Bill,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13132,W5JR,Mike,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13131,W5JR,Mike,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13127,KD4APP,Don,,Don - NX200,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13126,KD4APP,Don,,Don - F6061D,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13125,KD4APP,Don,,Don - NX300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13122,W4CML,Chuck,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13121,W4CML,Chuck,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13107,W7QO,Alan,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13106,W7QO,Alan,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13105,W7QO,Alan,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12780,KC4YUA,Brett,,BRETT,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12691,KE3WDW,Sam,,Sam,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12666,KI4SWY,William,,William Stillwel ( All Radios ),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12608,K4CBN,Greg,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12607,K4CBN,Greg,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12606,K4CBN,Greg,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12605,K4CBN,Greg,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12604,K4CBN,Greg,,GREG,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12577,N2DLX,Richard,,Rich Dunajewski NX-5800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12523,KM4JVE,Ana,,Ana - IC-F4161,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12375,KF4I,Thom,,Thom Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12374,KF4I,Thom,,Thom Base,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12273,KE4OSL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12272,KE4OSL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12250,KE4GYX,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12247,K2MCI,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12246,KD4ACG,Jason,,JASON,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12245,KD4ACG,Jason,,JASON,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12241,KR4X,Larry,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12240,KR4X,Larry,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12236,N1IC,Nick,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12235,N1IC,Nick,,Nic,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12231,KQ4KX,Richard,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12230,KQ4KX,Richard,,Richard Sharp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12226,KI4SWY,William,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12223,W4PJT,Paul,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12222,W4PJT,Paul,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12221,N4PK,Paul,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12220,N4PK,Paul,,PAUK K.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12216,WA4ISB,Ed,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12215,WA4ISB,Ed,,ED Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12214,N4APG,Bill,,Bill Pfost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12213,N4APG,Bill,,Bill Pfost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12212,N4APG,Bill,,Bill Pfost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12211,N4APG,Bill,,Bill Pfost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12210,N4APG,Bill,,Bill Pfost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12204,NB9X,Paul,FL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12203,NB9X,Paul,FL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12202,NB9X,Paul,FL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12201,NB9X,Paul,FL,PAUL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12200,NB9X,Paul,FL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12136,WA4KWK,John,,John F6121,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12127,W4KDM,Rick,,Rick - Portable NX300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12023,KD4NWL,John,,JOHN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12021,W4PJT,Paul,,Paul,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12017,N4JFZ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12007,W4MO,Stewart,,STEWART NX800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12006,W4MO,Stewart,,STEWART NX300 / 320,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12005,KD4TWJ,Dean,,Dean - Portable IC-F4161,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12002,W4KJP,Kevin,,KEVIN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
9834,VA7NY,PJ,,PJ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
7737,N4NKV,George,,George,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
6439,N4NKV,George,,George,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
6432,K4GFD,Norm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
6431,K4GFD,Norm,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
6430,K4GFD,Norm,FL,Norm Greensboro Fla,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5987,W5ZN,Joel,AR,"W5ZN, Joel Harrison, Judsonia, AR - Kenwood NX-800",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5599,W1ZM,Ryan,,"W1ZM, Ryan Nelson, NX-5300",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5170,K5WMZ,Gary,AR,"K5WMZ, Gary D Partlow, Ward, AR - Kenwood NX-700",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5134,AE5OQ,Armstead,AR,"AE5OQ, Armstead M Feland, IV, Higdon, AR - Kenwood NX-200",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5009,KJ5SF,Stan,AR,"KJ5SF, Stan Rongey, Searcy, AR - Kenwood NX-800",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5008,AF5WN,Mason,AR,"AF5WN, Mason Creager, Cabot, AR - Kenwood NX-700H",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5007,N5LKE,James,AR,"N5LKE, James Ferguson, Searcy, AR - Kenwood NX-800",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5006,AC5AV,Larry,AR,"AC5AV, Larry Sicks, Searcy, AR",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5005,AC5AV,Larry,AR,"AC5AV, Larry Sicks, Searcy, AR",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5004,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-720",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5003,N5QS,Roger,AR,"N5QS, Roger Gray, Searcy, AR - Kenwood NX-820",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5002,N5QZ,Ryan,AR,"N5QZ, Ryan McAfee, Searcy, AR - Kenwood NX-720",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5001,N5QZ,Ryan,AR,"N5QZ, Ryan McAfee, Searcy, AR - Kenwood NX-820",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3281,N4KEG,Richard,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3280,KD4EFM,Evans,FL,Evans Mobile(s),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3280,KD4EFM,Evans,FL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3279,N4KEG,Richard,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3278,KD4EFM,Evans,FL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3275,KD4EFM,Evans,FL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3274,KD4EFM,Evans,FL,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3271,N4KEG,Richard,,RICHARD - Mobile and or ht's N4KEG (UHF),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3083,KD4TWJ,Dean,,Dean - Mobile NX800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3082,W4LOV,Mike,,Mike - Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3081,W4MCA,Michael,,Michael - NX800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3079,W4ORL,Ralph,,Ralph - Portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3075,W4LOV,Mike,,Mike - NX800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3074,W4MCA,Michael,,Michael - NX300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3072,N4JTK,John,,John - NX800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3071,W4LOV,Mike,,Mike - NX800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3070,W4ORL,Ralph,,Ralph - Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
970,KB1VRI,Nick,,Nick,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
963,N1MAT,Dennis,,Dennis F4161,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
962,N1MAT,Dennis,,Dennis F4161,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
961,WA1SSB,Joe,,Joe NX800H,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
960,K1ZXX,Gary,,Gary - Icom All radios,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
959,K1KGQ,Joel,,Future,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
958,K1KGQ,Joel,,Joel F4161,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
957,K1KGQ,Joel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
956,K1KGQ,Joel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
955,K1KGQ,Joel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
954,K1KGQ,Joel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
953,K1KGQ,Joel,,Joel NX320-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
952,K1GML,Gail,,Gail NX800H,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
951,K1KGQ,Joel,,Joel NX800H,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
936,W1GPO,John,,NX300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
931,K1IFF,Cliff,CT,NX300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
930,K1IFF,Cliff,CT,NX300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
928,N1XDN,Bob,CT,Icom portable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
926,N1XDN,Bob,CT,Bob M1 UHF NX-5800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
925,N1XDN,Bob,CT,Bob P2 VHF NX-5200,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
924,N1XDN,Bob,CT,Bob P3 UHF NX-5300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
923,N1XDN,Bob,CT,Bob M1 VHF NX700,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
922,N1XDN,Bob,CT,Bob P2 UHF NX300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
921,N1XDN,Bob,CT,Bob P1 VHF NX220,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
920,N1XDN,Bob,CT,Bob P1 UHF NX300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
912,W4CCL,Chuck,,CHUCK,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
911,W4CLL,Chuck,,CHUCK,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
910,W4CLL,Chuck,,CHUCK,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
909,AB1UB,Woody,,Woody NX300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
909,W4CCL,Chuck,,CHUCK,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
908,W4CLL,Chuck,,CHUCK,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
907,K1IFF,Cliff,CT,Future,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
906,K1IFF,Cliff,CT,Cliff NX200,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
905,WA1LMV,Rick,,Rick NX320,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
903,K1IFF,Cliff,CT,Cliff NX800H,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
902,K1IFF,Cliff,CT,Cliff NX320 - demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
901,K1IFF,Cliff,CT,Cliff NX320,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
401,W1KFR,Bill,,Bill,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
99,K1ZSG,Don,,Mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
30,KD4MOJ,Doug,,Doug,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
Loading…
Reference in a new issue