mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-21 23:45:49 +08:00
Add the AX.25 modem parameters and start reworking the AX,25 RX
processing.
This commit is contained in:
@@ -51,12 +51,10 @@ bool CAX25Control::writeModem(unsigned char *data, unsigned int len)
|
|||||||
|
|
||||||
CUtils::dump(1U, "AX.25 raw packet", data, len);
|
CUtils::dump(1U, "AX.25 raw packet", data, len);
|
||||||
|
|
||||||
if (m_network != NULL) {
|
if (m_network == NULL)
|
||||||
if (isUI(data, len))
|
return true;
|
||||||
m_network->writeAX25(data, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return m_network->write(data, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CAX25Control::openFile()
|
bool CAX25Control::openFile()
|
||||||
@@ -233,15 +231,3 @@ bool CAX25Control::decodeAddress(const unsigned char* data, std::string& text, b
|
|||||||
|
|
||||||
return (data[6U] & 0x01U) == 0x00U;
|
return (data[6U] & 0x01U) == 0x00U;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CAX25Control::isUI(const unsigned char* data, unsigned int length) const
|
|
||||||
{
|
|
||||||
assert(data != NULL);
|
|
||||||
assert(length >= 15U);
|
|
||||||
|
|
||||||
unsigned int n = 13U;
|
|
||||||
while ((data[n] & 0x01U) == 0x00U && n < length)
|
|
||||||
n += 7U;
|
|
||||||
|
|
||||||
return (data[n + 1U] & 0xEFU) == 0x03U;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ private:
|
|||||||
bool m_enabled;
|
bool m_enabled;
|
||||||
FILE* m_fp;
|
FILE* m_fp;
|
||||||
|
|
||||||
bool isUI(const unsigned char* data, unsigned int length) const;
|
|
||||||
void decode(const unsigned char* data, unsigned int length);
|
void decode(const unsigned char* data, unsigned int length);
|
||||||
bool decodeAddress(const unsigned char* data, std::string& text, bool isDigi = false) const;
|
bool decodeAddress(const unsigned char* data, std::string& text, bool isDigi = false) const;
|
||||||
bool openFile();
|
bool openFile();
|
||||||
|
|||||||
@@ -27,34 +27,38 @@
|
|||||||
|
|
||||||
const unsigned int BUFFER_LENGTH = 200U;
|
const unsigned int BUFFER_LENGTH = 200U;
|
||||||
|
|
||||||
CAX25Network::CAX25Network(const std::string& localAddress, unsigned int localPort, const std::string& gatewayAddress, unsigned int gatewayPort, bool debug) :
|
CAX25Network::CAX25Network(const std::string& port, unsigned int speed, bool debug) :
|
||||||
m_socket(localAddress, localPort),
|
m_serial(port, SERIAL_SPEED(speed), false), // XXX
|
||||||
m_address(),
|
m_txData(NULL),
|
||||||
m_port(gatewayPort),
|
m_txLength(0U),
|
||||||
|
m_txOffset(0U),
|
||||||
|
m_rxData(NULL),
|
||||||
|
m_rxLength(0U),
|
||||||
|
m_rxComplete(false),
|
||||||
m_debug(debug),
|
m_debug(debug),
|
||||||
m_enabled(false)
|
m_enabled(false)
|
||||||
{
|
{
|
||||||
assert(gatewayPort > 0U);
|
assert(!port.empty());
|
||||||
assert(!gatewayAddress.empty());
|
assert(speed > 0U);
|
||||||
|
|
||||||
m_address = CUDPSocket::lookup(gatewayAddress);
|
m_txData = new unsigned char[BUFFER_LENGTH];
|
||||||
|
m_rxData = new unsigned char[BUFFER_LENGTH];
|
||||||
}
|
}
|
||||||
|
|
||||||
CAX25Network::~CAX25Network()
|
CAX25Network::~CAX25Network()
|
||||||
{
|
{
|
||||||
|
delete[] m_txData;
|
||||||
|
delete[] m_rxData;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CAX25Network::open()
|
bool CAX25Network::open()
|
||||||
{
|
{
|
||||||
LogMessage("Opening AX25 network connection");
|
LogMessage("Opening AX25 network connection");
|
||||||
|
|
||||||
if (m_address.s_addr == INADDR_NONE)
|
return m_serial.open();
|
||||||
return false;
|
|
||||||
|
|
||||||
return m_socket.open();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CAX25Network::writeAX25(const unsigned char* data, unsigned int length)
|
bool CAX25Network::write(const unsigned char* data, unsigned int length)
|
||||||
{
|
{
|
||||||
assert(data != NULL);
|
assert(data != NULL);
|
||||||
|
|
||||||
@@ -80,7 +84,7 @@ void CAX25Network::reset()
|
|||||||
|
|
||||||
void CAX25Network::close()
|
void CAX25Network::close()
|
||||||
{
|
{
|
||||||
m_socket.close();
|
m_serial.close();
|
||||||
|
|
||||||
LogMessage("Closing AX25 network connection");
|
LogMessage("Closing AX25 network connection");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,32 +19,38 @@
|
|||||||
#ifndef AX25Network_H
|
#ifndef AX25Network_H
|
||||||
#define AX25Network_H
|
#define AX25Network_H
|
||||||
|
|
||||||
#include "UDPSocket.h"
|
#include "SerialController.h"
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class CAX25Network {
|
class CAX25Network {
|
||||||
public:
|
public:
|
||||||
CAX25Network(const std::string& localAddress, unsigned int localPort, const std::string& gatewayAddress, unsigned int gatewayPort, bool debug);
|
CAX25Network(const std::string& port, unsigned int speed, bool debug);
|
||||||
~CAX25Network();
|
~CAX25Network();
|
||||||
|
|
||||||
bool open();
|
bool open();
|
||||||
|
|
||||||
void enable(bool enabled);
|
void enable(bool enabled);
|
||||||
|
|
||||||
bool writeAX25(const unsigned char* data, unsigned int length);
|
bool write(const unsigned char* data, unsigned int length);
|
||||||
|
|
||||||
|
unsigned int read(unsigned char* data, unsigned int length);
|
||||||
|
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CUDPSocket m_socket;
|
CSerialController m_serial;
|
||||||
in_addr m_address;
|
unsigned char* m_txData;
|
||||||
unsigned int m_port;
|
unsigned int m_txLength;
|
||||||
bool m_debug;
|
unsigned int m_txOffset;
|
||||||
bool m_enabled;
|
unsigned char* m_rxData;
|
||||||
|
unsigned int m_rxLength;
|
||||||
|
bool m_rxComplete;
|
||||||
|
bool m_debug;
|
||||||
|
bool m_enabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
52
Conf.cpp
52
Conf.cpp
@@ -211,7 +211,6 @@ m_fmExtAudioBoost(1U),
|
|||||||
m_ax25Enabled(false),
|
m_ax25Enabled(false),
|
||||||
m_ax25RXTwist(6),
|
m_ax25RXTwist(6),
|
||||||
m_ax25TXTwist(6),
|
m_ax25TXTwist(6),
|
||||||
m_ax25Digipeat(true),
|
|
||||||
m_ax25Trace(false),
|
m_ax25Trace(false),
|
||||||
m_dstarNetworkEnabled(false),
|
m_dstarNetworkEnabled(false),
|
||||||
m_dstarGatewayAddress(),
|
m_dstarGatewayAddress(),
|
||||||
@@ -259,10 +258,8 @@ m_pocsagLocalPort(0U),
|
|||||||
m_pocsagNetworkModeHang(3U),
|
m_pocsagNetworkModeHang(3U),
|
||||||
m_pocsagNetworkDebug(false),
|
m_pocsagNetworkDebug(false),
|
||||||
m_ax25NetworkEnabled(false),
|
m_ax25NetworkEnabled(false),
|
||||||
m_ax25GatewayAddress(),
|
m_ax25NetworkPort(),
|
||||||
m_ax25GatewayPort(0U),
|
m_ax25NetworkSpeed(9600U),
|
||||||
m_ax25LocalAddress(),
|
|
||||||
m_ax25LocalPort(0U),
|
|
||||||
m_ax25NetworkDebug(false),
|
m_ax25NetworkDebug(false),
|
||||||
m_tftSerialPort("/dev/ttyAMA0"),
|
m_tftSerialPort("/dev/ttyAMA0"),
|
||||||
m_tftSerialBrightness(50U),
|
m_tftSerialBrightness(50U),
|
||||||
@@ -802,8 +799,6 @@ bool CConf::read()
|
|||||||
m_ax25RXTwist = ::atoi(value);
|
m_ax25RXTwist = ::atoi(value);
|
||||||
else if (::strcmp(key, "TXTwist") == 0)
|
else if (::strcmp(key, "TXTwist") == 0)
|
||||||
m_ax25TXTwist = ::atoi(value);
|
m_ax25TXTwist = ::atoi(value);
|
||||||
else if (::strcmp(key, "Digipeat") == 0)
|
|
||||||
m_ax25Digipeat = ::atoi(value) == 1;
|
|
||||||
else if (::strcmp(key, "Trace") == 0)
|
else if (::strcmp(key, "Trace") == 0)
|
||||||
m_ax25Trace = ::atoi(value) == 1;
|
m_ax25Trace = ::atoi(value) == 1;
|
||||||
} else if (section == SECTION_DSTAR_NETWORK) {
|
} else if (section == SECTION_DSTAR_NETWORK) {
|
||||||
@@ -903,18 +898,14 @@ bool CConf::read()
|
|||||||
else if (::strcmp(key, "Debug") == 0)
|
else if (::strcmp(key, "Debug") == 0)
|
||||||
m_pocsagNetworkDebug = ::atoi(value) == 1;
|
m_pocsagNetworkDebug = ::atoi(value) == 1;
|
||||||
} else if (section == SECTION_AX25_NETWORK) {
|
} else if (section == SECTION_AX25_NETWORK) {
|
||||||
if (::strcmp(key, "Enable") == 0)
|
if (::strcmp(key, "Enable") == 0)
|
||||||
m_ax25NetworkEnabled = ::atoi(value) == 1;
|
m_ax25NetworkEnabled = ::atoi(value) == 1;
|
||||||
else if (::strcmp(key, "LocalAddress") == 0)
|
else if (::strcmp(key, "Port") == 0)
|
||||||
m_ax25LocalAddress = value;
|
m_ax25NetworkPort = value;
|
||||||
else if (::strcmp(key, "LocalPort") == 0)
|
else if (::strcmp(key, "Speed") == 0)
|
||||||
m_ax25LocalPort = (unsigned int)::atoi(value);
|
m_ax25NetworkSpeed = (unsigned int)::atoi(value);
|
||||||
else if (::strcmp(key, "GatewayAddress") == 0)
|
else if (::strcmp(key, "Debug") == 0)
|
||||||
m_ax25GatewayAddress = value;
|
m_ax25NetworkDebug = ::atoi(value) == 1;
|
||||||
else if (::strcmp(key, "GatewayPort") == 0)
|
|
||||||
m_ax25GatewayPort = (unsigned int)::atoi(value);
|
|
||||||
else if (::strcmp(key, "Debug") == 0)
|
|
||||||
m_ax25NetworkDebug = ::atoi(value) == 1;
|
|
||||||
} else if (section == SECTION_TFTSERIAL) {
|
} else if (section == SECTION_TFTSERIAL) {
|
||||||
if (::strcmp(key, "Port") == 0)
|
if (::strcmp(key, "Port") == 0)
|
||||||
m_tftSerialPort = value;
|
m_tftSerialPort = value;
|
||||||
@@ -1743,11 +1734,6 @@ int CConf::getAX25TXTwist() const
|
|||||||
return m_ax25TXTwist;
|
return m_ax25TXTwist;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CConf::getAX25Digipeat() const
|
|
||||||
{
|
|
||||||
return m_ax25Digipeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CConf::getAX25Trace() const
|
bool CConf::getAX25Trace() const
|
||||||
{
|
{
|
||||||
return m_ax25Trace;
|
return m_ax25Trace;
|
||||||
@@ -1983,24 +1969,14 @@ bool CConf::getAX25NetworkEnabled() const
|
|||||||
return m_ax25NetworkEnabled;
|
return m_ax25NetworkEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CConf::getAX25GatewayAddress() const
|
std::string CConf::getAX25NetworkPort() const
|
||||||
{
|
{
|
||||||
return m_ax25GatewayAddress;
|
return m_ax25NetworkPort;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int CConf::getAX25GatewayPort() const
|
unsigned int CConf::getAX25NetworkSpeed() const
|
||||||
{
|
{
|
||||||
return m_ax25GatewayPort;
|
return m_ax25NetworkSpeed;
|
||||||
}
|
|
||||||
|
|
||||||
std::string CConf::getAX25LocalAddress() const
|
|
||||||
{
|
|
||||||
return m_ax25LocalAddress;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int CConf::getAX25LocalPort() const
|
|
||||||
{
|
|
||||||
return m_ax25LocalPort;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CConf::getAX25NetworkDebug() const
|
bool CConf::getAX25NetworkDebug() const
|
||||||
|
|||||||
14
Conf.h
14
Conf.h
@@ -176,7 +176,6 @@ public:
|
|||||||
bool getAX25Enabled() const;
|
bool getAX25Enabled() const;
|
||||||
int getAX25RXTwist() const;
|
int getAX25RXTwist() const;
|
||||||
int getAX25TXTwist() const;
|
int getAX25TXTwist() const;
|
||||||
bool getAX25Digipeat() const;
|
|
||||||
bool getAX25Trace() const;
|
bool getAX25Trace() const;
|
||||||
|
|
||||||
// The FM Section
|
// The FM Section
|
||||||
@@ -271,10 +270,8 @@ public:
|
|||||||
|
|
||||||
// The AX.25 Network section
|
// The AX.25 Network section
|
||||||
bool getAX25NetworkEnabled() const;
|
bool getAX25NetworkEnabled() const;
|
||||||
std::string getAX25GatewayAddress() const;
|
std::string getAX25NetworkPort() const;
|
||||||
unsigned int getAX25GatewayPort() const;
|
unsigned int getAX25NetworkSpeed() const;
|
||||||
std::string getAX25LocalAddress() const;
|
|
||||||
unsigned int getAX25LocalPort() const;
|
|
||||||
bool getAX25NetworkDebug() const;
|
bool getAX25NetworkDebug() const;
|
||||||
|
|
||||||
// The TFTSERIAL section
|
// The TFTSERIAL section
|
||||||
@@ -463,7 +460,6 @@ private:
|
|||||||
bool m_ax25Enabled;
|
bool m_ax25Enabled;
|
||||||
int m_ax25RXTwist;
|
int m_ax25RXTwist;
|
||||||
int m_ax25TXTwist;
|
int m_ax25TXTwist;
|
||||||
bool m_ax25Digipeat;
|
|
||||||
bool m_ax25Trace;
|
bool m_ax25Trace;
|
||||||
|
|
||||||
bool m_fmEnabled;
|
bool m_fmEnabled;
|
||||||
@@ -550,10 +546,8 @@ private:
|
|||||||
bool m_pocsagNetworkDebug;
|
bool m_pocsagNetworkDebug;
|
||||||
|
|
||||||
bool m_ax25NetworkEnabled;
|
bool m_ax25NetworkEnabled;
|
||||||
std::string m_ax25GatewayAddress;
|
std::string m_ax25NetworkPort;
|
||||||
unsigned int m_ax25GatewayPort;
|
unsigned int m_ax25NetworkSpeed;
|
||||||
std::string m_ax25LocalAddress;
|
|
||||||
unsigned int m_ax25LocalPort;
|
|
||||||
bool m_ax25NetworkDebug;
|
bool m_ax25NetworkDebug;
|
||||||
|
|
||||||
std::string m_tftSerialPort;
|
std::string m_tftSerialPort;
|
||||||
|
|||||||
@@ -180,7 +180,6 @@ ExtAudioBoost=1
|
|||||||
Enable=1
|
Enable=1
|
||||||
TXTwist=6
|
TXTwist=6
|
||||||
RXTwist=6
|
RXTwist=6
|
||||||
Digipeat=1
|
|
||||||
Trace=1
|
Trace=1
|
||||||
|
|
||||||
[D-Star Network]
|
[D-Star Network]
|
||||||
@@ -242,10 +241,8 @@ Debug=0
|
|||||||
|
|
||||||
[AX.25 Network]
|
[AX.25 Network]
|
||||||
Enable=1
|
Enable=1
|
||||||
LocalAddress=127.0.0.1
|
Port=/dev/ttyp7
|
||||||
LocalPort=47325
|
Speed=9600
|
||||||
GatewayAddress=127.0.0.1
|
|
||||||
GatewayPort=47326
|
|
||||||
Debug=0
|
Debug=0
|
||||||
|
|
||||||
[TFT Serial]
|
[TFT Serial]
|
||||||
|
|||||||
@@ -626,18 +626,16 @@ int CMMDVMHost::run()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_ax25Enabled) {
|
if (m_ax25Enabled) {
|
||||||
int rxTwist = m_conf.getAX25RXTwist();
|
int rxTwist = m_conf.getAX25RXTwist();
|
||||||
int txTwist = m_conf.getAX25TXTwist();
|
int txTwist = m_conf.getAX25TXTwist();
|
||||||
bool digipeat = m_conf.getAX25Digipeat();
|
bool trace = m_conf.getAX25Trace();
|
||||||
bool trace = m_conf.getAX25Trace();
|
|
||||||
|
|
||||||
LogInfo("AX.25 RF Parameters");
|
LogInfo("AX.25 RF Parameters");
|
||||||
LogInfo(" RXTwist: %d", rxTwist);
|
LogInfo(" RXTwist: %d", rxTwist);
|
||||||
LogInfo(" TXTwist: %d", txTwist);
|
LogInfo(" TXTwist: %d", txTwist);
|
||||||
LogInfo(" Digipeat: %s", digipeat ? "yes" : "no");
|
|
||||||
LogInfo(" Trace: %s", trace ? "yes" : "no");
|
LogInfo(" Trace: %s", trace ? "yes" : "no");
|
||||||
|
|
||||||
m_ax25 = new CAX25Control(m_ax25Network, digipeat, trace);
|
m_ax25 = new CAX25Control(m_ax25Network, trace);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool remoteControlEnabled = m_conf.getRemoteControlEnabled();
|
bool remoteControlEnabled = m_conf.getRemoteControlEnabled();
|
||||||
@@ -1584,19 +1582,15 @@ bool CMMDVMHost::createPOCSAGNetwork()
|
|||||||
|
|
||||||
bool CMMDVMHost::createAX25Network()
|
bool CMMDVMHost::createAX25Network()
|
||||||
{
|
{
|
||||||
std::string gatewayAddress = m_conf.getAX25GatewayAddress();
|
std::string port = m_conf.getAX25NetworkPort();
|
||||||
unsigned int gatewayPort = m_conf.getAX25GatewayPort();
|
unsigned int speed = m_conf.getAX25NetworkSpeed();
|
||||||
std::string localAddress = m_conf.getAX25LocalAddress();
|
bool debug = m_conf.getAX25NetworkDebug();
|
||||||
unsigned int localPort = m_conf.getAX25LocalPort();
|
|
||||||
bool debug = m_conf.getAX25NetworkDebug();
|
|
||||||
|
|
||||||
LogInfo("AX.25 Network Parameters");
|
LogInfo("AX.25 Network Parameters");
|
||||||
LogInfo(" Gateway Address: %s", gatewayAddress.c_str());
|
LogInfo(" Port: %s", port.c_str());
|
||||||
LogInfo(" Gateway Port: %u", gatewayPort);
|
LogInfo(" Speed: %u", speed);
|
||||||
LogInfo(" Local Address: %s", localAddress.c_str());
|
|
||||||
LogInfo(" Local Port: %u", localPort);
|
|
||||||
|
|
||||||
m_ax25Network = new CAX25Network(localAddress, localPort, gatewayAddress, gatewayPort, debug);
|
m_ax25Network = new CAX25Network(port, speed, debug);
|
||||||
|
|
||||||
bool ret = m_ax25Network->open();
|
bool ret = m_ax25Network->open();
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
|
|||||||
45
Modem.cpp
45
Modem.cpp
@@ -114,15 +114,17 @@ m_txInvert(txInvert),
|
|||||||
m_pttInvert(pttInvert),
|
m_pttInvert(pttInvert),
|
||||||
m_txDelay(txDelay),
|
m_txDelay(txDelay),
|
||||||
m_dmrDelay(dmrDelay),
|
m_dmrDelay(dmrDelay),
|
||||||
m_rxLevel(0U),
|
m_rxLevel(0.0F),
|
||||||
m_cwIdTXLevel(0U),
|
m_cwIdTXLevel(0.0F),
|
||||||
m_dstarTXLevel(0U),
|
m_dstarTXLevel(0.0F),
|
||||||
m_dmrTXLevel(0U),
|
m_dmrTXLevel(0.0F),
|
||||||
m_ysfTXLevel(0U),
|
m_ysfTXLevel(0.0F),
|
||||||
m_p25TXLevel(0U),
|
m_p25TXLevel(0.0F),
|
||||||
m_nxdnTXLevel(0U),
|
m_nxdnTXLevel(0.0F),
|
||||||
m_pocsagTXLevel(0U),
|
m_pocsagTXLevel(0.0F),
|
||||||
m_fmTXLevel(0U),
|
m_fmTXLevel(0.0F),
|
||||||
|
m_ax25TXLevel(0.0F),
|
||||||
|
m_rfLevel(0.0F),
|
||||||
m_trace(trace),
|
m_trace(trace),
|
||||||
m_debug(debug),
|
m_debug(debug),
|
||||||
m_rxFrequency(0U),
|
m_rxFrequency(0U),
|
||||||
@@ -177,6 +179,8 @@ m_lockout(false),
|
|||||||
m_error(false),
|
m_error(false),
|
||||||
m_mode(MODE_IDLE),
|
m_mode(MODE_IDLE),
|
||||||
m_hwType(HWT_UNKNOWN),
|
m_hwType(HWT_UNKNOWN),
|
||||||
|
m_ax25RXTwist(0),
|
||||||
|
m_ax25TXTwist(0),
|
||||||
m_fmCallsign(),
|
m_fmCallsign(),
|
||||||
m_fmCallsignSpeed(20U),
|
m_fmCallsignSpeed(20U),
|
||||||
m_fmCallsignFrequency(1000U),
|
m_fmCallsignFrequency(1000U),
|
||||||
@@ -248,7 +252,7 @@ void CModem::setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled,
|
|||||||
m_ax25Enabled = ax25Enabled;
|
m_ax25Enabled = ax25Enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CModem::setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, float dmrTXLevel, float ysfTXLevel, float p25TXLevel, float nxdnTXLevel, float pocsagTXLevel, float fmTXLevel)
|
void CModem::setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, float dmrTXLevel, float ysfTXLevel, float p25TXLevel, float nxdnTXLevel, float pocsagTXLevel, float fmTXLevel, float ax25TXLevel)
|
||||||
{
|
{
|
||||||
m_rxLevel = rxLevel;
|
m_rxLevel = rxLevel;
|
||||||
m_cwIdTXLevel = cwIdTXLevel;
|
m_cwIdTXLevel = cwIdTXLevel;
|
||||||
@@ -259,6 +263,7 @@ void CModem::setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, flo
|
|||||||
m_nxdnTXLevel = nxdnTXLevel;
|
m_nxdnTXLevel = nxdnTXLevel;
|
||||||
m_pocsagTXLevel = pocsagTXLevel;
|
m_pocsagTXLevel = pocsagTXLevel;
|
||||||
m_fmTXLevel = fmTXLevel;
|
m_fmTXLevel = fmTXLevel;
|
||||||
|
m_ax25TXLevel = ax25TXLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CModem::setDMRParams(unsigned int colorCode)
|
void CModem::setDMRParams(unsigned int colorCode)
|
||||||
@@ -284,6 +289,12 @@ void CModem::setNXDNParams(unsigned int txHang)
|
|||||||
m_nxdnTXHang = txHang;
|
m_nxdnTXHang = txHang;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CModem::setAX25Params(int rxTwist, int txTwist)
|
||||||
|
{
|
||||||
|
m_ax25RXTwist = rxTwist;
|
||||||
|
m_ax25TXTwist = txTwist;
|
||||||
|
}
|
||||||
|
|
||||||
void CModem::setTransparentDataParams(unsigned int sendFrameType)
|
void CModem::setTransparentDataParams(unsigned int sendFrameType)
|
||||||
{
|
{
|
||||||
m_sendTransparentDataFrameType = sendFrameType;
|
m_sendTransparentDataFrameType = sendFrameType;
|
||||||
@@ -1551,7 +1562,7 @@ bool CModem::setConfig()
|
|||||||
|
|
||||||
buffer[0U] = MMDVM_FRAME_START;
|
buffer[0U] = MMDVM_FRAME_START;
|
||||||
|
|
||||||
buffer[1U] = 24U;
|
buffer[1U] = 27U;
|
||||||
|
|
||||||
buffer[2U] = MMDVM_SET_CONFIG;
|
buffer[2U] = MMDVM_SET_CONFIG;
|
||||||
|
|
||||||
@@ -1621,10 +1632,16 @@ bool CModem::setConfig()
|
|||||||
|
|
||||||
buffer[23U] = (unsigned char)m_nxdnTXHang;
|
buffer[23U] = (unsigned char)m_nxdnTXHang;
|
||||||
|
|
||||||
// CUtils::dump(1U, "Written", buffer, 24U);
|
buffer[24U] = (unsigned char)(m_ax25TXLevel * 2.55F + 0.5F);
|
||||||
|
|
||||||
int ret = m_serial->write(buffer, 24U);
|
buffer[25U] = (unsigned char)(m_ax25RXTwist + 128);
|
||||||
if (ret != 24)
|
|
||||||
|
buffer[26U] = (unsigned char)(m_ax25TXTwist + 128);
|
||||||
|
|
||||||
|
// CUtils::dump(1U, "Written", buffer, 27U);
|
||||||
|
|
||||||
|
int ret = m_serial->write(buffer, 27U);
|
||||||
|
if (ret != 27)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned int count = 0U;
|
unsigned int count = 0U;
|
||||||
|
|||||||
6
Modem.h
6
Modem.h
@@ -48,11 +48,12 @@ public:
|
|||||||
virtual void setSerialParams(const std::string& protocol, unsigned int address);
|
virtual void setSerialParams(const std::string& protocol, unsigned int address);
|
||||||
virtual void setRFParams(unsigned int rxFrequency, int rxOffset, unsigned int txFrequency, int txOffset, int txDCOffset, int rxDCOffset, float rfLevel, unsigned int pocsagFrequency);
|
virtual void setRFParams(unsigned int rxFrequency, int rxOffset, unsigned int txFrequency, int txOffset, int txDCOffset, int rxDCOffset, float rfLevel, unsigned int pocsagFrequency);
|
||||||
virtual void setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled, bool p25Enabled, bool nxdnEnabled, bool pocsagEnabled, bool fmEnabled, bool ax25Enabled);
|
virtual void setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled, bool p25Enabled, bool nxdnEnabled, bool pocsagEnabled, bool fmEnabled, bool ax25Enabled);
|
||||||
virtual void setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, float dmrTXLevel, float ysfTXLevel, float p25TXLevel, float nxdnTXLevel, float pocsagLevel, float fmTXLevel);
|
virtual void setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, float dmrTXLevel, float ysfTXLevel, float p25TXLevel, float nxdnTXLevel, float pocsagLevel, float fmTXLevel, float ax25TXLevel);
|
||||||
virtual void setDMRParams(unsigned int colorCode);
|
virtual void setDMRParams(unsigned int colorCode);
|
||||||
virtual void setYSFParams(bool loDev, unsigned int txHang);
|
virtual void setYSFParams(bool loDev, unsigned int txHang);
|
||||||
virtual void setP25Params(unsigned int txHang);
|
virtual void setP25Params(unsigned int txHang);
|
||||||
virtual void setNXDNParams(unsigned int txHang);
|
virtual void setNXDNParams(unsigned int txHang);
|
||||||
|
virtual void setAX25Params(int rxTwist, int txTwist);
|
||||||
virtual void setTransparentDataParams(unsigned int sendFrameType);
|
virtual void setTransparentDataParams(unsigned int sendFrameType);
|
||||||
|
|
||||||
virtual void setFMCallsignParams(const std::string& callsign, unsigned int callsignSpeed, unsigned int callsignFrequency, unsigned int callsignTime, unsigned int callsignHoldoff, float callsignHighLevel, float callsignLowLevel, bool callsignAtStart, bool callsignAtEnd, bool callsignAtLatch);
|
virtual void setFMCallsignParams(const std::string& callsign, unsigned int callsignSpeed, unsigned int callsignFrequency, unsigned int callsignTime, unsigned int callsignHoldoff, float callsignHighLevel, float callsignLowLevel, bool callsignAtStart, bool callsignAtEnd, bool callsignAtLatch);
|
||||||
@@ -146,6 +147,7 @@ private:
|
|||||||
float m_nxdnTXLevel;
|
float m_nxdnTXLevel;
|
||||||
float m_pocsagTXLevel;
|
float m_pocsagTXLevel;
|
||||||
float m_fmTXLevel;
|
float m_fmTXLevel;
|
||||||
|
float m_ax25TXLevel;
|
||||||
float m_rfLevel;
|
float m_rfLevel;
|
||||||
bool m_trace;
|
bool m_trace;
|
||||||
bool m_debug;
|
bool m_debug;
|
||||||
@@ -201,6 +203,8 @@ private:
|
|||||||
bool m_error;
|
bool m_error;
|
||||||
unsigned char m_mode;
|
unsigned char m_mode;
|
||||||
HW_TYPE m_hwType;
|
HW_TYPE m_hwType;
|
||||||
|
int m_ax25RXTwist;
|
||||||
|
int m_ax25TXTwist;
|
||||||
|
|
||||||
std::string m_fmCallsign;
|
std::string m_fmCallsign;
|
||||||
unsigned int m_fmCallsignSpeed;
|
unsigned int m_fmCallsignSpeed;
|
||||||
|
|||||||
Reference in New Issue
Block a user