23#ifndef ZWAVE_FRAME_GENERATOR_HPP
24#define ZWAVE_FRAME_GENERATOR_HPP
29#include "attribute_store.h"
82class zwave_frame_generator
93 struct shifted_value {
97 uint8_t left_shift = 0;
101 attribute_store_node_t node = ATTRIBUTE_STORE_INVALID_NODE;
105 attribute_store_node_value_state_t node_value_state = REPORTED_ATTRIBUTE;
109 uint8_t raw_value = 0;
117 explicit zwave_frame_generator(uint8_t zwave_command_class);
118 ~zwave_frame_generator() =
default;
133 void initialize_frame(uint8_t zwave_command_id,
142 void add_raw_byte(uint8_t
byte);
157 void add_value(attribute_store_node_t node,
158 attribute_store_node_value_state_t node_value_state
159 = REPORTED_ATTRIBUTE);
170 void add_shifted_values(
const std::vector<shifted_value> &shifted_values);
180 void add_shifted_values(
const shifted_value &shifted_values);
189 void validate_frame(uint16_t *frame_length)
const;
203 sl_status_t generate_no_args_frame(uint8_t zwave_command_id,
205 uint16_t *frame_length);
218 std::vector<uint8_t> helper_get_raw_data(
219 attribute_store_node_t node,
220 attribute_store_node_value_state_t node_value_state)
const;
223 const uint8_t current_command_class;
225 uint8_t *current_zwave_frame;
227 uint16_t current_zwave_frame_size = 0;
229 uint16_t current_zwave_frame_index = 0;
uint32_t sl_status_t
Definition: sl_status.h:139