DGUS LCD Library  1
/github/workspace/dgus_reg.h
Go to the documentation of this file.
1 #pragma once
11 #define member_size(type, member) sizeof(((type *)0)->member)
12 #define SWP16(pt) (pt>>8) | (pt<<8)
13 #define SWP32(i) ((i&0xff000000)>>24)| ((i&0xff0000)>>8) | ((i&0xff00)<<8) | ((i&0xff)<<24)
16 /* Base addresses and hard coded vars */
17 #define PIC_SET_PAGE_BASE ((unsigned long)0x5A010000)
18 #define DGUS_RESET ((unsigned long)0x55AA5AA5)
19 #define DGUS_RESET_HARD ((unsigned long)0x55AA5A5A)
21 /* Command addresses. A REG is 8bit, VAR cmd typically 16 */
25 enum command {
26  DGUS_CMD_REG_W = 0x80,
27  DGUS_CMD_REG_R,
28  DGUS_CMD_VAR_W,
29  DGUS_CMD_VAR_R,
30  DGUS_CMD_CURVE_W
31 };
32 
33 #define DGUS_RETURN uint8_t
38 #define DGUS_OK 0
39 #define DGUS_TIMEOUT 1
40 #define DGUS_ERROR 2
41 #define DGUS_CURVE_BUFFER_FULL 10
42 #define DGUS_CURVE_CHANNEL_NOT_FOUND 11
49 enum dgus_cmd_reg { // word sized registers
50  DeviceId = 0x00,
51  SystemReset = 0x04,
52  OsUpdateCmd = 0x06,
53  NorFlashRWCmd = 0x08,
54  Reserved0C = 0x0C,
55  Ver = 0x0F,
56  Rtc = 0x10,
57  PicPage = 0x14,
58  GuiStatus = 0x15,
59  TpStatus = 0x16,
60  Reserved1A = 0x1A,
61  Vcc = 0x30,
62  Led = 0x31,
63  Adc01 = 0x32,
64  Reserved34 = 0x34,
65  FolderName = 0x7C, // Max 8 chars like "DWIN_SET"
66  SystemConfig = 0x80,
67  LedConfig = 0x82,
68  PicSetPage = 0x84,
69  Pwm0Set = 0x86,
70  Reserved88 = 0x88,
71  Pwm0Out = 0x92,
72  Reserved93 = 0x93,
73  RTCSet = 0x9C,
74  MusicPlaySet = 0xA0,
75  BmpDownloadNotSupported = 0xA2,
76  JpegDownload = 0xA6,
77  NANDFlashRWCmd = 0xAA,
78  TouchControl = 0xB0,
79  SimTouchControl = 0xD4,
80  PointerOverlay = 0xD8,
81  ReservedDC = 0xDC,
82  CrcMemoryCheck = 0xE0,
83  ReservedE2 = 0xE2,
84  MusicStreaming = 0xF0,
85  PaintingInterface = 0xF4,
86  DcsBusData = 0x100,
87  Undefined200 = 0x200,
88  Curve = 0x300,
89  Reserved380 = 0x380,
90 };
91 
97 typedef struct __attribute__((packed)) dgus_control_position {
98  uint16_t x;
99  uint16_t y;
107 typedef struct __attribute__((packed)) dgus_control_size {
108  uint16_t x_top;
109  uint16_t y_top;
110  uint16_t x_bottom;
111  uint16_t y_bottom;
114 /* Control specific structures */
115 
116 
117 typedef struct __attribute__((packed)) var_icon {
118  uint16_t vp;
119  uint16_t x;
120  uint16_t y;
121  uint16_t v_min;
122  uint16_t v_max;
123  uint16_t icon_min;
124  uint16_t icon_max;
125  uint8_t icon_lib;
126  uint8_t mode;
127  uint8_t layer_mode;
128  uint8_t icon_gamma;
129  uint8_t pic_gamma;
130  uint8_t filter_set;
133 typedef struct __attribute__((packed)) animation_icon {
134  uint16_t vp;
135  uint16_t x;
136  uint16_t y;
137  uint16_t reset_icon;
138  uint16_t v_stop;
139  uint16_t v_start;
140  uint16_t icon_stop;
141  uint16_t icon_start;
142  uint16_t icon_end;
143  uint8_t icon_lib;
144  uint8_t mode;
145  uint8_t layer_mode;
146  uint8_t icon_gamma;
147  uint8_t pic_gamma;
148  uint8_t time;
149  uint8_t display_mode;
150  uint8_t filter_set;
153 typedef struct __attribute__((packed)) slider_display {
154  uint16_t vp;
155  uint16_t v_begin;
156  uint16_t v_end;
157  uint16_t x_begin;
158  uint16_t x_end;
159  uint16_t icon_id;
160  uint16_t y;
161  uint8_t x_adj;
162  uint8_t mode;
163  uint8_t icon_lib;
164  uint8_t icon_mode;
165  uint8_t vp_data_mode;
166  uint8_t layer_mode;
167  uint8_t icon_gamma;
168  uint8_t pic_gamma;
169  uint8_t filter_set;
172 typedef struct __attribute__((packed)) artistic_var {
173  uint16_t vp;
174  uint16_t x;
175  uint16_t y;
176  uint16_t icon_0;
177  uint8_t icon_lib;
178  uint8_t icon_mode;
179  uint8_t integer_digits;
180  uint8_t decimal_digits;
181  uint8_t vp_mode;
182  uint8_t alignment;
183  uint8_t layer_mode;
184  uint8_t icon_gamma;
185  uint8_t pic_gamma;
186  uint8_t filter_set;
189 typedef struct __attribute__((packed)) image_animation {
190  uint16_t zero;
191  uint16_t pic_begin;
192  uint16_t pic_end;
193  uint8_t frame_time;
194  uint8_t icl_Lib_id;
195  uint8_t pic_end_exp;
196  uint8_t reserved[16];
200 typedef struct __attribute__((packed)) icon_rotation {
201  uint16_t vp;
202  uint16_t icon_id;
203  uint16_t icon_xc;
204  uint16_t icon_yc;
205  uint16_t xc;
206  uint16_t yc;
207  uint16_t v_begin;
208  uint16_t v_end;
209  uint16_t al_begin;
210  uint16_t al_end;
211  uint8_t vp_mode;
212  uint8_t lib_id;
213  uint8_t mode;
216 typedef struct __attribute__((packed)) bit_var_icon {
217  uint16_t vp;
218  uint16_t vp_aux;
219  uint8_t display_mode;
220  uint8_t move_mode;
221  uint8_t icon_mode;
222  uint8_t icon_lib;
223  uint16_t icon_0_s;
224  uint16_t icon_0_e;
225  uint16_t icon_1_s;
226  uint16_t icon_1_e;
227  uint16_t x;
228  uint16_t y;
229  uint16_t dismove;
230  uint16_t reserved;
233 typedef struct __attribute__((packed)) data_var {
234  uint16_t vp;
235  uint16_t x;
236  uint16_t y;
237  uint16_t colour;
238  uint8_t lib_id;
239  uint8_t font_width;
240  uint8_t alignment;
241  uint8_t integer_digits;
242  uint8_t decimal_digits;
243  uint8_t vp_mode;
244  uint8_t len_unit;
245  uint8_t string_unit[];
249 typedef struct __attribute__((packed)) rtc_display_digital {
250  uint16_t zero;
251  uint16_t x;
252  uint16_t y;
253  uint16_t colour;
254  uint8_t lib_id;
255  uint8_t font_width;
256  uint8_t string_code[]; // max 15
259 typedef struct __attribute__((packed)) rtc_display_analogue {
260  uint16_t one; // literally 0x0001
261  uint16_t x;
262  uint16_t y;
263  uint16_t icon_hour;
264  uint32_t icon_hour_central;
265  uint16_t icon_minute;
266  uint32_t icon_minute_central;
267  uint16_t icon_second;
268  uint32_t icon_second_central;
269  uint8_t lib_id;
270  uint8_t reserved;
273 typedef struct __attribute__((packed)) hex_data {
274  uint16_t vp;
275  uint16_t x;
276  uint16_t y;
277  uint8_t mode;
278  uint8_t lib_id;
279  uint8_t font_x;
280  uint8_t string_code[]; // max 15
283 typedef struct __attribute__((packed)) roll_text {
284  uint16_t vp;
285  uint8_t rolling_mode;
286  uint8_t rolling_distance_px;
287  uint8_t adjust_mode;
288  uint8_t reserved_00;
289  uint16_t colour;
290  uint16_t x_start;
291  uint16_t y_start;
292  uint16_t x_end;
293  uint16_t y_end;
294  uint8_t font_0_id;
295  uint8_t font_1_id;
296  uint8_t font_x_dots;
297  uint8_t font_y_dots;
298  uint8_t encode_mode;
299  uint8_t text_distance_px;
300  uint32_t reserved;
303 typedef struct __attribute__((packed)) data_window {
304  uint16_t vp;
305  uint8_t v_min;
306  uint8_t v_max;
307  uint8_t integer_digits;
308  uint8_t decimal_digits;
309  uint8_t data_num;
310  uint8_t mode;
311  uint16_t x;
312  uint16_t y;
313  uint16_t adjust_step;
314  uint8_t font_x_dots;
315  uint8_t font_y_dots;
316  uint16_t colour;
317  uint8_t font_x_dots1;
318  uint8_t font_y_dots1;
319  uint16_t colour1;
320  uint16_t reserved;
323 typedef struct __attribute__((packed)) basic_graphic {
324  uint16_t vp;
325  uint8_t area[8];
326  uint8_t dashed_line_enable;
327  uint8_t dash_set[4];
328  uint8_t pixel_scale[13];
331 typedef struct __attribute__((packed)) zone_rolling {
332  uint16_t x_start;
333  uint16_t y_start;
334  uint16_t x_end;
335  uint16_t y_end;
336  uint16_t distance_move;
337  uint16_t mode_move;
340 typedef struct __attribute__((packed)) qr_code {
341  uint16_t vp;
342  uint16_t x;
343  uint16_t y;
344  uint16_t unit_pixels;
345  uint8_t fix_mode;
346  uint8_t reserved_0;
349 typedef struct __attribute__((packed)) area_brightness {
350  uint16_t vp;
351  uint16_t x_start;
352  uint16_t y_start;
353  uint16_t x_end;
354  uint16_t y_end;
area_brightness
Definition: dgus_reg.h:355
data_window
Definition: dgus_reg.h:321
hex_data
Definition: dgus_reg.h:281
icon_rotation
Definition: dgus_reg.h:214
roll_text
Definition: dgus_reg.h:301
var_icon
Definition: dgus_reg.h:131
slider_display
Definition: dgus_reg.h:170
rtc_display_digital
Definition: dgus_reg.h:257
data_var
Definition: dgus_reg.h:246
struct __attribute__((packed)) dgus_control_position
The position of the control in x,y from the top left of the display.
Definition: dgus_reg.h:97
bit_var_icon
Definition: dgus_reg.h:231
animation_icon
Definition: dgus_reg.h:151
artistic_var
Definition: dgus_reg.h:187
command
Addresses of the command and variables.
Definition: dgus_reg.h:25
dgus_control_size
Definition: dgus_reg.h:112
qr_code
Definition: dgus_reg.h:347
image_animation
Definition: dgus_reg.h:197
basic_graphic
Definition: dgus_reg.h:329
zone_rolling
Definition: dgus_reg.h:338
dgus_cmd_reg
Layout of the VAR register.
Definition: dgus_reg.h:49
dgus_control_position
Definition: dgus_reg.h:100
rtc_display_analogue
Definition: dgus_reg.h:271