20 if (!this->
sent_.
init(this->plane_row_length_() * this->height_)) {
21 ESP_LOGW(TAG,
"No memory for the comparison frame; partial updates will degrade unchanged areas");
27 const size_t data_idx =
y * row_length;
28 for (
size_t i = 0; i != row_length; i++)
47 const auto start_time =
millis();
64 const auto &source = send_copy ? this->
sent_ : this->
buffer_;
66 const size_t plane_length = row_length * this->
height_;
68 const size_t max_chunk = std::max<size_t>(this->
data_rate_ / 8000 * MAX_TRANSFER_TIME, MAX_TRANSFER_SIZE);
80 data = row_alloc.
get();
Helper class for efficient buffer allocation - uses stack for small sizes, heap for large This is use...
void command(uint8_t value)
bool is_using_partial_update_() const
bool buffer_is_mono_() const
split_buffer::SplitBuffer buffer_
size_t current_data_index_
bool transfer_data() override
virtual void set_window()
split_buffer::SplitBuffer sent_
virtual void plane_row(size_t y, uint8_t *out)
void init_comparison_frame_()
bool transfer_data() override
size_t plane_row_length_() const
void write_array(const uint8_t *data, size_t length)
bool init(size_t total_length, size_t max_buffer_size=SIZE_MAX)
void write(size_t index, const uint8_t *data, size_t length)
std::vector< uint8_t > & out
ESPHOME_LOG_TAG(TAG, "display")
uint32_t IRAM_ATTR HOT millis()