Class that:
More...
#include <cs_MeshModelMulticastAcked.h>
Class that:
- Sends and receives multicast acked messages.
- Queues messages to be sent.
- Handles queue 1 by 1.
◆ callback_msg_t
Callback function definition.
◆ addToQueue()
Add a msg to an empty spot in the queue (transmissions == 0).
Start looking at SendIndex, then reverse iterate over the queue. Then set the new SendIndex at the newly added item, so that it will be send first. We do the reverse iterate, so that the old SendIndex should be handled early (for a large enough queue).
◆ cancelQueueItem()
void MeshModelMulticastAcked::cancelQueueItem |
( |
uint8_t |
index | ) |
|
|
private |
If item at index is in progress, cancel it.
◆ checkDone()
void MeshModelMulticastAcked::checkDone |
( |
| ) |
|
|
private |
Check if ack from every stone ID in the list has been received.
Also check if timed out.
◆ configureSelf()
void MeshModelMulticastAcked::configureSelf |
( |
dsm_handle_t |
appkeyHandle | ) |
|
Configure the model.
Subscribes, and sets publish address.
◆ getNextItemInQueue()
int MeshModelMulticastAcked::getNextItemInQueue |
( |
bool |
priority | ) |
|
|
private |
Check if there is a msg in queue with more than 0 transmissions.
If so, return that index. Start looking at index SendIndex as that item should be sent first. Returns -1 if none found.
◆ handleMsg()
void MeshModelMulticastAcked::handleMsg |
( |
const access_message_rx_t * |
accessMsg | ) |
|
◆ handleReply()
void MeshModelMulticastAcked::handleReply |
( |
MeshMsgEvent & |
msg | ) |
|
|
private |
◆ init()
void MeshModelMulticastAcked::init |
( |
uint16_t |
modelId | ) |
|
◆ prepareForMsg()
Prepare for sending a new message.
◆ processQueue()
void MeshModelMulticastAcked::processQueue |
( |
| ) |
|
|
private |
Send messages from queue.
◆ registerMsgHandler()
void MeshModelMulticastAcked::registerMsgHandler |
( |
const callback_msg_t & |
closure | ) |
|
Register a callback function that's called when a message from the mesh is received.
◆ remFromQueue()
Remove a msg from the queue.
◆ remQueueItem()
void MeshModelMulticastAcked::remQueueItem |
( |
uint8_t |
index | ) |
|
|
private |
Remove an item from the queue.
◆ retryMsg()
void MeshModelMulticastAcked::retryMsg |
( |
| ) |
|
|
private |
Retry sending (parts of) the message.
◆ sendMsg()
cs_ret_code_t MeshModelMulticastAcked::sendMsg |
( |
const uint8_t * |
data, |
|
|
uint16_t |
len |
|
) |
| |
|
private |
Send a message over the mesh via publish, without reply.
◆ sendMsgFromQueue()
bool MeshModelMulticastAcked::sendMsgFromQueue |
( |
| ) |
|
|
private |
Get a msg from the queue, and send it.
Returns true when message was sent, false when no more messages to be sent.
◆ sendReply()
void MeshModelMulticastAcked::sendReply |
( |
const access_message_rx_t * |
accessMsg, |
|
|
const uint8_t * |
data, |
|
|
uint16_t |
len |
|
) |
| |
|
private |
◆ tick()
void MeshModelMulticastAcked::tick |
( |
uint32_t |
tickCount | ) |
|
To be called at a regular interval.
◆ TYPIFY()
◆ _accessModelHandle
access_model_handle_t MeshModelMulticastAcked::_accessModelHandle = ACCESS_HANDLE_INVALID |
|
private |
◆ _ackedStonesBitmask
Bitmask of acked stones.
If the Nth bit is set, the ack of Nth stone ID in the list has been received.
◆ _groupAddressHandle
dsm_handle_t MeshModelMulticastAcked::_groupAddressHandle = DSM_HANDLE_INVALID |
|
private |
◆ _msgCallback
◆ _processCallsLeft
uint16_t MeshModelMulticastAcked::_processCallsLeft |
|
private |
◆ _queue
◆ _queueIndexInProgress
Queue index of message currently being sent.
◆ _queueIndexNext
uint8_t MeshModelMulticastAcked::_queueIndexNext = 0 |
|
private |
Next index in queue to send.
◆ QUEUE_INDEX_NONE
const uint8_t MeshModelMulticastAcked::QUEUE_INDEX_NONE = 255 |
|
staticprivate |
◆ QUEUE_SIZE
const uint8_t MeshModelMulticastAcked::QUEUE_SIZE = 5 |
|
staticprivate |
The documentation for this class was generated from the following file: