Zephyr Project API  3.4.0
A Scalable Open Source RTOS
display.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2017 Jan Van Winkel <jan.van_winkel@dxplore.eu>
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12#ifndef ZEPHYR_INCLUDE_DRIVERS_DISPLAY_H_
13#define ZEPHYR_INCLUDE_DRIVERS_DISPLAY_H_
14
22#include <zephyr/device.h>
23#include <stddef.h>
24#include <zephyr/types.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
41 PIXEL_FORMAT_MONO01 = BIT(1), /* 0=Black 1=White */
42 PIXEL_FORMAT_MONO10 = BIT(2), /* 1=Black 0=White */
46};
47
55#define DISPLAY_BITS_PER_PIXEL(fmt) \
56 ((((fmt & PIXEL_FORMAT_RGB_888) >> 0) * 24U) + \
57 (((fmt & PIXEL_FORMAT_MONO01) >> 1) * 1U) + \
58 (((fmt & PIXEL_FORMAT_MONO10) >> 2) * 1U) + \
59 (((fmt & PIXEL_FORMAT_ARGB_8888) >> 3) * 32U) + \
60 (((fmt & PIXEL_FORMAT_RGB_565) >> 4) * 16U) + \
61 (((fmt & PIXEL_FORMAT_BGR_565) >> 5) * 16U))
62
86};
87
98};
99
114};
115
126};
127
133typedef int (*display_blanking_on_api)(const struct device *dev);
134
140typedef int (*display_blanking_off_api)(const struct device *dev);
141
147typedef int (*display_write_api)(const struct device *dev, const uint16_t x,
148 const uint16_t y,
149 const struct display_buffer_descriptor *desc,
150 const void *buf);
151
157typedef int (*display_read_api)(const struct device *dev, const uint16_t x,
158 const uint16_t y,
159 const struct display_buffer_descriptor *desc,
160 void *buf);
161
167typedef void *(*display_get_framebuffer_api)(const struct device *dev);
168
174typedef int (*display_set_brightness_api)(const struct device *dev,
175 const uint8_t brightness);
176
182typedef int (*display_set_contrast_api)(const struct device *dev,
183 const uint8_t contrast);
184
190typedef void (*display_get_capabilities_api)(const struct device *dev,
191 struct display_capabilities *
192 capabilities);
193
199typedef int (*display_set_pixel_format_api)(const struct device *dev,
200 const enum display_pixel_format
201 pixel_format);
202
208typedef int (*display_set_orientation_api)(const struct device *dev,
209 const enum display_orientation
210 orientation);
211
227};
228
240static inline int display_write(const struct device *dev, const uint16_t x,
241 const uint16_t y,
242 const struct display_buffer_descriptor *desc,
243 const void *buf)
244{
245 struct display_driver_api *api =
246 (struct display_driver_api *)dev->api;
247
248 return api->write(dev, x, y, desc, buf);
249}
250
262static inline int display_read(const struct device *dev, const uint16_t x,
263 const uint16_t y,
264 const struct display_buffer_descriptor *desc,
265 void *buf)
266{
267 struct display_driver_api *api =
268 (struct display_driver_api *)dev->api;
269
270 return api->read(dev, x, y, desc, buf);
271}
272
282static inline void *display_get_framebuffer(const struct device *dev)
283{
284 struct display_driver_api *api =
285 (struct display_driver_api *)dev->api;
286
287 return api->get_framebuffer(dev);
288}
289
308static inline int display_blanking_on(const struct device *dev)
309{
310 struct display_driver_api *api =
311 (struct display_driver_api *)dev->api;
312
313 return api->blanking_on(dev);
314}
315
327static inline int display_blanking_off(const struct device *dev)
328{
329 struct display_driver_api *api =
330 (struct display_driver_api *)dev->api;
331
332 return api->blanking_off(dev);
333}
334
346static inline int display_set_brightness(const struct device *dev,
347 uint8_t brightness)
348{
349 struct display_driver_api *api =
350 (struct display_driver_api *)dev->api;
351
352 return api->set_brightness(dev, brightness);
353}
354
366static inline int display_set_contrast(const struct device *dev, uint8_t contrast)
367{
368 struct display_driver_api *api =
369 (struct display_driver_api *)dev->api;
370
371 return api->set_contrast(dev, contrast);
372}
373
380static inline void display_get_capabilities(const struct device *dev,
381 struct display_capabilities *
382 capabilities)
383{
384 struct display_driver_api *api =
385 (struct display_driver_api *)dev->api;
386
387 api->get_capabilities(dev, capabilities);
388}
389
398static inline int
400 const enum display_pixel_format pixel_format)
401{
402 struct display_driver_api *api =
403 (struct display_driver_api *)dev->api;
404
405 return api->set_pixel_format(dev, pixel_format);
406}
407
416static inline int display_set_orientation(const struct device *dev,
417 const enum display_orientation
418 orientation)
419{
420 struct display_driver_api *api =
421 (struct display_driver_api *)dev->api;
422
423 return api->set_orientation(dev, orientation);
424}
425
426#ifdef __cplusplus
427}
428#endif
429
434#endif /* ZEPHYR_INCLUDE_DRIVERS_DISPLAY_H_ */
int(* display_set_pixel_format_api)(const struct device *dev, const enum display_pixel_format pixel_format)
Callback API to set pixel format used by the display See display_set_pixel_format() for argument desc...
Definition: display.h:199
int(* display_blanking_off_api)(const struct device *dev)
Callback API to turn off display blanking See display_blanking_off() for argument description.
Definition: display.h:140
int(* display_set_contrast_api)(const struct device *dev, const uint8_t contrast)
Callback API to set display contrast See display_set_contrast() for argument description.
Definition: display.h:182
display_screen_info
Definition: display.h:63
int(* display_set_orientation_api)(const struct device *dev, const enum display_orientation orientation)
Callback API to set orientation used by the display See display_set_orientation() for argument descri...
Definition: display.h:208
static int display_write(const struct device *dev, const uint16_t x, const uint16_t y, const struct display_buffer_descriptor *desc, const void *buf)
Write data to display.
Definition: display.h:240
static int display_read(const struct device *dev, const uint16_t x, const uint16_t y, const struct display_buffer_descriptor *desc, void *buf)
Read data from display.
Definition: display.h:262
static void * display_get_framebuffer(const struct device *dev)
Get pointer to framebuffer for direct access.
Definition: display.h:282
static int display_blanking_off(const struct device *dev)
Turn display blanking off.
Definition: display.h:327
static int display_set_orientation(const struct device *dev, const enum display_orientation orientation)
Set display orientation.
Definition: display.h:416
static void display_get_capabilities(const struct device *dev, struct display_capabilities *capabilities)
Get display capabilities.
Definition: display.h:380
static int display_set_pixel_format(const struct device *dev, const enum display_pixel_format pixel_format)
Set pixel format used by the display.
Definition: display.h:399
static int display_set_contrast(const struct device *dev, uint8_t contrast)
Set the contrast of the display.
Definition: display.h:366
int(* display_set_brightness_api)(const struct device *dev, const uint8_t brightness)
Callback API to set display brightness See display_set_brightness() for argument description.
Definition: display.h:174
int(* display_read_api)(const struct device *dev, const uint16_t x, const uint16_t y, const struct display_buffer_descriptor *desc, void *buf)
Callback API for reading data from the display See display_read() for argument description.
Definition: display.h:157
display_pixel_format
Display pixel formats.
Definition: display.h:39
display_orientation
Enumeration with possible display orientation.
Definition: display.h:93
static int display_blanking_on(const struct device *dev)
Turn display blanking on.
Definition: display.h:308
int(* display_blanking_on_api)(const struct device *dev)
Callback API to turn on display blanking See display_blanking_on() for argument description.
Definition: display.h:133
static int display_set_brightness(const struct device *dev, uint8_t brightness)
Set the brightness of the display.
Definition: display.h:346
void *(* display_get_framebuffer_api)(const struct device *dev)
Callback API to get framebuffer pointer See display_get_framebuffer() for argument description.
Definition: display.h:167
int(* display_write_api)(const struct device *dev, const uint16_t x, const uint16_t y, const struct display_buffer_descriptor *desc, const void *buf)
Callback API for writing data to the display See display_write() for argument description.
Definition: display.h:147
void(* display_get_capabilities_api)(const struct device *dev, struct display_capabilities *capabilities)
Callback API to get display capabilities See display_get_capabilities() for argument description.
Definition: display.h:190
@ SCREEN_INFO_X_ALIGNMENT_WIDTH
Definition: display.h:85
@ SCREEN_INFO_EPD
Definition: display.h:77
@ SCREEN_INFO_DOUBLE_BUFFER
Definition: display.h:81
@ SCREEN_INFO_MONO_VTILED
Definition: display.h:68
@ SCREEN_INFO_MONO_MSB_FIRST
Definition: display.h:73
@ PIXEL_FORMAT_MONO10
Definition: display.h:42
@ PIXEL_FORMAT_ARGB_8888
Definition: display.h:43
@ PIXEL_FORMAT_MONO01
Definition: display.h:41
@ PIXEL_FORMAT_RGB_565
Definition: display.h:44
@ PIXEL_FORMAT_RGB_888
Definition: display.h:40
@ PIXEL_FORMAT_BGR_565
Definition: display.h:45
@ DISPLAY_ORIENTATION_ROTATED_90
Definition: display.h:95
@ DISPLAY_ORIENTATION_ROTATED_180
Definition: display.h:96
@ DISPLAY_ORIENTATION_NORMAL
Definition: display.h:94
@ DISPLAY_ORIENTATION_ROTATED_270
Definition: display.h:97
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition: util_macro.h:44
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition: device.h:380
const void * api
Definition: device.h:386
Structure to describe display data buffer layout.
Definition: display.h:117
uint16_t pitch
Definition: display.h:125
uint16_t height
Definition: display.h:123
uint16_t width
Definition: display.h:121
uint32_t buf_size
Definition: display.h:119
Structure holding display capabilities.
Definition: display.h:101
uint32_t supported_pixel_formats
Definition: display.h:107
uint16_t x_resolution
Definition: display.h:103
enum display_orientation current_orientation
Definition: display.h:113
uint16_t y_resolution
Definition: display.h:105
uint32_t screen_info
Definition: display.h:109
enum display_pixel_format current_pixel_format
Definition: display.h:111
Display driver API API which a display driver should expose.
Definition: display.h:216
display_blanking_off_api blanking_off
Definition: display.h:218
display_set_pixel_format_api set_pixel_format
Definition: display.h:225
display_read_api read
Definition: display.h:220
display_set_orientation_api set_orientation
Definition: display.h:226
display_write_api write
Definition: display.h:219
display_set_brightness_api set_brightness
Definition: display.h:222
display_get_framebuffer_api get_framebuffer
Definition: display.h:221
display_blanking_on_api blanking_on
Definition: display.h:217
display_get_capabilities_api get_capabilities
Definition: display.h:224
display_set_contrast_api set_contrast
Definition: display.h:223