mirror of
https://github.com/g4klx/MMDVMHost.git
synced 2026-04-06 15:04:18 +00:00
Merge branch 'master' into mqtt
This commit is contained in:
commit
62c33086ca
102 changed files with 1621 additions and 1489 deletions
286
Modem.cpp
286
Modem.cpp
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2011-2018,2020,2021,2023 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2011-2018,2020,2021,2023,2025 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
|
||||
|
|
@ -234,11 +234,11 @@ m_ax25Enabled(false),
|
|||
#endif
|
||||
m_rxDCOffset(0),
|
||||
m_txDCOffset(0),
|
||||
m_port(NULL),
|
||||
m_buffer(NULL),
|
||||
m_port(nullptr),
|
||||
m_buffer(nullptr),
|
||||
m_length(0U),
|
||||
m_offset(0U),
|
||||
m_state(SS_START),
|
||||
m_state(SERIAL_STATE::START),
|
||||
m_type(0U),
|
||||
#if defined(USE_DSTAR)
|
||||
m_rxDStarData(1000U, "Modem RX D-Star"),
|
||||
|
|
@ -376,7 +376,7 @@ CModem::~CModem()
|
|||
|
||||
void CModem::setPort(IModemPort* port)
|
||||
{
|
||||
assert(port != NULL);
|
||||
assert(port != nullptr);
|
||||
|
||||
m_port = port;
|
||||
}
|
||||
|
|
@ -522,7 +522,7 @@ bool CModem::open()
|
|||
if (!ret) {
|
||||
m_port->close();
|
||||
delete m_port;
|
||||
m_port = NULL;
|
||||
m_port = nullptr;
|
||||
return false;
|
||||
} else {
|
||||
/* Stopping the inactivity timer here when a firmware version has been
|
||||
|
|
@ -534,7 +534,7 @@ bool CModem::open()
|
|||
if (!ret) {
|
||||
m_port->close();
|
||||
delete m_port;
|
||||
m_port = NULL;
|
||||
m_port = nullptr;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -542,7 +542,7 @@ bool CModem::open()
|
|||
if (!ret) {
|
||||
m_port->close();
|
||||
delete m_port;
|
||||
m_port = NULL;
|
||||
m_port = nullptr;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -552,7 +552,7 @@ bool CModem::open()
|
|||
if (!ret) {
|
||||
m_port->close();
|
||||
delete m_port;
|
||||
m_port = NULL;
|
||||
m_port = nullptr;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -560,7 +560,7 @@ bool CModem::open()
|
|||
if (!ret) {
|
||||
m_port->close();
|
||||
delete m_port;
|
||||
m_port = NULL;
|
||||
m_port = nullptr;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -568,7 +568,7 @@ bool CModem::open()
|
|||
if (!ret) {
|
||||
m_port->close();
|
||||
delete m_port;
|
||||
m_port = NULL;
|
||||
m_port = nullptr;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -577,7 +577,7 @@ bool CModem::open()
|
|||
if (!ret) {
|
||||
m_port->close();
|
||||
delete m_port;
|
||||
m_port = NULL;
|
||||
m_port = nullptr;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -594,7 +594,7 @@ bool CModem::open()
|
|||
|
||||
void CModem::clock(unsigned int ms)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
// Poll the modem status every 250ms
|
||||
m_statusTimer.clock(ms);
|
||||
|
|
@ -616,12 +616,12 @@ void CModem::clock(unsigned int ms)
|
|||
|
||||
RESP_TYPE_MMDVM type = getResponse();
|
||||
|
||||
if (type == RTM_TIMEOUT) {
|
||||
if (type == RESP_TYPE_MMDVM::TIMEOUT) {
|
||||
// Nothing to do
|
||||
} else if (type == RTM_ERROR) {
|
||||
} else if (type == RESP_TYPE_MMDVM::ERR) {
|
||||
// Nothing to do
|
||||
} else {
|
||||
// type == RTM_OK
|
||||
// type == OK
|
||||
switch (m_type) {
|
||||
#if defined(USE_DSTAR)
|
||||
case MMDVM_DSTAR_HEADER: {
|
||||
|
|
@ -1445,7 +1445,7 @@ void CModem::clock(unsigned int ms)
|
|||
|
||||
void CModem::close()
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
::LogMessage("Closing the MMDVM");
|
||||
|
||||
|
|
@ -1455,7 +1455,7 @@ void CModem::close()
|
|||
#if defined(USE_DSTAR)
|
||||
unsigned int CModem::readDStarData(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
|
||||
if (m_rxDStarData.isEmpty())
|
||||
return 0U;
|
||||
|
|
@ -1471,7 +1471,7 @@ unsigned int CModem::readDStarData(unsigned char* data)
|
|||
#if defined(USE_DMR)
|
||||
unsigned int CModem::readDMRData1(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
|
||||
if (m_rxDMRData1.isEmpty())
|
||||
return 0U;
|
||||
|
|
@ -1485,7 +1485,7 @@ unsigned int CModem::readDMRData1(unsigned char* data)
|
|||
|
||||
unsigned int CModem::readDMRData2(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
|
||||
if (m_rxDMRData2.isEmpty())
|
||||
return 0U;
|
||||
|
|
@ -1501,7 +1501,7 @@ unsigned int CModem::readDMRData2(unsigned char* data)
|
|||
#if defined(USE_YSF)
|
||||
unsigned int CModem::readYSFData(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
|
||||
if (m_rxYSFData.isEmpty())
|
||||
return 0U;
|
||||
|
|
@ -1517,7 +1517,7 @@ unsigned int CModem::readYSFData(unsigned char* data)
|
|||
#if defined(USE_P25)
|
||||
unsigned int CModem::readP25Data(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
|
||||
if (m_rxP25Data.isEmpty())
|
||||
return 0U;
|
||||
|
|
@ -1533,7 +1533,7 @@ unsigned int CModem::readP25Data(unsigned char* data)
|
|||
#if defined(USE_NXDN)
|
||||
unsigned int CModem::readNXDNData(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
|
||||
if (m_rxNXDNData.isEmpty())
|
||||
return 0U;
|
||||
|
|
@ -1549,7 +1549,7 @@ unsigned int CModem::readNXDNData(unsigned char* data)
|
|||
#if defined(USE_M17)
|
||||
unsigned int CModem::readM17Data(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
|
||||
if (m_rxM17Data.isEmpty())
|
||||
return 0U;
|
||||
|
|
@ -1565,7 +1565,7 @@ unsigned int CModem::readM17Data(unsigned char* data)
|
|||
#if defined(USE_FM)
|
||||
unsigned int CModem::readFMData(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
|
||||
if (m_rxFMData.isEmpty())
|
||||
return 0U;
|
||||
|
|
@ -1581,7 +1581,7 @@ unsigned int CModem::readFMData(unsigned char* data)
|
|||
#if defined(USE_AX25)
|
||||
unsigned int CModem::readAX25Data(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
|
||||
if (m_rxAX25Data.isEmpty())
|
||||
return 0U;
|
||||
|
|
@ -1596,7 +1596,7 @@ unsigned int CModem::readAX25Data(unsigned char* data)
|
|||
|
||||
unsigned int CModem::readTransparentData(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
|
||||
if (m_rxTransparentData.isEmpty())
|
||||
return 0U;
|
||||
|
|
@ -1632,7 +1632,7 @@ bool CModem::hasDStarSpace() const
|
|||
|
||||
bool CModem::writeDStarData(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
unsigned char buffer[50U];
|
||||
|
|
@ -1682,7 +1682,7 @@ bool CModem::hasDMRSpace2() const
|
|||
|
||||
bool CModem::writeDMRData1(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
|
||||
|
|
@ -1705,7 +1705,7 @@ bool CModem::writeDMRData1(const unsigned char* data, unsigned int length)
|
|||
|
||||
bool CModem::writeDMRData2(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
|
||||
|
|
@ -1737,7 +1737,7 @@ bool CModem::hasYSFSpace() const
|
|||
|
||||
bool CModem::writeYSFData(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
|
||||
|
|
@ -1769,7 +1769,7 @@ bool CModem::hasP25Space() const
|
|||
|
||||
bool CModem::writeP25Data(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
if (data[0U] != TAG_HEADER && data[0U] != TAG_DATA && data[0U] != TAG_EOT)
|
||||
|
|
@ -1801,7 +1801,7 @@ bool CModem::hasNXDNSpace() const
|
|||
|
||||
bool CModem::writeNXDNData(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
if (data[0U] != TAG_DATA && data[0U] != TAG_EOT)
|
||||
|
|
@ -1833,7 +1833,7 @@ bool CModem::hasM17Space() const
|
|||
|
||||
bool CModem::writeM17Data(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
unsigned char buffer[130U];
|
||||
|
|
@ -1876,7 +1876,7 @@ bool CModem::hasPOCSAGSpace() const
|
|||
|
||||
bool CModem::writePOCSAGData(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
unsigned char buffer[130U];
|
||||
|
|
@ -1903,7 +1903,7 @@ unsigned int CModem::getFMSpace() const
|
|||
|
||||
bool CModem::writeFMData(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
unsigned char buffer[500U];
|
||||
|
|
@ -1941,7 +1941,7 @@ bool CModem::hasAX25Space() const
|
|||
|
||||
bool CModem::writeAX25Data(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
unsigned char buffer[500U];
|
||||
|
|
@ -1971,7 +1971,7 @@ bool CModem::writeAX25Data(const unsigned char* data, unsigned int length)
|
|||
|
||||
bool CModem::writeTransparentData(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(data != NULL);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
unsigned char buffer[250U];
|
||||
|
|
@ -2006,12 +2006,12 @@ bool CModem::writeTransparentData(const unsigned char* data, unsigned int length
|
|||
#if defined(USE_DSTAR)
|
||||
bool CModem::writeDStarInfo(const char* my1, const char* my2, const char* your, const char* type, const char* reflector)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(my1 != NULL);
|
||||
assert(my2 != NULL);
|
||||
assert(your != NULL);
|
||||
assert(type != NULL);
|
||||
assert(reflector != NULL);
|
||||
assert(m_port != nullptr);
|
||||
assert(my1 != nullptr);
|
||||
assert(my2 != nullptr);
|
||||
assert(your != nullptr);
|
||||
assert(type != nullptr);
|
||||
assert(reflector != nullptr);
|
||||
|
||||
unsigned char buffer[50U];
|
||||
|
||||
|
|
@ -2037,8 +2037,8 @@ bool CModem::writeDStarInfo(const char* my1, const char* my2, const char* your,
|
|||
#if defined(USE_DMR)
|
||||
bool CModem::writeDMRInfo(unsigned int slotNo, const std::string& src, bool group, const std::string& dest, const char* type)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(type != NULL);
|
||||
assert(m_port != nullptr);
|
||||
assert(type != nullptr);
|
||||
|
||||
unsigned char buffer[50U];
|
||||
|
||||
|
|
@ -2065,11 +2065,11 @@ bool CModem::writeDMRInfo(unsigned int slotNo, const std::string& src, bool grou
|
|||
#if defined(USE_YSF)
|
||||
bool CModem::writeYSFInfo(const char* source, const char* dest, unsigned char dgid, const char* type, const char* origin)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(source != NULL);
|
||||
assert(dest != NULL);
|
||||
assert(type != NULL);
|
||||
assert(origin != NULL);
|
||||
assert(m_port != nullptr);
|
||||
assert(source != nullptr);
|
||||
assert(dest != nullptr);
|
||||
assert(type != nullptr);
|
||||
assert(origin != nullptr);
|
||||
|
||||
unsigned char buffer[40U];
|
||||
|
||||
|
|
@ -2095,9 +2095,9 @@ bool CModem::writeYSFInfo(const char* source, const char* dest, unsigned char dg
|
|||
#if defined(USE_P25)
|
||||
bool CModem::writeP25Info(const char* source, bool group, unsigned int dest, const char* type)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(source != NULL);
|
||||
assert(type != NULL);
|
||||
assert(m_port != nullptr);
|
||||
assert(source != nullptr);
|
||||
assert(type != nullptr);
|
||||
|
||||
unsigned char buffer[40U];
|
||||
|
||||
|
|
@ -2122,9 +2122,9 @@ bool CModem::writeP25Info(const char* source, bool group, unsigned int dest, con
|
|||
#if defined(USE_NXDN)
|
||||
bool CModem::writeNXDNInfo(const char* source, bool group, unsigned int dest, const char* type)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(source != NULL);
|
||||
assert(type != NULL);
|
||||
assert(m_port != nullptr);
|
||||
assert(source != nullptr);
|
||||
assert(type != nullptr);
|
||||
|
||||
unsigned char buffer[40U];
|
||||
|
||||
|
|
@ -2149,10 +2149,10 @@ bool CModem::writeNXDNInfo(const char* source, bool group, unsigned int dest, co
|
|||
#if defined(USE_M17)
|
||||
bool CModem::writeM17Info(const char* source, const char* dest, const char* type)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(source != NULL);
|
||||
assert(dest != NULL);
|
||||
assert(type != NULL);
|
||||
assert(m_port != nullptr);
|
||||
assert(source != nullptr);
|
||||
assert(dest != nullptr);
|
||||
assert(type != nullptr);
|
||||
|
||||
unsigned char buffer[40U];
|
||||
|
||||
|
|
@ -2175,7 +2175,7 @@ bool CModem::writeM17Info(const char* source, const char* dest, const char* type
|
|||
#if defined(USE_POCSAG)
|
||||
bool CModem::writePOCSAGInfo(unsigned int ric, const std::string& message)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
size_t length = message.size();
|
||||
|
||||
|
|
@ -2199,7 +2199,7 @@ bool CModem::writePOCSAGInfo(unsigned int ric, const std::string& message)
|
|||
|
||||
bool CModem::writeIPInfo(const std::string& address)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
size_t length = address.size();
|
||||
|
||||
|
|
@ -2220,8 +2220,8 @@ bool CModem::writeIPInfo(const std::string& address)
|
|||
|
||||
bool CModem::writeSerialData(const unsigned char* data, unsigned int length)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(data != NULL);
|
||||
assert(m_port != nullptr);
|
||||
assert(data != nullptr);
|
||||
assert(length > 0U);
|
||||
|
||||
unsigned char buffer[255U];
|
||||
|
|
@ -2311,7 +2311,7 @@ unsigned int CModem::getVersion() const
|
|||
|
||||
bool CModem::readVersion()
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
CThread::sleep(2000U); // 2s
|
||||
|
||||
|
|
@ -2335,31 +2335,31 @@ bool CModem::readVersion()
|
|||
for (unsigned int count = 0U; count < MAX_RESPONSES; count++) {
|
||||
CThread::sleep(10U);
|
||||
RESP_TYPE_MMDVM resp = getResponse();
|
||||
if (resp == RTM_OK && m_buffer[2U] == MMDVM_GET_VERSION) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] == MMDVM_GET_VERSION)) {
|
||||
if (::memcmp(m_buffer + 4U, "MMDVM ", 6U) == 0)
|
||||
m_hwType = HWT_MMDVM;
|
||||
m_hwType = HW_TYPE::MMDVM;
|
||||
else if (::memcmp(m_buffer + 23U, "MMDVM ", 6U) == 0)
|
||||
m_hwType = HWT_MMDVM;
|
||||
m_hwType = HW_TYPE::MMDVM;
|
||||
else if (::memcmp(m_buffer + 4U, "DVMEGA", 6U) == 0)
|
||||
m_hwType = HWT_DVMEGA;
|
||||
m_hwType = HW_TYPE::DVMEGA;
|
||||
else if (::memcmp(m_buffer + 4U, "ZUMspot", 7U) == 0)
|
||||
m_hwType = HWT_MMDVM_ZUMSPOT;
|
||||
m_hwType = HW_TYPE::MMDVM_ZUMSPOT;
|
||||
else if (::memcmp(m_buffer + 4U, "MMDVM_HS_Hat", 12U) == 0)
|
||||
m_hwType = HWT_MMDVM_HS_HAT;
|
||||
m_hwType = HW_TYPE::MMDVM_HS_HAT;
|
||||
else if (::memcmp(m_buffer + 4U, "MMDVM_HS_Dual_Hat", 17U) == 0)
|
||||
m_hwType = HWT_MMDVM_HS_DUAL_HAT;
|
||||
m_hwType = HW_TYPE::MMDVM_HS_DUAL_HAT;
|
||||
else if (::memcmp(m_buffer + 4U, "Nano_hotSPOT", 12U) == 0)
|
||||
m_hwType = HWT_NANO_HOTSPOT;
|
||||
m_hwType = HW_TYPE::NANO_HOTSPOT;
|
||||
else if (::memcmp(m_buffer + 4U, "Nano_DV", 7U) == 0)
|
||||
m_hwType = HWT_NANO_DV;
|
||||
m_hwType = HW_TYPE::NANO_DV;
|
||||
else if (::memcmp(m_buffer + 4U, "D2RG_MMDVM_HS", 13U) == 0)
|
||||
m_hwType = HWT_D2RG_MMDVM_HS;
|
||||
m_hwType = HW_TYPE::D2RG_MMDVM_HS;
|
||||
else if (::memcmp(m_buffer + 4U, "MMDVM_HS-", 9U) == 0)
|
||||
m_hwType = HWT_MMDVM_HS;
|
||||
m_hwType = HW_TYPE::MMDVM_HS;
|
||||
else if (::memcmp(m_buffer + 4U, "OpenGD77_HS", 11U) == 0)
|
||||
m_hwType = HWT_OPENGD77_HS;
|
||||
m_hwType = HW_TYPE::OPENGD77_HS;
|
||||
else if (::memcmp(m_buffer + 4U, "SkyBridge", 9U) == 0)
|
||||
m_hwType = HWT_SKYBRIDGE;
|
||||
m_hwType = HW_TYPE::SKYBRIDGE;
|
||||
|
||||
m_protocolVersion = m_buffer[3U];
|
||||
|
||||
|
|
@ -2433,7 +2433,7 @@ bool CModem::readVersion()
|
|||
|
||||
bool CModem::readStatus()
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
unsigned char buffer[3U];
|
||||
|
||||
|
|
@ -2460,7 +2460,7 @@ bool CModem::writeConfig()
|
|||
|
||||
bool CModem::setConfig1()
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
unsigned char buffer[30U];
|
||||
|
||||
|
|
@ -2610,18 +2610,18 @@ bool CModem::setConfig1()
|
|||
CThread::sleep(10U);
|
||||
|
||||
resp = getResponse();
|
||||
if (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK)) {
|
||||
count++;
|
||||
if (count >= MAX_RESPONSES) {
|
||||
LogError("The MMDVM is not responding to the SET_CONFIG command");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} while (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK);
|
||||
} while ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK));
|
||||
|
||||
// CUtils::dump(1U, "Response", m_buffer, m_length);
|
||||
|
||||
if (resp == RTM_OK && m_buffer[2U] == MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] == MMDVM_NAK)) {
|
||||
LogError("Received a NAK to the SET_CONFIG command from the modem");
|
||||
return false;
|
||||
}
|
||||
|
|
@ -2633,7 +2633,7 @@ bool CModem::setConfig1()
|
|||
|
||||
bool CModem::setConfig2()
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
unsigned char buffer[50U];
|
||||
|
||||
|
|
@ -2822,18 +2822,18 @@ bool CModem::setConfig2()
|
|||
CThread::sleep(10U);
|
||||
|
||||
resp = getResponse();
|
||||
if (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK)) {
|
||||
count++;
|
||||
if (count >= MAX_RESPONSES) {
|
||||
LogError("The MMDVM is not responding to the SET_CONFIG command");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} while (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK);
|
||||
} while ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK));
|
||||
|
||||
// CUtils::dump(1U, "Response", m_buffer, m_length);
|
||||
|
||||
if (resp == RTM_OK && m_buffer[2U] == MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] == MMDVM_NAK)) {
|
||||
LogError("Received a NAK to the SET_CONFIG command from the modem");
|
||||
return false;
|
||||
}
|
||||
|
|
@ -2845,7 +2845,7 @@ bool CModem::setConfig2()
|
|||
|
||||
bool CModem::setFrequency()
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
unsigned char buffer[20U];
|
||||
unsigned char len;
|
||||
|
|
@ -2856,7 +2856,7 @@ bool CModem::setFrequency()
|
|||
pocsagFrequency = m_pocsagFrequency;
|
||||
#endif
|
||||
|
||||
if (m_hwType == HWT_DVMEGA)
|
||||
if (m_hwType == HW_TYPE::DVMEGA)
|
||||
len = 12U;
|
||||
else {
|
||||
buffer[12U] = (unsigned char)(m_rfLevel * 2.55F + 0.5F);
|
||||
|
|
@ -2906,18 +2906,18 @@ bool CModem::setFrequency()
|
|||
CThread::sleep(10U);
|
||||
|
||||
resp = getResponse();
|
||||
if (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK)) {
|
||||
count++;
|
||||
if (count >= MAX_RESPONSES) {
|
||||
LogError("The MMDVM is not responding to the SET_FREQ command");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} while (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK);
|
||||
} while ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK));
|
||||
|
||||
// CUtils::dump(1U, "Response", m_buffer, m_length);
|
||||
|
||||
if (resp == RTM_OK && m_buffer[2U] == MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] == MMDVM_NAK)) {
|
||||
LogError("Received a NAK to the SET_FREQ command from the modem");
|
||||
return false;
|
||||
}
|
||||
|
|
@ -2927,92 +2927,92 @@ bool CModem::setFrequency()
|
|||
|
||||
RESP_TYPE_MMDVM CModem::getResponse()
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
if (m_state == SS_START) {
|
||||
if (m_state == SERIAL_STATE::START) {
|
||||
// Get the start of the frame or nothing at all
|
||||
int ret = m_port->read(m_buffer + 0U, 1U);
|
||||
if (ret < 0) {
|
||||
LogError("Error when reading from the modem");
|
||||
return RTM_ERROR;
|
||||
return RESP_TYPE_MMDVM::ERR;
|
||||
}
|
||||
|
||||
if (ret == 0)
|
||||
return RTM_TIMEOUT;
|
||||
return RESP_TYPE_MMDVM::TIMEOUT;
|
||||
|
||||
if (m_buffer[0U] != MMDVM_FRAME_START)
|
||||
return RTM_TIMEOUT;
|
||||
return RESP_TYPE_MMDVM::TIMEOUT;
|
||||
|
||||
m_state = SS_LENGTH1;
|
||||
m_state = SERIAL_STATE::LENGTH1;
|
||||
m_length = 1U;
|
||||
}
|
||||
|
||||
if (m_state == SS_LENGTH1) {
|
||||
if (m_state == SERIAL_STATE::LENGTH1) {
|
||||
// Get the length of the frame, 1/2
|
||||
int ret = m_port->read(m_buffer + 1U, 1U);
|
||||
if (ret < 0) {
|
||||
LogError("Error when reading from the modem");
|
||||
m_state = SS_START;
|
||||
return RTM_ERROR;
|
||||
m_state = SERIAL_STATE::START;
|
||||
return RESP_TYPE_MMDVM::ERR;
|
||||
}
|
||||
|
||||
if (ret == 0)
|
||||
return RTM_TIMEOUT;
|
||||
return RESP_TYPE_MMDVM::TIMEOUT;
|
||||
|
||||
m_length = m_buffer[1U];
|
||||
m_offset = 2U;
|
||||
|
||||
if (m_length == 0U)
|
||||
m_state = SS_LENGTH2;
|
||||
m_state = SERIAL_STATE::LENGTH2;
|
||||
else
|
||||
m_state = SS_TYPE;
|
||||
m_state = SERIAL_STATE::TYPE;
|
||||
}
|
||||
|
||||
if (m_state == SS_LENGTH2) {
|
||||
if (m_state == SERIAL_STATE::LENGTH2) {
|
||||
// Get the length of the frane, 2/2
|
||||
int ret = m_port->read(m_buffer + 2U, 1U);
|
||||
if (ret < 0) {
|
||||
LogError("Error when reading from the modem");
|
||||
m_state = SS_START;
|
||||
return RTM_ERROR;
|
||||
m_state = SERIAL_STATE::START;
|
||||
return RESP_TYPE_MMDVM::ERR;
|
||||
}
|
||||
|
||||
if (ret == 0)
|
||||
return RTM_TIMEOUT;
|
||||
return RESP_TYPE_MMDVM::TIMEOUT;
|
||||
|
||||
m_length = m_buffer[2U] + 255U;
|
||||
m_offset = 3U;
|
||||
m_state = SS_TYPE;
|
||||
m_state = SERIAL_STATE::TYPE;
|
||||
}
|
||||
|
||||
if (m_state == SS_TYPE) {
|
||||
if (m_state == SERIAL_STATE::TYPE) {
|
||||
// Get the frame type
|
||||
int ret = m_port->read(&m_type, 1U);
|
||||
if (ret < 0) {
|
||||
LogError("Error when reading from the modem");
|
||||
m_state = SS_START;
|
||||
return RTM_ERROR;
|
||||
m_state = SERIAL_STATE::START;
|
||||
return RESP_TYPE_MMDVM::ERR;
|
||||
}
|
||||
|
||||
if (ret == 0)
|
||||
return RTM_TIMEOUT;
|
||||
return RESP_TYPE_MMDVM::TIMEOUT;
|
||||
|
||||
m_buffer[m_offset++] = m_type;
|
||||
|
||||
m_state = SS_DATA;
|
||||
m_state = SERIAL_STATE::DATA;
|
||||
}
|
||||
|
||||
if (m_state == SS_DATA) {
|
||||
if (m_state == SERIAL_STATE::DATA) {
|
||||
while (m_offset < m_length) {
|
||||
int ret = m_port->read(m_buffer + m_offset, m_length - m_offset);
|
||||
if (ret < 0) {
|
||||
LogError("Error when reading from the modem");
|
||||
m_state = SS_START;
|
||||
return RTM_ERROR;
|
||||
m_state = SERIAL_STATE::START;
|
||||
return RESP_TYPE_MMDVM::ERR;
|
||||
}
|
||||
|
||||
if (ret == 0)
|
||||
return RTM_TIMEOUT;
|
||||
return RESP_TYPE_MMDVM::TIMEOUT;
|
||||
|
||||
if (ret > 0)
|
||||
m_offset += ret;
|
||||
|
|
@ -3022,9 +3022,9 @@ RESP_TYPE_MMDVM CModem::getResponse()
|
|||
// CUtils::dump(1U, "Received", m_buffer, m_length);
|
||||
|
||||
m_offset = m_length > 255U ? 4U : 3U;
|
||||
m_state = SS_START;
|
||||
m_state = SERIAL_STATE::START;
|
||||
|
||||
return RTM_OK;
|
||||
return RESP_TYPE_MMDVM::OK;
|
||||
}
|
||||
|
||||
HW_TYPE CModem::getHWType() const
|
||||
|
|
@ -3039,7 +3039,7 @@ unsigned char CModem::getMode() const
|
|||
|
||||
bool CModem::setMode(unsigned char mode)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
unsigned char buffer[4U];
|
||||
|
||||
|
|
@ -3055,7 +3055,7 @@ bool CModem::setMode(unsigned char mode)
|
|||
|
||||
bool CModem::sendCWId(const std::string& callsign)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
unsigned int length = (unsigned int)callsign.length();
|
||||
if (length > 200U)
|
||||
|
|
@ -3078,7 +3078,7 @@ bool CModem::sendCWId(const std::string& callsign)
|
|||
#if defined(USE_DMR)
|
||||
bool CModem::writeDMRStart(bool tx)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
if (tx && m_tx)
|
||||
return true;
|
||||
|
|
@ -3099,7 +3099,7 @@ bool CModem::writeDMRStart(bool tx)
|
|||
|
||||
bool CModem::writeDMRAbort(unsigned int slotNo)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
if (slotNo == 1U)
|
||||
m_txDMRData1.clear();
|
||||
|
|
@ -3120,8 +3120,8 @@ bool CModem::writeDMRAbort(unsigned int slotNo)
|
|||
|
||||
bool CModem::writeDMRShortLC(const unsigned char* lc)
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(lc != NULL);
|
||||
assert(m_port != nullptr);
|
||||
assert(lc != nullptr);
|
||||
|
||||
unsigned char buffer[12U];
|
||||
|
||||
|
|
@ -3204,7 +3204,7 @@ void CModem::setFMExtParams(const std::string& ack, unsigned int audioBoost)
|
|||
|
||||
bool CModem::setFMCallsignParams()
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
unsigned char buffer[80U];
|
||||
unsigned char len = 10U + (unsigned char)m_fmCallsign.size();
|
||||
|
|
@ -3244,18 +3244,18 @@ bool CModem::setFMCallsignParams()
|
|||
CThread::sleep(10U);
|
||||
|
||||
resp = getResponse();
|
||||
if (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK)) {
|
||||
count++;
|
||||
if (count >= MAX_RESPONSES) {
|
||||
LogError("The MMDVM is not responding to the SET_FM_PARAMS1 command");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} while (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK);
|
||||
} while ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK));
|
||||
|
||||
// CUtils::dump(1U, "Response", m_buffer, m_length);
|
||||
|
||||
if (resp == RTM_OK && m_buffer[2U] == MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] == MMDVM_NAK)) {
|
||||
LogError("Received a NAK to the SET_FM_PARAMS1 command from the modem");
|
||||
return false;
|
||||
}
|
||||
|
|
@ -3265,7 +3265,7 @@ bool CModem::setFMCallsignParams()
|
|||
|
||||
bool CModem::setFMAckParams()
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
unsigned char buffer[80U];
|
||||
unsigned char len = 8U + (unsigned char)m_fmRfAck.size();
|
||||
|
|
@ -3296,18 +3296,18 @@ bool CModem::setFMAckParams()
|
|||
CThread::sleep(10U);
|
||||
|
||||
resp = getResponse();
|
||||
if (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK)) {
|
||||
count++;
|
||||
if (count >= MAX_RESPONSES) {
|
||||
LogError("The MMDVM is not responding to the SET_FM_PARAMS2 command");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} while (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK);
|
||||
} while ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK));
|
||||
|
||||
// CUtils::dump(1U, "Response", m_buffer, m_length);
|
||||
|
||||
if (resp == RTM_OK && m_buffer[2U] == MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] == MMDVM_NAK)) {
|
||||
LogError("Received a NAK to the SET_FM_PARAMS2 command from the modem");
|
||||
return false;
|
||||
}
|
||||
|
|
@ -3317,7 +3317,7 @@ bool CModem::setFMAckParams()
|
|||
|
||||
bool CModem::setFMMiscParams()
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
unsigned char buffer[20U];
|
||||
|
||||
|
|
@ -3365,18 +3365,18 @@ bool CModem::setFMMiscParams()
|
|||
CThread::sleep(10U);
|
||||
|
||||
resp = getResponse();
|
||||
if (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK)) {
|
||||
count++;
|
||||
if (count >= MAX_RESPONSES) {
|
||||
LogError("The MMDVM is not responding to the SET_FM_PARAMS3 command");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} while (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK);
|
||||
} while ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK));
|
||||
|
||||
// CUtils::dump(1U, "Response", m_buffer, m_length);
|
||||
|
||||
if (resp == RTM_OK && m_buffer[2U] == MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] == MMDVM_NAK)) {
|
||||
LogError("Received a NAK to the SET_FM_PARAMS3 command from the modem");
|
||||
return false;
|
||||
}
|
||||
|
|
@ -3386,7 +3386,7 @@ bool CModem::setFMMiscParams()
|
|||
|
||||
bool CModem::setFMExtParams()
|
||||
{
|
||||
assert(m_port != NULL);
|
||||
assert(m_port != nullptr);
|
||||
|
||||
unsigned char buffer[80U];
|
||||
unsigned char len = 7U + (unsigned char)m_fmExtAck.size();
|
||||
|
|
@ -3416,18 +3416,18 @@ bool CModem::setFMExtParams()
|
|||
CThread::sleep(10U);
|
||||
|
||||
resp = getResponse();
|
||||
if (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK)) {
|
||||
count++;
|
||||
if (count >= MAX_RESPONSES) {
|
||||
LogError("The MMDVM is not responding to the SET_FM_PARAMS4 command");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} while (resp == RTM_OK && m_buffer[2U] != MMDVM_ACK && m_buffer[2U] != MMDVM_NAK);
|
||||
} while ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] != MMDVM_ACK) && (m_buffer[2U] != MMDVM_NAK));
|
||||
|
||||
// CUtils::dump(1U, "Response", m_buffer, m_length);
|
||||
|
||||
if (resp == RTM_OK && m_buffer[2U] == MMDVM_NAK) {
|
||||
if ((resp == RESP_TYPE_MMDVM::OK) && (m_buffer[2U] == MMDVM_NAK)) {
|
||||
LogError("Received a NAK to the SET_FM_PARAMS4 command from the modem");
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue