mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-23 16:55:52 +08:00
Publish the log data via MQTT topics $NAME/log/$LEVEL.
This commit is contained in:
38
Conf.cpp
38
Conf.cpp
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2015-2021 by Jonathan Naylor G4KLX
|
* Copyright (C) 2015-2022 by Jonathan Naylor G4KLX
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -32,6 +32,7 @@ enum SECTION {
|
|||||||
SECTION_GENERAL,
|
SECTION_GENERAL,
|
||||||
SECTION_INFO,
|
SECTION_INFO,
|
||||||
SECTION_LOG,
|
SECTION_LOG,
|
||||||
|
SECTION_MQTT,
|
||||||
SECTION_CWID,
|
SECTION_CWID,
|
||||||
SECTION_DMRID_LOOKUP,
|
SECTION_DMRID_LOOKUP,
|
||||||
SECTION_NXDNID_LOOKUP,
|
SECTION_NXDNID_LOOKUP,
|
||||||
@@ -86,6 +87,10 @@ m_logFileLevel(0U),
|
|||||||
m_logFilePath(),
|
m_logFilePath(),
|
||||||
m_logFileRoot(),
|
m_logFileRoot(),
|
||||||
m_logFileRotate(true),
|
m_logFileRotate(true),
|
||||||
|
m_mqttHost("127.0.0.1"),
|
||||||
|
m_mqttPort(1883),
|
||||||
|
m_mqttKeepalive(60U),
|
||||||
|
m_mqttName("mmdvm"),
|
||||||
m_cwIdEnabled(false),
|
m_cwIdEnabled(false),
|
||||||
m_cwIdTime(10U),
|
m_cwIdTime(10U),
|
||||||
m_cwIdCallsign(),
|
m_cwIdCallsign(),
|
||||||
@@ -369,6 +374,8 @@ bool CConf::read()
|
|||||||
section = SECTION_INFO;
|
section = SECTION_INFO;
|
||||||
else if (::strncmp(buffer, "[Log]", 5U) == 0)
|
else if (::strncmp(buffer, "[Log]", 5U) == 0)
|
||||||
section = SECTION_LOG;
|
section = SECTION_LOG;
|
||||||
|
else if (::strncmp(buffer, "[MQTT]", 6U) == 0)
|
||||||
|
section = SECTION_MQTT;
|
||||||
else if (::strncmp(buffer, "[CW Id]", 7U) == 0)
|
else if (::strncmp(buffer, "[CW Id]", 7U) == 0)
|
||||||
section = SECTION_CWID;
|
section = SECTION_CWID;
|
||||||
else if (::strncmp(buffer, "[DMR Id Lookup]", 15U) == 0)
|
else if (::strncmp(buffer, "[DMR Id Lookup]", 15U) == 0)
|
||||||
@@ -513,6 +520,15 @@ bool CConf::read()
|
|||||||
m_logDisplayLevel = (unsigned int)::atoi(value);
|
m_logDisplayLevel = (unsigned int)::atoi(value);
|
||||||
else if (::strcmp(key, "FileRotate") == 0)
|
else if (::strcmp(key, "FileRotate") == 0)
|
||||||
m_logFileRotate = ::atoi(value) == 1;
|
m_logFileRotate = ::atoi(value) == 1;
|
||||||
|
} else if (section == SECTION_MQTT) {
|
||||||
|
if (::strcmp(key, "Host") == 0)
|
||||||
|
m_mqttHost = value;
|
||||||
|
else if (::strcmp(key, "Port") == 0)
|
||||||
|
m_mqttPort = (unsigned short)::atoi(value);
|
||||||
|
else if (::strcmp(key, "Keepalive") == 0)
|
||||||
|
m_mqttKeepalive = (unsigned int)::atoi(value);
|
||||||
|
else if (::strcmp(key, "Name") == 0)
|
||||||
|
m_mqttName = value;
|
||||||
} else if (section == SECTION_CWID) {
|
} else if (section == SECTION_CWID) {
|
||||||
if (::strcmp(key, "Enable") == 0)
|
if (::strcmp(key, "Enable") == 0)
|
||||||
m_cwIdEnabled = ::atoi(value) == 1;
|
m_cwIdEnabled = ::atoi(value) == 1;
|
||||||
@@ -1253,6 +1269,26 @@ bool CConf::getLogFileRotate() const
|
|||||||
return m_logFileRotate;
|
return m_logFileRotate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string CConf::getMQTTHost() const
|
||||||
|
{
|
||||||
|
return m_mqttHost;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned short CConf::getMQTTPort() const
|
||||||
|
{
|
||||||
|
return m_mqttPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int CConf::getMQTTKeepalive() const
|
||||||
|
{
|
||||||
|
return m_mqttKeepalive;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string CConf::getMQTTName() const
|
||||||
|
{
|
||||||
|
return m_mqttName;
|
||||||
|
}
|
||||||
|
|
||||||
bool CConf::getCWIdEnabled() const
|
bool CConf::getCWIdEnabled() const
|
||||||
{
|
{
|
||||||
return m_cwIdEnabled;
|
return m_cwIdEnabled;
|
||||||
|
|||||||
13
Conf.h
13
Conf.h
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2015-2021 by Jonathan Naylor G4KLX
|
* Copyright (C) 2015-2022 by Jonathan Naylor G4KLX
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -56,6 +56,12 @@ public:
|
|||||||
std::string getLogFileRoot() const;
|
std::string getLogFileRoot() const;
|
||||||
bool getLogFileRotate() const;
|
bool getLogFileRotate() const;
|
||||||
|
|
||||||
|
// The MQTT section
|
||||||
|
std::string getMQTTHost() const;
|
||||||
|
unsigned short getMQTTPort() const;
|
||||||
|
unsigned int getMQTTKeepalive() const;
|
||||||
|
std::string getMQTTName() const;
|
||||||
|
|
||||||
// The CW ID section
|
// The CW ID section
|
||||||
bool getCWIdEnabled() const;
|
bool getCWIdEnabled() const;
|
||||||
unsigned int getCWIdTime() const;
|
unsigned int getCWIdTime() const;
|
||||||
@@ -395,6 +401,11 @@ private:
|
|||||||
std::string m_logFileRoot;
|
std::string m_logFileRoot;
|
||||||
bool m_logFileRotate;
|
bool m_logFileRotate;
|
||||||
|
|
||||||
|
std::string m_mqttHost;
|
||||||
|
unsigned short m_mqttPort;
|
||||||
|
unsigned int m_mqttKeepalive;
|
||||||
|
std::string m_mqttName;
|
||||||
|
|
||||||
bool m_cwIdEnabled;
|
bool m_cwIdEnabled;
|
||||||
unsigned int m_cwIdTime;
|
unsigned int m_cwIdTime;
|
||||||
std::string m_cwIdCallsign;
|
std::string m_cwIdCallsign;
|
||||||
|
|||||||
16
Log.cpp
16
Log.cpp
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2015,2016,2020 by Jonathan Naylor G4KLX
|
* Copyright (C) 2015,2016,2020,2022 by Jonathan Naylor G4KLX
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
|
#include "MQTTPublisher.h"
|
||||||
|
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
#if defined(_WIN32) || defined(_WIN64)
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
@@ -32,6 +33,9 @@
|
|||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
|
CMQTTPublisher* m_mqtt = NULL;
|
||||||
|
static std::string m_mqttName;
|
||||||
|
|
||||||
static unsigned int m_fileLevel = 2U;
|
static unsigned int m_fileLevel = 2U;
|
||||||
static std::string m_filePath;
|
static std::string m_filePath;
|
||||||
static std::string m_fileRoot;
|
static std::string m_fileRoot;
|
||||||
@@ -124,7 +128,7 @@ bool LogOpen()
|
|||||||
return logOpenNoRotate();
|
return logOpenNoRotate();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel, bool rotate)
|
bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel, bool rotate, const std::string& mqttName)
|
||||||
{
|
{
|
||||||
m_filePath = filePath;
|
m_filePath = filePath;
|
||||||
m_fileRoot = fileRoot;
|
m_fileRoot = fileRoot;
|
||||||
@@ -132,6 +136,7 @@ bool LogInitialise(bool daemon, const std::string& filePath, const std::string&
|
|||||||
m_displayLevel = displayLevel;
|
m_displayLevel = displayLevel;
|
||||||
m_daemon = daemon;
|
m_daemon = daemon;
|
||||||
m_fileRotate = rotate;
|
m_fileRotate = rotate;
|
||||||
|
m_mqttName = mqttName;
|
||||||
|
|
||||||
if (m_daemon)
|
if (m_daemon)
|
||||||
m_displayLevel = 0U;
|
m_displayLevel = 0U;
|
||||||
@@ -171,6 +176,13 @@ void Log(unsigned int level, const char* fmt, ...)
|
|||||||
|
|
||||||
va_end(vl);
|
va_end(vl);
|
||||||
|
|
||||||
|
if (m_mqtt != NULL) {
|
||||||
|
char topic[100U];
|
||||||
|
::sprintf(topic, "%s/log/%c", m_mqttName.c_str(), LEVELS[level]);
|
||||||
|
|
||||||
|
m_mqtt->publish(topic, buffer + 3U);
|
||||||
|
}
|
||||||
|
|
||||||
if (level >= m_fileLevel && m_fileLevel != 0U) {
|
if (level >= m_fileLevel && m_fileLevel != 0U) {
|
||||||
bool ret = ::LogOpen();
|
bool ret = ::LogOpen();
|
||||||
if (!ret)
|
if (!ret)
|
||||||
|
|||||||
4
Log.h
4
Log.h
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2015,2016,2020 by Jonathan Naylor G4KLX
|
* Copyright (C) 2015,2016,2020,2022 by Jonathan Naylor G4KLX
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
extern void Log(unsigned int level, const char* fmt, ...);
|
extern void Log(unsigned int level, const char* fmt, ...);
|
||||||
|
|
||||||
extern bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel, bool rotate);
|
extern bool LogInitialise(bool daemon, const std::string& filePath, const std::string& fileRoot, unsigned int fileLevel, unsigned int displayLevel, bool rotate, const std::string& mqttName = "");
|
||||||
extern void LogFinalise();
|
extern void LogFinalise();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -29,6 +29,12 @@ FilePath=.
|
|||||||
FileRoot=MMDVM
|
FileRoot=MMDVM
|
||||||
FileRotate=1
|
FileRotate=1
|
||||||
|
|
||||||
|
[MQTT]
|
||||||
|
Host=127.0.0.1
|
||||||
|
Port=1883
|
||||||
|
Keepalive=60
|
||||||
|
Name=mmdvm
|
||||||
|
|
||||||
[CW Id]
|
[CW Id]
|
||||||
Enable=1
|
Enable=1
|
||||||
Time=10
|
Time=10
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2015-2021 by Jonathan Naylor G4KLX
|
* Copyright (C) 2015-2022 by Jonathan Naylor G4KLX
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -28,6 +28,7 @@
|
|||||||
#include "I2CController.h"
|
#include "I2CController.h"
|
||||||
#endif
|
#endif
|
||||||
#include "UDPController.h"
|
#include "UDPController.h"
|
||||||
|
#include "MQTTPublisher.h"
|
||||||
#include "DStarDefines.h"
|
#include "DStarDefines.h"
|
||||||
#include "Version.h"
|
#include "Version.h"
|
||||||
#include "StopWatch.h"
|
#include "StopWatch.h"
|
||||||
@@ -59,6 +60,9 @@ static bool m_killed = false;
|
|||||||
static int m_signal = 0;
|
static int m_signal = 0;
|
||||||
static bool m_reload = false;
|
static bool m_reload = false;
|
||||||
|
|
||||||
|
// In Log.cpp
|
||||||
|
extern CMQTTPublisher* m_mqtt;
|
||||||
|
|
||||||
#if !defined(_WIN32) && !defined(_WIN64)
|
#if !defined(_WIN32) && !defined(_WIN64)
|
||||||
static void sigHandler1(int signum)
|
static void sigHandler1(int signum)
|
||||||
{
|
{
|
||||||
@@ -267,15 +271,23 @@ int CMMDVMHost::run()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(_WIN32) && !defined(_WIN64)
|
#if !defined(_WIN32) && !defined(_WIN64)
|
||||||
ret = ::LogInitialise(m_daemon, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel(), m_conf.getLogFileRotate());
|
ret = ::LogInitialise(m_daemon, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel(), m_conf.getLogFileRotate(), m_conf.getMQTTName());
|
||||||
#else
|
#else
|
||||||
ret = ::LogInitialise(false, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel(), m_conf.getLogFileRotate());
|
ret = ::LogInitialise(false, m_conf.getLogFilePath(), m_conf.getLogFileRoot(), m_conf.getLogFileLevel(), m_conf.getLogDisplayLevel(), m_conf.getLogFileRotate(), m_conf.getMQTTName());
|
||||||
#endif
|
#endif
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
::fprintf(stderr, "MMDVMHost: unable to open the log file\n");
|
::fprintf(stderr, "MMDVMHost: unable to open the log file\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_mqtt = new CMQTTPublisher(m_conf.getMQTTHost(), m_conf.getMQTTPort(), m_conf.getMQTTKeepalive(), 2);
|
||||||
|
ret = m_mqtt->open();
|
||||||
|
if (!ret) {
|
||||||
|
::fprintf(stderr, "MMDVMHost: unable to start the MQTT Publisher\n");
|
||||||
|
delete m_mqtt;
|
||||||
|
m_mqtt = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#if !defined(_WIN32) && !defined(_WIN64)
|
#if !defined(_WIN32) && !defined(_WIN64)
|
||||||
if (m_daemon) {
|
if (m_daemon) {
|
||||||
::close(STDIN_FILENO);
|
::close(STDIN_FILENO);
|
||||||
@@ -1361,6 +1373,11 @@ int CMMDVMHost::run()
|
|||||||
delete m_remoteControl;
|
delete m_remoteControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_mqtt != NULL) {
|
||||||
|
m_mqtt->close();
|
||||||
|
delete m_mqtt;
|
||||||
|
}
|
||||||
|
|
||||||
delete m_dstar;
|
delete m_dstar;
|
||||||
delete m_dmr;
|
delete m_dmr;
|
||||||
delete m_ysf;
|
delete m_ysf;
|
||||||
|
|||||||
122
MQTTPublisher.cpp
Normal file
122
MQTTPublisher.cpp
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 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 "MQTTPublisher.h"
|
||||||
|
|
||||||
|
#include <cassert>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
|
||||||
|
CMQTTPublisher::CMQTTPublisher(const std::string& host, unsigned short port, unsigned int keepalive, unsigned int qos) :
|
||||||
|
m_host(host),
|
||||||
|
m_port(port),
|
||||||
|
m_keepalive(keepalive),
|
||||||
|
m_qos(qos),
|
||||||
|
m_mosq(NULL),
|
||||||
|
m_connected(false)
|
||||||
|
{
|
||||||
|
assert(!host.empty());
|
||||||
|
assert(port > 0U);
|
||||||
|
assert(keepalive >= 5U);
|
||||||
|
assert(qos >= 0U && qos <= 2U);
|
||||||
|
|
||||||
|
::mosquitto_lib_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
CMQTTPublisher::~CMQTTPublisher()
|
||||||
|
{
|
||||||
|
::mosquitto_lib_cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CMQTTPublisher::open()
|
||||||
|
{
|
||||||
|
m_mosq = ::mosquitto_new(NULL, true, this);
|
||||||
|
if (m_mosq == NULL){
|
||||||
|
::fprintf(stderr, "MQTT Error newing: Out of memory.\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
::mosquitto_connect_callback_set(m_mosq, onConnect);
|
||||||
|
::mosquitto_disconnect_callback_set(m_mosq, onDisconnect);
|
||||||
|
|
||||||
|
int rc = ::mosquitto_connect(m_mosq, m_host.c_str(), m_port, m_keepalive);
|
||||||
|
if (rc != MOSQ_ERR_SUCCESS) {
|
||||||
|
::mosquitto_destroy(m_mosq);
|
||||||
|
m_mosq = NULL;
|
||||||
|
::fprintf(stderr, "MQTT Error connecting: %s\n", ::mosquitto_strerror(rc));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = ::mosquitto_loop_start(m_mosq);
|
||||||
|
if (rc != MOSQ_ERR_SUCCESS) {
|
||||||
|
::mosquitto_destroy(m_mosq);
|
||||||
|
m_mosq = NULL;
|
||||||
|
::fprintf(stderr, "MQTT Error loop starting: %s\n", ::mosquitto_strerror(rc));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CMQTTPublisher::publish(const char* topic, const char* text)
|
||||||
|
{
|
||||||
|
assert(topic != NULL);
|
||||||
|
assert(text != NULL);
|
||||||
|
|
||||||
|
if (!m_connected)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int rc = ::mosquitto_publish(m_mosq, NULL, topic, ::strlen(text), text, m_qos, false);
|
||||||
|
if (rc != MOSQ_ERR_SUCCESS) {
|
||||||
|
::fprintf(stderr, "MQTT Error publishing: %s\n", ::mosquitto_strerror(rc));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMQTTPublisher::close()
|
||||||
|
{
|
||||||
|
::mosquitto_disconnect(m_mosq);
|
||||||
|
::mosquitto_destroy(m_mosq);
|
||||||
|
m_mosq = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMQTTPublisher::onConnect(mosquitto* mosq, void* obj, int rc)
|
||||||
|
{
|
||||||
|
assert(mosq != NULL);
|
||||||
|
assert(obj != NULL);
|
||||||
|
|
||||||
|
::fprintf(stdout, "MQTT: on_connect: %s\n", ::mosquitto_connack_string(rc));
|
||||||
|
|
||||||
|
CMQTTPublisher* p = static_cast<CMQTTPublisher*>(obj);
|
||||||
|
p->m_connected = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMQTTPublisher::onDisconnect(mosquitto* mosq, void* obj, int rc)
|
||||||
|
{
|
||||||
|
assert(mosq != NULL);
|
||||||
|
assert(obj != NULL);
|
||||||
|
|
||||||
|
::fprintf(stdout, "MQTT: on_disconnect: %s\n", ::mosquitto_reason_string(rc));
|
||||||
|
|
||||||
|
CMQTTPublisher* p = static_cast<CMQTTPublisher*>(obj);
|
||||||
|
p->m_connected = false;
|
||||||
|
}
|
||||||
|
|
||||||
51
MQTTPublisher.h
Normal file
51
MQTTPublisher.h
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 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(MQTTPUBLISHER_H)
|
||||||
|
#define MQTTPUBLISHER_H
|
||||||
|
|
||||||
|
#include <mosquitto.h>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
class CMQTTPublisher {
|
||||||
|
public:
|
||||||
|
CMQTTPublisher(const std::string& host, unsigned short port, unsigned int keepalive, unsigned int qos);
|
||||||
|
~CMQTTPublisher();
|
||||||
|
|
||||||
|
bool open();
|
||||||
|
|
||||||
|
bool publish(const char* topic, const char* text);
|
||||||
|
|
||||||
|
void close();
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_host;
|
||||||
|
unsigned short m_port;
|
||||||
|
unsigned int m_keepalive;
|
||||||
|
unsigned int m_qos;
|
||||||
|
mosquitto* m_mosq;
|
||||||
|
bool m_connected;
|
||||||
|
|
||||||
|
static void onConnect(mosquitto* mosq, void* obj, int rc);
|
||||||
|
static void onDisconnect(mosquitto* mosq, void* obj, int rc);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
8
Makefile
8
Makefile
@@ -3,7 +3,7 @@
|
|||||||
CC = cc
|
CC = cc
|
||||||
CXX = c++
|
CXX = c++
|
||||||
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -I/usr/local/include
|
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -I/usr/local/include
|
||||||
LIBS = -lpthread -lutil
|
LIBS = -lpthread -lutil -lmosquitto
|
||||||
LDFLAGS = -g -L/usr/local/lib
|
LDFLAGS = -g -L/usr/local/lib
|
||||||
|
|
||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
@@ -11,7 +11,7 @@ OBJECTS = \
|
|||||||
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
||||||
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
||||||
Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o MMDVMHost.o \
|
Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o MMDVMHost.o \
|
||||||
Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \
|
MQTTPublisher.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \
|
||||||
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o \
|
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o \
|
||||||
NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o POCSAGControl.o \
|
NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o POCSAGControl.o \
|
||||||
POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o TFTSurenoo.o Thread.o \
|
POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o TFTSurenoo.o Thread.o \
|
||||||
@@ -22,8 +22,8 @@ all: MMDVMHost RemoteCommand
|
|||||||
MMDVMHost: GitVersion.h $(OBJECTS)
|
MMDVMHost: GitVersion.h $(OBJECTS)
|
||||||
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
||||||
|
|
||||||
RemoteCommand: Log.o RemoteCommand.o UDPSocket.o
|
RemoteCommand: Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o
|
||||||
$(CXX) Log.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
$(CXX) Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
||||||
|
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
$(CXX) $(CFLAGS) -c -o $@ $<
|
$(CXX) $(CFLAGS) -c -o $@ $<
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
CC = cc
|
CC = cc
|
||||||
CXX = c++
|
CXX = c++
|
||||||
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -DRASPBERRY_PI -I/usr/local/include
|
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -DRASPBERRY_PI -I/usr/local/include
|
||||||
LIBS = -lwiringPi -lwiringPiDev -lpthread -lutil
|
LIBS = -lwiringPi -lwiringPiDev -lpthread -lutil -lmosquitto
|
||||||
LDFLAGS = -g -L/usr/local/lib
|
LDFLAGS = -g -L/usr/local/lib
|
||||||
|
|
||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
@@ -11,7 +11,7 @@ OBJECTS = \
|
|||||||
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
||||||
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
||||||
Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o MMDVMHost.o \
|
Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o MMDVMHost.o \
|
||||||
Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \
|
MQTTPublisher.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \
|
||||||
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o \
|
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o \
|
||||||
NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o POCSAGControl.o \
|
NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o POCSAGControl.o \
|
||||||
POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o TFTSurenoo.o Thread.o \
|
POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o TFTSurenoo.o Thread.o \
|
||||||
@@ -22,8 +22,8 @@ all: MMDVMHost RemoteCommand
|
|||||||
MMDVMHost: GitVersion.h $(OBJECTS)
|
MMDVMHost: GitVersion.h $(OBJECTS)
|
||||||
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
||||||
|
|
||||||
RemoteCommand: Log.o RemoteCommand.o UDPSocket.o
|
RemoteCommand: Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o
|
||||||
$(CXX) Log.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
$(CXX) Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
||||||
|
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
$(CXX) $(CFLAGS) -c -o $@ $<
|
$(CXX) $(CFLAGS) -c -o $@ $<
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
CC = cc
|
CC = cc
|
||||||
CXX = c++
|
CXX = c++
|
||||||
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -DHD44780 -DADAFRUIT_DISPLAY -I/usr/local/include
|
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -DHD44780 -DADAFRUIT_DISPLAY -I/usr/local/include
|
||||||
LIBS = -lwiringPi -lwiringPiDev -lpthread -lutil
|
LIBS = -lwiringPi -lwiringPiDev -lpthread -lutil -lmosquitto
|
||||||
LDFLAGS = -g -L/usr/local/lib
|
LDFLAGS = -g -L/usr/local/lib
|
||||||
|
|
||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
@@ -12,7 +12,7 @@ OBJECTS = \
|
|||||||
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
||||||
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
||||||
Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o \
|
Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o \
|
||||||
MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \
|
MMDVMHost.o MQTTPublisher.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \
|
||||||
NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
||||||
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o \
|
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o \
|
||||||
POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \
|
POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \
|
||||||
@@ -24,8 +24,8 @@ all: MMDVMHost RemoteCommand
|
|||||||
MMDVMHost: GitVersion.h $(OBJECTS)
|
MMDVMHost: GitVersion.h $(OBJECTS)
|
||||||
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
||||||
|
|
||||||
RemoteCommand: Log.o RemoteCommand.o UDPSocket.o
|
RemoteCommand: Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o
|
||||||
$(CXX) Log.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
$(CXX) Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
||||||
|
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
$(CXX) $(CFLAGS) -c -o $@ $<
|
$(CXX) $(CFLAGS) -c -o $@ $<
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
CC = cc
|
CC = cc
|
||||||
CXX = c++
|
CXX = c++
|
||||||
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -DHD44780 -I/usr/local/include
|
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -DHD44780 -I/usr/local/include
|
||||||
LIBS = -lwiringPi -lwiringPiDev -lpthread -lutil
|
LIBS = -lwiringPi -lwiringPiDev -lpthread -lutil -lmosquitto
|
||||||
LDFLAGS = -g -L/usr/local/lib
|
LDFLAGS = -g -L/usr/local/lib
|
||||||
|
|
||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
@@ -11,7 +11,7 @@ OBJECTS = \
|
|||||||
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
||||||
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
||||||
Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o \
|
Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o \
|
||||||
MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \
|
MMDVMHost.o MQTTPublisher.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \
|
||||||
NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
||||||
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o \
|
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o \
|
||||||
POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \
|
POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \
|
||||||
@@ -23,8 +23,8 @@ all: MMDVMHost RemoteCommand
|
|||||||
MMDVMHost: GitVersion.h $(OBJECTS)
|
MMDVMHost: GitVersion.h $(OBJECTS)
|
||||||
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
||||||
|
|
||||||
RemoteCommand: Log.o RemoteCommand.o UDPSocket.o
|
RemoteCommand: Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o
|
||||||
$(CXX) Log.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
$(CXX) Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
||||||
|
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
$(CXX) $(CFLAGS) -c -o $@ $<
|
$(CXX) $(CFLAGS) -c -o $@ $<
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
CC = cc
|
CC = cc
|
||||||
CXX = c++
|
CXX = c++
|
||||||
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -DOLED -I/usr/local/include
|
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -DOLED -I/usr/local/include
|
||||||
LIBS = -lArduiPi_OLED -lpthread -lutil
|
LIBS = -lArduiPi_OLED -lpthread -lutil -lmosquitto
|
||||||
|
|
||||||
# If you use NetBSD, add following CFLAGS
|
# If you use NetBSD, add following CFLAGS
|
||||||
#CFLAGS += -L/usr/local/lib -Wl,-rpath=/usr/local/lib
|
#CFLAGS += -L/usr/local/lib -Wl,-rpath=/usr/local/lib
|
||||||
@@ -15,7 +15,7 @@ OBJECTS = \
|
|||||||
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
||||||
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
||||||
Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o MMDVMHost.o \
|
Hamming.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o MMDVMHost.o \
|
||||||
Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \
|
MQTTPublisher.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o NXDNControl.o \
|
||||||
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o \
|
NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o NXDNSACCH.o \
|
||||||
NXDNUDCH.o OLED.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o \
|
NXDNUDCH.o OLED.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o \
|
||||||
POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \
|
POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \
|
||||||
@@ -27,8 +27,8 @@ all: MMDVMHost RemoteCommand
|
|||||||
MMDVMHost: GitVersion.h $(OBJECTS)
|
MMDVMHost: GitVersion.h $(OBJECTS)
|
||||||
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
||||||
|
|
||||||
RemoteCommand: Log.o RemoteCommand.o UDPSocket.o
|
RemoteCommand: Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o
|
||||||
$(CXX) Log.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
$(CXX) Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
||||||
|
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
$(CXX) $(CFLAGS) -c -o $@ $<
|
$(CXX) $(CFLAGS) -c -o $@ $<
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
CC = cc
|
CC = cc
|
||||||
CXX = c++
|
CXX = c++
|
||||||
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -DHD44780 -DPCF8574_DISPLAY -I/usr/local/include
|
CFLAGS = -g -O3 -Wall -std=c++0x -pthread -DHAVE_LOG_H -DHD44780 -DPCF8574_DISPLAY -I/usr/local/include
|
||||||
LIBS = -lwiringPi -lwiringPiDev -lpthread -lutil
|
LIBS = -lwiringPi -lwiringPiDev -lpthread -lutil -lmosquitto
|
||||||
LDFLAGS = -g -L/usr/local/lib
|
LDFLAGS = -g -L/usr/local/lib
|
||||||
|
|
||||||
OBJECTS = \
|
OBJECTS = \
|
||||||
@@ -12,7 +12,7 @@ OBJECTS = \
|
|||||||
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
DMRDirectNetwork.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRGatewayNetwork.o DMRLookup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o \
|
||||||
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
DMRAccessControl.o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o FMControl.o FMNetwork.o Golay2087.o Golay24128.o \
|
||||||
Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o \
|
Hamming.o HD44780.o I2CController.o IIRDirectForm1Filter.o LCDproc.o Log.o M17Control.o M17Convolution.o M17CRC.o M17LSF.o M17Network.o M17Utils.o \
|
||||||
MMDVMHost.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \
|
MMDVMHost.o MQTTPublisher.o Modem.o ModemPort.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullController.o NullDisplay.o NXDNAudio.o \
|
||||||
NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NXDNNetwork.o \
|
||||||
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o \
|
NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Trellis.o P25Utils.o PseudoTTYController.o \
|
||||||
POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \
|
POCSAGControl.o POCSAGNetwork.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialPort.o SMeter.o StopWatch.o Sync.o SHA256.o \
|
||||||
@@ -24,8 +24,8 @@ all: MMDVMHost RemoteCommand
|
|||||||
MMDVMHost: GitVersion.h $(OBJECTS)
|
MMDVMHost: GitVersion.h $(OBJECTS)
|
||||||
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
$(CXX) $(OBJECTS) $(CFLAGS) $(LIBS) -o MMDVMHost
|
||||||
|
|
||||||
RemoteCommand: Log.o RemoteCommand.o UDPSocket.o
|
RemoteCommand: Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o
|
||||||
$(CXX) Log.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
$(CXX) Log.o MQTTPublisher.o RemoteCommand.o UDPSocket.o $(CFLAGS) $(LIBS) -o RemoteCommand
|
||||||
|
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
$(CXX) $(CFLAGS) -c -o $@ $<
|
$(CXX) $(CFLAGS) -c -o $@ $<
|
||||||
|
|||||||
Reference in New Issue
Block a user