Commit | Line | Data |
---|---|---|
5b8a7abb | 1 | /* |
2 | * ST7565.h | |
3 | * | |
4 | * Created on: 21-06-2013 | |
5 | * Author: Wulfnor | |
6 | */ | |
7 | ||
8 | #ifndef ST7565_H_ | |
9 | #define ST7565_H_ | |
10 | #include "LcdBase.h" | |
11 | #include "libs/Kernel.h" | |
12 | #include "mbed.h" | |
13 | #include "libs/Pin.h" | |
14 | #include "Panel.h" | |
15 | ||
16 | using namespace std; | |
17 | #include <vector> | |
18 | #include <string> | |
19 | #include <cstdio> | |
20 | #include <cstdarg> | |
21 | ||
22 | //definitions for lcd | |
23 | #define LCDWIDTH 128 | |
24 | #define LCDHEIGHT 64 | |
25 | #define LCDPAGES (LCDHEIGHT+7)/8 | |
26 | #define FB_SIZE LCDWIDTH*LCDPAGES | |
27 | #define FONT_SIZE_X 6 | |
28 | #define FONT_SIZE_Y 8 | |
5b8a7abb | 29 | |
3aeb7c2a JM |
30 | #define spi_channel_checksum CHECKSUM("spi_channel") |
31 | #define spi_cs_pin_checksum CHECKSUM("spi_cs_pin") | |
5b8a7abb | 32 | #define spi_frequency_checksum CHECKSUM("spi_frequency") |
3aeb7c2a JM |
33 | #define encoder_a_pin_checksum CHECKSUM("encoder_a_pin") |
34 | #define encoder_b_pin_checksum CHECKSUM("encoder_b_pin") | |
5b8a7abb | 35 | #define click_button_pin_checksum CHECKSUM("click_button_pin") |
36 | #define up_button_pin_checksum CHECKSUM("up_button_pin") | |
37 | #define down_button_pin_checksum CHECKSUM("down_button_pin") | |
3aeb7c2a | 38 | #define contrast_checksum CHECKSUM("contrast") |
02d432dc | 39 | #define reverse_checksum CHECKSUM("reverse") |
3aeb7c2a JM |
40 | #define rst_pin_checksum CHECKSUM("rst_pin") |
41 | #define a0_pin_checksum CHECKSUM("a0_pin") | |
42 | ||
5b8a7abb | 43 | class Panel; |
44 | ||
45 | class ST7565: public LcdBase { | |
46 | public: | |
47 | ST7565(); | |
48 | virtual ~ST7565(); | |
49 | void home(); | |
50 | void clear(); | |
51 | void display(); | |
52 | void setCursor(uint8_t col, uint8_t row); | |
53 | void init(); | |
54 | void write_char(char value); | |
55 | void write(const char* line, int len); | |
56 | ||
57 | void on_refresh(bool now=false); | |
58 | //encoder which dosent exist :/ | |
59 | uint8_t readButtons(); | |
60 | int readEncoderDelta(); | |
61 | int getEncoderResolution() { return 2; } | |
62 | uint16_t get_screen_lines() { return 8; } | |
63 | bool hasGraphics() { return true; } | |
64 | ||
65 | //added ST7565 commands | |
66 | void send_commands(const unsigned char* buf, size_t size); | |
67 | void send_data(const unsigned char* buf, size_t size); | |
68 | // set column and page number | |
69 | void set_xy(int x, int y); | |
70 | //send pic to whole screen | |
71 | void send_pic(const unsigned char* data); | |
72 | //drawing char | |
73 | int drawChar(int x, int y, unsigned char c, int color); | |
74 | // blit a glyph of w pixels wide and h pixels high to x, y. offset pixel position in glyph by x_offset, y_offset. | |
75 | // span is the width in bytes of the src bitmap | |
76 | // The glyph bytes will be 8 bits of X pixels, msbit->lsbit from top left to bottom right | |
77 | void bltGlyph(int x, int y, int w, int h, const uint8_t *glyph, int span= 0, int x_offset=0, int y_offset=0); | |
78 | void renderGlyph(int x, int y, const uint8_t *g, int pixelWidth, int pixelHeight); | |
79 | void pixel(int x, int y, int colour); | |
80 | ||
81 | private: | |
82 | //buffer | |
83 | unsigned char *framebuffer; | |
84 | mbed::SPI* spi; | |
85 | Pin cs; | |
86 | Pin rst; | |
87 | Pin a0; | |
88 | Pin click_pin; | |
89 | Pin up_pin; | |
90 | Pin down_pin; | |
3aeb7c2a JM |
91 | Pin encoder_a_pin; |
92 | Pin encoder_b_pin; | |
93 | ||
5b8a7abb | 94 | // text cursor position |
95 | uint8_t tx, ty; | |
3aeb7c2a | 96 | uint8_t contrast; |
02d432dc | 97 | bool reversed; |
5b8a7abb | 98 | }; |
99 | ||
100 | #endif /* ST7565_H_ */ |