13 #define RH_MESH_MESSAGE_TYPE_APPLICATION 0
14 #define RH_MESH_MESSAGE_TYPE_ROUTE_DISCOVERY_REQUEST 1
15 #define RH_MESH_MESSAGE_TYPE_ROUTE_DISCOVERY_RESPONSE 2
16 #define RH_MESH_MESSAGE_TYPE_ROUTE_FAILURE 3
19 #define RH_MESH_ARP_TIMEOUT 4000
120 #define RH_MESH_MAX_MESSAGE_LEN (RH_ROUTER_MAX_MESSAGE_LEN - sizeof(RHMesh::MeshMessageHeader))
132 uint8_t data[RH_MESH_MAX_MESSAGE_LEN];
141 uint8_t
route[RH_MESH_MAX_MESSAGE_LEN - 2];
175 uint8_t
sendtoWait(uint8_t* buf, uint8_t len, uint8_t dest, uint8_t flags = 0);
199 bool recvfromAck(uint8_t* buf, uint8_t* len, uint8_t* source = NULL, uint8_t* dest = NULL, uint8_t*
id = NULL, uint8_t* flags = NULL);
214 bool recvfromAckTimeout(uint8_t* buf, uint8_t* len, uint16_t timeout, uint8_t* source = NULL, uint8_t* dest = NULL, uint8_t*
id = NULL, uint8_t* flags = NULL);
236 virtual bool doArp(uint8_t address);
252 static uint8_t _tmpMessage[RH_ROUTER_MAX_MESSAGE_LEN];
uint8_t sendtoFromSourceWait(uint8_t *buf, uint8_t len, uint8_t dest, uint8_t source, uint8_t flags=0)
Definition: RHRouter.cpp:167
uint8_t thisAddress()
Definition: RHDatagram.cpp:77
bool recvfromAck(uint8_t *buf, uint8_t *len, uint8_t *source=NULL, uint8_t *dest=NULL, uint8_t *id=NULL, uint8_t *flags=NULL)
Definition: RHMesh.cpp:155
uint8_t data[RH_ROUTER_MAX_MESSAGE_LEN]
Application payload data.
Definition: RHRouter.h:152
uint8_t data[RH_MESH_MAX_MESSAGE_LEN]
Application layer payload data.
Definition: RHMesh.h:132
MeshMessageHeader header
msgType = RH_MESH_MESSAGE_TYPE_APPLICATION
Definition: RHMesh.h:131
virtual uint8_t route(RoutedMessage *message, uint8_t messageLen)
Definition: RHRouter.cpp:184
Abstract base class for a RadioHead driver.
Definition: RHGenericDriver.h:41
MeshMessageHeader header
msgType = RH_MESH_MESSAGE_TYPE_ROUTE_DISCOVERY_*
Definition: RHMesh.h:138
bool recvfromAck(uint8_t *buf, uint8_t *len, uint8_t *source=NULL, uint8_t *dest=NULL, uint8_t *id=NULL, uint8_t *flags=NULL)
Definition: RHRouter.cpp:212
uint8_t _max_hops
Definition: RHRouter.h:321
void addRouteTo(uint8_t dest, uint8_t next_hop, uint8_t state=Valid)
Definition: RHRouter.cpp:50
RHReliableDatagram subclass for sending addressed, optionally acknowledged datagrams multi-hop routed...
Definition: RHRouter.h:133
bool waitAvailableTimeout(uint16_t timeout)
Definition: RHDatagram.cpp:72
uint8_t headerFrom()
Definition: RHDatagram.cpp:107
Signals a route failure.
Definition: RHMesh.h:145
bool recvfromAckTimeout(uint8_t *buf, uint8_t *len, uint16_t timeout, uint8_t *source=NULL, uint8_t *dest=NULL, uint8_t *id=NULL, uint8_t *flags=NULL)
Definition: RHMesh.cpp:234
Defines an entry in the routing table.
Definition: RHRouter.h:164
Signals a route discovery request or reply (At present only supports physical dest addresses of lengt...
Definition: RHMesh.h:136
uint8_t route[RH_MESH_MAX_MESSAGE_LEN - 2]
List of node addresses visited so far. Length is implcit.
Definition: RHMesh.h:141
uint8_t sendtoWait(uint8_t *buf, uint8_t len, uint8_t dest, uint8_t flags=0)
Definition: RHRouter.cpp:160
uint8_t dest
The address of the destination towards which the route failed.
Definition: RHMesh.h:148
virtual bool doArp(uint8_t address)
Definition: RHMesh.cpp:51
RHRouter subclass for sending addressed, optionally acknowledged datagrams multi-hop routed across a ...
Definition: RHMesh.h:115
RHMesh(RHGenericDriver &driver, uint8_t thisAddress=0)
Definition: RHMesh.cpp:20
RoutedMessageHeader header
end-to-end delivery header
Definition: RHRouter.h:151
RoutingTableEntry * getRouteTo(uint8_t dest)
Definition: RHRouter.cpp:93
virtual void peekAtMessage(RoutedMessage *message, uint8_t messageLen)
Definition: RHMesh.cpp:92
virtual uint8_t route(RoutedMessage *message, uint8_t messageLen)
Definition: RHMesh.cpp:123
MeshMessageHeader header
msgType = RH_MESH_MESSAGE_TYPE_ROUTE_FAILURE
Definition: RHMesh.h:147
Defines the structure of a RHRouter message.
Definition: RHRouter.h:149
Signals an application layer message for the caller of RHMesh.
Definition: RHMesh.h:129
uint8_t _thisAddress
The address of this node.
Definition: RHDatagram.h:159
bool deleteRouteTo(uint8_t dest)
Definition: RHRouter.cpp:130
uint8_t dest
The address of the destination node whose route is being sought.
Definition: RHMesh.h:140
uint8_t destlen
Reserved. Must be 1.
Definition: RHMesh.h:139
bool _isa_router
Flag to set if packets are forwarded or not.
Definition: RHRouter.h:324
virtual bool isPhysicalAddress(uint8_t *address, uint8_t addresslen)
Definition: RHMesh.cpp:148
uint8_t sendtoWait(uint8_t *buf, uint8_t len, uint8_t dest, uint8_t flags=0)
Definition: RHMesh.cpp:31