mirror of
https://github.com/g4klx/DMRGateway.git
synced 2025-12-06 05:32:01 +01:00
Add Symbol= option to [APRS] stanza in config, to allow user to define APRS symbol. Backward-compat., and will default to the standard D& symbol (diamond with "D" overlay) if Symbol= is not defined.
This commit is contained in:
parent
71b42aad36
commit
508692a554
|
|
@ -35,6 +35,7 @@ m_latitude(0.0F),
|
||||||
m_longitude(0.0F),
|
m_longitude(0.0F),
|
||||||
m_height(0),
|
m_height(0),
|
||||||
m_desc(),
|
m_desc(),
|
||||||
|
m_symbol(),
|
||||||
m_aprsAddr(),
|
m_aprsAddr(),
|
||||||
m_aprsLen(0U),
|
m_aprsLen(0U),
|
||||||
m_aprsSocket()
|
m_aprsSocket()
|
||||||
|
|
@ -56,11 +57,13 @@ CAPRSWriter::~CAPRSWriter()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void CAPRSWriter::setInfo(unsigned int txFrequency, unsigned int rxFrequency, const std::string& desc)
|
void CAPRSWriter::setInfo(unsigned int txFrequency, unsigned int rxFrequency, const std::string& desc, const std::string& symbol)
|
||||||
|
|
||||||
{
|
{
|
||||||
m_txFrequency = txFrequency;
|
m_txFrequency = txFrequency;
|
||||||
m_rxFrequency = rxFrequency;
|
m_rxFrequency = rxFrequency;
|
||||||
m_desc = desc;
|
m_desc = desc;
|
||||||
|
m_symbol = symbol;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CAPRSWriter::setLocation(float latitude, float longitude, int height)
|
void CAPRSWriter::setLocation(float latitude, float longitude, int height)
|
||||||
|
|
@ -149,17 +152,21 @@ void CAPRSWriter::sendIdFrame()
|
||||||
::sprintf(lon, "%08.2lf", longitude);
|
::sprintf(lon, "%08.2lf", longitude);
|
||||||
|
|
||||||
std::string server = m_callsign;
|
std::string server = m_callsign;
|
||||||
|
std::string symbol = m_symbol;
|
||||||
size_t pos = server.find_first_of('-');
|
size_t pos = server.find_first_of('-');
|
||||||
if (pos == std::string::npos)
|
if (pos == std::string::npos)
|
||||||
server.append("-S");
|
server.append("-S");
|
||||||
else
|
else
|
||||||
server.append("S");
|
server.append("S");
|
||||||
|
|
||||||
|
if (symbol.empty())
|
||||||
|
symbol.append("D&");
|
||||||
|
|
||||||
char output[500U];
|
char output[500U];
|
||||||
::sprintf(output, "%s>APDG03,TCPIP*,qAC,%s:!%s%cD%s%c&/A=%06.0f%s %s\r\n",
|
::sprintf(output, "%s>APDG03,TCPIP*,qAC,%s:!%s%c%c%s%c%c/A=%06.0f%s %s\r\n",
|
||||||
m_callsign.c_str(), server.c_str(),
|
m_callsign.c_str(), server.c_str(),
|
||||||
lat, (m_latitude < 0.0F) ? 'S' : 'N',
|
lat, (m_latitude < 0.0F) ? 'S' : 'N', symbol[0],
|
||||||
lon, (m_longitude < 0.0F) ? 'W' : 'E',
|
lon, (m_longitude < 0.0F) ? 'W' : 'E', symbol[1],
|
||||||
float(m_height) * 3.28F, band, desc);
|
float(m_height) * 3.28F, band, desc);
|
||||||
|
|
||||||
if (m_debug)
|
if (m_debug)
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ public:
|
||||||
|
|
||||||
bool open();
|
bool open();
|
||||||
|
|
||||||
void setInfo(unsigned int txFrequency, unsigned int rxFrequency, const std::string& desc);
|
void setInfo(unsigned int txFrequency, unsigned int rxFrequency, const std::string& desc, const std::string& symbol);
|
||||||
|
|
||||||
void setLocation(float latitude, float longitude, int height);
|
void setLocation(float latitude, float longitude, int height);
|
||||||
|
|
||||||
|
|
@ -62,6 +62,7 @@ private:
|
||||||
float m_longitude;
|
float m_longitude;
|
||||||
int m_height;
|
int m_height;
|
||||||
std::string m_desc;
|
std::string m_desc;
|
||||||
|
std::string m_symbol;
|
||||||
sockaddr_storage m_aprsAddr;
|
sockaddr_storage m_aprsAddr;
|
||||||
unsigned int m_aprsLen;
|
unsigned int m_aprsLen;
|
||||||
CUDPSocket m_aprsSocket;
|
CUDPSocket m_aprsSocket;
|
||||||
|
|
|
||||||
8
Conf.cpp
8
Conf.cpp
|
|
@ -182,6 +182,7 @@ m_aprsAddress(),
|
||||||
m_aprsPort(0U),
|
m_aprsPort(0U),
|
||||||
m_aprsSuffix(),
|
m_aprsSuffix(),
|
||||||
m_aprsDescription(),
|
m_aprsDescription(),
|
||||||
|
m_aprsSymbol(),
|
||||||
m_dynamicTGControlEnabled(false),
|
m_dynamicTGControlEnabled(false),
|
||||||
m_dynamicTGControlPort(3769U),
|
m_dynamicTGControlPort(3769U),
|
||||||
m_remoteControlEnabled(false),
|
m_remoteControlEnabled(false),
|
||||||
|
|
@ -989,6 +990,8 @@ bool CConf::read()
|
||||||
m_aprsSuffix = value;
|
m_aprsSuffix = value;
|
||||||
else if (::strcmp(key, "Description") == 0)
|
else if (::strcmp(key, "Description") == 0)
|
||||||
m_aprsDescription = value;
|
m_aprsDescription = value;
|
||||||
|
else if (::strcmp(key, "Symbol") == 0)
|
||||||
|
m_aprsSymbol = value;
|
||||||
} else if (section == SECTION_DYNAMIC_TG_CONTROL) {
|
} else if (section == SECTION_DYNAMIC_TG_CONTROL) {
|
||||||
if (::strcmp(key, "Enabled") == 0)
|
if (::strcmp(key, "Enabled") == 0)
|
||||||
m_dynamicTGControlEnabled = ::atoi(value) == 1;
|
m_dynamicTGControlEnabled = ::atoi(value) == 1;
|
||||||
|
|
@ -1702,6 +1705,11 @@ std::string CConf::getAPRSDescription() const
|
||||||
return m_aprsDescription;
|
return m_aprsDescription;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string CConf::getAPRSSymbol() const
|
||||||
|
{
|
||||||
|
return m_aprsSymbol;
|
||||||
|
}
|
||||||
|
|
||||||
bool CConf::getDynamicTGControlEnabled() const
|
bool CConf::getDynamicTGControlEnabled() const
|
||||||
{
|
{
|
||||||
return m_dynamicTGControlEnabled;
|
return m_dynamicTGControlEnabled;
|
||||||
|
|
|
||||||
2
Conf.h
2
Conf.h
|
|
@ -236,6 +236,7 @@ public:
|
||||||
unsigned short getAPRSPort() const;
|
unsigned short getAPRSPort() const;
|
||||||
std::string getAPRSSuffix() const;
|
std::string getAPRSSuffix() const;
|
||||||
std::string getAPRSDescription() const;
|
std::string getAPRSDescription() const;
|
||||||
|
std::string getAPRSSymbol() const;
|
||||||
|
|
||||||
// The Dynamic TG Control section
|
// The Dynamic TG Control section
|
||||||
bool getDynamicTGControlEnabled() const;
|
bool getDynamicTGControlEnabled() const;
|
||||||
|
|
@ -395,6 +396,7 @@ private:
|
||||||
unsigned short m_aprsPort;
|
unsigned short m_aprsPort;
|
||||||
std::string m_aprsSuffix;
|
std::string m_aprsSuffix;
|
||||||
std::string m_aprsDescription;
|
std::string m_aprsDescription;
|
||||||
|
std::string m_aprsSymbol;
|
||||||
|
|
||||||
bool m_dynamicTGControlEnabled;
|
bool m_dynamicTGControlEnabled;
|
||||||
unsigned short m_dynamicTGControlPort;
|
unsigned short m_dynamicTGControlPort;
|
||||||
|
|
|
||||||
|
|
@ -2528,8 +2528,9 @@ void CDMRGateway::createAPRS()
|
||||||
m_writer = new CAPRSWriter(m_callsign, suffix, address, port, debug);
|
m_writer = new CAPRSWriter(m_callsign, suffix, address, port, debug);
|
||||||
|
|
||||||
std::string desc = m_conf.getAPRSDescription();
|
std::string desc = m_conf.getAPRSDescription();
|
||||||
|
std::string symbol = m_conf.getAPRSSymbol();
|
||||||
|
|
||||||
m_writer->setInfo(m_txFrequency, m_rxFrequency, desc);
|
m_writer->setInfo(m_txFrequency, m_rxFrequency, desc, symbol);
|
||||||
|
|
||||||
float latitude = m_conf.getInfoLatitude();
|
float latitude = m_conf.getInfoLatitude();
|
||||||
float longitude = m_conf.getInfoLongitude();
|
float longitude = m_conf.getInfoLongitude();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue