diff --git a/DMREmbeddedData.cpp b/DMREmbeddedData.cpp index a424d17..26e6e59 100644 --- a/DMREmbeddedData.cpp +++ b/DMREmbeddedData.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include "DMREmbeddedLC.h" +#include "DMREmbeddedData.h" #include "Hamming.h" #include "Utils.h" @@ -26,8 +26,7 @@ #include #include -CDMREmbeddedLC::CDMREmbeddedLC(unsigned int slotNo) : -m_slotNo(slotNo), +CDMREmbeddedData::CDMREmbeddedData() : m_raw(NULL), m_state(LCS_NONE), m_data(NULL), @@ -38,14 +37,14 @@ m_valid(false) m_data = new bool[72U]; } -CDMREmbeddedLC::~CDMREmbeddedLC() +CDMREmbeddedData::~CDMREmbeddedData() { delete[] m_raw; delete[] m_data; } // Add LC data (which may consist of 4 blocks) to the data store -bool CDMREmbeddedLC::addData(const unsigned char* data, unsigned char lcss) +bool CDMREmbeddedData::addData(const unsigned char* data, unsigned char lcss) { assert(data != NULL); @@ -64,6 +63,7 @@ bool CDMREmbeddedLC::addData(const unsigned char* data, unsigned char lcss) // Show we are ready for the next LC block m_state = LCS_FIRST; m_valid = false; + return false; } @@ -74,6 +74,7 @@ bool CDMREmbeddedLC::addData(const unsigned char* data, unsigned char lcss) // Show we are ready for the next LC block m_state = LCS_SECOND; + return false; } @@ -84,6 +85,7 @@ bool CDMREmbeddedLC::addData(const unsigned char* data, unsigned char lcss) // Show we are ready for the final LC block m_state = LCS_THIRD; + return false; } @@ -92,24 +94,34 @@ bool CDMREmbeddedLC::addData(const unsigned char* data, unsigned char lcss) for (unsigned int a = 0U; a < 32U; a++) m_raw[a + 96U] = rawData[a + 4U]; - // Process the complete data block - return processEmbeddedData(); - } + // Show that we're not ready for any more data + m_state = LCS_NONE; - // Is this a single block embedded LC - if (lcss == 0U) - return false; + // Process the complete data block + decodeEmbeddedData(); + if (m_valid) + encodeEmbeddedData(); + + return m_valid; + } return false; } -void CDMREmbeddedLC::setData(const CDMRLC& lc) +void CDMREmbeddedData::setLC(const CDMRLC& lc) +{ + lc.getData(m_data); + + m_FLCO = lc.getFLCO(); + m_valid = true; + + encodeEmbeddedData(); +} + +void CDMREmbeddedData::encodeEmbeddedData() { - bool lcData[72U]; - lc.getData(lcData); - unsigned int crc; - CCRC::encodeFiveBit(lcData, crc); + CCRC::encodeFiveBit(m_data, crc); bool data[128U]; ::memset(data, 0x00U, 128U * sizeof(bool)); @@ -122,19 +134,19 @@ void CDMREmbeddedLC::setData(const CDMRLC& lc) unsigned int b = 0U; for (unsigned int a = 0U; a < 11U; a++, b++) - data[a] = lcData[b]; + data[a] = m_data[b]; for (unsigned int a = 16U; a < 27U; a++, b++) - data[a] = lcData[b]; + data[a] = m_data[b]; for (unsigned int a = 32U; a < 42U; a++, b++) - data[a] = lcData[b]; + data[a] = m_data[b]; for (unsigned int a = 48U; a < 58U; a++, b++) - data[a] = lcData[b]; + data[a] = m_data[b]; for (unsigned int a = 64U; a < 74U; a++, b++) - data[a] = lcData[b]; + data[a] = m_data[b]; for (unsigned int a = 80U; a < 90U; a++, b++) - data[a] = lcData[b]; + data[a] = m_data[b]; for (unsigned int a = 96U; a < 106U; a++, b++) - data[a] = lcData[b]; + data[a] = m_data[b]; // Hamming (16,11,4) check each row except the last one for (unsigned int a = 0U; a < 112U; a += 16U) @@ -154,7 +166,7 @@ void CDMREmbeddedLC::setData(const CDMRLC& lc) } } -unsigned char CDMREmbeddedLC::getData(unsigned char* data, unsigned char n) const +unsigned char CDMREmbeddedData::getData(unsigned char* data, unsigned char n) const { assert(data != NULL); @@ -198,7 +210,7 @@ unsigned char CDMREmbeddedLC::getData(unsigned char* data, unsigned char n) cons } // Unpack and error check an embedded LC -bool CDMREmbeddedLC::processEmbeddedData() +void CDMREmbeddedData::decodeEmbeddedData() { // The data is unpacked downwards in columns bool data[128U]; @@ -215,14 +227,14 @@ bool CDMREmbeddedLC::processEmbeddedData() // Hamming (16,11,4) check each row except the last one for (unsigned int a = 0U; a < 112U; a += 16U) { if (!CHamming::decode16114(data + a)) - return false; + return; } // Check the parity bits for (unsigned int a = 0U; a < 16U; a++) { bool parity = data[a + 0U] ^ data[a + 16U] ^ data[a + 32U] ^ data[a + 48U] ^ data[a + 64U] ^ data[a + 80U] ^ data[a + 96U] ^ data[a + 112U]; if (parity) - return false; + return; } // We have passed the Hamming check so extract the actual payload @@ -252,7 +264,7 @@ bool CDMREmbeddedLC::processEmbeddedData() // Now CRC check this if (!CCRC::checkFiveBit(m_data, crc)) - return false; + return; m_valid = true; @@ -260,44 +272,9 @@ bool CDMREmbeddedLC::processEmbeddedData() unsigned char flco; CUtils::bitsToByteBE(m_data + 0U, flco); m_FLCO = FLCO(flco & 0x3FU); - - char text[80U]; - - // Only generate the LC when it's the correct FLCO - switch (m_FLCO) { - case FLCO_GROUP: - case FLCO_USER_USER: - // ::sprintf(text, "DMR Slot %u, Embedded LC Data", m_slotNo); - // CUtils::dump(1U, text, m_data, 72U); - return true; - case FLCO_GPS_INFO: - ::sprintf(text, "DMR Slot %u, Embedded GPS Info", m_slotNo); - CUtils::dump(1U, text, m_data, 72U); - return true; - case FLCO_TALKER_ALIAS_HEADER: - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Header", m_slotNo); - CUtils::dump(1U, text, m_data, 72U); - return true; - case FLCO_TALKER_ALIAS_BLOCK1: - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 1", m_slotNo); - CUtils::dump(1U, text, m_data, 72U); - return true; - case FLCO_TALKER_ALIAS_BLOCK2: - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 2", m_slotNo); - CUtils::dump(1U, text, m_data, 72U); - return true; - case FLCO_TALKER_ALIAS_BLOCK3: - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 3", m_slotNo); - CUtils::dump(1U, text, m_data, 72U); - return true; - default: - ::sprintf(text, "DMR Slot %u, Unknown Embedded Data", m_slotNo); - CUtils::dump(1U, text, m_data, 72U); - return false; - } } -CDMRLC* CDMREmbeddedLC::getLC() const +CDMRLC* CDMREmbeddedData::getLC() const { if (!m_valid) return NULL; @@ -308,8 +285,38 @@ CDMRLC* CDMREmbeddedLC::getLC() const return new CDMRLC(m_data); } -void CDMREmbeddedLC::reset() +bool CDMREmbeddedData::isValid() const +{ + return m_valid; +} + +FLCO CDMREmbeddedData::getFLCO() const +{ + return m_FLCO; +} + +void CDMREmbeddedData::reset() { m_state = LCS_NONE; m_valid = false; } + +bool CDMREmbeddedData::getRawData(unsigned char* data) const +{ + assert(data != NULL); + + if (!m_valid) + return false; + + CUtils::bitsToByteBE(m_data + 0U, data[0U]); + CUtils::bitsToByteBE(m_data + 8U, data[1U]); + CUtils::bitsToByteBE(m_data + 16U, data[2U]); + CUtils::bitsToByteBE(m_data + 24U, data[3U]); + CUtils::bitsToByteBE(m_data + 32U, data[4U]); + CUtils::bitsToByteBE(m_data + 40U, data[5U]); + CUtils::bitsToByteBE(m_data + 48U, data[6U]); + CUtils::bitsToByteBE(m_data + 56U, data[7U]); + CUtils::bitsToByteBE(m_data + 65U, data[8U]); + + return true; +} diff --git a/DMREmbeddedData.h b/DMREmbeddedData.h index 259a5a0..7222dcd 100644 --- a/DMREmbeddedData.h +++ b/DMREmbeddedData.h @@ -16,8 +16,8 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifndef DMREmbeddedLC_H -#define DMREmbeddedLC_H +#ifndef DMREmbeddedData_H +#define DMREmbeddedData_H #include "DMRDefines.h" #include "DMRLC.h" @@ -29,30 +29,35 @@ enum LC_STATE { LCS_THIRD }; -class CDMREmbeddedLC +class CDMREmbeddedData { public: - CDMREmbeddedLC(unsigned int slotNo); - ~CDMREmbeddedLC(); + CDMREmbeddedData(); + ~CDMREmbeddedData(); bool addData(const unsigned char* data, unsigned char lcss); - CDMRLC* getLC() const; - void setData(const CDMRLC& lc); + CDMRLC* getLC() const; + void setLC(const CDMRLC& lc); unsigned char getData(unsigned char* data, unsigned char n) const; + bool getRawData(unsigned char* data) const; + + bool isValid() const; + FLCO getFLCO() const; + void reset(); private: - unsigned int m_slotNo; bool* m_raw; LC_STATE m_state; bool* m_data; FLCO m_FLCO; bool m_valid; - bool processEmbeddedData(); + void decodeEmbeddedData(); + void encodeEmbeddedData(); }; #endif diff --git a/DMRSlot.cpp b/DMRSlot.cpp index 92b5c8c..44f0905 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -59,8 +59,14 @@ m_slotNo(slotNo), m_queue(5000U, "DMR Slot"), m_rfState(RS_RF_LISTENING), m_netState(RS_NET_IDLE), -m_rfEmbeddedLC(slotNo), -m_netEmbeddedLC(slotNo), +m_rfEmbeddedLC(), +m_rfEmbeddedData(NULL), +m_rfEmbeddedReadN(0U), +m_rfEmbeddedWriteN(1U), +m_netEmbeddedLC(), +m_netEmbeddedData(NULL), +m_netEmbeddedReadN(0U), +m_netEmbeddedWriteN(1U), m_rfLC(NULL), m_netLC(NULL), m_rfDataHeader(), @@ -94,11 +100,16 @@ m_fp(NULL) { m_lastFrame = new unsigned char[DMR_FRAME_LENGTH_BYTES + 2U]; + m_rfEmbeddedData = new CDMREmbeddedData[2U]; + m_netEmbeddedData = new CDMREmbeddedData[2U]; + m_interval.start(); } CDMRSlot::~CDMRSlot() { + delete[] m_rfEmbeddedData; + delete[] m_netEmbeddedData; delete[] m_lastFrame; } @@ -186,6 +197,11 @@ void CDMRSlot::writeModem(unsigned char *data, unsigned int len) m_rfLC = lc; + // The standby LC data + m_rfEmbeddedLC.setLC(*m_rfLC); + m_rfEmbeddedData[0U].setLC(*m_rfLC); + m_rfEmbeddedData[1U].setLC(*m_rfLC); + // Regenerate the LC data fullLC.encode(*m_rfLC, data + 2U, DT_VOICE_LC_HEADER); @@ -199,12 +215,13 @@ void CDMRSlot::writeModem(unsigned char *data, unsigned int len) data[1U] = 0x00U; m_rfTimeoutTimer.start(); - m_rfEmbeddedLC.reset(); m_rfFrames = 0U; m_rfSeqNo = 0U; m_rfBits = 1U; m_rfErrs = 0U; + m_rfEmbeddedReadN = 0U; + m_rfEmbeddedWriteN = 1U; m_minRSSI = m_rssi; m_maxRSSI = m_rssi; @@ -471,13 +488,15 @@ void CDMRSlot::writeModem(unsigned char *data, unsigned int len) } m_rfBits += 141U; - m_rfFrames++; data[0U] = TAG_DATA; data[1U] = 0x00U; - m_rfEmbeddedLC.reset(); + m_rfEmbeddedReadN = (m_rfEmbeddedReadN + 1U) % 2U; + m_rfEmbeddedWriteN = (m_rfEmbeddedWriteN + 1U) % 2U; + + m_rfEmbeddedData[m_rfEmbeddedWriteN].reset(); if (m_duplex) writeQueueRF(data); @@ -493,12 +512,6 @@ void CDMRSlot::writeModem(unsigned char *data, unsigned int len) if (m_rfState == RS_RF_AUDIO) { m_rfN = data[1U] & 0x0FU; - // Regenerate the EMB - CDMREMB emb; - emb.putData(data + 2U); - emb.setColorCode(m_colorCode); - emb.getData(data + 2U); - unsigned int errors = 0U; unsigned char fid = m_rfLC->getFID(); if (fid == FID_ETSI || fid == FID_DMRA) { @@ -507,12 +520,67 @@ void CDMRSlot::writeModem(unsigned char *data, unsigned int len) m_rfErrs += errors; } - m_rfEmbeddedLC.addData(data + 2U, emb.getLCSS()); - m_rfBits += 141U; - m_rfFrames++; + // Get the LCSS from the EMB + CDMREMB emb; + emb.putData(data + 2U); + unsigned char lcss = emb.getLCSS(); + + // Dump any interesting Embedded Data + bool ret = m_rfEmbeddedData[m_rfEmbeddedWriteN].addData(data + 2U, lcss); + if (ret) { + FLCO flco = m_rfEmbeddedData[m_rfEmbeddedWriteN].getFLCO(); + + unsigned char data[9U]; + m_rfEmbeddedData[m_rfEmbeddedWriteN].getRawData(data); + + char text[80U]; + switch (flco) { + case FLCO_GROUP: + case FLCO_USER_USER: + // ::sprintf(text, "DMR Slot %u, Embedded LC", m_slotNo); + // CUtils::dump(1U, text, data, 9U); + break; + case FLCO_GPS_INFO: + ::sprintf(text, "DMR Slot %u, Embedded GPS Info", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + case FLCO_TALKER_ALIAS_HEADER: + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Header", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + case FLCO_TALKER_ALIAS_BLOCK1: + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 1", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + case FLCO_TALKER_ALIAS_BLOCK2: + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 2", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + case FLCO_TALKER_ALIAS_BLOCK3: + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 3", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + default: + ::sprintf(text, "DMR Slot %u, Unknown Embedded Data", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + } + } + + // Regenerate the previous super blocks Embedded Data or substitude the LC for it + if (m_rfEmbeddedData[m_rfEmbeddedReadN].isValid()) + lcss = m_rfEmbeddedData[m_rfEmbeddedReadN].getData(data + 2U, m_rfN); + else + lcss = m_rfEmbeddedLC.getData(data + 2U, m_rfN); + + // Regenerate the EMB + emb.setColorCode(m_colorCode); + emb.setLCSS(lcss); + emb.getData(data + 2U); + data[0U] = TAG_DATA; data[1U] = 0x00U; @@ -550,6 +618,11 @@ void CDMRSlot::writeModem(unsigned char *data, unsigned int len) m_rfLC = lc; + // The standby LC data + m_rfEmbeddedLC.setLC(*m_rfLC); + m_rfEmbeddedData[0U].setLC(*m_rfLC); + m_rfEmbeddedData[1U].setLC(*m_rfLC); + // Create a dummy start frame to replace the received frame unsigned char start[DMR_FRAME_LENGTH_BYTES + 2U]; @@ -567,12 +640,13 @@ void CDMRSlot::writeModem(unsigned char *data, unsigned int len) start[1U] = 0x00U; m_rfTimeoutTimer.start(); - m_rfEmbeddedLC.reset(); m_rfFrames = 0U; m_rfSeqNo = 0U; m_rfBits = 1U; m_rfErrs = 0U; + m_rfEmbeddedReadN = 0U; + m_rfEmbeddedWriteN = 1U; m_minRSSI = m_rssi; m_maxRSSI = m_rssi; @@ -605,7 +679,6 @@ void CDMRSlot::writeModem(unsigned char *data, unsigned int len) } m_rfBits += 141U; - m_rfFrames++; data[0U] = TAG_DATA; @@ -826,6 +899,11 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) m_netLC = lc; + // The standby LC data + m_netEmbeddedLC.setLC(*m_netLC); + m_netEmbeddedData[0U].setLC(*m_netLC); + m_netEmbeddedData[1U].setLC(*m_netLC); + // Regenerate the LC data fullLC.encode(*m_netLC, data + 2U, DT_VOICE_LC_HEADER); @@ -844,13 +922,13 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) m_lastFrameValid = false; m_netTimeoutTimer.start(); - m_netEmbeddedLC.reset(); m_netFrames = 0U; m_netLost = 0U; - m_netBits = 1U; m_netErrs = 0U; + m_netEmbeddedReadN = 0U; + m_netEmbeddedWriteN = 1U; if (m_duplex) { m_queue.clear(); @@ -890,7 +968,6 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) m_lastFrameValid = false; m_netTimeoutTimer.start(); - m_netEmbeddedLC.reset(); if (m_duplex) { m_queue.clear(); @@ -1062,6 +1139,11 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) m_netLC = lc; + // The standby LC data + m_netEmbeddedLC.setLC(*m_netLC); + m_netEmbeddedData[0U].setLC(*m_netLC); + m_netEmbeddedData[1U].setLC(*m_netLC); + m_lastFrameValid = false; m_netTimeoutTimer.start(); @@ -1101,6 +1183,8 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) m_netLost = 0U; m_netBits = 1U; m_netErrs = 0U; + m_netEmbeddedReadN = 0U; + m_netEmbeddedWriteN = 1U; m_netState = RS_NET_AUDIO; @@ -1139,7 +1223,11 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) writeQueueNet(data); - m_netEmbeddedLC.reset(); + m_netEmbeddedReadN = (m_netEmbeddedReadN + 1U) % 2U; + m_netEmbeddedWriteN = (m_netEmbeddedWriteN + 1U) % 2U; + + m_netEmbeddedData[m_netEmbeddedWriteN].reset(); + m_packetTimer.start(); m_elapsed.start(); @@ -1162,13 +1250,63 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) m_netErrs += m_fec.regenerateDMR(data + 2U); m_netBits += 141U; - // Change the color code in the EMB + // Get the LCSS from the EMB CDMREMB emb; emb.putData(data + 2U); - emb.setColorCode(m_colorCode); - emb.getData(data + 2U); + unsigned char lcss = emb.getLCSS(); - m_netEmbeddedLC.addData(data + 2U, emb.getLCSS()); + // Dump any interesting Embedded Data + bool ret = m_netEmbeddedData[m_netEmbeddedWriteN].addData(data + 2U, lcss); + if (ret) { + FLCO flco = m_netEmbeddedData[m_netEmbeddedWriteN].getFLCO(); + + unsigned char data[9U]; + m_netEmbeddedData[m_netEmbeddedWriteN].getRawData(data); + + char text[80U]; + switch (flco) { + case FLCO_GROUP: + case FLCO_USER_USER: + // ::sprintf(text, "DMR Slot %u, Embedded LC", m_slotNo); + // CUtils::dump(1U, text, data, 9U); + break; + case FLCO_GPS_INFO: + ::sprintf(text, "DMR Slot %u, Embedded GPS Info", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + case FLCO_TALKER_ALIAS_HEADER: + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Header", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + case FLCO_TALKER_ALIAS_BLOCK1: + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 1", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + case FLCO_TALKER_ALIAS_BLOCK2: + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 2", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + case FLCO_TALKER_ALIAS_BLOCK3: + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 3", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + default: + ::sprintf(text, "DMR Slot %u, Unknown Embedded Data", m_slotNo); + CUtils::dump(1U, text, data, 9U); + break; + } + } + + // Regenerate the previous super blocks Embedded Data or substitude the LC for it + if (m_netEmbeddedData[m_netEmbeddedReadN].isValid()) + lcss = m_netEmbeddedData[m_netEmbeddedReadN].getData(data + 2U, dmrData.getN()); + else + lcss = m_netEmbeddedLC.getData(data + 2U, dmrData.getN()); + + // Regenerate the EMB + emb.setColorCode(m_colorCode); + emb.setLCSS(lcss); + emb.getData(data + 2U); data[0U] = TAG_DATA; data[1U] = 0x00U; diff --git a/DMRSlot.h b/DMRSlot.h index e27532c..e9cab75 100644 --- a/DMRSlot.h +++ b/DMRSlot.h @@ -20,7 +20,7 @@ #define DMRSlot_H #include "RSSIInterpolator.h" -#include "DMREmbeddedLC.h" +#include "DMREmbeddedData.h" #include "DMRDataHeader.h" #include "DMRNetwork.h" #include "RingBuffer.h" @@ -57,8 +57,14 @@ private: CRingBuffer m_queue; RPT_RF_STATE m_rfState; RPT_NET_STATE m_netState; - CDMREmbeddedLC m_rfEmbeddedLC; - CDMREmbeddedLC m_netEmbeddedLC; + CDMREmbeddedData m_rfEmbeddedLC; + CDMREmbeddedData* m_rfEmbeddedData; + unsigned int m_rfEmbeddedReadN; + unsigned int m_rfEmbeddedWriteN; + CDMREmbeddedData m_netEmbeddedLC; + CDMREmbeddedData* m_netEmbeddedData; + unsigned int m_netEmbeddedReadN; + unsigned int m_netEmbeddedWriteN; CDMRLC* m_rfLC; CDMRLC* m_netLC; CDMRDataHeader m_rfDataHeader; diff --git a/MMDVMHost.vcxproj b/MMDVMHost.vcxproj index 017e29c..1c9a25e 100644 --- a/MMDVMHost.vcxproj +++ b/MMDVMHost.vcxproj @@ -160,7 +160,7 @@ - + @@ -230,7 +230,7 @@ - + diff --git a/MMDVMHost.vcxproj.filters b/MMDVMHost.vcxproj.filters index 814effb..f01b170 100644 --- a/MMDVMHost.vcxproj.filters +++ b/MMDVMHost.vcxproj.filters @@ -131,7 +131,7 @@ Header Files - + Header Files @@ -325,7 +325,7 @@ Source Files - + Source Files diff --git a/Makefile b/Makefile index 9f5cb50..f180e2d 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ 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 DMREmbeddedLC.o DMRFullLC.o DMRLookup.o DMRLC.o \ + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \ P25Network.o P25NID.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 \ diff --git a/Makefile.Pi b/Makefile.Pi index 8c8db64..0734d47 100644 --- a/Makefile.Pi +++ b/Makefile.Pi @@ -7,7 +7,7 @@ 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 DMREmbeddedLC.o DMRFullLC.o DMRLookup.o DMRLC.o \ + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \ P25Network.o P25NID.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 \ diff --git a/Makefile.Pi.Adafruit b/Makefile.Pi.Adafruit index 92becf2..bbe5dfe 100644 --- a/Makefile.Pi.Adafruit +++ b/Makefile.Pi.Adafruit @@ -7,7 +7,7 @@ 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 DMREmbeddedLC.o DMRFullLC.o DMRLookup.o DMRLC.o \ + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o \ P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o \ diff --git a/Makefile.Pi.HD44780 b/Makefile.Pi.HD44780 index 90e359b..a4b9c97 100644 --- a/Makefile.Pi.HD44780 +++ b/Makefile.Pi.HD44780 @@ -7,7 +7,7 @@ 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 DMREmbeddedLC.o DMRFullLC.o DMRLookup.o DMRLC.o \ + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \ P25Network.o P25NID.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 \ diff --git a/Makefile.Pi.OLED b/Makefile.Pi.OLED index dd51474..167c739 100644 --- a/Makefile.Pi.OLED +++ b/Makefile.Pi.OLED @@ -7,7 +7,7 @@ LIBS = -lArduiPi_OLED -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 DMREmbeddedLC.o DMRFullLC.o DMRLookup.o DMRLC.o \ + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ Golay24128.o Hamming.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \ P25Network.o P25NID.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 \ diff --git a/Makefile.Pi.PCF8574 b/Makefile.Pi.PCF8574 index b9607bf..e5df3a5 100644 --- a/Makefile.Pi.PCF8574 +++ b/Makefile.Pi.PCF8574 @@ -7,7 +7,7 @@ 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 DMREmbeddedLC.o DMRFullLC.o DMRLookup.o DMRLC.o \ + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \ P25Network.o P25NID.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 \ diff --git a/Makefile.Solaris b/Makefile.Solaris index 7e5b5d0..a2c74ac 100644 --- a/Makefile.Solaris +++ b/Makefile.Solaris @@ -7,7 +7,7 @@ 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 DMREmbeddedLC.o DMRFullLC.o DMRLookup.o DMRLC.o \ + AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \ DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \ Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \ P25Network.o P25NID.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 \