SPSP
Simple publish-subscribe protocol. Connects low power IoT clients to MQTT.
All Classes Files Functions Variables Typedefs Enumerations
linux/spsp/mqtt_adapter.hpp
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include "MQTTAsync.h"
13 
14 #include "spsp/mqtt_adapter_if.hpp"
15 #include "spsp/mqtt_types.hpp"
16 
17 namespace SPSP::FarLayers::MQTT
18 {
25  class Adapter : public IAdapter
26  {
27  Config m_conf;
28  MQTTAsync m_mqtt;
29  AdapterSubDataCb m_subDataCb = nullptr;
30  AdapterConnectedCb m_connectedCb = nullptr;
31 
32  public:
41  Adapter(const Config& conf);
42 
47  ~Adapter();
48 
59  bool publish(const std::string& topic, const std::string& payload);
60 
70  bool subscribe(const std::string& topic);
71 
81  bool unsubscribe(const std::string& topic);
82 
88  void setSubDataCb(AdapterSubDataCb cb);
89 
95  AdapterSubDataCb getSubDataCb() const;
96 
104  void setConnectedCb(AdapterConnectedCb cb);
105 
111  AdapterConnectedCb getConnectedCb() const;
112 
113  protected:
120  bool connect();
121 
130  static void connectedCb(void* ctx, char* cause);
131 
140  static void connFailureCb(void* ctx, MQTTAsync_failureData* resp);
141 
150  static void connLostCb(void* ctx, char* cause);
151 
162  static int subMsgCb(void* ctx, char* topic, int topicLen,
163  MQTTAsync_message* msg);
164 
171  inline static const char* stringToCOrNull(const std::string& str)
172  {
173  return str.empty() ? nullptr : str.c_str();
174  }
175  };
176 } // namespace SPSP::FarLayers::MQTT
SPSP::FarLayers::MQTT::Adapter::~Adapter
~Adapter()
Destroys MQTT layer object.
SPSP::FarLayers::MQTT::Adapter::Adapter
Adapter(const Config &conf)
Constructs a new MQTT layer object.
mqtt_adapter_if.hpp
Interface for platform-dependent MQTT adapter.
SPSP::FarLayers::MQTT::Adapter::connectedCb
static void connectedCb(void *ctx, char *cause)
Connected callback.
SPSP::FarLayers::MQTT::Adapter::connect
bool connect()
Connects to MQTT server.
SPSP::FarLayers::MQTT::Adapter::getSubDataCb
AdapterSubDataCb getSubDataCb() const
Gets callback for incoming subscription data.
SPSP::FarLayers::MQTT::Adapter::subMsgCb
static int subMsgCb(void *ctx, char *topic, int topicLen, MQTTAsync_message *msg)
Subscription message callback.
mqtt_types.hpp
MQTT types.
SPSP::FarLayers::MQTT::Adapter::stringToCOrNull
static const char * stringToCOrNull(const std::string &str)
Helper to convert std::string to C string or nullptr
Definition: linux/spsp/mqtt_adapter.hpp:171
SPSP::FarLayers::MQTT::Adapter::setSubDataCb
void setSubDataCb(AdapterSubDataCb cb)
Sets callback for incoming subscription data.
SPSP::FarLayers::MQTT::Adapter::subscribe
bool subscribe(const std::string &topic)
Subscribes to given topic.
SPSP::FarLayers::MQTT::Adapter::publish
bool publish(const std::string &topic, const std::string &payload)
Publishes message coming from node.
SPSP::FarLayers::MQTT::Adapter::setConnectedCb
void setConnectedCb(AdapterConnectedCb cb)
Sets connected callback.
SPSP::FarLayers::MQTT::Adapter::unsubscribe
bool unsubscribe(const std::string &topic)
Unsubscribes from given topic.
SPSP::FarLayers::MQTT::Adapter::connFailureCb
static void connFailureCb(void *ctx, MQTTAsync_failureData *resp)
Connection failure callback.
SPSP::FarLayers::MQTT::Adapter::getConnectedCb
AdapterConnectedCb getConnectedCb() const
Gets connected callback.
SPSP::FarLayers::MQTT::Adapter::connLostCb
static void connLostCb(void *ctx, char *cause)
Connection lost callback.