mirror of
https://github.com/g4klx/MMDVMHost.git
synced 2025-12-06 05:32:00 +01:00
Remove FACCH2 processing and add voice body processing.
This commit is contained in:
parent
ba31b6d8a7
commit
d8086e468c
|
|
@ -198,7 +198,6 @@
|
||||||
<ClInclude Include="NXDNCRC.h" />
|
<ClInclude Include="NXDNCRC.h" />
|
||||||
<ClInclude Include="NXDNDefines.h" />
|
<ClInclude Include="NXDNDefines.h" />
|
||||||
<ClInclude Include="NXDNFACCH1.h" />
|
<ClInclude Include="NXDNFACCH1.h" />
|
||||||
<ClInclude Include="NXDNFACCH2.h" />
|
|
||||||
<ClInclude Include="NXDNLayer3.h" />
|
<ClInclude Include="NXDNLayer3.h" />
|
||||||
<ClInclude Include="NXDNLICH.h" />
|
<ClInclude Include="NXDNLICH.h" />
|
||||||
<ClInclude Include="NXDNLookup.h" />
|
<ClInclude Include="NXDNLookup.h" />
|
||||||
|
|
@ -281,7 +280,6 @@
|
||||||
<ClCompile Include="NXDNConvolution.cpp" />
|
<ClCompile Include="NXDNConvolution.cpp" />
|
||||||
<ClCompile Include="NXDNCRC.cpp" />
|
<ClCompile Include="NXDNCRC.cpp" />
|
||||||
<ClCompile Include="NXDNFACCH1.cpp" />
|
<ClCompile Include="NXDNFACCH1.cpp" />
|
||||||
<ClCompile Include="NXDNFACCH2.cpp" />
|
|
||||||
<ClCompile Include="NXDNLayer3.cpp" />
|
<ClCompile Include="NXDNLayer3.cpp" />
|
||||||
<ClCompile Include="NXDNLICH.cpp" />
|
<ClCompile Include="NXDNLICH.cpp" />
|
||||||
<ClCompile Include="NXDNLookup.cpp" />
|
<ClCompile Include="NXDNLookup.cpp" />
|
||||||
|
|
|
||||||
|
|
@ -257,9 +257,6 @@
|
||||||
<ClInclude Include="NXDNFACCH1.h">
|
<ClInclude Include="NXDNFACCH1.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="NXDNFACCH2.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="NXDNUDCH.h">
|
<ClInclude Include="NXDNUDCH.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -490,9 +487,6 @@
|
||||||
<ClCompile Include="NXDNFACCH1.cpp">
|
<ClCompile Include="NXDNFACCH1.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="NXDNFACCH2.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="NXDNUDCH.cpp">
|
<ClCompile Include="NXDNUDCH.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
|
||||||
2
Makefile
2
Makefile
|
|
@ -10,7 +10,7 @@ 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 \
|
||||||
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o \
|
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.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 \
|
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
|
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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ 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 \
|
||||||
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o \
|
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.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 \
|
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
|
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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ 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 \
|
||||||
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o \
|
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.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 \
|
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
|
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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ 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 \
|
||||||
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o \
|
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.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 \
|
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
|
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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ 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 \
|
||||||
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o \
|
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.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 \
|
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
|
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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ 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 \
|
||||||
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o \
|
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.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 \
|
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
|
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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ 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 \
|
||||||
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNFACCH2.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o \
|
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNLayer3.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 \
|
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
|
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
|
||||||
|
|
||||||
|
|
|
||||||
149
NXDNControl.cpp
149
NXDNControl.cpp
|
|
@ -13,7 +13,6 @@
|
||||||
|
|
||||||
#include "NXDNControl.h"
|
#include "NXDNControl.h"
|
||||||
#include "NXDNFACCH1.h"
|
#include "NXDNFACCH1.h"
|
||||||
#include "NXDNFACCH2.h"
|
|
||||||
#include "NXDNSACCH.h"
|
#include "NXDNSACCH.h"
|
||||||
#include "NXDNUDCH.h"
|
#include "NXDNUDCH.h"
|
||||||
#include "AMBEFEC.h"
|
#include "AMBEFEC.h"
|
||||||
|
|
@ -209,7 +208,7 @@ bool CNXDNControl::processVoice(unsigned char usc, unsigned char option, unsigne
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned char messageType = m_rfSACCHMessage.getMessageType();
|
unsigned char messageType = m_rfSACCHMessage.getMessageType();
|
||||||
if (messageType == NXDN_MESSAGE_TYPE_IDLE)
|
if (messageType != NXDN_MESSAGE_TYPE_VCALL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned short srcId = m_rfSACCHMessage.getSourceUnitId();
|
unsigned short srcId = m_rfSACCHMessage.getSourceUnitId();
|
||||||
|
|
@ -247,17 +246,74 @@ bool CNXDNControl::processVoice(unsigned char usc, unsigned char option, unsigne
|
||||||
if (m_rfState != RS_RF_AUDIO)
|
if (m_rfState != RS_RF_AUDIO)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
unsigned char voiceMode = m_rfSACCHMessage.getCallOptions() & 0x07U;
|
||||||
|
|
||||||
if (option == NXDN_LICH_STEAL_NONE) {
|
if (option == NXDN_LICH_STEAL_NONE) {
|
||||||
CAMBEFEC ambe;
|
CAMBEFEC ambe;
|
||||||
unsigned int errors = 0U;
|
unsigned int errors = 0U;
|
||||||
//errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES);
|
if (voiceMode == NXDN_VOICE_CALL_OPTION_9600_EFR) {
|
||||||
//errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 9U);
|
errors += ambe.regenerateIMBE(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES);
|
||||||
//errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 18U);
|
errors += ambe.regenerateIMBE(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 18U);
|
||||||
//errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 27U);
|
m_rfErrs += errors;
|
||||||
//LogDebug("NXDN, EHR, AMBE FEC %u/188 (%.1f%%)", errors, float(errors) / 1.88F);
|
m_rfBits += 288U;
|
||||||
//errors += ambe.regenerateIMBE(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES);
|
m_display->writeNXDNBER(float(errors) / 2.88F);
|
||||||
//errors += ambe.regenerateIMBE(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 18U);
|
LogDebug("NXDN, EFR, AMBE FEC %u/288 (%.1f%%)", errors, float(errors) / 2.88F);
|
||||||
//LogDebug("NXDN, EFR, AMBE FEC %u/288 (%.1f%%)", errors, float(errors) / 2.88F);
|
} else {
|
||||||
|
errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES);
|
||||||
|
errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 9U);
|
||||||
|
errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 18U);
|
||||||
|
errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 27U);
|
||||||
|
m_rfErrs += errors;
|
||||||
|
m_rfBits += 188U;
|
||||||
|
m_display->writeNXDNBER(float(errors) / 1.88F);
|
||||||
|
LogDebug("NXDN, EHR, AMBE FEC %u/188 (%.1f%%)", errors, float(errors) / 1.88F);
|
||||||
|
}
|
||||||
|
} else if (option == NXDN_LICH_STEAL_FACCH1_1) {
|
||||||
|
CNXDNFACCH1 facch1;
|
||||||
|
facch1.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_LENGTH_BITS);
|
||||||
|
|
||||||
|
CAMBEFEC ambe;
|
||||||
|
unsigned int errors = 0U;
|
||||||
|
if (voiceMode == NXDN_VOICE_CALL_OPTION_9600_EFR) {
|
||||||
|
errors += ambe.regenerateIMBE(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 18U);
|
||||||
|
m_rfErrs += errors;
|
||||||
|
m_rfBits += 144U;
|
||||||
|
m_display->writeNXDNBER(float(errors) / 1.44F);
|
||||||
|
LogDebug("NXDN, EFR, AMBE FEC %u/144 (%.1f%%)", errors, float(errors) / 1.44F);
|
||||||
|
} else {
|
||||||
|
errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 18U);
|
||||||
|
errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 27U);
|
||||||
|
m_rfErrs += errors;
|
||||||
|
m_rfBits += 94U;
|
||||||
|
m_display->writeNXDNBER(float(errors) / 0.94F);
|
||||||
|
LogDebug("NXDN, EHR, AMBE FEC %u/94 (%.1f%%)", errors, float(errors) / 0.94F);
|
||||||
|
}
|
||||||
|
} else if (option == NXDN_LICH_STEAL_FACCH1_2) {
|
||||||
|
CAMBEFEC ambe;
|
||||||
|
unsigned int errors = 0U;
|
||||||
|
if (voiceMode == NXDN_VOICE_CALL_OPTION_9600_EFR) {
|
||||||
|
errors += ambe.regenerateIMBE(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES);
|
||||||
|
m_rfErrs += errors;
|
||||||
|
m_rfBits += 144U;
|
||||||
|
m_display->writeNXDNBER(float(errors) / 1.44F);
|
||||||
|
LogDebug("NXDN, EFR, AMBE FEC %u/144 (%.1f%%)", errors, float(errors) / 1.44F);
|
||||||
|
} else {
|
||||||
|
errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES);
|
||||||
|
errors += ambe.regenerateDMR(data + 2U + NXDN_FSW_LICH_SACCH_LENGTH_BYTES + 9U);
|
||||||
|
m_rfErrs += errors;
|
||||||
|
m_rfBits += 94U;
|
||||||
|
m_display->writeNXDNBER(float(errors) / 0.94F);
|
||||||
|
LogDebug("NXDN, EHR, AMBE FEC %u/94 (%.1f%%)", errors, float(errors) / 0.94F);
|
||||||
|
}
|
||||||
|
|
||||||
|
CNXDNFACCH1 facch1;
|
||||||
|
facch1.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_LENGTH_BITS + NXDN_FACCH1_LENGTH_BITS);
|
||||||
|
} else {
|
||||||
|
CNXDNFACCH1 facch11;
|
||||||
|
facch11.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_LENGTH_BITS);
|
||||||
|
|
||||||
|
CNXDNFACCH1 facch12;
|
||||||
|
facch12.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_LENGTH_BITS + NXDN_FACCH1_LENGTH_BITS);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef notdef
|
#ifdef notdef
|
||||||
|
|
@ -579,65 +635,36 @@ bool CNXDNControl::processVoice(unsigned char usc, unsigned char option, unsigne
|
||||||
|
|
||||||
bool CNXDNControl::processData(unsigned char option, unsigned char *data)
|
bool CNXDNControl::processData(unsigned char option, unsigned char *data)
|
||||||
{
|
{
|
||||||
if (option == NXDN_LICH_STEAL_FACCH) {
|
CNXDNUDCH udch;
|
||||||
CNXDNFACCH2 facch2;
|
bool valid = udch.decode(data + 2U);
|
||||||
bool valid = facch2.decode(data + 2U);
|
if (valid) {
|
||||||
if (valid) {
|
unsigned char ran = udch.getRAN();
|
||||||
unsigned char ran = facch2.getRAN();
|
if (ran != m_ran && ran != 0U)
|
||||||
if (ran != m_ran && ran != 0U)
|
return false;
|
||||||
return false;
|
|
||||||
|
|
||||||
data[0U] = TAG_DATA;
|
data[0U] = TAG_DATA;
|
||||||
data[1U] = 0x00U;
|
data[1U] = 0x00U;
|
||||||
|
|
||||||
CSync::addNXDNSync(data + 2U);
|
CSync::addNXDNSync(data + 2U);
|
||||||
|
|
||||||
CNXDNLICH lich;
|
CNXDNLICH lich;
|
||||||
lich.setRFCT(NXDN_LICH_RFCT_RDCH);
|
lich.setRFCT(NXDN_LICH_RFCT_RDCH);
|
||||||
lich.setFCT(NXDN_LICH_USC_UDCH);
|
lich.setFCT(NXDN_LICH_USC_UDCH);
|
||||||
lich.setOption(NXDN_LICH_STEAL_FACCH);
|
lich.setOption(option);
|
||||||
lich.setDirection(m_remoteGateway ? NXDN_LICH_DIRECTION_INBOUND : NXDN_LICH_DIRECTION_OUTBOUND);
|
lich.setDirection(m_remoteGateway ? NXDN_LICH_DIRECTION_INBOUND : NXDN_LICH_DIRECTION_OUTBOUND);
|
||||||
lich.encode(data + 2U);
|
lich.encode(data + 2U);
|
||||||
|
|
||||||
facch2.setRAN(m_ran);
|
udch.setRAN(m_ran);
|
||||||
facch2.encode(data + 2U);
|
udch.encode(data + 2U);
|
||||||
|
|
||||||
writeQueueNet(data);
|
writeQueueNet(data);
|
||||||
|
|
||||||
if (m_duplex)
|
if (m_duplex)
|
||||||
writeQueueRF(data);
|
writeQueueRF(data);
|
||||||
#if defined(DUMP_NXDN)
|
#if defined(DUMP_NXDN)
|
||||||
writeFile(data + 2U);
|
writeFile(data + 2U);
|
||||||
#endif
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
} else {
|
|
||||||
CNXDNUDCH udch;
|
|
||||||
bool valid = udch.decode(data + 2U);
|
|
||||||
if (valid) {
|
|
||||||
data[0U] = TAG_DATA;
|
|
||||||
data[1U] = 0x00U;
|
|
||||||
|
|
||||||
CSync::addNXDNSync(data + 2U);
|
|
||||||
|
|
||||||
CNXDNLICH lich;
|
|
||||||
lich.setRFCT(NXDN_LICH_RFCT_RDCH);
|
|
||||||
lich.setFCT(NXDN_LICH_USC_UDCH);
|
|
||||||
lich.setOption(NXDN_LICH_STEAL_NONE);
|
|
||||||
lich.setDirection(m_remoteGateway ? NXDN_LICH_DIRECTION_INBOUND : NXDN_LICH_DIRECTION_OUTBOUND);
|
|
||||||
lich.encode(data + 2U);
|
|
||||||
|
|
||||||
udch.encode(data + 2U);
|
|
||||||
|
|
||||||
writeQueueNet(data);
|
|
||||||
|
|
||||||
if (m_duplex)
|
|
||||||
writeQueueRF(data);
|
|
||||||
#if defined(DUMP_NXDN)
|
|
||||||
writeFile(data + 2U);
|
|
||||||
#endif
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef notdef
|
#ifdef notdef
|
||||||
|
|
|
||||||
|
|
@ -88,4 +88,17 @@ const unsigned char NXDN_MESSAGE_TYPE_AUTH_INQ_REQ = 0x28U;
|
||||||
const unsigned char NXDN_MESSAGE_TYPE_AUTH_INQ_RESP = 0x29U;
|
const unsigned char NXDN_MESSAGE_TYPE_AUTH_INQ_RESP = 0x29U;
|
||||||
const unsigned char NXDN_MESSAGE_TYPE_PROP_FORM = 0x3FU;
|
const unsigned char NXDN_MESSAGE_TYPE_PROP_FORM = 0x3FU;
|
||||||
|
|
||||||
|
const unsigned char NXDN_VOICE_CALL_OPTION_HALF_DUPLEX = 0x00U;
|
||||||
|
const unsigned char NXDN_VOICE_CALL_OPTION_DUPLEX = 0x10U;
|
||||||
|
|
||||||
|
const unsigned char NXDN_VOICE_CALL_OPTION_4800_EHR = 0x00U;
|
||||||
|
const unsigned char NXDN_VOICE_CALL_OPTION_9600_EHR = 0x02U;
|
||||||
|
const unsigned char NXDN_VOICE_CALL_OPTION_9600_EFR = 0x03U;
|
||||||
|
|
||||||
|
const unsigned char NXDN_DATA_CALL_OPTION_HALF_DUPLEX = 0x00U;
|
||||||
|
const unsigned char NXDN_DATA_CALL_OPTION_DUPLEX = 0x10U;
|
||||||
|
|
||||||
|
const unsigned char NXDN_DATA_CALL_OPTION_4800 = 0x00U;
|
||||||
|
const unsigned char NXDN_DATA_CALL_OPTION_9600 = 0x02U;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -85,25 +85,18 @@ bool CNXDNFACCH1::decode(const unsigned char* data, unsigned int offset)
|
||||||
|
|
||||||
uint8_t temp2[192U];
|
uint8_t temp2[192U];
|
||||||
|
|
||||||
char text[500U];
|
|
||||||
::strcpy(text, "NXDN, FACCH1 de-punctured: ");
|
|
||||||
|
|
||||||
unsigned int n = 0U;
|
unsigned int n = 0U;
|
||||||
unsigned int index = 0U;
|
unsigned int index = 0U;
|
||||||
for (unsigned int i = 0U; i < NXDN_FACCH1_LENGTH_BITS; i++) {
|
for (unsigned int i = 0U; i < NXDN_FACCH1_LENGTH_BITS; i++) {
|
||||||
if (n == PUNCTURE_LIST[index]) {
|
if (n == PUNCTURE_LIST[index]) {
|
||||||
::strcat(text, "X, ");
|
|
||||||
temp2[n++] = 99U;
|
temp2[n++] = 99U;
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool b = READ_BIT1(temp1, i);
|
bool b = READ_BIT1(temp1, i);
|
||||||
temp2[n++] = b ? 1U : 0U;
|
temp2[n++] = b ? 1U : 0U;
|
||||||
::strcat(text, b ? "1, " : "0, ");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LogMessage(text);
|
|
||||||
|
|
||||||
CNXDNConvolution conv;
|
CNXDNConvolution conv;
|
||||||
conv.start();
|
conv.start();
|
||||||
|
|
||||||
|
|
|
||||||
109
NXDNFACCH2.cpp
109
NXDNFACCH2.cpp
|
|
@ -1,109 +0,0 @@
|
||||||
/*
|
|
||||||
* 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 "NXDNDefines.h"
|
|
||||||
#include "NXDNUDCH.h"
|
|
||||||
#include "Utils.h"
|
|
||||||
#include "Log.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])
|
|
||||||
|
|
||||||
CNXDNFACCH2::CNXDNFACCH2(const CNXDNFACCH2& facch2) :
|
|
||||||
m_data(NULL)
|
|
||||||
{
|
|
||||||
m_data = new unsigned char[23U];
|
|
||||||
::memcpy(m_data, facch2.m_data, 23U);
|
|
||||||
}
|
|
||||||
|
|
||||||
CNXDNFACCH2::CNXDNFACCH2() :
|
|
||||||
m_data(NULL)
|
|
||||||
{
|
|
||||||
m_data = new unsigned char[23U];
|
|
||||||
}
|
|
||||||
|
|
||||||
CNXDNFACCH2::~CNXDNFACCH2()
|
|
||||||
{
|
|
||||||
delete[] m_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CNXDNFACCH2::decode(const unsigned char* data)
|
|
||||||
{
|
|
||||||
assert(data != NULL);
|
|
||||||
|
|
||||||
CNXDNUDCH udch;
|
|
||||||
bool valid = udch.decode(data);
|
|
||||||
if (!valid)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
udch.getData(m_data);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CNXDNFACCH2::encode(unsigned char* data) const
|
|
||||||
{
|
|
||||||
assert(data != NULL);
|
|
||||||
|
|
||||||
CNXDNUDCH udch;
|
|
||||||
|
|
||||||
udch.setData(m_data);
|
|
||||||
|
|
||||||
udch.encode(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned char CNXDNFACCH2::getRAN() const
|
|
||||||
{
|
|
||||||
return m_data[0U] & 0x3FU;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CNXDNFACCH2::getData(unsigned char* data) const
|
|
||||||
{
|
|
||||||
assert(data != NULL);
|
|
||||||
|
|
||||||
::memcpy(data, m_data + 1U, 22U);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CNXDNFACCH2::setRAN(unsigned char ran)
|
|
||||||
{
|
|
||||||
m_data[0U] &= 0xC0U;
|
|
||||||
m_data[0U] |= ran;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CNXDNFACCH2::setData(const unsigned char* data)
|
|
||||||
{
|
|
||||||
assert(data != NULL);
|
|
||||||
|
|
||||||
::memcpy(m_data + 1U, data, 22U);
|
|
||||||
}
|
|
||||||
|
|
||||||
CNXDNFACCH2& CNXDNFACCH2::operator=(const CNXDNFACCH2& facch2)
|
|
||||||
{
|
|
||||||
if (&facch2 != this)
|
|
||||||
::memcpy(m_data, facch2.m_data, 23U);
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
46
NXDNFACCH2.h
46
NXDNFACCH2.h
|
|
@ -1,46 +0,0 @@
|
||||||
/*
|
|
||||||
* 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:
|
|
||||||
unsigned char* m_data;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -88,6 +88,11 @@ bool CNXDNLayer3::getIsGroup() const
|
||||||
return (m_data[2U] & 0x80U) != 0x80U;
|
return (m_data[2U] & 0x80U) != 0x80U;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned char CNXDNLayer3::getCallOptions() const
|
||||||
|
{
|
||||||
|
return m_data[2U] & 0x1FU;
|
||||||
|
}
|
||||||
|
|
||||||
CNXDNLayer3& CNXDNLayer3::operator=(const CNXDNLayer3& layer3)
|
CNXDNLayer3& CNXDNLayer3::operator=(const CNXDNLayer3& layer3)
|
||||||
{
|
{
|
||||||
if (&layer3 != this)
|
if (&layer3 != this)
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ public:
|
||||||
unsigned short getSourceUnitId() const;
|
unsigned short getSourceUnitId() const;
|
||||||
unsigned short getDestinationGroupId() const;
|
unsigned short getDestinationGroupId() const;
|
||||||
bool getIsGroup() const;
|
bool getIsGroup() const;
|
||||||
|
unsigned char getCallOptions() const;
|
||||||
|
|
||||||
CNXDNLayer3& operator=(const CNXDNLayer3& layer3);
|
CNXDNLayer3& operator=(const CNXDNLayer3& layer3);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,25 +79,18 @@ bool CNXDNSACCH::decode(const unsigned char* data)
|
||||||
|
|
||||||
uint8_t temp2[72U];
|
uint8_t temp2[72U];
|
||||||
|
|
||||||
char text[500U];
|
|
||||||
::strcpy(text, "NXDN, SACCH de-punctured: ");
|
|
||||||
|
|
||||||
unsigned int n = 0U;
|
unsigned int n = 0U;
|
||||||
unsigned int index = 0U;
|
unsigned int index = 0U;
|
||||||
for (unsigned int i = 0U; i < NXDN_SACCH_LENGTH_BITS; i++) {
|
for (unsigned int i = 0U; i < NXDN_SACCH_LENGTH_BITS; i++) {
|
||||||
if (n == PUNCTURE_LIST[index]) {
|
if (n == PUNCTURE_LIST[index]) {
|
||||||
::strcat(text, "X, ");
|
|
||||||
temp2[n++] = 99U;
|
temp2[n++] = 99U;
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool b = READ_BIT1(temp1, i);
|
bool b = READ_BIT1(temp1, i);
|
||||||
temp2[n++] = b ? 1U : 0U;
|
temp2[n++] = b ? 1U : 0U;
|
||||||
::strcat(text, b ? "1, " : "0, ");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LogMessage(text);
|
|
||||||
|
|
||||||
CNXDNConvolution conv;
|
CNXDNConvolution conv;
|
||||||
conv.start();
|
conv.start();
|
||||||
|
|
||||||
|
|
|
||||||
22
NXDNUDCH.cpp
22
NXDNUDCH.cpp
|
|
@ -106,25 +106,18 @@ bool CNXDNUDCH::decode(const unsigned char* data)
|
||||||
|
|
||||||
uint8_t temp2[406U];
|
uint8_t temp2[406U];
|
||||||
|
|
||||||
char text[500U];
|
|
||||||
::strcpy(text, "NXDN, UDCH/FACCH2 de-punctured: ");
|
|
||||||
|
|
||||||
unsigned int n = 0U;
|
unsigned int n = 0U;
|
||||||
unsigned int index = 0U;
|
unsigned int index = 0U;
|
||||||
for (unsigned int i = 0U; i < NXDN_FACCH2_LENGTH_BITS; i++) {
|
for (unsigned int i = 0U; i < NXDN_FACCH2_LENGTH_BITS; i++) {
|
||||||
if (n == PUNCTURE_LIST[index]) {
|
if (n == PUNCTURE_LIST[index]) {
|
||||||
::strcat(text, "X, ");
|
|
||||||
temp2[n++] = 99U;
|
temp2[n++] = 99U;
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool b = READ_BIT1(temp1, i);
|
bool b = READ_BIT1(temp1, i);
|
||||||
temp2[n++] = b ? 1U : 0U;
|
temp2[n++] = b ? 1U : 0U;
|
||||||
::strcat(text, b ? "1, " : "0, ");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LogMessage(text);
|
|
||||||
|
|
||||||
CNXDNConvolution conv;
|
CNXDNConvolution conv;
|
||||||
conv.start();
|
conv.start();
|
||||||
|
|
||||||
|
|
@ -189,18 +182,29 @@ void CNXDNUDCH::encode(unsigned char* data) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned char CNXDNUDCH::getRAN() const
|
||||||
|
{
|
||||||
|
return m_data[0U] & 0x3FU;
|
||||||
|
}
|
||||||
|
|
||||||
void CNXDNUDCH::getData(unsigned char* data) const
|
void CNXDNUDCH::getData(unsigned char* data) const
|
||||||
{
|
{
|
||||||
assert(data != NULL);
|
assert(data != NULL);
|
||||||
|
|
||||||
::memcpy(data, m_data, 23U);
|
::memcpy(data, m_data + 1U, 22U);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CNXDNUDCH::setRAN(unsigned char ran)
|
||||||
|
{
|
||||||
|
m_data[0U] &= 0xC0U;
|
||||||
|
m_data[0U] |= ran;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CNXDNUDCH::setData(const unsigned char* data)
|
void CNXDNUDCH::setData(const unsigned char* data)
|
||||||
{
|
{
|
||||||
assert(data != NULL);
|
assert(data != NULL);
|
||||||
|
|
||||||
::memcpy(m_data, data, 23U);
|
::memcpy(m_data + 1U, data, 22U);
|
||||||
}
|
}
|
||||||
|
|
||||||
CNXDNUDCH& CNXDNUDCH::operator=(const CNXDNUDCH& udch)
|
CNXDNUDCH& CNXDNUDCH::operator=(const CNXDNUDCH& udch)
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,12 @@ public:
|
||||||
|
|
||||||
void encode(unsigned char* data) const;
|
void encode(unsigned char* data) const;
|
||||||
|
|
||||||
|
unsigned char getRAN() const;
|
||||||
|
|
||||||
void getData(unsigned char* data) const;
|
void getData(unsigned char* data) const;
|
||||||
|
|
||||||
|
void setRAN(unsigned char ran);
|
||||||
|
|
||||||
void setData(const unsigned char* data);
|
void setData(const unsigned char* data);
|
||||||
|
|
||||||
CNXDNUDCH& operator=(const CNXDNUDCH& udch);
|
CNXDNUDCH& operator=(const CNXDNUDCH& udch);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue