diff --git a/MMDVMHost.vcxproj b/MMDVMHost.vcxproj
index 3226440..21583f8 100644
--- a/MMDVMHost.vcxproj
+++ b/MMDVMHost.vcxproj
@@ -197,9 +197,12 @@
+
+
+
@@ -276,10 +279,13 @@
+
+
+
diff --git a/MMDVMHost.vcxproj.filters b/MMDVMHost.vcxproj.filters
index 2556afd..c0b4ae1 100644
--- a/MMDVMHost.vcxproj.filters
+++ b/MMDVMHost.vcxproj.filters
@@ -254,6 +254,15 @@
Header Files
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
@@ -475,5 +484,14 @@
Source Files
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 268ca00..9176107 100644
--- a/Makefile
+++ b/Makefile
@@ -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 \
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 \
- 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 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 YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
+ NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.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 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 YSFPayload.o
all: MMDVMHost
diff --git a/Makefile.Pi b/Makefile.Pi
index ae6ca5f..900cfc0 100644
--- a/Makefile.Pi
+++ b/Makefile.Pi
@@ -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 \
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 \
- 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 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 YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
+ NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.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 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 YSFPayload.o
all: MMDVMHost
diff --git a/Makefile.Pi.Adafruit b/Makefile.Pi.Adafruit
index 5a8c469..a46caee 100644
--- a/Makefile.Pi.Adafruit
+++ b/Makefile.Pi.Adafruit
@@ -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 \
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 \
- 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 \
- 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 \
- YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
+ NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.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 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 YSFPayload.o
all: MMDVMHost
diff --git a/Makefile.Pi.HD44780 b/Makefile.Pi.HD44780
index 9b9f93e..5bde70a 100644
--- a/Makefile.Pi.HD44780
+++ b/Makefile.Pi.HD44780
@@ -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 \
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 \
- 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 \
- 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 \
- YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
+ NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.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 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 YSFPayload.o
all: MMDVMHost
diff --git a/Makefile.Pi.OLED b/Makefile.Pi.OLED
index a1f0a79..e8b4e5e 100644
--- a/Makefile.Pi.OLED
+++ b/Makefile.Pi.OLED
@@ -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 \
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 \
- 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 \
- 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 \
- YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
+ NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.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 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 YSFPayload.o
all: MMDVMHost
diff --git a/Makefile.Pi.PCF8574 b/Makefile.Pi.PCF8574
index c649e3f..d4dacca 100644
--- a/Makefile.Pi.PCF8574
+++ b/Makefile.Pi.PCF8574
@@ -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 \
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 \
- 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 \
- 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 \
- YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
+ NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.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 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 YSFPayload.o
all: MMDVMHost
diff --git a/Makefile.Solaris b/Makefile.Solaris
index d156696..3a93712 100644
--- a/Makefile.Solaris
+++ b/Makefile.Solaris
@@ -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 \
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 \
- 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 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 YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
+ NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.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 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 YSFPayload.o
all: MMDVMHost
diff --git a/NXDNFACCH1.cpp b/NXDNFACCH1.cpp
new file mode 100644
index 0000000..89ae008
--- /dev/null
+++ b/NXDNFACCH1.cpp
@@ -0,0 +1,73 @@
+/*
+* Copyright (C) 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 "NXDNFACCH1.h"
+
+#include "NXDNConvolution.h"
+#include "NXDNDefines.h"
+#include "NXDNCRC.h"
+#include "Utils.h"
+#include "Log.h"
+
+#include
+#include
+#include
+
+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])
+
+CNXDNFACCH1::CNXDNFACCH1(const CNXDNFACCH1& facch1)
+{
+}
+
+CNXDNFACCH1::CNXDNFACCH1()
+{
+}
+
+CNXDNFACCH1::~CNXDNFACCH1()
+{
+}
+
+bool CNXDNFACCH1::decode(const unsigned char* data)
+{
+ assert(data != NULL);
+
+ return true;
+}
+
+void CNXDNFACCH1::encode(unsigned char* data) const
+{
+ assert(data != NULL);
+}
+
+void CNXDNFACCH1::getData(unsigned char* data) const
+{
+ assert(data != NULL);
+}
+
+void CNXDNFACCH1::setData(const unsigned char* data)
+{
+ assert(data != NULL);
+}
+
+CNXDNFACCH1& CNXDNFACCH1::operator=(const CNXDNFACCH1& facch1)
+{
+ return *this;
+}
diff --git a/NXDNFACCH1.h b/NXDNFACCH1.h
new file mode 100644
index 0000000..dfa41ca
--- /dev/null
+++ b/NXDNFACCH1.h
@@ -0,0 +1,40 @@
+/*
+* Copyright (C) 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(NXDNFACCH1_H)
+#define NXDNFACCH1_H
+
+class CNXDNFACCH1 {
+public:
+ CNXDNFACCH1(const CNXDNFACCH1& facch);
+ CNXDNFACCH1();
+ ~CNXDNFACCH1();
+
+ bool decode(const unsigned char* data);
+
+ void encode(unsigned char* data) const;
+ void getData(unsigned char* data) const;
+
+ void setData(const unsigned char* data);
+
+ CNXDNFACCH1& operator=(const CNXDNFACCH1& facch);
+
+private:
+};
+
+#endif
diff --git a/NXDNFACCH2.cpp b/NXDNFACCH2.cpp
new file mode 100644
index 0000000..fc53d22
--- /dev/null
+++ b/NXDNFACCH2.cpp
@@ -0,0 +1,82 @@
+/*
+* Copyright (C) 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 "NXDNFACCH2.h"
+
+#include "NXDNConvolution.h"
+#include "NXDNDefines.h"
+#include "NXDNCRC.h"
+#include "Utils.h"
+#include "Log.h"
+
+#include
+#include
+#include
+
+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])
+
+CNXDNFACCH2::CNXDNFACCH2(const CNXDNFACCH2& facch2)
+{
+}
+
+CNXDNFACCH2::CNXDNFACCH2()
+{
+}
+
+CNXDNFACCH2::~CNXDNFACCH2()
+{
+}
+
+bool CNXDNFACCH2::decode(const unsigned char* data)
+{
+ assert(data != NULL);
+
+ return true;
+}
+
+void CNXDNFACCH2::encode(unsigned char* data) const
+{
+ assert(data != NULL);
+}
+
+unsigned char CNXDNFACCH2::getRAN() const
+{
+ return 0U;
+}
+
+void CNXDNFACCH2::getData(unsigned char* data) const
+{
+ assert(data != NULL);
+}
+
+void CNXDNFACCH2::setRAN(unsigned char ran)
+{
+}
+
+void CNXDNFACCH2::setData(const unsigned char* data)
+{
+ assert(data != NULL);
+}
+
+CNXDNFACCH2& CNXDNFACCH2::operator=(const CNXDNFACCH2& facch2)
+{
+ return *this;
+}
diff --git a/NXDNFACCH2.h b/NXDNFACCH2.h
new file mode 100644
index 0000000..cbe8c6a
--- /dev/null
+++ b/NXDNFACCH2.h
@@ -0,0 +1,45 @@
+/*
+* Copyright (C) 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(NXDNFACCH2_H)
+#define NXDNFACCH2_H
+
+class CNXDNFACCH2 {
+public:
+ CNXDNFACCH2(const CNXDNFACCH2& facch);
+ CNXDNFACCH2();
+ ~CNXDNFACCH2();
+
+ bool decode(const unsigned char* data);
+
+ void encode(unsigned char* data) const;
+
+ unsigned char getRAN() const;
+
+ void getData(unsigned char* data) const;
+
+ void setRAN(unsigned char ran);
+
+ void setData(const unsigned char* data);
+
+ CNXDNFACCH2& operator=(const CNXDNFACCH2& facch);
+
+private:
+};
+
+#endif
diff --git a/NXDNSACCH.h b/NXDNSACCH.h
index d421fa9..c3d7490 100644
--- a/NXDNSACCH.h
+++ b/NXDNSACCH.h
@@ -39,7 +39,7 @@ public:
void setData(const unsigned char* data);
- CNXDNSACCH& operator=(const CNXDNSACCH& fich);
+ CNXDNSACCH& operator=(const CNXDNSACCH& sacch);
private:
unsigned char* m_data;
diff --git a/NXDNUDCH.cpp b/NXDNUDCH.cpp
new file mode 100644
index 0000000..05b861a
--- /dev/null
+++ b/NXDNUDCH.cpp
@@ -0,0 +1,73 @@
+/*
+* Copyright (C) 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 "NXDNUDCH.h"
+
+#include "NXDNConvolution.h"
+#include "NXDNDefines.h"
+#include "NXDNCRC.h"
+#include "Utils.h"
+#include "Log.h"
+
+#include
+#include
+#include
+
+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])
+
+CNXDNUDCH::CNXDNUDCH(const CNXDNUDCH& udch)
+{
+}
+
+CNXDNUDCH::CNXDNUDCH()
+{
+}
+
+CNXDNUDCH::~CNXDNUDCH()
+{
+}
+
+bool CNXDNUDCH::decode(const unsigned char* data)
+{
+ assert(data != NULL);
+
+ return true;
+}
+
+void CNXDNUDCH::encode(unsigned char* data) const
+{
+ assert(data != NULL);
+}
+
+void CNXDNUDCH::getData(unsigned char* data) const
+{
+ assert(data != NULL);
+}
+
+void CNXDNUDCH::setData(const unsigned char* data)
+{
+ assert(data != NULL);
+}
+
+CNXDNUDCH& CNXDNUDCH::operator=(const CNXDNUDCH& udch)
+{
+ return *this;
+}
diff --git a/NXDNUDCH.h b/NXDNUDCH.h
new file mode 100644
index 0000000..5b28ac9
--- /dev/null
+++ b/NXDNUDCH.h
@@ -0,0 +1,41 @@
+/*
+* Copyright (C) 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(NXDNUDCH_H)
+#define NXDNUDCH_H
+
+class CNXDNUDCH {
+public:
+ CNXDNUDCH(const CNXDNUDCH& udch);
+ CNXDNUDCH();
+ ~CNXDNUDCH();
+
+ bool decode(const unsigned char* data);
+
+ void encode(unsigned char* data) const;
+
+ void getData(unsigned char* data) const;
+
+ void setData(const unsigned char* data);
+
+ CNXDNUDCH& operator=(const CNXDNUDCH& udch);
+
+private:
+};
+
+#endif