From 7dc45b3eba9ee9748536ff4f1140f08cc157905f Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Tue, 30 Apr 2024 11:58:33 +0100 Subject: [PATCH] Replace the FM bandpass filter with an FIR. --- FIR.cpp | 77 +++++++++++++++++++++++++++++++++++++++ FIR.h | 39 ++++++++++++++++++++ FMControl.cpp | 77 +++++++++++++++++++++++++++------------ FMControl.h | 9 ++--- MMDVMHost.vcxproj | 2 + MMDVMHost.vcxproj.filters | 6 +++ Makefile | 6 +-- Makefile.Pi.Adafruit | 6 +-- Makefile.Pi.HD44780 | 6 +-- Makefile.Pi.I2C | 6 +-- Makefile.Pi.OLED | 6 +-- Makefile.Pi.PCF8574 | 6 +-- 12 files changed, 199 insertions(+), 47 deletions(-) create mode 100644 FIR.cpp create mode 100644 FIR.h diff --git a/FIR.cpp b/FIR.cpp new file mode 100644 index 0000000..78bd856 --- /dev/null +++ b/FIR.cpp @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2024 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 "FIR.h" + +#include + +CFIR::CFIR(const float* taps, unsigned int count) : +m_line(NULL), +m_taps(NULL), +m_count(count), +m_index(0U) +{ + assert(taps != NULL); + assert(count > 0U); + + m_line = new float[count]; + m_taps = new float[count]; + + for (unsigned int i = 0U; i < count; i++) { + m_line[i] = 0.0F; + m_taps[i] = taps[i]; + } +} + +CFIR::~CFIR() +{ + delete[] m_line; + delete[] m_taps; +} + +float CFIR::filter(float sample) +{ + m_line[m_index] = sample; + + m_index++; + if (m_index >= m_count) + m_index = 0U; + + float out = 0.0F; + + unsigned int index = m_index; + + for (unsigned int i = 0U; i < m_count; i++) { + if (index > 0U) + index--; + else + index = m_count - 1U; + + out += m_taps[i] * m_line[index]; + } + + return out; +} + +void CFIR::reset() +{ + for (unsigned int i = 0U; i < m_count; i++) + m_line[i] = 0.0F; + + m_index = 0U; +} diff --git a/FIR.h b/FIR.h new file mode 100644 index 0000000..d5c62cc --- /dev/null +++ b/FIR.h @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2024 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(FIR_H) +#define FIR_H + +class CFIR +{ +public: + CFIR(const float* taps, unsigned int count); + ~CFIR(); + + float filter(float sample); + + void reset(); + +private: + float* m_line; + float* m_taps; + unsigned int m_count; + unsigned int m_index; +}; + +#endif diff --git a/FMControl.cpp b/FMControl.cpp index 74943ac..6d12a92 100644 --- a/FMControl.cpp +++ b/FMControl.cpp @@ -28,9 +28,54 @@ const float DEEMPHASIS_GAIN_DB = 8.0F; // Audio gain adjustment const float PREEMPHASIS_GAIN_DB = 0.0F; // Audio gain adjustment -const float FILTER_GAIN_DB = 2.0F; // Audio gain adjustment const unsigned int FM_MASK = 0x00000FFFU; +// Created using http://t-filter.engineerjs.com/ +const float FILTER_TAPS[] = { + -0.05171164345032154F, 0.004577697825204152F, 0.0841254955090718F, 0.021290266836279378F, -0.004089760781267529F, + 0.017543929045823792F, -0.019757885035823444F, -0.007257327157430058F, -0.004449379743389856F, -0.02385756312026885F, + 0.0008185571872412343F, -0.013864145248825219F, -0.011210498318183482F, 0.005254565026658612F, -0.015043483504571332F, + 0.005461884596609861F, 0.002026322985797473F, -0.007542135237135551F, 0.015720810214077726F, -0.004651704877827266F, + 0.005558418419098179F, 0.013941762626730268F, -0.007509473824811953F, 0.016618272581132985F, 0.002487274459992476F, + -0.0024802940122075103F, 0.017683063350944713F, -0.009994442394814056F, 0.007156447064599394F, 0.006433822485904772F + -0.014292696730698431F, 0.013319129319180239F, -0.010408978940031273F, -0.007266470155557534F, 0.009230635462251885F, + -0.021463578074814135F, 0.005194836976513505F, -0.004126873023205119F, -0.01808260377380932F, 0.01304137129976236F, + -0.017532323849990875F, -0.001929317250481216F, 0.009395238582798674F, -0.01975948679774396F, 0.01622855958724977F, + -0.0029621037585558234F, -0.006899065995755296F, 0.02321184132395859F, -0.013467585741796682F, 0.01371204158005827F, + 0.013692208003629535F, -0.012367114737680571F, 0.02722969001859293F, -0.005345784554487899F, 0.0010074007729973767F, + 0.022305163683623532F, -0.019636621576653458F, 0.016349411295640864F, 0.0003626724003974509F, -0.018539298657843845F, + 0.01994785867615676F, -0.024001641760916962F, -0.0034795731393629766F, 0.0060060611058407164F, -0.033081075064776075F, + 0.012754552578116456F, -0.01694452885708811F, -0.019221979726946815F, 0.016490911013530663F, -0.03092454436058619F, + 0.00861201477103357F, 0.004613884756593608F, -0.021987826895264795F, 0.030752871497932738F, -0.011775928674227762F, + 0.007473527853524001F, 0.03126561745903647F, -0.016067027177553667F, 0.0378218068192532F, 0.010312992900560435F, + -0.0006238863579307288F, 0.04477891903198119F, -0.015623491538694835F, 0.02384438222815608F, 0.01750864066332353F, + -0.026325530246751806F, 0.03302218423753518F, -0.03126149618245644F, -0.014849557775866738F, 0.005783253669755862F, + -0.07047543753434074F, 0.004291583771423271F, -0.05850933604118403F, -0.06807719431962597F, 0.00009772317389628164F, + -0.13523267568572162F, 0.0004875192337944561F, -0.07994164839657204F, -0.18719066454627675F, 0.5305904386356379F, + 0.5305904386356379F, -0.18719066454627675F, -0.07994164839657204F, 0.0004875192337944561F, -0.13523267568572162F, + 0.00009772317389628164F, -0.06807719431962597F, -0.05850933604118403F, 0.004291583771423271F, -0.07047543753434074F, + 0.005783253669755862F, -0.014849557775866738F, -0.03126149618245644F, 0.03302218423753518F, -0.026325530246751806F, + 0.01750864066332353F, 0.02384438222815608F, -0.015623491538694835F, 0.04477891903198119F, -0.0006238863579307288F, + 0.010312992900560435F, 0.0378218068192532F, -0.016067027177553667F, 0.03126561745903647F, 0.007473527853524001F, + -0.011775928674227762F, 0.030752871497932738F, -0.021987826895264795F, 0.004613884756593608F, 0.00861201477103357F, + -0.03092454436058619F, 0.016490911013530663F, -0.019221979726946815F, -0.01694452885708811F, 0.012754552578116456F, + -0.033081075064776075F, 0.0060060611058407164F, -0.0034795731393629766F, -0.024001641760916962F, 0.01994785867615676F, + -0.018539298657843845F, 0.0003626724003974509F, 0.016349411295640864F, -0.019636621576653458F, 0.022305163683623532F, + 0.0010074007729973767F, -0.005345784554487899F, 0.02722969001859293F, -0.012367114737680571F, 0.013692208003629535F, + 0.01371204158005827F, -0.013467585741796682F, 0.02321184132395859F, -0.006899065995755296F, -0.0029621037585558234F, + 0.01622855958724977F, -0.01975948679774396F, 0.009395238582798674F, -0.001929317250481216F, -0.017532323849990875F, + 0.01304137129976236F, -0.01808260377380932F, -0.004126873023205119F, 0.005194836976513505F, -0.021463578074814135F, + 0.009230635462251885F, -0.007266470155557534F, -0.010408978940031273F, 0.013319129319180239F, -0.014292696730698431F, + 0.006433822485904772F, 0.007156447064599394F, -0.009994442394814056F, 0.017683063350944713F, -0.0024802940122075103F, + 0.002487274459992476F, 0.016618272581132985F, -0.007509473824811953F, 0.013941762626730268F, 0.005558418419098179F, + -0.004651704877827266F, 0.015720810214077726F, -0.007542135237135551F, 0.002026322985797473F, 0.005461884596609861F, + -0.015043483504571332F, 0.005254565026658612F, -0.011210498318183482F, -0.013864145248825219F, 0.0008185571872412343F, + -0.02385756312026885F, -0.004449379743389856F, -0.007257327157430058F, -0.019757885035823444F, 0.017543929045823792F, + -0.004089760781267529F, 0.021290266836279378F, 0.0841254955090718F, 0.004577697825204152F, -0.05171164345032154F +}; + +const unsigned int FILTER_TAPS_COUNT = 200U; + CFMControl::CFMControl(CFMNetwork* network, float txAudioGain, float rxAudioGain, bool preEmphasisOn, bool deEmphasisOn) : m_network(network), m_txAudioGain(txAudioGain), @@ -39,32 +84,16 @@ m_preEmphasisOn(preEmphasisOn), m_deEmphasisOn(deEmphasisOn), m_enabled(false), m_incomingRFAudio(1600U, "Incoming RF FM Audio"), -m_preEmphasis(NULL), -m_deEmphasis(NULL), -m_filterStage1(NULL), -m_filterStage2(NULL), -m_filterStage3(NULL) +m_preEmphasis(8.315375384336983F, -7.03334621603483F, 0.0F, 1.0F, 0.282029168302153F, 0.0F, PREEMPHASIS_GAIN_DB), +m_deEmphasis(0.07708787090460224F, 0.07708787090460224F, 0.0F, 1.0F, -0.8458242581907955F, 0.0F, DEEMPHASIS_GAIN_DB), +m_filter(FILTER_TAPS, FILTER_TAPS_COUNT) { assert(txAudioGain > 0.0F); assert(rxAudioGain > 0.0F); - - m_preEmphasis = new CIIR(8.315375384336983F, -7.03334621603483F,0.0F, 1.0F, 0.282029168302153F, 0.0F, PREEMPHASIS_GAIN_DB); - m_deEmphasis = new CIIR(0.07708787090460224F, 0.07708787090460224F,0.0F, 1.0F, -0.8458242581907955F, 0.0F, DEEMPHASIS_GAIN_DB); - - // Chebyshev type 1 0.2dB cheby type 1 3rd order 300-2700Hz fs=8000 - m_filterStage1 = new CIIR(0.29495028f, 0.0f, -0.29495028f, 1.0f, -0.61384624f, -0.057158668f, FILTER_GAIN_DB); - m_filterStage2 = new CIIR(1.0f, 2.0f, 1.0f, 1.0f, 0.9946123f, 0.6050482f, FILTER_GAIN_DB); - m_filterStage3 = new CIIR(1.0f, -2.0f, 1.0f, 1.0f, -1.8414584f, 0.8804949f, FILTER_GAIN_DB); } CFMControl::~CFMControl() { - delete m_preEmphasis; - delete m_deEmphasis; - - delete m_filterStage1; - delete m_filterStage2; - delete m_filterStage3; } bool CFMControl::writeModem(const unsigned char* data, unsigned int length) @@ -107,7 +136,7 @@ bool CFMControl::writeModem(const unsigned char* data, unsigned int length) packPointer[2U] = bufferData[i + 2U]; unpackedSamples[1U] = short(int(pack & FM_MASK) - 2048); - unpackedSamples[0U] = short(int(pack >> 12 & FM_MASK) - 2048); // + unpackedSamples[0U] = short(int(pack >> 12 & FM_MASK) - 2048); // Process unpacked sample pair for (unsigned char j = 0U; j < 2U; j++) { @@ -116,9 +145,9 @@ bool CFMControl::writeModem(const unsigned char* data, unsigned int length) // De-emphasise and remove CTCSS if (m_deEmphasisOn) - sampleFloat = m_deEmphasis->filter(sampleFloat); + sampleFloat = m_deEmphasis.filter(sampleFloat); - out[nOut++] = m_filterStage3->filter(m_filterStage2->filter(m_filterStage1->filter(sampleFloat))); + out[nOut++] = m_filter.filter(sampleFloat); } } @@ -160,7 +189,7 @@ unsigned int CFMControl::readModem(unsigned char* data, unsigned int space) // Pre-emphasis if (m_preEmphasisOn) - sampleFloat = m_preEmphasis->filter(sampleFloat); + sampleFloat = m_preEmphasis.filter(sampleFloat); // Convert float to 12-bit samples (0 to 4095) unsigned int sample12bit = (unsigned int)((sampleFloat + 1.0F) * 2048.0F + 0.5F); diff --git a/FMControl.h b/FMControl.h index ea3d83d..405fe8d 100644 --- a/FMControl.h +++ b/FMControl.h @@ -22,6 +22,7 @@ #include "FMNetwork.h" #include "Defines.h" #include "IIR.h" +#include "FIR.h" // Uncomment this to dump audio to a raw audio file // The file will be written in same folder as executable @@ -49,11 +50,9 @@ private: bool m_deEmphasisOn; bool m_enabled; CRingBuffer m_incomingRFAudio; - CIIR* m_preEmphasis; - CIIR* m_deEmphasis; - CIIR* m_filterStage1; - CIIR* m_filterStage2; - CIIR* m_filterStage3; + CIIR m_preEmphasis; + CIIR m_deEmphasis; + CFIR m_filter; }; #endif diff --git a/MMDVMHost.vcxproj b/MMDVMHost.vcxproj index c83c2a6..4650bb6 100644 --- a/MMDVMHost.vcxproj +++ b/MMDVMHost.vcxproj @@ -198,6 +198,7 @@ + @@ -310,6 +311,7 @@ + diff --git a/MMDVMHost.vcxproj.filters b/MMDVMHost.vcxproj.filters index 71f0e8a..ab8b864 100644 --- a/MMDVMHost.vcxproj.filters +++ b/MMDVMHost.vcxproj.filters @@ -350,6 +350,9 @@ Header Files + + Header Files + @@ -658,5 +661,8 @@ Source Files + + Source Files + \ No newline at end of file diff --git a/Makefile b/Makefile index 495a862..6c2890e 100644 --- a/Makefile +++ b/Makefile @@ -11,9 +11,9 @@ LDFLAGS = -g -L/usr/local/lib OBJECTS = \ AMBEFEC.o BCH.o AX25Control.o AX25Network.o BPTC19696.o CASTInfo.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o \ DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \ - DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \ - Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o MMDVMHost.o \ - Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \ + DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FIR.o FMControl.o FMNetwork.o Golay2087.o \ + Golay24128.o Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o \ + MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \ NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.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 PseudoTTYController.o POCSAGControl.o \ POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o TFTSurenoo.o Thread.o \ diff --git a/Makefile.Pi.Adafruit b/Makefile.Pi.Adafruit index 4214758..3e13ae3 100644 --- a/Makefile.Pi.Adafruit +++ b/Makefile.Pi.Adafruit @@ -12,9 +12,9 @@ LDFLAGS = -g -L/usr/local/lib OBJECTS = \ AMBEFEC.o AX25Control.o AX25Network.o BCH.o BPTC19696.o CASTInfo.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o \ DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \ - DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \ - Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o \ - MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \ + DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FIR.o FMControl.o FMNetwork.o Golay2087.o \ + Golay24128.o Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o \ + M17Utils.o MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \ NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.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 PseudoTTYController.o \ POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \ diff --git a/Makefile.Pi.HD44780 b/Makefile.Pi.HD44780 index ae98870..4d4919f 100644 --- a/Makefile.Pi.HD44780 +++ b/Makefile.Pi.HD44780 @@ -11,9 +11,9 @@ LDFLAGS = -g -L/usr/local/lib OBJECTS = \ AMBEFEC.o AX25Control.o AX25Network.o BCH.o BPTC19696.o CASTInfo.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o \ DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \ - DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \ - Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o \ - MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \ + DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FIR.o FMControl.o FMNetwork.o Golay2087.o \ + Golay24128.o Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o \ + M17Utils.o MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \ NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.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 PseudoTTYController.o \ POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \ diff --git a/Makefile.Pi.I2C b/Makefile.Pi.I2C index 4c3e2b4..5db1a5b 100644 --- a/Makefile.Pi.I2C +++ b/Makefile.Pi.I2C @@ -11,9 +11,9 @@ LDFLAGS = -g -L/usr/local/lib OBJECTS = \ AMBEFEC.o AX25Control.o AX25Network.o BCH.o BPTC19696.o CASTInfo.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o \ DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \ - DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \ - Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o MMDVMHost.o \ - Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \ + DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FIR.o FMControl.o FMNetwork.o Golay2087.o \ + Golay24128.o Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o \ + M17Utils.o MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \ NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.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 PseudoTTYController.o POCSAGControl.o \ POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o TFTSurenoo.o Thread.o \ diff --git a/Makefile.Pi.OLED b/Makefile.Pi.OLED index 8fdb050..ffc630b 100644 --- a/Makefile.Pi.OLED +++ b/Makefile.Pi.OLED @@ -15,9 +15,9 @@ LDFLAGS = -g -L/usr/local/lib OBJECTS = \ AMBEFEC.o AX25Control.o AX25Network.o BCH.o BPTC19696.o CASTInfo.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o \ DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \ - DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \ - Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o MMDVMHost.o \ - Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \ + DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FIR.o FMControl.o FMNetwork.o Golay2087.o \ + Golay24128.o Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o \ + MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \ NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o \ NXDNUDCH.o OLED.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o \ POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \ diff --git a/Makefile.Pi.PCF8574 b/Makefile.Pi.PCF8574 index 86a3351..920aea6 100644 --- a/Makefile.Pi.PCF8574 +++ b/Makefile.Pi.PCF8574 @@ -12,9 +12,9 @@ LDFLAGS = -g -L/usr/local/lib OBJECTS = \ AMBEFEC.o AX25Control.o AX25Network.o BCH.o BPTC19696.o CASTInfo.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o \ DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \ - DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \ - Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o \ - MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \ + DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FIR.o FMControl.o FMNetwork.o Golay2087.o \ + Golay24128.o Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o \ + M17Utils.o MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \ NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.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 PseudoTTYController.o \ POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \