SPSP
Simple publish-subscribe protocol. Connects low power IoT clients to MQTT.
All Classes Files Functions Variables Typedefs Enumerations
Public Member Functions | Protected Member Functions | List of all members
SPSP::ILocalNode< TLocalLayer > Class Template Referenceabstract

Generic local node of SPSP. More...

#include <node.hpp>

Inheritance diagram for SPSP::ILocalNode< TLocalLayer >:
Inheritance graph
[legend]

Public Member Functions

 ILocalNode (TLocalLayer *ll)
 Constructs a new node. More...
 
void receiveLocal (const LocalMessageT &msg, int rssi=NODE_RSSI_UNKNOWN)
 Receives the message from local layer. More...
 
void setLocalRecvSendCb (LocalRecvSendCb cb)
 Sets local receive/send callback function. More...
 

Protected Member Functions

TLocalLayer * getLocalLayer () const
 Gets the far layer object. More...
 
bool sendLocal (const LocalMessageT &msg)
 Sends the message to local layer. More...
 
void publishRssi (const LocalAddrT &addr, int rssi)
 Publishes RSSI of received message from addr More...
 
virtual bool processProbeReq (const LocalMessageT &req, int rssi=NODE_RSSI_UNKNOWN)=0
 Processes PROBE_REQ message. More...
 
virtual bool processProbeRes (const LocalMessageT &req, int rssi=NODE_RSSI_UNKNOWN)=0
 Processes PROBE_RES message. More...
 
virtual bool processPub (const LocalMessageT &req, int rssi=NODE_RSSI_UNKNOWN)=0
 Processes PUB message. More...
 
virtual bool processSubReq (const LocalMessageT &req, int rssi=NODE_RSSI_UNKNOWN)=0
 Processes SUB_REQ message. More...
 
virtual bool processSubData (const LocalMessageT &req, int rssi=NODE_RSSI_UNKNOWN)=0
 Processes SUB_DATA message. More...
 
virtual bool processUnsub (const LocalMessageT &req, int rssi=NODE_RSSI_UNKNOWN)=0
 Processes UNSUB message. More...
 
virtual bool processTimeReq (const LocalMessageT &req, int rssi=NODE_RSSI_UNKNOWN)=0
 Processes TIME_REQ message. More...
 
virtual bool processTimeRes (const LocalMessageT &req, int rssi=NODE_RSSI_UNKNOWN)=0
 Processes TIME_RES message. More...
 

Detailed Description

template<typename TLocalLayer>
class SPSP::ILocalNode< TLocalLayer >

Generic local node of SPSP.

Template Parameters
TLocalLayerType of local layer

Definition at line 17 of file layers.hpp.

Constructor & Destructor Documentation

◆ ILocalNode()

template<typename TLocalLayer >
SPSP::ILocalNode< TLocalLayer >::ILocalNode ( TLocalLayer *  ll)
inline

Constructs a new node.

Definition at line 124 of file node.hpp.

Member Function Documentation

◆ getLocalLayer()

template<typename TLocalLayer >
TLocalLayer* SPSP::ILocalNode< TLocalLayer >::getLocalLayer ( ) const
inlineprotected

Gets the far layer object.

Returns
Far layer object

Definition at line 208 of file node.hpp.

◆ processProbeReq()

template<typename TLocalLayer >
virtual bool SPSP::ILocalNode< TLocalLayer >::processProbeReq ( const LocalMessageT &  req,
int  rssi = NODE_RSSI_UNKNOWN 
)
protectedpure virtual

Processes PROBE_REQ message.

Parameters
reqRequest message
rssiReceived signal strength indicator (in dBm)
Returns
true Message delivery successful
false Message delivery failed

Implemented in SPSP::Nodes::Client< TLocalLayer >, SPSP::Nodes::Bridge< TLocalLayer, TFarLayer >, and SPSP::Nodes::DummyLocalNode< TLocalLayer >.

◆ processProbeRes()

template<typename TLocalLayer >
virtual bool SPSP::ILocalNode< TLocalLayer >::processProbeRes ( const LocalMessageT &  req,
int  rssi = NODE_RSSI_UNKNOWN 
)
protectedpure virtual

Processes PROBE_RES message.

Parameters
reqRequest message
rssiReceived signal strength indicator (in dBm)
Returns
true Message delivery successful
false Message delivery failed

Implemented in SPSP::Nodes::Bridge< TLocalLayer, TFarLayer >, SPSP::Nodes::Client< TLocalLayer >, and SPSP::Nodes::DummyLocalNode< TLocalLayer >.

◆ processPub()

template<typename TLocalLayer >
virtual bool SPSP::ILocalNode< TLocalLayer >::processPub ( const LocalMessageT &  req,
int  rssi = NODE_RSSI_UNKNOWN 
)
protectedpure virtual

Processes PUB message.

Parameters
reqRequest message
rssiReceived signal strength indicator (in dBm)
Returns
true Message delivery successful
false Message delivery failed

Implemented in SPSP::Nodes::Client< TLocalLayer >, SPSP::Nodes::Bridge< TLocalLayer, TFarLayer >, and SPSP::Nodes::DummyLocalNode< TLocalLayer >.

◆ processSubData()

template<typename TLocalLayer >
virtual bool SPSP::ILocalNode< TLocalLayer >::processSubData ( const LocalMessageT &  req,
int  rssi = NODE_RSSI_UNKNOWN 
)
protectedpure virtual

Processes SUB_DATA message.

Parameters
reqRequest message
rssiReceived signal strength indicator (in dBm)
Returns
true Message delivery successful
false Message delivery failed

Implemented in SPSP::Nodes::Bridge< TLocalLayer, TFarLayer >, SPSP::Nodes::Client< TLocalLayer >, and SPSP::Nodes::DummyLocalNode< TLocalLayer >.

◆ processSubReq()

template<typename TLocalLayer >
virtual bool SPSP::ILocalNode< TLocalLayer >::processSubReq ( const LocalMessageT &  req,
int  rssi = NODE_RSSI_UNKNOWN 
)
protectedpure virtual

Processes SUB_REQ message.

Parameters
reqRequest message
rssiReceived signal strength indicator (in dBm)
Returns
true Message delivery successful
false Message delivery failed

Implemented in SPSP::Nodes::Bridge< TLocalLayer, TFarLayer >, SPSP::Nodes::Client< TLocalLayer >, and SPSP::Nodes::DummyLocalNode< TLocalLayer >.

◆ processTimeReq()

template<typename TLocalLayer >
virtual bool SPSP::ILocalNode< TLocalLayer >::processTimeReq ( const LocalMessageT &  req,
int  rssi = NODE_RSSI_UNKNOWN 
)
protectedpure virtual

Processes TIME_REQ message.

Parameters
reqRequest message
rssiReceived signal strength indicator (in dBm)
Returns
true Message delivery successful
false Message delivery failed

Implemented in SPSP::Nodes::Bridge< TLocalLayer, TFarLayer >, SPSP::Nodes::Client< TLocalLayer >, and SPSP::Nodes::DummyLocalNode< TLocalLayer >.

◆ processTimeRes()

template<typename TLocalLayer >
virtual bool SPSP::ILocalNode< TLocalLayer >::processTimeRes ( const LocalMessageT &  req,
int  rssi = NODE_RSSI_UNKNOWN 
)
protectedpure virtual

Processes TIME_RES message.

Parameters
reqRequest message
rssiReceived signal strength indicator (in dBm)
Returns
true Message delivery successful
false Message delivery failed

Implemented in SPSP::Nodes::Bridge< TLocalLayer, TFarLayer >, SPSP::Nodes::Client< TLocalLayer >, and SPSP::Nodes::DummyLocalNode< TLocalLayer >.

◆ processUnsub()

template<typename TLocalLayer >
virtual bool SPSP::ILocalNode< TLocalLayer >::processUnsub ( const LocalMessageT &  req,
int  rssi = NODE_RSSI_UNKNOWN 
)
protectedpure virtual

Processes UNSUB message.

Parameters
reqRequest message
rssiReceived signal strength indicator (in dBm)
Returns
true Message delivery successful
false Message delivery failed

Implemented in SPSP::Nodes::Bridge< TLocalLayer, TFarLayer >, SPSP::Nodes::Client< TLocalLayer >, and SPSP::Nodes::DummyLocalNode< TLocalLayer >.

◆ publishRssi()

template<typename TLocalLayer >
void SPSP::ILocalNode< TLocalLayer >::publishRssi ( const LocalAddrT &  addr,
int  rssi 
)
inlineprotected

Publishes RSSI of received message from addr

Doesn't block and doesn't check delivery status. If rssi is NODE_RSSI_UNKNOWN, doesn't do anything.

Parameters
rssiReceived signal strength indicator (in dBm)

Definition at line 250 of file node.hpp.

◆ receiveLocal()

template<typename TLocalLayer >
void SPSP::ILocalNode< TLocalLayer >::receiveLocal ( const LocalMessageT &  msg,
int  rssi = NODE_RSSI_UNKNOWN 
)
inline

Receives the message from local layer.

Acts as a callback for local layer receiver.

Parameters
msgReceived message
rssiReceived signal strength indicator (in dBm)

Definition at line 137 of file node.hpp.

◆ sendLocal()

template<typename TLocalLayer >
bool SPSP::ILocalNode< TLocalLayer >::sendLocal ( const LocalMessageT &  msg)
inlineprotected

Sends the message to local layer.

Parameters
msgMessage to send
Returns
true Message delivery successful
false Message delivery failed

Definition at line 220 of file node.hpp.

◆ setLocalRecvSendCb()

template<typename TLocalLayer >
void SPSP::ILocalNode< TLocalLayer >::setLocalRecvSendCb ( LocalRecvSendCb  cb)
inline

Sets local receive/send callback function.

May be used to blink LEDs, compute statistics, etc.

Don't do any long action inside the callback! If you need to perform long blocking operation, spawn yourself a new thread.

Parameters
cbCallback (if nullptr, unsets the callback)

Definition at line 197 of file node.hpp.


The documentation for this class was generated from the following files: