Line data Source code
1 : #pragma once 2 : 3 : #include "Display.h" 4 : #include "Display_Backend.h" 5 : #include <AP_HAL/I2CDevice.h> 6 : 7 : #define SH1106_COLUMNS 132 // display columns 8 : #define SH1106_ROWS 64 // display rows 9 : #define SH1106_ROWS_PER_PAGE 8 10 : 11 : class Display_SH1106_I2C: public Display_Backend { 12 : 13 : public: 14 : 15 : static Display_Backend *probe(AP_HAL::Device &_dev); 16 : 17 : void hw_update() override; 18 : void set_pixel(uint16_t x, uint16_t y) override; 19 : void clear_pixel(uint16_t x, uint16_t y) override; 20 : void clear_screen() override; 21 : 22 : protected: 23 : 24 0 : Display_SH1106_I2C(AP_HAL::Device &_dev) : 25 0 : dev{_dev} 26 0 : { } 27 0 : ~Display_SH1106_I2C() override {}; 28 : 29 : private: 30 : 31 : bool hw_init() override; 32 : 33 : void _timer(); 34 : 35 : AP_HAL::Device &dev; 36 : uint8_t _displaybuffer[SH1106_COLUMNS * SH1106_ROWS_PER_PAGE]; 37 : bool _need_hw_update; 38 : 39 : };