diff --git a/AX25Demodulator.cpp b/AX25Demodulator.cpp index 276a8e6..eb0022d 100644 --- a/AX25Demodulator.cpp +++ b/AX25Demodulator.cpp @@ -18,6 +18,9 @@ */ #include "Config.h" + +#if defined(MODE_AX25) + #include "Globals.h" #include "AX25Demodulator.h" #include "AX25Defines.h" @@ -312,3 +315,5 @@ float32_t CAX25Demodulator::iir(float32_t input) return result; } +#endif + diff --git a/AX25Demodulator.h b/AX25Demodulator.h index d1baff8..dacd5ab 100644 --- a/AX25Demodulator.h +++ b/AX25Demodulator.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_AX25) + #if !defined(AX25Demodulator_H) #define AX25Demodulator_H -#include "Config.h" - #include "AX25Frame.h" #include "AX25Twist.h" @@ -71,3 +73,5 @@ private: #endif +#endif + diff --git a/AX25Frame.cpp b/AX25Frame.cpp index d666f33..1f54571 100644 --- a/AX25Frame.cpp +++ b/AX25Frame.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_AX25) + #include "Globals.h" #include "AX25Frame.h" @@ -120,3 +123,5 @@ void CAX25Frame::addCRC() m_data[m_length++] = crc8[1U]; } +#endif + diff --git a/AX25Frame.h b/AX25Frame.h index 7f79c28..c83bffa 100644 --- a/AX25Frame.h +++ b/AX25Frame.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_AX25) + #if !defined(AX25Frame_H) #define AX25Frame_H -#include "Config.h" - const uint16_t AX25_MAX_PACKET_LEN = 300U; class CAX25Frame { @@ -41,3 +43,5 @@ public: #endif +#endif + diff --git a/AX25RX.cpp b/AX25RX.cpp index 093316b..eddac27 100644 --- a/AX25RX.cpp +++ b/AX25RX.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_AX25) + #include "Globals.h" #include "AX25RX.h" @@ -203,3 +206,6 @@ uint8_t CAX25RX::rand() return uint8_t(m_c); //low order bits of other variables } + +#endif + diff --git a/AX25RX.h b/AX25RX.h index cbafe91..61e50fd 100644 --- a/AX25RX.h +++ b/AX25RX.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_AX25) + #if !defined(AX25RX_H) #define AX25RX_H -#include "Config.h" - #include "AX25Demodulator.h" class CAX25RX { @@ -57,3 +59,5 @@ private: #endif +#endif + diff --git a/AX25TX.cpp b/AX25TX.cpp index a5b6c95..a844c25 100644 --- a/AX25TX.cpp +++ b/AX25TX.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_AX25) + #include "Globals.h" #include "AX25TX.h" @@ -184,3 +187,5 @@ bool CAX25TX::NRZI(bool b) return m_nrzi; } +#endif + diff --git a/AX25TX.h b/AX25TX.h index 0a41757..f2e02f8 100644 --- a/AX25TX.h +++ b/AX25TX.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_AX25) + #if !defined(AX25TX_H) #define AX25TX_H -#include "Config.h" - class CAX25TX { public: CAX25TX(); @@ -47,3 +49,5 @@ private: #endif +#endif + diff --git a/AX25Twist.cpp b/AX25Twist.cpp index bf0c534..988a07d 100644 --- a/AX25Twist.cpp +++ b/AX25Twist.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_AX25) + #include "Globals.h" #include "AX25Twist.h" @@ -309,3 +312,5 @@ void CAX25Twist::setTwist(int8_t n) m_filter.pCoeffs = coeffs[twist]; } +#endif + diff --git a/AX25Twist.h b/AX25Twist.h index ea1c6de..e127e7a 100644 --- a/AX25Twist.h +++ b/AX25Twist.h @@ -16,11 +16,12 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#if !defined(AX25Twist_H) -#define AX25Twist_H - #include "Config.h" +#if defined(MODE_AX25) + +#if !defined(AX25Twist_H) +#define AX25Twist_H class CAX25Twist { public: @@ -37,3 +38,5 @@ private: #endif +#endif + diff --git a/CalDMR.cpp b/CalDMR.cpp index 949a8e9..3b2e884 100644 --- a/CalDMR.cpp +++ b/CalDMR.cpp @@ -18,6 +18,9 @@ */ #include "Config.h" + +#if defined(MODE_DMR) + #include "Globals.h" #include "CalDMR.h" @@ -221,3 +224,5 @@ uint8_t CCalDMR::write(const uint8_t* data, uint16_t length) return 0U; } +#endif + diff --git a/CalDMR.h b/CalDMR.h index 9ba5f2c..3424db7 100644 --- a/CalDMR.h +++ b/CalDMR.h @@ -17,10 +17,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_DMR) + #if !defined(CALDMR_H) #define CALDMR_H -#include "Config.h" #include "DMRDefines.h" enum DMRCAL1K { @@ -53,3 +56,5 @@ private: #endif +#endif + diff --git a/CalFM.cpp b/CalFM.cpp index 22c3044..54c4b81 100644 --- a/CalFM.cpp +++ b/CalFM.cpp @@ -19,6 +19,9 @@ */ #include "Config.h" + +#if defined(MODE_FM) + #include "Globals.h" #include "CalFM.h" @@ -125,3 +128,6 @@ uint8_t CCalFM::write(const uint8_t* data, uint16_t length) return 0U; } + +#endif + diff --git a/CalFM.h b/CalFM.h index 9665bcc..a810e58 100644 --- a/CalFM.h +++ b/CalFM.h @@ -18,11 +18,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(CALFM_H) #define CALFM_H -#include "Config.h" - class CCalFM { public: CCalFM(); @@ -49,3 +51,5 @@ private: #endif +#endif + diff --git a/CalNXDN.cpp b/CalNXDN.cpp index 3e46f3e..5722954 100644 --- a/CalNXDN.cpp +++ b/CalNXDN.cpp @@ -18,6 +18,9 @@ */ #include "Config.h" + +#if defined(MODE_NXDN) + #include "Globals.h" #include "CalNXDN.h" @@ -93,3 +96,5 @@ uint8_t CCalNXDN::write(const uint8_t* data, uint16_t length) return 0U; } +#endif + diff --git a/CalNXDN.h b/CalNXDN.h index cad88a4..08ea55b 100644 --- a/CalNXDN.h +++ b/CalNXDN.h @@ -17,11 +17,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_NXDN) + #if !defined(CALNXDN_H) #define CALNXDN_H -#include "Config.h" - enum NXDNCAL1K { NXDNCAL1K_IDLE, NXDNCAL1K_TX @@ -43,3 +45,5 @@ private: #endif +#endif + diff --git a/CalP25.cpp b/CalP25.cpp index 6f3d4c0..354339e 100644 --- a/CalP25.cpp +++ b/CalP25.cpp @@ -18,6 +18,9 @@ */ #include "Config.h" + +#if defined(MODE_P25) + #include "Globals.h" #include "CalP25.h" @@ -96,3 +99,5 @@ uint8_t CCalP25::write(const uint8_t* data, uint16_t length) return 0U; } +#endif + diff --git a/CalP25.h b/CalP25.h index 75bfe0d..00ff925 100644 --- a/CalP25.h +++ b/CalP25.h @@ -17,10 +17,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_P25) + #if !defined(CALP25_H) #define CALP25_H -#include "Config.h" #include "P25Defines.h" enum P25CAL1K { @@ -44,3 +47,5 @@ private: #endif +#endif + diff --git a/Config.h b/Config.h index 8bf2f35..29cb477 100644 --- a/Config.h +++ b/Config.h @@ -24,14 +24,14 @@ // Enable D-Star support, the D-Star correlator improves the sensitivity of D-Star enormously but uses quite a lot // of processing power. -// #define MODE_DSTAR +#define MODE_DSTAR #define USE_DSTAR_CORRELATOR // Enable DMR support #define MODE_DMR // Enable System Fusion support -// #define MODE_YSF +#define MODE_YSF // Enable P25 phase 1 support, the boxcar filter sometimes improves the performance of P25 receive on some systems. #define MODE_P25 @@ -41,15 +41,15 @@ #define MODE_NXDN // Enable M17 support -// #define MODE_M17 +#define MODE_M17 // Enable POCSAG support -// #define MODE_POCSAG +#define MODE_POCSAG // Enable FM support #define MODE_FM -// Enable AX.25 support +// Enable AX.25 support, this is only enabled if MODE_FM is also defined. #define MODE_AX25 // Allow for the use of high quality external clock oscillators diff --git a/DMRDMORX.cpp b/DMRDMORX.cpp index 2c3bdef..60de367 100644 --- a/DMRDMORX.cpp +++ b/DMRDMORX.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2017 by Jonathan Naylor G4KLX + * Copyright (C) 2009-2017,2020 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 @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_DMR) + #include "Globals.h" #include "DMRDMORX.h" #include "DMRSlotType.h" @@ -423,3 +426,6 @@ void CDMRDMORX::writeRSSIData(uint8_t* frame) serial.writeDMRData(true, frame, DMR_FRAME_LENGTH_BYTES + 1U); #endif } + +#endif + diff --git a/DMRDMORX.h b/DMRDMORX.h index 6952fd4..2a2fe3d 100644 --- a/DMRDMORX.h +++ b/DMRDMORX.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015,2016,2017 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2016,2017,2020 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 @@ -16,10 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_DMR) + #if !defined(DMRDMORX_H) #define DMRDMORX_H -#include "Config.h" #include "DMRDefines.h" const uint16_t DMO_BUFFER_LENGTH_SAMPLES = 1440U; // 60ms at 24 kHz @@ -67,3 +70,6 @@ private: }; #endif + +#endif + diff --git a/DMRDMOTX.cpp b/DMRDMOTX.cpp index 4932aaf..1a560fb 100644 --- a/DMRDMOTX.cpp +++ b/DMRDMOTX.cpp @@ -19,6 +19,9 @@ */ #include "Config.h" + +#if defined(MODE_DMR) + #include "Globals.h" #include "DMRSlotType.h" @@ -161,3 +164,5 @@ void CDMRDMOTX::setTXDelay(uint8_t delay) m_txDelay = 1200U; } +#endif + diff --git a/DMRDMOTX.h b/DMRDMOTX.h index 3ef53eb..1cccafb 100644 --- a/DMRDMOTX.h +++ b/DMRDMOTX.h @@ -17,10 +17,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_DMR) + #if !defined(DMRDMOTX_H) #define DMRDMOTX_H -#include "Config.h" #include "DMRDefines.h" #include "RingBuffer.h" @@ -51,3 +54,5 @@ private: #endif +#endif + diff --git a/DMRIdleRX.cpp b/DMRIdleRX.cpp index 3d2b5f5..66fd752 100644 --- a/DMRIdleRX.cpp +++ b/DMRIdleRX.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2017 by Jonathan Naylor G4KLX + * Copyright (C) 2009-2017,2020 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 @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_DMR) + #include "Globals.h" #include "DMRIdleRX.h" #include "DMRSlotType.h" @@ -209,3 +212,6 @@ void CDMRIdleRX::setColorCode(uint8_t colorCode) { m_colorCode = colorCode; } + +#endif + diff --git a/DMRIdleRX.h b/DMRIdleRX.h index 922ea85..e081006 100644 --- a/DMRIdleRX.h +++ b/DMRIdleRX.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2020 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 @@ -16,10 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_DMR) + #if !defined(DMRIDLERX_H) #define DMRIDLERX_H -#include "Config.h" #include "DMRDefines.h" class CDMRIdleRX { @@ -49,3 +52,5 @@ private: #endif +#endif + diff --git a/DMRRX.cpp b/DMRRX.cpp index 64320e8..a42ab0c 100644 --- a/DMRRX.cpp +++ b/DMRRX.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015,2016 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2016,2020 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 @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_DMR) + #include "Globals.h" #include "DMRRX.h" @@ -68,3 +71,5 @@ void CDMRRX::reset() m_slot2RX.reset(); } +#endif + diff --git a/DMRRX.h b/DMRRX.h index 6c99cd0..1d2c612 100644 --- a/DMRRX.h +++ b/DMRRX.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015,2016 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2016,2020 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 @@ -16,10 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_DMR) + #if !defined(DMRRX_H) #define DMRRX_H -#include "Config.h" #include "DMRSlotRX.h" class CDMRRX { @@ -40,3 +43,5 @@ private: #endif +#endif + diff --git a/DMRSlotRX.cpp b/DMRSlotRX.cpp index 0d34560..1ecae07 100644 --- a/DMRSlotRX.cpp +++ b/DMRSlotRX.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2017 by Jonathan Naylor G4KLX + * Copyright (C) 2009-2017,2020 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 @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_DMR) + #include "Globals.h" #include "DMRSlotRX.h" #include "DMRSlotType.h" @@ -400,3 +403,6 @@ void CDMRSlotRX::writeRSSIData(uint8_t* frame) serial.writeDMRData(m_slot, frame, DMR_FRAME_LENGTH_BYTES + 1U); #endif } + +#endif + diff --git a/DMRSlotRX.h b/DMRSlotRX.h index a47cc73..dade4d7 100644 --- a/DMRSlotRX.h +++ b/DMRSlotRX.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015,2016,2017 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2016,2017,2020 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 @@ -16,10 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_DMR) + #if !defined(DMRSLOTRX_H) #define DMRSLOTRX_H -#include "Config.h" #include "DMRDefines.h" enum DMRRX_STATE { @@ -70,3 +73,6 @@ private: }; #endif + +#endif + diff --git a/DMRSlotType.cpp b/DMRSlotType.cpp index 2d89a74..70edb3d 100644 --- a/DMRSlotType.cpp +++ b/DMRSlotType.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2020 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 @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_DMR) + #include "Globals.h" #include "DMRSlotType.h" @@ -285,3 +288,5 @@ void CDMRSlotType::encode(uint8_t colorCode, uint8_t dataType, uint8_t* frame) c frame[20U] = (frame[20U] & 0x03U) | ((slotType[1U] << 6) & 0xC0U) | ((slotType[2U] >> 2) & 0x3CU); } +#endif + diff --git a/DMRSlotType.h b/DMRSlotType.h index 0052467..ea27df4 100644 --- a/DMRSlotType.h +++ b/DMRSlotType.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2020 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 @@ -16,6 +16,10 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_DMR) + #if !defined(DMRSLOTTYPE_H) #define DMRSLOTTYPE_H @@ -35,3 +39,5 @@ private: #endif +#endif + diff --git a/DMRTX.cpp b/DMRTX.cpp index 3342639..594ccff 100644 --- a/DMRTX.cpp +++ b/DMRTX.cpp @@ -19,6 +19,9 @@ */ #include "Config.h" + +#if defined(MODE_DMR) + #include "Globals.h" #include "DMRSlotType.h" @@ -414,3 +417,6 @@ uint32_t CDMRTX::getFrameCount() { return m_frameCount; } + +#endif + diff --git a/DMRTX.h b/DMRTX.h index 292b01b..8555f13 100644 --- a/DMRTX.h +++ b/DMRTX.h @@ -17,10 +17,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_DMR) + #if !defined(DMRTX_H) #define DMRTX_H -#include "Config.h" #include "DMRDefines.h" #include "RingBuffer.h" @@ -83,3 +86,5 @@ private: #endif +#endif + diff --git a/FM.cpp b/FM.cpp index 787206b..6b35dd4 100644 --- a/FM.cpp +++ b/FM.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_FM) + #include "Globals.h" #include "FM.h" @@ -1054,3 +1057,6 @@ void CFM::insertSilence(uint16_t ms) for (uint32_t i = 0U; i < nSamples; i++) m_outputRFRB.put(0); } + +#endif + diff --git a/FM.h b/FM.h index 2ead4a3..4c25b6b 100644 --- a/FM.h +++ b/FM.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(FM_H) #define FM_H -#include "Config.h" - #include "FMBlanking.h" #include "FMCTCSSRX.h" #include "FMCTCSSTX.h" @@ -143,3 +145,6 @@ private: }; #endif + +#endif + diff --git a/FMBlanking.cpp b/FMBlanking.cpp index 4d8af80..bf28bc3 100644 --- a/FMBlanking.cpp +++ b/FMBlanking.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_FM) + #include "Globals.h" #include "FMBlanking.h" @@ -80,3 +83,6 @@ q15_t CFMBlanking::process(q15_t sample) return sample; } + +#endif + diff --git a/FMBlanking.h b/FMBlanking.h index 2aacd4c..f0a8522 100644 --- a/FMBlanking.h +++ b/FMBlanking.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(FMBlanking_H) #define FMBlanking_H -#include "Config.h" - class CFMBlanking { public: CFMBlanking(); @@ -39,3 +41,6 @@ private: }; #endif + +#endif + diff --git a/FMCTCSSRX.cpp b/FMCTCSSRX.cpp index b2ecb43..cf31270 100644 --- a/FMCTCSSRX.cpp +++ b/FMCTCSSRX.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_FM) + #include "Globals.h" #include "FMCTCSSRX.h" @@ -173,3 +176,6 @@ void CFMCTCSSRX::reset() m_state = false; m_count = 0U; } + +#endif + diff --git a/FMCTCSSRX.h b/FMCTCSSRX.h index 0980c4c..f9b1c04 100644 --- a/FMCTCSSRX.h +++ b/FMCTCSSRX.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(FMCTCSSRX_H) #define FMCTCSSRX_H -#include "Config.h" - class CFMCTCSSRX { public: CFMCTCSSRX(); @@ -42,3 +44,6 @@ private: }; #endif + +#endif + diff --git a/FMCTCSSTX.cpp b/FMCTCSSTX.cpp index a2253a6..7061fb7 100644 --- a/FMCTCSSTX.cpp +++ b/FMCTCSSTX.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_FM) + #include "Globals.h" #include "FMCTCSSTX.h" @@ -126,3 +129,6 @@ q15_t CFMCTCSSTX::getAudio(bool reverse) else return sample; } + +#endif + diff --git a/FMCTCSSTX.h b/FMCTCSSTX.h index b6f9b12..8225f00 100644 --- a/FMCTCSSTX.h +++ b/FMCTCSSTX.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(FMCTCSSTX_H) #define FMCTCSSTX_H -#include "Config.h" - class CFMCTCSSTX { public: CFMCTCSSTX(); @@ -36,3 +38,6 @@ private: }; #endif + +#endif + diff --git a/FMDirectForm1.h b/FMDirectForm1.h index b3dccb7..912f719 100644 --- a/FMDirectForm1.h +++ b/FMDirectForm1.h @@ -29,6 +29,10 @@ THE SOFTWARE. // based on https://raw.githubusercontent.com/berndporr/iir_fixed_point/master/DirectFormI.h +#include "Config.h" + +#if defined(MODE_FM) + #include #ifndef DIRECTFORMI_H_ @@ -108,4 +112,7 @@ private: q31_t c_a1,c_a2; // IIR }; -#endif /* DIRECTFORMI_H */ \ No newline at end of file +#endif /* DIRECTFORMI_H */ + +#endif + diff --git a/FMDownSampler.cpp b/FMDownSampler.cpp index 8ed95bc..47fb120 100644 --- a/FMDownSampler.cpp +++ b/FMDownSampler.cpp @@ -18,6 +18,9 @@ */ #include "Config.h" + +#if defined(MODE_FM) + #include "FMDownSampler.h" CFMDownSampler::CFMDownSampler(uint16_t length) : @@ -72,3 +75,6 @@ void CFMDownSampler::reset() { m_sampleIndex = 0U; } + +#endif + diff --git a/FMDownSampler.h b/FMDownSampler.h index 9f26acf..fd255b6 100644 --- a/FMDownSampler.h +++ b/FMDownSampler.h @@ -17,10 +17,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(FMDOWNSAMPLER_H) #define FMDOWNSAMPLER_H -#include "Config.h" #include "RingBuffer.h" #include "FMSamplePairPack.h" @@ -45,3 +48,5 @@ private: #endif +#endif + diff --git a/FMKeyer.cpp b/FMKeyer.cpp index 851441e..8ea4794 100644 --- a/FMKeyer.cpp +++ b/FMKeyer.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_FM) + #include "Globals.h" #include "FMKeyer.h" @@ -214,3 +217,6 @@ bool CFMKeyer::isRunning() const { return m_poPos > 0U || m_dotPos > 0U || m_audioPos > 0U; } + +#endif + diff --git a/FMKeyer.h b/FMKeyer.h index 5b7bef5..546552a 100644 --- a/FMKeyer.h +++ b/FMKeyer.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(FMKeyer_H) #define FMKeyer_H -#include "Config.h" - class CFMKeyer { public: CFMKeyer(); @@ -52,3 +54,6 @@ private: }; #endif + +#endif + diff --git a/FMNoiseSquelch.cpp b/FMNoiseSquelch.cpp index 6becf99..bd01fe9 100644 --- a/FMNoiseSquelch.cpp +++ b/FMNoiseSquelch.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_FM) + #include "Globals.h" #include "FMNoiseSquelch.h" @@ -125,3 +128,6 @@ void CFMNoiseSquelch::reset() m_state = false; m_count = 0U; } + +#endif + diff --git a/FMNoiseSquelch.h b/FMNoiseSquelch.h index c4f5a62..52cce41 100644 --- a/FMNoiseSquelch.h +++ b/FMNoiseSquelch.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(FMNOISESQUELCH_H) #define FMNOISESQUELCH_H -#include "Config.h" - class CFMNoiseSquelch { public: CFMNoiseSquelch(); @@ -43,3 +45,6 @@ private: }; #endif + +#endif + diff --git a/FMSamplePairPack.h b/FMSamplePairPack.h index 1301173..d9cf302 100644 --- a/FMSamplePairPack.h +++ b/FMSamplePairPack.h @@ -17,6 +17,10 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(TSAMPLEPACK_H) #define TSAMPLEPACK_H @@ -26,4 +30,7 @@ struct TSamplePairPack { uint8_t byte2; }; -#endif \ No newline at end of file +#endif + +#endif + diff --git a/FMTimeout.cpp b/FMTimeout.cpp index 771e840..04a7dbd 100644 --- a/FMTimeout.cpp +++ b/FMTimeout.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_FM) + #include "Globals.h" #include "FMTimeout.h" @@ -72,3 +75,6 @@ void CFMTimeout::stop() { m_running = false; } + +#endif + diff --git a/FMTimeout.h b/FMTimeout.h index b2f747c..c8a4293 100644 --- a/FMTimeout.h +++ b/FMTimeout.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(FMTimeout_H) #define FMTimeout_H -#include "Config.h" - class CFMTimeout { public: CFMTimeout(); @@ -40,3 +42,6 @@ private: }; #endif + +#endif + diff --git a/FMTimer.cpp b/FMTimer.cpp index 826bc13..1757d16 100644 --- a/FMTimer.cpp +++ b/FMTimer.cpp @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_FM) + #include "Globals.h" #include "FMTimer.h" @@ -68,3 +71,6 @@ bool CFMTimer::hasExpired() const return false; } + +#endif + diff --git a/FMTimer.h b/FMTimer.h index 00dc343..a8a3356 100644 --- a/FMTimer.h +++ b/FMTimer.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(FMTimer_H) #define FMTimer_H -#include "Config.h" - class CFMTimer { public: CFMTimer(); @@ -45,3 +47,6 @@ private: }; #endif + +#endif + diff --git a/FMUpSampler.cpp b/FMUpSampler.cpp index 80cba37..d177f59 100644 --- a/FMUpSampler.cpp +++ b/FMUpSampler.cpp @@ -17,6 +17,10 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_FM) + #include "FMUpSampler.h" const uint32_t FM_UPSAMPLE_MASK = 0x00000FFFU; @@ -94,4 +98,7 @@ uint16_t CFMUpSampler::getSpace() const { //return available space in bytes return m_samples.getSpace() * sizeof(TSamplePairPack); -} \ No newline at end of file +} + +#endif + diff --git a/FMUpSampler.h b/FMUpSampler.h index b76982f..d5867a9 100644 --- a/FMUpSampler.h +++ b/FMUpSampler.h @@ -18,10 +18,13 @@ */ +#include "Config.h" + +#if defined(MODE_FM) + #if !defined(FMUPSAMPLER_H) #define FMUPSAMPLER_H -#include "Config.h" #include "RingBuffer.h" #include "FMSamplePairPack.h" @@ -45,4 +48,7 @@ private: bool m_running; }; -#endif \ No newline at end of file +#endif + +#endif + diff --git a/IO.cpp b/IO.cpp index 70dc72b..6e7fd7f 100644 --- a/IO.cpp +++ b/IO.cpp @@ -22,9 +22,11 @@ #include "Globals.h" #include "IO.h" +#if defined(USE_DCBLOCKER) // Generated using [b, a] = butter(1, 0.001) in MATLAB static q31_t DC_FILTER[] = {3367972, 0, 3367972, 0, 2140747704, 0}; // {b0, 0, b1, b2, -a1, -a2} const uint32_t DC_FILTER_STAGES = 1U; // One Biquad stage +#endif #if defined(MODE_DMR) || defined(MODE_YSF) // Generated using rcosdesign(0.2, 8, 5, 'sqrt') in MATLAB @@ -42,6 +44,7 @@ static q15_t RRC_0_5_FILTER[] = {-147, -88, 72, 220, 223, 46, -197, -285, -79, 3 const uint16_t RRC_0_5_FILTER_LEN = 42U; #endif +#if defined(MODE_NXDN) // Generated using rcosdesign(0.2, 8, 10, 'sqrt') in MATLAB static q15_t NXDN_0_2_FILTER[] = {284, 198, 73, -78, -240, -393, -517, -590, -599, -533, -391, -181, 79, 364, 643, 880, 1041, 1097, 1026, 819, 483, 39, -477, -1016, -1516, -1915, -2150, -2164, -1914, -1375, -545, 557, 1886, 3376, 4946, 6502, 7946, 9184, @@ -53,6 +56,7 @@ const uint16_t NXDN_0_2_FILTER_LEN = 82U; static q15_t NXDN_ISINC_FILTER[] = {790, -1085, -1073, -553, 747, 2341, 3156, 2152, -893, -4915, -7834, -7536, -3102, 4441, 12354, 17394, 17394, 12354, 4441, -3102, -7536, -7834, -4915, -893, 2152, 3156, 2341, 747, -553, -1073, -1085, 790}; const uint16_t NXDN_ISINC_FILTER_LEN = 32U; +#endif #if defined(MODE_DSTAR) // Generated using gaussfir(0.5, 4, 5) in MATLAB @@ -60,9 +64,11 @@ static q15_t GAUSSIAN_0_5_FILTER[] = {8, 104, 760, 3158, 7421, 9866, 7421, 315 const uint16_t GAUSSIAN_0_5_FILTER_LEN = 12U; #endif +#if defined(MODE_P25) // One symbol boxcar filter static q15_t BOXCAR_FILTER[] = {12000, 12000, 12000, 12000, 12000, 0}; const uint16_t BOXCAR_FILTER_LEN = 6U; +#endif const uint16_t DC_OFFSET = 2048U; @@ -71,26 +77,32 @@ m_started(false), m_rxBuffer(RX_RINGBUFFER_SIZE), m_txBuffer(TX_RINGBUFFER_SIZE), m_rssiBuffer(RX_RINGBUFFER_SIZE), +#if defined(USE_DCBLOCKER) m_dcFilter(), m_dcState(), +#endif #if defined(MODE_DSTAR) m_gaussianFilter(), m_gaussianState(), #endif -m_boxcarFilter(), -m_nxdnFilter(), -m_nxdnISincFilter(), #if defined(MODE_DMR) || defined(MODE_YSF) m_rrc02Filter(), m_rrc02State(), #endif +#if defined(MODE_P25) +m_boxcarFilter(), +m_boxcarState(), +#endif +#if defined(MODE_NXDN) +m_nxdnFilter(), +m_nxdnISincFilter(), +m_nxdnState(), +m_nxdnISincState(), +#endif #if defined(MODE_M17) m_rrc05Filter(), m_rrc05State(), #endif -m_boxcarState(), -m_nxdnState(), -m_nxdnISincState(), m_pttInvert(false), m_rxLevel(128 * 128), m_cwIdTXLevel(128 * 128), @@ -114,6 +126,14 @@ m_dacOverflow(0U), m_watchdog(0U), m_lockout(false) { +#if defined(USE_DCBLOCKER) + ::memset(m_dcState, 0x00U, 4U * sizeof(q31_t)); + m_dcFilter.numStages = DC_FILTER_STAGES; + m_dcFilter.pState = m_dcState; + m_dcFilter.pCoeffs = DC_FILTER; + m_dcFilter.postShift = 0; +#endif + #if defined(MODE_DSTAR) ::memset(m_gaussianState, 0x00U, 40U * sizeof(q15_t)); m_gaussianFilter.numTaps = GAUSSIAN_0_5_FILTER_LEN; @@ -121,16 +141,6 @@ m_lockout(false) m_gaussianFilter.pCoeffs = GAUSSIAN_0_5_FILTER; #endif - ::memset(m_boxcarState, 0x00U, 30U * sizeof(q15_t)); - ::memset(m_nxdnState, 0x00U, 110U * sizeof(q15_t)); - ::memset(m_nxdnISincState, 0x00U, 60U * sizeof(q15_t)); - ::memset(m_dcState, 0x00U, 4U * sizeof(q31_t)); - - m_dcFilter.numStages = DC_FILTER_STAGES; - m_dcFilter.pState = m_dcState; - m_dcFilter.pCoeffs = DC_FILTER; - m_dcFilter.postShift = 0; - #if defined(MODE_DMR) || defined(MODE_YSF) ::memset(m_rrc02State, 0x00U, 70U * sizeof(q15_t)); m_rrc02Filter.numTaps = RRC_0_2_FILTER_LEN; @@ -138,17 +148,17 @@ m_lockout(false) m_rrc02Filter.pCoeffs = RRC_0_2_FILTER; #endif -#if defined(MODE_M17) - ::memset(m_rrc05State, 0x00U, 70U * sizeof(q15_t)); - m_rrc05Filter.numTaps = RRC_0_5_FILTER_LEN; - m_rrc05Filter.pState = m_rrc05State; - m_rrc05Filter.pCoeffs = RRC_0_5_FILTER; -#endif - +#if defined(MODE_P25) + ::memset(m_boxcarState, 0x00U, 30U * sizeof(q15_t)); m_boxcarFilter.numTaps = BOXCAR_FILTER_LEN; m_boxcarFilter.pState = m_boxcarState; m_boxcarFilter.pCoeffs = BOXCAR_FILTER; - +#endif + +#if defined(MODE_NXDN) + ::memset(m_nxdnState, 0x00U, 110U * sizeof(q15_t)); + ::memset(m_nxdnISincState, 0x00U, 60U * sizeof(q15_t)); + m_nxdnFilter.numTaps = NXDN_0_2_FILTER_LEN; m_nxdnFilter.pState = m_nxdnState; m_nxdnFilter.pCoeffs = NXDN_0_2_FILTER; @@ -156,6 +166,14 @@ m_lockout(false) m_nxdnISincFilter.numTaps = NXDN_ISINC_FILTER_LEN; m_nxdnISincFilter.pState = m_nxdnISincState; m_nxdnISincFilter.pCoeffs = NXDN_ISINC_FILTER; +#endif + +#if defined(MODE_M17) + ::memset(m_rrc05State, 0x00U, 70U * sizeof(q15_t)); + m_rrc05Filter.numTaps = RRC_0_5_FILTER_LEN; + m_rrc05Filter.pState = m_rrc05State; + m_rrc05Filter.pCoeffs = RRC_0_5_FILTER; +#endif initInt(); @@ -292,8 +310,10 @@ void CIO::process() // Two seconds timeout if (m_watchdog >= 48000U) { if (m_modemState == STATE_DSTAR || m_modemState == STATE_DMR || m_modemState == STATE_YSF || m_modemState == STATE_P25 || m_modemState == STATE_NXDN || m_modemState == STATE_M17 || m_modemState == STATE_POCSAG) { +#if defined(MODE_DMR) if (m_modemState == STATE_DMR && m_tx) dmrTX.setStart(false); +#endif setMode(STATE_IDLE); } @@ -383,6 +403,7 @@ void CIO::process() } #endif +#if defined(MODE_P25) if (m_p25Enable) { q15_t P25Vals[RX_BLOCK_SIZE]; #if defined(USE_DCBLOCKER) @@ -392,7 +413,9 @@ void CIO::process() #endif p25RX.samples(P25Vals, rssi, RX_BLOCK_SIZE); } +#endif +#if defined(MODE_NXDN) if (m_nxdnEnable) { q15_t NXDNValsTmp[RX_BLOCK_SIZE]; #if defined(USE_DCBLOCKER) @@ -405,7 +428,9 @@ void CIO::process() nxdnRX.samples(NXDNVals, rssi, RX_BLOCK_SIZE); } +#endif +#if defined(MODE_DMR) if (m_dmrEnable) { q15_t DMRVals[RX_BLOCK_SIZE]; ::arm_fir_fast_q15(&m_rrc02Filter, samples, DMRVals, RX_BLOCK_SIZE); @@ -415,6 +440,7 @@ void CIO::process() else dmrDMORX.samples(DMRVals, rssi, RX_BLOCK_SIZE); } +#endif #if defined(MODE_YSF) if (m_ysfEnable) { @@ -440,6 +466,7 @@ void CIO::process() } #endif +#if defined(MODE_FM) if (m_fmEnable) { bool cos = getCOSInt(); #if defined(USE_DCBLOCKER) @@ -448,7 +475,9 @@ void CIO::process() fm.samples(cos, samples, RX_BLOCK_SIZE); #endif } +#endif +#if defined(MODE_FM) && defined(MODE_AX25) if (m_ax25Enable) { #if defined(USE_DCBLOCKER) ax25RX.samples(dcSamples, RX_BLOCK_SIZE); @@ -456,6 +485,7 @@ void CIO::process() ax25RX.samples(samples, RX_BLOCK_SIZE); #endif } +#endif } #if defined(MODE_DSTAR) @@ -472,6 +502,7 @@ void CIO::process() } #endif +#if defined(MODE_DMR) else if (m_modemState == STATE_DMR) { if (m_dmrEnable) { q15_t DMRVals[RX_BLOCK_SIZE]; @@ -488,6 +519,7 @@ void CIO::process() } } } +#endif #if defined(MODE_YSF) else if (m_modemState == STATE_YSF) { @@ -503,6 +535,7 @@ void CIO::process() } #endif +#if defined(MODE_P25) else if (m_modemState == STATE_P25) { if (m_p25Enable) { q15_t P25Vals[RX_BLOCK_SIZE]; @@ -513,7 +546,11 @@ void CIO::process() #endif p25RX.samples(P25Vals, rssi, RX_BLOCK_SIZE); } - } else if (m_modemState == STATE_NXDN) { + } +#endif + +#if defined(MODE_NXDN) + else if (m_modemState == STATE_NXDN) { if (m_nxdnEnable) { q15_t NXDNValsTmp[RX_BLOCK_SIZE]; #if defined(USE_DCBLOCKER) @@ -527,6 +564,7 @@ void CIO::process() nxdnRX.samples(NXDNVals, rssi, RX_BLOCK_SIZE); } } +#endif #if defined(MODE_M17) else if (m_modemState == STATE_M17) { @@ -542,18 +580,26 @@ void CIO::process() } #endif +#if defined(MODE_FM) else if (m_modemState == STATE_FM) { bool cos = getCOSInt(); #if defined(USE_DCBLOCKER) fm.samples(cos, dcSamples, RX_BLOCK_SIZE); + +#if defined(MODE_AX25) if (m_ax25Enable) ax25RX.samples(dcSamples, RX_BLOCK_SIZE); +#endif #else fm.samples(cos, samples, RX_BLOCK_SIZE); + +#if defined(MODE_AX25) if (m_ax25Enable) ax25RX.samples(samples, RX_BLOCK_SIZE); +#endif #endif } +#endif #if defined(MODE_DSTAR) else if (m_modemState == STATE_DSTARCAL) { diff --git a/IO.h b/IO.h index 8361b93..09987ef 100644 --- a/IO.h +++ b/IO.h @@ -67,32 +67,38 @@ private: CRingBuffer m_txBuffer; CRingBuffer m_rssiBuffer; +#if defined(USE_DCBLOCKER) arm_biquad_casd_df1_inst_q31 m_dcFilter; q31_t m_dcState[4]; +#endif #if defined(MODE_DSTAR) arm_fir_instance_q15 m_gaussianFilter; q15_t m_gaussianState[40U]; // NoTaps + BlockSize - 1, 12 + 20 - 1 plus some spare #endif - arm_fir_instance_q15 m_boxcarFilter; - arm_fir_instance_q15 m_nxdnFilter; - arm_fir_instance_q15 m_nxdnISincFilter; - #if defined(MODE_DMR) || defined(MODE_YSF) arm_fir_instance_q15 m_rrc02Filter; q15_t m_rrc02State[70U]; // NoTaps + BlockSize - 1, 42 + 20 - 1 plus some spare #endif +#if defined(MODE_P25) + arm_fir_instance_q15 m_boxcarFilter; + q15_t m_boxcarState[30U]; // NoTaps + BlockSize - 1, 6 + 20 - 1 plus some spare +#endif + +#if defined(MODE_NXDN) + arm_fir_instance_q15 m_nxdnFilter; + arm_fir_instance_q15 m_nxdnISincFilter; + q15_t m_nxdnState[110U]; // NoTaps + BlockSize - 1, 82 + 20 - 1 plus some spare + q15_t m_nxdnISincState[60U]; // NoTaps + BlockSize - 1, 32 + 20 - 1 plus some spare +#endif + #if defined(MODE_M17) arm_fir_instance_q15 m_rrc05Filter; q15_t m_rrc05State[70U]; // NoTaps + BlockSize - 1, 42 + 20 - 1 plus some spare #endif - q15_t m_boxcarState[30U]; // NoTaps + BlockSize - 1, 6 + 20 - 1 plus some spare - q15_t m_nxdnState[110U]; // NoTaps + BlockSize - 1, 82 + 20 - 1 plus some spare - q15_t m_nxdnISincState[60U]; // NoTaps + BlockSize - 1, 32 + 20 - 1 plus some spare - bool m_pttInvert; q15_t m_rxLevel; q15_t m_cwIdTXLevel; diff --git a/NXDNRX.cpp b/NXDNRX.cpp index e9bd41b..a607e25 100644 --- a/NXDNRX.cpp +++ b/NXDNRX.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2018 by Jonathan Naylor G4KLX + * Copyright (C) 2009-2018,2020 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 @@ -17,6 +17,9 @@ */ #include "Config.h" + +#if defined(MODE_NXDN) + #include "Globals.h" #include "NXDNRX.h" #include "Utils.h" @@ -403,3 +406,5 @@ void CNXDNRX::writeRSSIData(uint8_t* data) m_rssiCount = 0U; } +#endif + diff --git a/NXDNRX.h b/NXDNRX.h index 1bff2ac..51d7df2 100644 --- a/NXDNRX.h +++ b/NXDNRX.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015,2016,2017,2018 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2016,2017,2018,2020 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 @@ -16,10 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_NXDN) + #if !defined(NXDNRX_H) #define NXDNRX_H -#include "Config.h" #include "NXDNDefines.h" enum NXDNRX_STATE { @@ -67,3 +70,5 @@ private: #endif +#endif + diff --git a/NXDNTX.cpp b/NXDNTX.cpp index 44c243e..c9cf1de 100644 --- a/NXDNTX.cpp +++ b/NXDNTX.cpp @@ -18,6 +18,9 @@ */ #include "Config.h" + +#if defined(MODE_NXDN) + #include "Globals.h" #include "NXDNTX.h" @@ -200,3 +203,6 @@ void CNXDNTX::setParams(uint8_t txHang) { m_txHang = txHang * 600U; } + +#endif + diff --git a/NXDNTX.h b/NXDNTX.h index 0efdf01..ae25db6 100644 --- a/NXDNTX.h +++ b/NXDNTX.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_NXDN) + #if !defined(NXDNTX_H) #define NXDNTX_H -#include "Config.h" - #include "RingBuffer.h" class CNXDNTX { @@ -55,3 +57,6 @@ private: }; #endif + +#endif + diff --git a/P25RX.cpp b/P25RX.cpp index d322db0..b8d0d51 100644 --- a/P25RX.cpp +++ b/P25RX.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2017 by Jonathan Naylor G4KLX + * Copyright (C) 2009-2017,2020 by Jonathan Naylor G4KLX * Copyright (C) 2018 by Bryan Biedenkapp * * This program is free software; you can redistribute it and/or modify @@ -18,6 +18,9 @@ */ #include "Config.h" + +#if defined(MODE_P25) + #include "Globals.h" #include "P25RX.h" #include "Utils.h" @@ -535,3 +538,6 @@ void CP25RX::writeRSSILdu(uint8_t* ldu) m_rssiAccum = 0U; m_rssiCount = 0U; } + +#endif + diff --git a/P25RX.h b/P25RX.h index 7cab1dd..238fd5d 100644 --- a/P25RX.h +++ b/P25RX.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015,2016,2017 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2016,2017,2020 by Jonathan Naylor G4KLX * Copyright (C) 2018 by Bryan Biedenkapp * * This program is free software; you can redistribute it and/or modify @@ -17,10 +17,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_P25) + #if !defined(P25RX_H) #define P25RX_H -#include "Config.h" #include "P25Defines.h" enum P25RX_STATE { @@ -72,3 +75,6 @@ private: }; #endif + +#endif + diff --git a/P25TX.cpp b/P25TX.cpp index 23aef3d..76aba0c 100644 --- a/P25TX.cpp +++ b/P25TX.cpp @@ -18,6 +18,9 @@ */ #include "Config.h" + +#if defined(MODE_P25) + #include "Globals.h" #include "P25TX.h" @@ -198,3 +201,6 @@ void CP25TX::setParams(uint8_t txHang) { m_txHang = txHang * 1200U; } + +#endif + diff --git a/P25TX.h b/P25TX.h index d6ac3cc..a49d0f2 100644 --- a/P25TX.h +++ b/P25TX.h @@ -16,11 +16,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "Config.h" + +#if defined(MODE_P25) + #if !defined(P25TX_H) #define P25TX_H -#include "Config.h" - #include "RingBuffer.h" class CP25TX { @@ -55,3 +57,6 @@ private: }; #endif + +#endif + diff --git a/SerialPort.cpp b/SerialPort.cpp index 590de0d..72614ac 100644 --- a/SerialPort.cpp +++ b/SerialPort.cpp @@ -112,7 +112,7 @@ const uint8_t MMDVM_DEBUG5 = 0xF5U; #define HW_TYPE "MMDVM" #endif -#define DESCRIPTION "20201106 (D-Star/DMR/System Fusion/P25/NXDN/M17/POCSAG/FM/AX.25)" +#define DESCRIPTION "20201108 (D-Star/DMR/System Fusion/P25/NXDN/M17/POCSAG/FM/AX.25)" #if defined(GITVERSION) #define concat(h, a, b, c) h " " a " " b " GitID #" c "" @@ -204,6 +204,7 @@ void CSerialPort::getStatus() reply[5U] = 0U; #endif +#if defined(MODE_DMR) if (m_dmrEnable) { if (m_duplex) { reply[6U] = dmrTX.getSpace1(); @@ -216,6 +217,10 @@ void CSerialPort::getStatus() reply[6U] = 0U; reply[7U] = 0U; } +#else + reply[6U] = 0U; + reply[7U] = 0U; +#endif #if defined(MODE_YSF) if (m_ysfEnable) @@ -226,15 +231,23 @@ void CSerialPort::getStatus() reply[8U] = 0U; #endif +#if defined(MODE_P25) if (m_p25Enable) reply[9U] = p25TX.getSpace(); else reply[9U] = 0U; +#else + reply[9U] = 0U; +#endif +#if defined(MODE_NXDN) if (m_nxdnEnable) reply[10U] = nxdnTX.getSpace(); else reply[10U] = 0U; +#else + reply[10U] = 0U; +#endif #if defined(MODE_M17) if (m_m17Enable) @@ -254,15 +267,23 @@ void CSerialPort::getStatus() reply[12U] = 0U; #endif +#if defined(MODE_FM) if (m_fmEnable) reply[13U] = fm.getSpace(); else reply[13U] = 0U; +#else + reply[13U] = 0U; +#endif +#if defined(MODE_AX25) if (m_ax25Enable) reply[14U] = ax25TX.getSpace(); else reply[14U] = 0U; +#else + reply[14U] = 0U; +#endif writeInt(1U, reply, 15); } @@ -390,32 +411,48 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint16_t length) #if defined(MODE_YSF) ysfTX.setTXDelay(txDelay); #endif +#if defined(MODE_P25) p25TX.setTXDelay(txDelay); +#endif +#if defined(MODE_DMR) dmrDMOTX.setTXDelay(txDelay); +#endif +#if defined(MODE_NXDN) nxdnTX.setTXDelay(txDelay); +#endif #if defined(MODE_M17) m17TX.setTXDelay(txDelay); #endif #if defined(MODE_POCSAG) pocsagTX.setTXDelay(txDelay); #endif +#if defined(MODE_AX25) ax25TX.setTXDelay(ax25TXDelay); +#endif +#if defined(MODE_DMR) dmrTX.setColorCode(colorCode); dmrRX.setColorCode(colorCode); dmrRX.setDelay(dmrDelay); dmrDMORX.setColorCode(colorCode); dmrIdleRX.setColorCode(colorCode); +#endif #if defined(MODE_YSF) ysfTX.setParams(ysfLoDev, ysfTXHang); #endif +#if defined(MODE_P25) p25TX.setParams(p25TXHang); +#endif +#if defined(MODE_NXDN) nxdnTX.setParams(nxdnTXHang); +#endif #if defined(MODE_M17) m17TX.setParams(m17TXHang); #endif +#if defined(MODE_AX25) ax25RX.setParams(ax25RXTwist, ax25SlotTime, ax25PPersist); +#endif io.setParameters(rxInvert, txInvert, pttInvert, rxLevel, cwIdTXLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel, p25TXLevel, nxdnTXLevel, m17TXLevel, pocsagTXLevel, fmTXLevel, ax25TXLevel, txDCOffset, rxDCOffset, useCOSAsLockout); @@ -424,7 +461,7 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint16_t length) return 0U; } -#if defined(MODE_AX25) +#if defined(MODE_FM) uint8_t CSerialPort::setFMParams1(const uint8_t* data, uint16_t length) { if (length < 8U) @@ -633,30 +670,38 @@ void CSerialPort::setMode(MMDVM_STATE modemState) dstarRX.reset(); #endif +#if defined(MODE_DMR) if (modemState != STATE_DMR) { dmrIdleRX.reset(); dmrDMORX.reset(); dmrRX.reset(); } +#endif #if defined(MODE_YSF) if (modemState != STATE_YSF) ysfRX.reset(); #endif +#if defined(MODE_P25) if (modemState != STATE_P25) p25RX.reset(); +#endif +#if defined(MODE_NXDN) if (modemState != STATE_NXDN) nxdnRX.reset(); +#endif #if defined(MODE_M17) if (modemState != STATE_M17) m17RX.reset(); #endif +#if defined(MODE_FM) if (modemState != STATE_FM) fm.reset(); +#endif cwIdTX.reset(); @@ -822,14 +867,22 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length) if (m_modemState == STATE_DSTARCAL) err = calDStarTX.write(buffer, length); #endif +#if defined(MODE_DMR) if (m_modemState == STATE_DMRCAL || m_modemState == STATE_LFCAL || m_modemState == STATE_DMRCAL1K || m_modemState == STATE_DMRDMO1K) err = calDMR.write(buffer, length); +#endif +#if defined(MODE_FM) if (m_modemState == STATE_FMCAL10K || m_modemState == STATE_FMCAL12K || m_modemState == STATE_FMCAL15K || m_modemState == STATE_FMCAL20K || m_modemState == STATE_FMCAL25K || m_modemState == STATE_FMCAL30K) err = calFM.write(buffer, length); +#endif +#if defined(MODE_P25) if (m_modemState == STATE_P25CAL1K) err = calP25.write(buffer, length); +#endif +#if defined(MODE_NXDN) if (m_modemState == STATE_NXDNCAL1K) err = calNXDN.write(buffer, length); +#endif #if defined(MODE_POCSAG) if (m_modemState == STATE_POCSAGCAL) err = calPOCSAG.write(buffer, length); @@ -896,6 +949,7 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length) break; #endif +#if defined(MODE_DMR) case MMDVM_DMR_DATA1: if (m_dmrEnable) { if (m_modemState == STATE_IDLE || m_modemState == STATE_DMR) { @@ -968,6 +1022,7 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length) sendNAK(err); } break; +#endif #if defined(MODE_YSF) case MMDVM_YSF_DATA: @@ -985,6 +1040,7 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length) break; #endif +#if defined(MODE_P25) case MMDVM_P25_HDR: if (m_p25Enable) { if (m_modemState == STATE_IDLE || m_modemState == STATE_P25) @@ -1012,7 +1068,9 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length) sendNAK(err); } break; +#endif +#if defined(MODE_NXDN) case MMDVM_NXDN_DATA: if (m_nxdnEnable) { if (m_modemState == STATE_IDLE || m_modemState == STATE_NXDN) @@ -1026,6 +1084,7 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length) sendNAK(err); } break; +#endif #if defined(MODE_M17) case MMDVM_M17_DATA: @@ -1059,6 +1118,7 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length) break; #endif +#if defined(MODE_FM) case MMDVM_FM_DATA: if (m_fmEnable) { if (m_modemState == STATE_IDLE || m_modemState == STATE_FM) @@ -1072,7 +1132,9 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length) sendNAK(err); } break; +#endif +#if defined(MODE_AX25) case MMDVM_AX25_DATA: if (m_ax25Enable) { if (m_modemState == STATE_IDLE || m_modemState == STATE_FM) @@ -1083,6 +1145,7 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length) sendNAK(err); } break; +#endif case MMDVM_TRANSPARENT: case MMDVM_QSO_INFO: @@ -1188,6 +1251,7 @@ void CSerialPort::writeDStarEOT() } #endif +#if defined(MODE_DMR) void CSerialPort::writeDMRData(bool slot, const uint8_t* data, uint8_t length) { if (m_modemState != STATE_DMR && m_modemState != STATE_IDLE) @@ -1227,6 +1291,7 @@ void CSerialPort::writeDMRLost(bool slot) writeInt(1U, reply, 3); } +#endif #if defined(MODE_YSF) void CSerialPort::writeYSFData(const uint8_t* data, uint8_t length) @@ -1270,6 +1335,7 @@ void CSerialPort::writeYSFLost() } #endif +#if defined(MODE_P25) void CSerialPort::writeP25Hdr(const uint8_t* data, uint8_t length) { if (m_modemState != STATE_P25 && m_modemState != STATE_IDLE) @@ -1332,7 +1398,9 @@ void CSerialPort::writeP25Lost() writeInt(1U, reply, 3); } +#endif +#if defined(MODE_NXDN) void CSerialPort::writeNXDNData(const uint8_t* data, uint8_t length) { if (m_modemState != STATE_NXDN && m_modemState != STATE_IDLE) @@ -1372,6 +1440,7 @@ void CSerialPort::writeNXDNLost() writeInt(1U, reply, 3); } +#endif #if defined(MODE_M17) void CSerialPort::writeM17Data(const uint8_t* data, uint8_t length) @@ -1415,6 +1484,7 @@ void CSerialPort::writeM17Lost() } #endif +#if defined(MODE_FM) void CSerialPort::writeFMData(const uint8_t* data, uint16_t length) { if (m_modemState != STATE_FM && m_modemState != STATE_IDLE) @@ -1481,7 +1551,9 @@ void CSerialPort::writeFMEOT() writeInt(1U, reply, 3U); } +#endif +#if defined(MODE_AX25) void CSerialPort::writeAX25Data(const uint8_t* data, uint16_t length) { if (m_modemState != STATE_FM && m_modemState != STATE_IDLE) @@ -1513,6 +1585,7 @@ void CSerialPort::writeAX25Data(const uint8_t* data, uint16_t length) writeInt(1U, reply, length + 3U); } } +#endif void CSerialPort::writeCalData(const uint8_t* data, uint8_t length) {