mirror of
https://github.com/jam422470459/EPD-nRF52-hema213.git
synced 2025-12-06 16:42:49 +08:00
simplify epd driver api
This commit is contained in:
@@ -19,12 +19,16 @@
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/**< EPD driver IDs. */
|
||||
enum EPD_DRIVER_IDS
|
||||
#define BIT(n) (1UL << (n))
|
||||
|
||||
// Display resolution
|
||||
typedef enum
|
||||
{
|
||||
EPD_DRIVER_4IN2 = 1,
|
||||
EPD_DRIVER_4IN2B_V2 = 3,
|
||||
};
|
||||
EPD_RES_400x300,
|
||||
EPD_RES_320x300,
|
||||
EPD_RES_320x240,
|
||||
EPD_RES_200x300,
|
||||
} epd_res_t;
|
||||
|
||||
/**@brief EPD driver structure.
|
||||
*
|
||||
@@ -32,14 +36,8 @@ enum EPD_DRIVER_IDS
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t id; /**< driver ID. */
|
||||
uint16_t width;
|
||||
uint16_t height;
|
||||
void (*init)(void); /**< Initialize the e-Paper register */
|
||||
void (*init)(epd_res_t res, bool bwr); /**< Initialize the e-Paper register */
|
||||
void (*clear)(void); /**< Clear screen */
|
||||
void (*send_command)(uint8_t Reg); /**< send command */
|
||||
void (*send_byte)(uint8_t Reg); /**< send byte */
|
||||
void (*send_data)(uint8_t *Data, uint8_t Len); /**< send data */
|
||||
void (*write_image)(uint8_t *black, uint8_t *color, uint16_t x, uint16_t y, uint16_t w, uint16_t h); /**< write image */
|
||||
void (*refresh)(void); /**< Sends the image buffer in RAM to e-Paper and displays */
|
||||
void (*sleep)(void); /**< Enter sleep mode */
|
||||
@@ -47,6 +45,21 @@ typedef struct
|
||||
void (*force_temp)(int8_t value); /**< Force temperature (will trigger OTP LUT switch) */
|
||||
} epd_driver_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
EPD_4IN2 = 1,
|
||||
EPD_4IN2_V2 = 2,
|
||||
EPD_4IN2B_V2 = 3,
|
||||
} epd_model_id_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
epd_model_id_t id;
|
||||
epd_driver_t *drv;
|
||||
epd_res_t res;
|
||||
bool bwr;
|
||||
} epd_model_t;
|
||||
|
||||
extern uint32_t EPD_MOSI_PIN;
|
||||
extern uint32_t EPD_SCLK_PIN;
|
||||
extern uint32_t EPD_CS_PIN;
|
||||
@@ -57,6 +70,11 @@ extern uint32_t EPD_BS_PIN;
|
||||
extern uint32_t EPD_EN_PIN;
|
||||
extern uint32_t EPD_LED_PIN;
|
||||
|
||||
extern uint16_t EPD_WIDTH;
|
||||
extern uint16_t EPD_HEIGHT;
|
||||
|
||||
extern bool EPD_BWR_MODE;
|
||||
|
||||
#define LOW (0x0)
|
||||
#define HIGH (0x1)
|
||||
|
||||
@@ -72,21 +90,19 @@ uint32_t digitalRead(uint32_t pin);
|
||||
void delay(uint32_t ms);
|
||||
|
||||
// GPIO
|
||||
void DEV_Module_Init(void);
|
||||
void DEV_Module_Exit(void);
|
||||
void EPD_GPIO_Init(void);
|
||||
void EPD_GPIO_Uninit(void);
|
||||
|
||||
// Software SPI (read / write)
|
||||
void DEV_SPI_WriteByte_SW(uint8_t data);
|
||||
uint8_t DEV_SPI_ReadByte_SW(void);
|
||||
void EPD_SPI_WriteByte_SW(uint8_t data);
|
||||
uint8_t EPD_SPI_ReadByte_SW(void);
|
||||
void EPD_WriteCommand_SW(uint8_t Reg);
|
||||
void EPD_WriteByte_SW(uint8_t Data);
|
||||
uint8_t EPD_ReadByte_SW(void);
|
||||
|
||||
// Hardware SPI (write only)
|
||||
void DEV_SPI_Init(void);
|
||||
void DEV_SPI_Exit(void);
|
||||
void DEV_SPI_WriteByte(uint8_t value);
|
||||
void DEV_SPI_WriteBytes(uint8_t *value, uint8_t len);
|
||||
void EPD_SPI_WriteByte(uint8_t value);
|
||||
void EPD_SPI_WriteBytes(uint8_t *value, uint8_t len);
|
||||
void EPD_WriteCommand(uint8_t Reg);
|
||||
void EPD_WriteByte(uint8_t Data);
|
||||
void EPD_WriteData(uint8_t *Data, uint8_t Len);
|
||||
@@ -99,8 +115,6 @@ void EPD_LED_ON(void);
|
||||
void EPD_LED_OFF(void);
|
||||
void EPD_LED_TOGGLE(void);
|
||||
|
||||
epd_driver_t *epd_driver_get(void);
|
||||
epd_driver_t *epd_driver_by_id(uint8_t id);
|
||||
bool epd_driver_set(uint8_t id);
|
||||
epd_driver_t *epd_model_init(epd_model_id_t id);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user