1
0
mirror of https://github.com/esphome/esphome.git synced 2025-04-17 16:20:31 +01:00
igg ecd65003d4
Added support for ssd1327 (#985)
Co-authored-by: Ilya Goldberg <iggie@mac.com>
2020-05-28 19:11:25 -03:00

52 lines
1.3 KiB
C++

#pragma once
#include "esphome/core/component.h"
#include "esphome/core/esphal.h"
#include "esphome/components/display/display_buffer.h"
namespace esphome {
namespace ssd1325_base {
enum SSD1325Model {
SSD1325_MODEL_128_32 = 0,
SSD1325_MODEL_128_64,
SSD1325_MODEL_96_16,
SSD1325_MODEL_64_48,
SSD1327_MODEL_128_128,
};
class SSD1325 : public PollingComponent, public display::DisplayBuffer {
public:
void setup() override;
void display();
void update() override;
void set_model(SSD1325Model model) { this->model_ = model; }
void set_reset_pin(GPIOPin *reset_pin) { this->reset_pin_ = reset_pin; }
void set_external_vcc(bool external_vcc) { this->external_vcc_ = external_vcc; }
float get_setup_priority() const override { return setup_priority::PROCESSOR; }
void fill(int color) override;
protected:
virtual void command(uint8_t value) = 0;
virtual void write_display_data() = 0;
void init_reset_();
void draw_absolute_pixel_internal(int x, int y, int color) override;
int get_height_internal() override;
int get_width_internal() override;
size_t get_buffer_length_();
const char *model_str_();
SSD1325Model model_{SSD1325_MODEL_128_64};
GPIOPin *reset_pin_{nullptr};
bool external_vcc_{false};
};
} // namespace ssd1325_base
} // namespace esphome