diff --git a/DMRNetwork.cpp b/DMRNetwork.cpp index c9f251a..0b1edcf 100644 --- a/DMRNetwork.cpp +++ b/DMRNetwork.cpp @@ -46,6 +46,7 @@ m_slot1(slot1), m_slot2(slot2), m_jitterEnabled(jitterEnabled), m_jitterBuffers(NULL), +m_delayBuffers(NULL), m_hwType(hwType), m_status(WAITING_CONNECT), m_retryTimer(1000U, 10U), @@ -79,11 +80,16 @@ m_beacon(false) m_salt = new unsigned char[sizeof(uint32_t)]; m_id = new uint8_t[4U]; m_streamId = new uint32_t[2U]; + m_jitterBuffers = new CJitterBuffer*[3U]; + m_delayBuffers = new CDelayBuffer*[3U]; m_jitterBuffers[1U] = new CJitterBuffer("DMR Slot 1", 60U, DMR_SLOT_TIME, jitter, 256U, debug); m_jitterBuffers[2U] = new CJitterBuffer("DMR Slot 2", 60U, DMR_SLOT_TIME, jitter, 256U, debug); + m_delayBuffers[1U] = new CDelayBuffer("DMR Slot 1", 60U, DMR_SLOT_TIME, jitter, debug); + m_delayBuffers[2U] = new CDelayBuffer("DMR Slot 2", 60U, DMR_SLOT_TIME, jitter, debug); + m_id[0U] = id >> 24; m_id[1U] = id >> 16; m_id[2U] = id >> 8; @@ -101,11 +107,16 @@ CDMRNetwork::~CDMRNetwork() delete m_jitterBuffers[1U]; delete m_jitterBuffers[2U]; + delete m_delayBuffers[1U]; + delete m_delayBuffers[2U]; + delete[] m_buffer; delete[] m_salt; delete[] m_streamId; delete[] m_id; + delete[] m_jitterBuffers; + delete[] m_delayBuffers; } void CDMRNetwork::setOptions(const std::string& options) @@ -151,8 +162,14 @@ bool CDMRNetwork::read(CDMRData& data) for (unsigned int slotNo = 1U; slotNo <= 2U; slotNo++) { unsigned int length = 0U; - JB_STATUS status = m_jitterBuffers[slotNo]->getData(m_buffer, length); - if (status != JBS_NO_DATA) { + B_STATUS status = BS_NO_DATA; + + if (m_jitterEnabled) + status = m_jitterBuffers[slotNo]->getData(m_buffer, length); + else + status = m_delayBuffers[slotNo]->getData(m_buffer, length); + + if (status != BS_NO_DATA) { unsigned char seqNo = m_buffer[4U]; unsigned int srcId = (m_buffer[5U] << 16) | (m_buffer[6U] << 8) | (m_buffer[7U] << 0); @@ -166,7 +183,7 @@ bool CDMRNetwork::read(CDMRData& data) data.setSrcId(srcId); data.setDstId(dstId); data.setFLCO(flco); - data.setMissing(status == JBS_MISSING); + data.setMissing(status == BS_MISSING); bool dataSync = (m_buffer[15U] & 0x20U) == 0x20U; bool voiceSync = (m_buffer[15U] & 0x10U) == 0x10U; @@ -331,6 +348,9 @@ void CDMRNetwork::clock(unsigned int ms) m_jitterBuffers[1U]->clock(ms); m_jitterBuffers[2U]->clock(ms); + m_delayBuffers[1U]->clock(ms); + m_delayBuffers[2U]->clock(ms); + if (m_status == WAITING_CONNECT) { m_retryTimer.clock(ms); if (m_retryTimer.isRunning() && m_retryTimer.hasExpired()) { @@ -475,9 +495,11 @@ void CDMRNetwork::reset(unsigned int slotNo) if (slotNo == 1U) { m_jitterBuffers[1U]->reset(); + m_delayBuffers[1U]->reset(); m_streamId[0U] = ::rand() + 1U; } else { m_jitterBuffers[2U]->reset(); + m_delayBuffers[2U]->reset(); m_streamId[1U] = ::rand() + 1U; } } @@ -514,7 +536,7 @@ void CDMRNetwork::receiveData(const unsigned char* data, unsigned int length) m_jitterBuffers[slotNo]->addData(data, length, seqNo); } } else { - m_jitterBuffers[slotNo]->appendData(data, length); + m_delayBuffers[slotNo]->addData(data, length); } } diff --git a/DMRNetwork.h b/DMRNetwork.h index cfacb77..799b2bc 100644 --- a/DMRNetwork.h +++ b/DMRNetwork.h @@ -20,6 +20,7 @@ #define DMRNetwork_H #include "JitterBuffer.h" +#include "DelayBuffer.h" #include "UDPSocket.h" #include "Timer.h" #include "DMRData.h" @@ -72,6 +73,7 @@ private: bool m_slot2; bool m_jitterEnabled; CJitterBuffer** m_jitterBuffers; + CDelayBuffer** m_delayBuffers; HW_TYPE m_hwType; enum STATUS { diff --git a/Defines.h b/Defines.h index 9285789..852fd3e 100644 --- a/Defines.h +++ b/Defines.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015,2016,2017 by Jonathan Naylor G4KLX + * Copyright (C) 2015,2016,2017,2018 by Jonathan Naylor G4KLX * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,4 +57,10 @@ enum RPT_NET_STATE { RS_NET_DATA }; +enum B_STATUS { + BS_NO_DATA, + BS_DATA, + BS_MISSING +}; + #endif diff --git a/DelayBuffer.cpp b/DelayBuffer.cpp new file mode 100644 index 0000000..e38125b --- /dev/null +++ b/DelayBuffer.cpp @@ -0,0 +1,137 @@ +/* +* 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 "DelayBuffer.h" + +#include "Log.h" + +#include +#include +#include + +CDelayBuffer::CDelayBuffer(const std::string& name, unsigned int blockSize, unsigned int blockTime, unsigned int jitterTime, bool debug) : +m_name(name), +m_blockSize(blockSize), +m_blockTime(blockTime), +m_debug(debug), +m_timer(1000U, 0U, jitterTime), +m_stopWatch(), +m_running(false), +m_buffer(1000U, name.c_str()), +m_outputCount(0U), +m_lastData(NULL), +m_lastDataLength(0U) +{ + assert(blockSize > 0U); + assert(blockTime > 0U); + assert(jitterTime > 0U); + + m_lastData = new unsigned char[m_blockSize]; + + reset(); +} + +CDelayBuffer::~CDelayBuffer() +{ + delete[] m_lastData; +} + +bool CDelayBuffer::addData(const unsigned char* data, unsigned int length) +{ + assert(data != NULL); + assert(length > 0U); + assert(length == m_blockSize); + + if (m_debug) + LogDebug("%s, DelayBuffer: appending data", m_name.c_str()); + + m_buffer.addData(data, length); + + if (!m_timer.isRunning()) { + LogDebug("%s, DelayBuffer: starting the timer from append", m_name.c_str()); + m_timer.start(); + } + + return true; +} + +B_STATUS CDelayBuffer::getData(unsigned char* data, unsigned int& length) +{ + assert(data != NULL); + + if (!m_running) + return BS_NO_DATA; + + unsigned int needed = m_stopWatch.elapsed() / m_blockTime + 2U; + if (needed <= m_outputCount) + return BS_NO_DATA; + + if (!m_buffer.isEmpty()) { + if (m_debug) + LogDebug("%s, DelayBuffer: returning data, elapsed=%ums", m_name.c_str(), m_stopWatch.elapsed()); + + length = m_buffer.getData(data, m_blockSize); + + // Save this data in case no more data is available next time + ::memcpy(m_lastData, data, length); + m_lastDataLength = length; + + m_outputCount++; + + return BS_DATA; + } + + LogDebug("%s, DelayBuffer: no data available, elapsed=%ums", m_name.c_str(), m_stopWatch.elapsed()); + + // Return the last data frame if we have it + if (m_lastDataLength > 0U) { + LogDebug("%s, DelayBuffer: returning the last received frame", m_name.c_str()); + ::memcpy(data, m_lastData, m_lastDataLength); + length = m_lastDataLength; + + m_outputCount++; + + return BS_MISSING; + } + + return BS_NO_DATA; +} + +void CDelayBuffer::reset() +{ + m_buffer.clear(); + + m_lastDataLength = 0U; + + m_outputCount = 0U; + + m_timer.stop(); + + m_running = false; +} + +void CDelayBuffer::clock(unsigned int ms) +{ + m_timer.clock(ms); + if (m_timer.isRunning() && m_timer.hasExpired()) { + if (!m_running) { + m_stopWatch.start(); + m_running = true; + } + } +} diff --git a/DelayBuffer.h b/DelayBuffer.h new file mode 100644 index 0000000..d773f26 --- /dev/null +++ b/DelayBuffer.h @@ -0,0 +1,57 @@ +/* +* 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(DELAYBUFFER_H) +#define DELAYBUFFER_H + +#include "RingBuffer.h" +#include "StopWatch.h" +#include "Defines.h" +#include "Timer.h" + +#include + +class CDelayBuffer { +public: + CDelayBuffer(const std::string& name, unsigned int blockSize, unsigned int blockTime, unsigned int jitterTime, bool debug); + ~CDelayBuffer(); + + bool addData(const unsigned char* data, unsigned int length); + + B_STATUS getData(unsigned char* data, unsigned int& length); + + void reset(); + + void clock(unsigned int ms); + +private: + std::string m_name; + unsigned int m_blockSize; + unsigned int m_blockTime; + bool m_debug; + CTimer m_timer; + CStopWatch m_stopWatch; + bool m_running; + CRingBuffer m_buffer; + unsigned int m_outputCount; + + unsigned char* m_lastData; + unsigned int m_lastDataLength; +}; + +#endif diff --git a/JitterBuffer.cpp b/JitterBuffer.cpp index 25522ec..3af4f48 100644 --- a/JitterBuffer.cpp +++ b/JitterBuffer.cpp @@ -162,16 +162,16 @@ bool CJitterBuffer::appendData(const unsigned char* data, unsigned int length) return true; } -JB_STATUS CJitterBuffer::getData(unsigned char* data, unsigned int& length) +B_STATUS CJitterBuffer::getData(unsigned char* data, unsigned int& length) { assert(data != NULL); if (!m_running) - return JBS_NO_DATA; + return BS_NO_DATA; unsigned int sequenceNumber = m_stopWatch.elapsed() / m_blockTime + 2U; if (m_headSequenceNumber > sequenceNumber) - return JBS_NO_DATA; + return BS_NO_DATA; unsigned int head = m_headSequenceNumber % m_blockCount; @@ -190,7 +190,7 @@ JB_STATUS CJitterBuffer::getData(unsigned char* data, unsigned int& length) m_buffer[head].m_length = 0U; - return JBS_DATA; + return BS_DATA; } m_buffer[head].m_length = 0U; @@ -203,10 +203,10 @@ JB_STATUS CJitterBuffer::getData(unsigned char* data, unsigned int& length) ::memcpy(data, m_lastData, m_lastDataLength); length = m_lastDataLength; - return JBS_MISSING; + return BS_MISSING; } - return JBS_NO_DATA; + return BS_NO_DATA; } void CJitterBuffer::reset() diff --git a/JitterBuffer.h b/JitterBuffer.h index 46575ee..9a9f1fe 100644 --- a/JitterBuffer.h +++ b/JitterBuffer.h @@ -20,16 +20,11 @@ #define JITTERBUFFER_H #include "StopWatch.h" +#include "Defines.h" #include "Timer.h" #include -enum JB_STATUS { - JBS_NO_DATA, - JBS_DATA, - JBS_MISSING -}; - class CJitterBuffer { public: CJitterBuffer(const std::string& name, unsigned int blockSize, unsigned int blockTime, unsigned int jitterTime, unsigned int topSequenceNumber, bool debug); @@ -38,7 +33,7 @@ public: bool addData(const unsigned char* data, unsigned int length, unsigned int sequenceNumber); bool appendData(const unsigned char* data, unsigned int length); - JB_STATUS getData(unsigned char* data, unsigned int& length); + B_STATUS getData(unsigned char* data, unsigned int& length); void reset(); diff --git a/MMDVMHost.vcxproj b/MMDVMHost.vcxproj index 62fd668..b5b8162 100644 --- a/MMDVMHost.vcxproj +++ b/MMDVMHost.vcxproj @@ -158,6 +158,7 @@ + @@ -232,6 +233,7 @@ + diff --git a/MMDVMHost.vcxproj.filters b/MMDVMHost.vcxproj.filters index d6ba4f3..6f28b05 100644 --- a/MMDVMHost.vcxproj.filters +++ b/MMDVMHost.vcxproj.filters @@ -230,6 +230,9 @@ Header Files + + Header Files + @@ -430,5 +433,8 @@ Source Files + + Source Files + \ No newline at end of file diff --git a/Makefile b/Makefile index 1a45e69..43c1476 100644 --- a/Makefile +++ b/Makefile @@ -7,11 +7,12 @@ LIBS = -lpthread LDFLAGS = -g OBJECTS = \ - AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ - DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ - Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o P25Control.o \ - P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o \ - StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o DelayBuffer.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \ + DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o \ + NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o \ + RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o \ + YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o all: MMDVMHost diff --git a/Makefile.Pi b/Makefile.Pi index f28cda0..22fc628 100644 --- a/Makefile.Pi +++ b/Makefile.Pi @@ -7,11 +7,12 @@ LIBS = -lwiringPi -lwiringPiDev -lpthread LDFLAGS = -g -L/usr/local/lib OBJECTS = \ - AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ - DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ - Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o P25Control.o \ - P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o \ - StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o DelayBuffer.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \ + DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o \ + NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o \ + RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o \ + YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o all: MMDVMHost diff --git a/Makefile.Pi.Adafruit b/Makefile.Pi.Adafruit index 9f69fee..390d07d 100644 --- a/Makefile.Pi.Adafruit +++ b/Makefile.Pi.Adafruit @@ -7,11 +7,12 @@ LIBS = -lwiringPi -lwiringPiDev -lpthread LDFLAGS = -g -L/usr/local/lib OBJECTS = \ - AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ - DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ - Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o \ - P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o \ - SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o DelayBuffer.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \ + DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \ + Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o \ + RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o \ + YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o all: MMDVMHost diff --git a/Makefile.Pi.HD44780 b/Makefile.Pi.HD44780 index 4548ee4..ae7266e 100644 --- a/Makefile.Pi.HD44780 +++ b/Makefile.Pi.HD44780 @@ -7,11 +7,12 @@ LIBS = -lwiringPi -lwiringPiDev -lpthread LDFLAGS = -g -L/usr/local/lib OBJECTS = \ - AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ - DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ - Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o \ - P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o \ - SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o DelayBuffer.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \ + DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \ + Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o \ + RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o \ + YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o all: MMDVMHost diff --git a/Makefile.Pi.OLED b/Makefile.Pi.OLED index 4cf1b2e..ff61b18 100644 --- a/Makefile.Pi.OLED +++ b/Makefile.Pi.OLED @@ -7,11 +7,12 @@ LIBS = -lArduiPi_OLED -li2c -lpthread LDFLAGS = -g -L/usr/local/lib OBJECTS = \ - AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ - DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ - Golay24128.o Hamming.o JitterBuffer.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o \ - P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o \ - SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o DelayBuffer.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \ + DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o JitterBuffer.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \ + Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o \ + RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o \ + YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o all: MMDVMHost diff --git a/Makefile.Pi.PCF8574 b/Makefile.Pi.PCF8574 index d1fa047..5aea72c 100644 --- a/Makefile.Pi.PCF8574 +++ b/Makefile.Pi.PCF8574 @@ -7,11 +7,12 @@ LIBS = -lwiringPi -lwiringPiDev -lpthread LDFLAGS = -g -L/usr/local/lib OBJECTS = \ - AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ - DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ - Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o \ - P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o \ - SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o DelayBuffer.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \ + DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o HD44780.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o \ + Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o \ + RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o \ + YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o all: MMDVMHost diff --git a/Makefile.Solaris b/Makefile.Solaris index 9e8769f..4c47f85 100644 --- a/Makefile.Solaris +++ b/Makefile.Solaris @@ -7,11 +7,12 @@ LIBS = -lpthread -lsocket LDFLAGS = -g OBJECTS = \ - AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ - DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ - Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o P25Control.o \ - P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o \ - StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o DelayBuffer.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o \ + DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o \ + DStarSlowData.o Golay2087.o Golay24128.o Hamming.o JitterBuffer.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o \ + NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o QR1676.o RS129.o RS241213.o \ + RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o \ + YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o all: MMDVMHost