AlteriomPainlessMesh v2.1.1
Easy ESP32/ESP8266 mesh networking with Alteriom IoT extensions
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
painlessmesh::protocol::Variant Class Reference

#include <protocol.hpp>

Public Member Functions

 Variant (const Variant &other)
 
Variant & operator= (const Variant &other)
 
 Variant (Variant &&other) noexcept
 
Variant & operator= (Variant &&other) noexcept
 
 Variant (const PackageInterface *pkg)
 
 Variant (Single single)
 
 Variant (Broadcast broadcast)
 
 Variant (NodeTree nodeTree)
 
 Variant (NodeSyncReply nodeSyncReply)
 
 Variant (NodeSyncRequest nodeSyncRequest)
 
 Variant (TimeSync timeSync)
 
 Variant (TimeDelay timeDelay)
 
template<typename T >
bool is ()
 
template<typename T >
T to ()
 
int type ()
 
uint32_t from ()
 
uint32_t msgId ()
 
uint8_t priority ()
 
router::Type routing ()
 
uint32_t dest ()
 
template<>
bool is ()
 
template<>
bool is ()
 
template<>
bool is ()
 
template<>
bool is ()
 
template<>
bool is ()
 
template<>
bool is ()
 
template<>
JsonObject to ()
 

Public Attributes

DeserializationError error = DeserializationError::Ok
 

Detailed Description

Can store any package variant

Internally stores packages as a JsonObject. Main use case is to convert different packages from and to Json (using ArduinoJson).

Constructor & Destructor Documentation

◆ Variant() [1/10]

painlessmesh::protocol::Variant::Variant ( const Variant &  other)
inline

◆ Variant() [2/10]

painlessmesh::protocol::Variant::Variant ( Variant &&  other)
inlinenoexcept

◆ Variant() [3/10]

painlessmesh::protocol::Variant::Variant ( const PackageInterface *  pkg)
inline

Create Variant object from any package implementing PackageInterface

◆ Variant() [4/10]

painlessmesh::protocol::Variant::Variant ( Single  single)
inline

Create Variant object from a Single package

Parameters
singleThe single package

◆ Variant() [5/10]

painlessmesh::protocol::Variant::Variant ( Broadcast  broadcast)
inline

Create Variant object from a Broadcast package

Parameters
broadcastThe broadcast package

◆ Variant() [6/10]

painlessmesh::protocol::Variant::Variant ( NodeTree  nodeTree)
inline

Create Variant object from a NodeTree

Parameters
nodeTreeThe NodeTree

◆ Variant() [7/10]

painlessmesh::protocol::Variant::Variant ( NodeSyncReply  nodeSyncReply)
inline

Create Variant object from a NodeSyncReply package

Parameters
nodeSyncReplyThe nodeSyncReply package

◆ Variant() [8/10]

painlessmesh::protocol::Variant::Variant ( NodeSyncRequest  nodeSyncRequest)
inline

Create Variant object from a NodeSyncRequest package

Parameters
nodeSyncRequestThe nodeSyncRequest package

◆ Variant() [9/10]

painlessmesh::protocol::Variant::Variant ( TimeSync  timeSync)
inline

Create Variant object from a TimeSync package

Parameters
timeSyncThe timeSync package

◆ Variant() [10/10]

painlessmesh::protocol::Variant::Variant ( TimeDelay  timeDelay)
inline

Create Variant object from a TimeDelay package

Parameters
timeDelayThe timeDelay package

Member Function Documentation

◆ dest()

uint32_t painlessmesh::protocol::Variant::dest ( )
inline

Destination node of the package

◆ from()

uint32_t painlessmesh::protocol::Variant::from ( )
inline

Origin node of the package (0 if not present)

Lightweight field peek — unlike to<T>() this does not materialize a package object or copy the message payload.

◆ is() [1/7]

template<typename T >
bool painlessmesh::protocol::Variant::is ( )
inline

Whether this package is of the given type

◆ is() [2/7]

template<>
bool painlessmesh::protocol::Variant::is ( )
inline

◆ is() [3/7]

template<>
bool painlessmesh::protocol::Variant::is ( )
inline

◆ is() [4/7]

template<>
bool painlessmesh::protocol::Variant::is ( )
inline

◆ is() [5/7]

template<>
bool painlessmesh::protocol::Variant::is ( )
inline

◆ is() [6/7]

template<>
bool painlessmesh::protocol::Variant::is ( )
inline

◆ is() [7/7]

template<>
bool painlessmesh::protocol::Variant::is ( )
inline

◆ msgId()

uint32_t painlessmesh::protocol::Variant::msgId ( )
inline

Delivery-confirmation id of the package (0 = no ack requested)

Lightweight field peek — unlike to<T>() this does not materialize a package object or copy the message payload.

◆ operator=() [1/2]

◆ operator=() [2/2]

◆ priority()

uint8_t painlessmesh::protocol::Variant::priority ( )
inline

Outbound queue priority of the package (PRIORITY_NORMAL if not present)

Lightweight field peek — unlike to<T>() this does not materialize a package object or copy the message payload. Used by forwarding hops to re-enqueue a routed package at the sender's priority (issue #384).

◆ routing()

router::Type painlessmesh::protocol::Variant::routing ( )
inline

Package routing method

◆ to() [1/2]

template<typename T >
T painlessmesh::protocol::Variant::to ( )
inline

Convert Variant to the given type

◆ to() [2/2]

template<>
JsonObject painlessmesh::protocol::Variant::to ( )
inline

◆ type()

int painlessmesh::protocol::Variant::type ( )
inline

Return package type

Member Data Documentation

◆ error

DeserializationError painlessmesh::protocol::Variant::error = DeserializationError::Ok

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