14#ifndef ZWAVE_TX_QUEUE_HPP
15#define ZWAVE_TX_QUEUE_HPP
24#include "sys/etimer.h"
335 void log(
bool log_messages_payload) const;
346 bool log_frame_payload) const;
Priority Queue.
Definition: priority_queue.hpp:56
Definition: zwave_tx_queue.hpp:105
void clear()
clears the tx queue
uint32_t zwave_tx_session_id_counter
Definition: zwave_tx_queue.hpp:108
bool contains(const zwave_tx_session_id_t session_id) const
Verifies if a session ID is in the queue.
const uint8_t * get_frame(const zwave_tx_session_id_t session_id)
Returns a pointer to the payload of a frame in the Tx Queue.
bool zwave_tx_has_frames_for_node(const zwave_node_id_t node_id)
Finds if we have elements to send to a NodeID destination.
priority_queue< zwave_tx_queue_element_t, ZWAVE_TX_QUEUE_BUFFER_SIZE, queue_element_qos_compare >::iterator queue_iterator
Definition: zwave_tx_queue.hpp:358
priority_queue< zwave_tx_queue_element_t, ZWAVE_TX_QUEUE_BUFFER_SIZE, queue_element_qos_compare >::const_iterator const_queue_iterator
Definition: zwave_tx_queue.hpp:362
uint8_t get_number_of_responses(const zwave_tx_session_id_t session_id)
Finds the total the number of expected responses for an element and its parents in the queue.
sl_status_t pop(const zwave_tx_session_id_t session_id)
Removes an element from the queue.
sl_status_t reset_transmission_timestamp(const zwave_tx_session_id_t session_id)
Reset the timestamp for the transmission of an element.
int size() const noexcept
sl_status_t get_highest_priority_child(zwave_tx_queue_element_t *element, const zwave_tx_session_id_t session_id) const
Find the child in the queue with the highest priority.
void log_element(const zwave_tx_session_id_t session_id, bool log_frame_payload) const
Logs the content one element of the queue using sl_log.
sl_status_t disable_fasttack(const zwave_tx_session_id_t session_id)
Disables the fasttrack options from the Z-Wave Tx Options.
sl_status_t decrement_expected_responses(const zwave_tx_session_id_t session_id)
Decrement the number of expected responses for an element in the queue.
queue_iterator find(const zwave_tx_session_id_t key)
sl_status_t set_transmissions_results(const zwave_tx_session_id_t session_id, uint8_t status, zwapi_tx_report_t *tx_status)
Sets Z-Wave API transmission results for an element in the queue.
uint16_t get_frame_length(const zwave_tx_session_id_t session_id)
Returns the length of a frame in the Z-Wave Tx Queue.
void simple_log(zwave_tx_queue_element_t *e) const
Short log of one element using sl_log.
sl_status_t enqueue(const zwave_tx_queue_element_t &new_element, zwave_tx_session_id_t *user_session_id)
Adds a new element into the queue.
sl_status_t set_transmission_timestamp(const zwave_tx_session_id_t session_id)
Records a timestamp of the current time for the transmission of an element.
priority_queue< zwave_tx_queue_element_t, ZWAVE_TX_QUEUE_BUFFER_SIZE, queue_element_qos_compare > queue
Definition: zwave_tx_queue.hpp:370
void log(bool log_messages_payload) const
Logs the content of the queue using sl_log.
sl_status_t get_by_id(zwave_tx_queue_element_t *element, const zwave_tx_session_id_t session_id) const
Gets a copy of the data for an element in the queue.
zwave_tx_queue_element_t * first_in_queue()
gets the element which has the highest priority
uint32_t sl_status_t
Definition: sl_status.h:139
#define ZWAVE_MAX_FRAME_SIZE
Definition: zwave_node_id_definitions.h:53
uint16_t zwave_node_id_t
Z-Wave NodeID type.
Definition: zwave_node_id_definitions.h:84
void * zwave_tx_session_id_t
Handle that can be used for aborting ongoing transmissions or identifying TX Queue elements.
Definition: zwave_tx_definitions.h:77
struct zwave_tx_queue_element zwave_tx_queue_element_t
Z-Wave TX queue element.
void(* on_zwave_tx_send_data_complete_t)(uint8_t status, const zwapi_tx_report_t *tx_info, void *user)
Function signature for callbacks invoked when send data has completed.
Definition: zwave_tx.h:168
Definition: zwave_tx_queue.hpp:83
bool operator()(const zwave_tx_queue_element_t &lhs, const zwave_tx_queue_element_t &rhs) const
Definition: zwave_tx_queue.hpp:84
Detailed report and data about Z-Wave transmissions.
Definition: zwapi_protocol_transport.h:225
Structure holding information about the source and destination when transmitting and receiving Z-Wave...
Definition: zwave_controller_connection_info.h:87
Definition: zwave_tx_definitions.h:131
uint32_t qos_priority
Definition: zwave_tx_definitions.h:148
Z-Wave TX queue element.
Definition: zwave_tx_queue.hpp:48
clock_time_t transmission_time
Definition: zwave_tx_queue.hpp:70
clock_time_t queue_timestamp
Definition: zwave_tx_queue.hpp:65
uint16_t data_length
Size of the frame payload.
Definition: zwave_tx_queue.hpp:52
zwapi_tx_report_t send_data_tx_status
Definition: zwave_tx_queue.hpp:55
uint8_t send_data_status
Definition: zwave_tx_queue.hpp:80
zwave_controller_connection_info_t connection_info
Requested connection_info (transport/encapsulation information)
Definition: zwave_tx_queue.hpp:59
clock_time_t transmission_timestamp
Transmissions timestamp, used to record when the frame is sent.
Definition: zwave_tx_queue.hpp:67
void * user
Definition: zwave_tx_queue.hpp:77
uint8_t data[ZWAVE_MAX_FRAME_SIZE]
Frame payload.
Definition: zwave_tx_queue.hpp:50
zwave_tx_session_id_t zwave_tx_session_id
Session ID for this element. It's a unique identifier.
Definition: zwave_tx_queue.hpp:61
on_zwave_tx_send_data_complete_t callback_function
Definition: zwave_tx_queue.hpp:74
zwave_tx_options_t options
Options for transmitting this element. Refer to zwave_tx_options_t.
Definition: zwave_tx_queue.hpp:57
const zwave_node_id_t node_id
#define ZWAVE_TX_QUEUE_BUFFER_SIZE
Definition: zwave_tx.h:26