summaryrefslogtreecommitdiff
path: root/firmware/rf test/Core/Inc/sharpmem.h
blob: 79f91aac72a7514199fe720b8d74c2276c38d8cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
#include "stm32wbxx_hal.h"

#ifndef _STM32_SHARPMEM
#define _STM32_SHARPMEM

#define SHARPMEM_BIT_WRITECMD (0x01) // 0x80 in LSB format
#define SHARPMEM_BIT_VCOM (0x02)     // 0x40 in LSB format
#define SHARPMEM_BIT_CLEAR (0x04)    // 0x20 in LSB format

typedef struct 
{
    uint16_t width; 
    uint16_t height;
    uint16_t cs_pin;
    GPIO_TypeDef *cs_pin_bank;
    uint16_t lcdmode_pin;
    GPIO_TypeDef *lcdmode_pin_bank;
    SPI_HandleTypeDef *spidev;

    uint8_t *_buffer;
    uint8_t _sharpmem_vcom;
} SharpMemDisplay_t;

void SHARPMEM_draw_pixel(SharpMemDisplay_t *display, uint16_t x, uint16_t y, bool black);
void SHARPMEM_draw_line(SharpMemDisplay_t *display, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, bool black, uint8_t thickness);
void SHARPMEM_draw_circle(SharpMemDisplay_t *display, uint16_t x, uint16_t y, uint8_t r, bool filled);
void SHARPMEM_write(SharpMemDisplay_t *display,  char *text, uint8_t font_index, uint16_t x, uint16_t y, bool inverse, bool force_bg);
void SHARPMEM_draw_rect(SharpMemDisplay_t *display, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, bool filled);
uint8_t SHARPMEM_get_pixel(SharpMemDisplay_t *display, uint16_t x, uint16_t y);
void SHARPMEM_clear_display(SharpMemDisplay_t *display);
void SHARPMEM_refresh_display(SharpMemDisplay_t *display);
void SHARPMEM_clear_display_buffer(SharpMemDisplay_t *display);
uint8_t *SHARPMEM_get_buffer(SharpMemDisplay_t *display);

void SHARPMEM_TOGGLEVCOM(SharpMemDisplay_t *display);


#endif