| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- // Copyright 2015-2017 Espressif Systems (Shanghai) PTE LTD
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- #ifndef _IOT_E_PAPER_29_H_
- #define _IOT_E_PAPER_29_H_
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #include "driver/spi_master.h"
- // Display orientation
- typedef enum {
- E_PAPER_ROTATE_0,
- E_PAPER_ROTATE_90,
- E_PAPER_ROTATE_180,
- E_PAPER_ROTATE_270,
- } epaper_rotate_t;
- typedef struct
- {
- uint16_t width;
- uint16_t height;
- const uint8_t *font_table;
- } epaper_font_t;
- #define COLORED 0
- #define UNCOLORED 1
- // Display resolution
- #define EPD_WIDTH 128
- #define EPD_HEIGHT 296
- // Display CONTROLLER COMMANDS
- #define E_PAPER_DRIVER_OUTPUT_CONTROL 0x01
- #define E_PAPER_BOOSTER_SOFT_START_CONTROL 0x0C
- #define E_PAPER_GATE_SCAN_START_POSITION 0x0F
- #define E_PAPER_DEEP_SLEEP_MODE 0x10
- #define E_PAPER_DATA_ENTRY_MODE_SETTING 0x11
- #define E_PAPER_SW_RESET 0x12
- #define E_PAPER_TEMPERATURE_SENSOR_CONTROL 0x1A
- #define E_PAPER_MASTER_ACTIVATION 0x20
- #define E_PAPER_DISPLAY_UPDATE_CONTROL_1 0x21
- #define E_PAPER_DISPLAY_UPDATE_CONTROL_2 0x22
- #define E_PAPER_WRITE_RAM 0x24
- #define E_PAPER_WRITE_VCOM_REGISTER 0x2C
- #define E_PAPER_WRITE_LUT_REGISTER 0x32
- #define E_PAPER_SET_DUMMY_LINE_PERIOD 0x3A
- #define E_PAPER_SET_GATE_TIME 0x3B
- #define E_PAPER_BORDER_WAVEFORM_CONTROL 0x3C
- #define E_PAPER_SET_RAM_X_ADDRESS_START_END_POSITION 0x44
- #define E_PAPER_SET_RAM_Y_ADDRESS_START_END_POSITION 0x45
- #define E_PAPER_SET_RAM_X_ADDRESS_COUNTER 0x4E
- #define E_PAPER_SET_RAM_Y_ADDRESS_COUNTER 0x4F
- #define E_PAPER_TERMINATE_FRAME_READ_WRITE 0xFF
- /* Paint properties */
- typedef struct {
- unsigned char* image;
- epaper_rotate_t rotate;
- int width;
- int height;
- } epaper_paint_t;
- /* EPD properties */
- typedef struct {
- int reset_pin;
- int dc_pin;
- int cs_pin;
- int busy_pin;
- int mosi_pin;
- int miso_pin;
- int sck_pin;
- uint8_t rst_active_level;
- uint8_t busy_active_level;
- uint8_t dc_lev_data;
- uint8_t dc_lev_cmd;
- int clk_freq_hz;
- spi_host_device_t spi_host;
- int width;
- int height;
- bool color_inv;
- } epaper_conf_t;
- typedef void* epaper_handle_t; /*handle of epaper*/
- /**
- * @brief Create and init epaper and return a epaper handle
- *
- * @param bus handle of spi device
- * @param epconf configure struct for epaper device
- *
- * @return
- * - handle of epaper
- */
- epaper_handle_t iot_epaper_create(spi_device_handle_t bus, epaper_conf_t * epconf);
- /**
- * @brief delete epaper handle_t
- *
- * @param dev object handle of epaper
- * @param del_bus whether to delete spi bus
- *
- * @return
- * - ESP_OK Success
- * - ESP_FAIL Fail
- */
- esp_err_t iot_epaper_delete(epaper_handle_t dev, bool del_bus);
- /**
- * @brief clear display frame buffer
- *
- * @param dev object handle of epaper
- * @param colored to set display color
- */
- void iot_epaper_clean_paint(epaper_handle_t dev, int colored);
- /**
- * @brief get paint width
- *
- * @param dev object handle of epaper
- *
- * @return
- * - paint width
- */
- int iot_epaper_get_width(epaper_handle_t dev);
- /**
- * @brief set paint width
- * @param dev object handle of epaper
- * @param width paint width
- */
- void iot_epaper_set_width(epaper_handle_t dev, int width);
- /**
- * @brief get paint height
- * @param dev object handle of epaper
- * @return
- * - paint height
- */
- int iot_epaper_get_height(epaper_handle_t dev);
- /**
- * @brief set paint height
- * @param dev object handle of epaper
- * @param paint height
- */
- void iot_epaper_set_height(epaper_handle_t dev, int height);
- /**
- * @brief get paint rotate
- * @param dev object handle of epaper
- * @return
- * - current rotation
- */
- int iot_epaper_get_rotate(epaper_handle_t dev);
- /**
- * @brief set paint rotate
- * @param dev object handle of epaper
- * @param rotation
- */
- void iot_epaper_set_rotate(epaper_handle_t dev, int rotate);
- /**
- * @brief get display data
- * @param dev object handle of epaper
- * @return
- * - Pointer to display data
- */
- unsigned char* iot_epaper_get_image(epaper_handle_t dev);
- /**
- * @brief draw string start on point(x,y) and save on display data array,
- * screen will display when call iot_epaper_display_frame function.
- * @param dev object handle of epaper
- * @param x poing (x)
- * @param y poing (y)
- * @param text display string
- * @param font Font style
- * @param colored display color
- */
- void iot_epaper_draw_string(epaper_handle_t dev, int x, int y, const char* text,
- epaper_font_t* font, int colored);
- /**
- * @brief draw pixel and save on display data array,
- * screen will display when call iot_epaper_display_frame function.
- * @param dev object handle of epaper
- * @param x point (x)
- * @param y point (y)
- * @param colored display color
- */
- void iot_epaper_draw_pixel(epaper_handle_t dev, int x, int y, int colored);
- /**
- * @brief draw char and save on display data array,
- * screen will display when call iot_epaper_display_frame function.
- * @param dev object handle of epaper
- * @param x poing (x)
- * @param y poing (y)
- * @param ascii_char display char
- * @param font font style
- * @param colored display color
- */
- void iot_epaper_draw_char(epaper_handle_t dev, int x, int y, char ascii_char,
- epaper_font_t* font, int colored);
- /**
- * @brief draw line start on point(x0,y0) end on point(x1,y1) and save on display data array,
- * screen will display when call iot_epaper_display_frame function.
- *
- * @param dev object handle of epaper
- * @param x0 poing (x0)
- * @param y0 poing (y0)
- * @param x1 poing (x1)
- * @param y1 poing (y1)
- * @param colored display color
- */
- void iot_epaper_draw_line(epaper_handle_t dev, int x0, int y0, int x1, int y1,
- int colored);
- /**
- * @brief draw horizontal line start on point(x,y) and save on display data array,
- * screen will display when call iot_epaper_display_frame function.
- * @param dev object handle of epaper
- * @param x poing (x)
- * @param y poing (y)
- * @param width line width
- * @param colored display color
- */
- void iot_epaper_draw_horizontal_line(epaper_handle_t dev, int x, int y,
- int width, int colored);
- /**
- * @brief draw vertical line start on point(x,y) and save on display data array,
- * screen will display when call iot_epaper_display_frame function.
- *
- * @param dev object handle of epaper
- * @param x poing (x)
- * @param y poing (y)
- * @param line height
- * @param display color
- */
- void iot_epaper_draw_vertical_line(epaper_handle_t dev, int x, int y,
- int height, int colored);
- /**
- * @brief draw rectangle point(x0,y0) (x1,y1) and save on display data array,
- * screen will display when call iot_epaper_display_frame function.
- *
- * @param dev object handle of epaper
- * @param x0 point(x0,y0)
- * @param y0 point(x0,y0)
- * @param x1 point(x1,y1)
- * @param y1 point(x1,y1)
- * @param colored display color
- */
- void iot_epaper_draw_rectangle(epaper_handle_t dev, int x0, int y0, int x1,
- int y1, int colored);
- /**
- * @brief draw fill rectangle point(x0,y0) (x1,y1) and save on display data array,
- * screen will display when call iot_epaper_display_frame function.
- *
- * @param dev object handle of epaper
- * @param x0 point(x0,y0)
- * @param y0 point(x0,y0)
- * @param x1 point(x1,y1)
- * @param y1 point(x1,y1)
- * @param colored display color
- */
- void ior_epaper_draw_filled_rectangle(epaper_handle_t dev, int x0, int y0,
- int x1, int y1, int colored);
- /**
- * @brief draw a circle at point(x,y) and save on display data array,
- * screen will display when call iot_epaper_display_frame function.
- *
- * @param dev object handle of epaper
- * @param x point(x,y)
- * @param y point(x,y)
- * @param colored display color
- */
- void iot_epaper_draw_circle(epaper_handle_t dev, int x, int y, int radius,
- int colored);
- /**
- * @brief draw a fill circle at point(x,y) and save on display data array,
- * screen will display when call iot_epaper_display_frame function.
- *
- * @param dev object handle of epaper
- * @param x point(x,y)
- * @param y point(x,y)
- * @param radius radius of the circle
- * @param colored display color
- */
- void iot_epaper_draw_filled_circle(epaper_handle_t dev, int x, int y,
- int radius, int colored);
- /**
- * @brief wait until idle
- * @param dev object handle of epaper
- */
- void iot_epaper_wait_idle(epaper_handle_t dev);
- /**
- * @brief reset device
- *
- * @param dev object handle of epaper
- */
- void iot_epaper_reset(epaper_handle_t dev);
- /**
- * @brief dispaly frame, refresh screen
- *
- * @param dev object handle of epaper
- */
- void iot_epaper_display_frame(epaper_handle_t dev, const unsigned char* frame_buffer);
- /**
- * @brief After this command is transmitted, the chip would enter the deep-sleep mode to save power.
- * The deep sleep mode would return to standby by hardware reset. The only one parameter is a
- * check code, the command would be executed if check code = 0xA5.
- * You can use iot_epaper_reset() to awaken and EPD_Init() to initialize
- *
- * @param dev object handle of epaper
- */
- void iot_epaper_sleep(epaper_handle_t dev);
- #ifdef __cplusplus
- }
- #endif
- #endif //_IOT_E_PAPER_29_H_
|