Zephyr API Documentation  3.5.0
A Scalable Open Source RTOS
3.5.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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 <errno.h>
24#include <stddef.h>
25#include <zephyr/types.h>
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
42 PIXEL_FORMAT_MONO01 = BIT(1), /* 0=Black 1=White */
43 PIXEL_FORMAT_MONO10 = BIT(2), /* 1=Black 0=White */
47};
48
56#define DISPLAY_BITS_PER_PIXEL(fmt) \
57 ((((fmt & PIXEL_FORMAT_RGB_888) >> 0) * 24U) + \
58 (((fmt & PIXEL_FORMAT_MONO01) >> 1) * 1U) + \
59 (((fmt & PIXEL_FORMAT_MONO10) >> 2) * 1U) + \
60 (((fmt & PIXEL_FORMAT_ARGB_8888) >> 3) * 32U) + \
61 (((fmt & PIXEL_FORMAT_RGB_565) >> 4) * 16U) + \
62 (((fmt & PIXEL_FORMAT_BGR_565) >> 5) * 16U))
63
87};
88
99};
100
115};
116
127};
128
134typedef int (*display_blanking_on_api)(const struct device *dev);
135
141typedef int (*display_blanking_off_api)(const struct device *dev);
142
148typedef int (*display_write_api)(const struct device *dev, const uint16_t x,
149 const uint16_t y,
150 const struct display_buffer_descriptor *desc,
151 const void *buf);
152
158typedef int (*display_read_api)(const struct device *dev, const uint16_t x,
159 const uint16_t y,
160 const struct display_buffer_descriptor *desc,
161 void *buf);
162
168typedef void *(*display_get_framebuffer_api)(const struct device *dev);
169
175typedef int (*display_set_brightness_api)(const struct device *dev,
176 const uint8_t brightness);
177
183typedef int (*display_set_contrast_api)(const struct device *dev,
184 const uint8_t contrast);
185
191typedef void (*display_get_capabilities_api)(const struct device *dev,
192 struct display_capabilities *
193 capabilities);
194
200typedef int (*display_set_pixel_format_api)(const struct device *dev,
201 const enum display_pixel_format
202 pixel_format);
203
209typedef int (*display_set_orientation_api)(const struct device *dev,
210 const enum display_orientation
211 orientation);
212
228};
229
241static inline int display_write(const struct device *dev, const uint16_t x,
242 const uint16_t y,
243 const struct display_buffer_descriptor *desc,
244 const void *buf)
245{
246 struct display_driver_api *api =
247 (struct display_driver_api *)dev->api;
248
249 return api->write(dev, x, y, desc, buf);
250}
251
263static inline int display_read(const struct device *dev, const uint16_t x,
264 const uint16_t y,
265 const struct display_buffer_descriptor *desc,
266 void *buf)
267{
268 struct display_driver_api *api =
269 (struct display_driver_api *)dev->api;
270
271 return api->read(dev, x, y, desc, buf);
272}
273
283static inline void *display_get_framebuffer(const struct device *dev)
284{
285 struct display_driver_api *api =
286 (struct display_driver_api *)dev->api;
287
288 return api->get_framebuffer(dev);
289}
290
309static inline int display_blanking_on(const struct device *dev)
310{
311 struct display_driver_api *api =
312 (struct display_driver_api *)dev->api;
313
314 return api->blanking_on(dev);
315}
316
328static inline int display_blanking_off(const struct device *dev)
329{
330 struct display_driver_api *api =
331 (struct display_driver_api *)dev->api;
332
333 return api->blanking_off(dev);
334}
335
347static inline int display_set_brightness(const struct device *dev,
348 uint8_t brightness)
349{
350 struct display_driver_api *api =
351 (struct display_driver_api *)dev->api;
352
353 return api->set_brightness(dev, brightness);
354}
355
367static inline int display_set_contrast(const struct device *dev, uint8_t contrast)
368{
369 struct display_driver_api *api =
370 (struct display_driver_api *)dev->api;
371
372 return api->set_contrast(dev, contrast);
373}
374
381static inline void display_get_capabilities(const struct device *dev,
382 struct display_capabilities *
383 capabilities)
384{
385 struct display_driver_api *api =
386 (struct display_driver_api *)dev->api;
387
388 api->get_capabilities(dev, capabilities);
389}
390
399static inline int
401 const enum display_pixel_format pixel_format)
402{
403 struct display_driver_api *api =
404 (struct display_driver_api *)dev->api;
405
406 return api->set_pixel_format(dev, pixel_format);
407}
408
417static inline int display_set_orientation(const struct device *dev,
418 const enum display_orientation
419 orientation)
420{
421 struct display_driver_api *api =
422 (struct display_driver_api *)dev->api;
423
424 if (api->set_orientation == NULL) {
425 return -ENOSYS;
426 }
427
428 return api->set_orientation(dev, orientation);
429}
430
431#ifdef __cplusplus
432}
433#endif
434
439#endif /* ZEPHYR_INCLUDE_DRIVERS_DISPLAY_H_ */
System error numbers.
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:200
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:141
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:183
display_screen_info
Definition: display.h:64
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:209
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:241
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:263
static void * display_get_framebuffer(const struct device *dev)
Get pointer to framebuffer for direct access.
Definition: display.h:283
static int display_blanking_off(const struct device *dev)
Turn display blanking off.
Definition: display.h:328
static int display_set_orientation(const struct device *dev, const enum display_orientation orientation)
Set display orientation.
Definition: display.h:417
static void display_get_capabilities(const struct device *dev, struct display_capabilities *capabilities)
Get display capabilities.
Definition: display.h:381
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:400
static int display_set_contrast(const struct device *dev, uint8_t contrast)
Set the contrast of the display.
Definition: display.h:367
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:175
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:158
display_pixel_format
Display pixel formats.
Definition: display.h:40
display_orientation
Enumeration with possible display orientation.
Definition: display.h:94
static int display_blanking_on(const struct device *dev)
Turn display blanking on.
Definition: display.h:309
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:134
static int display_set_brightness(const struct device *dev, uint8_t brightness)
Set the brightness of the display.
Definition: display.h:347
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:168
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:148
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:191
@ SCREEN_INFO_X_ALIGNMENT_WIDTH
Screen has x alignment constrained to width.
Definition: display.h:86
@ SCREEN_INFO_EPD
Electrophoretic Display.
Definition: display.h:78
@ SCREEN_INFO_DOUBLE_BUFFER
Screen has two alternating ram buffers.
Definition: display.h:82
@ SCREEN_INFO_MONO_VTILED
If selected, one octet represents 8 pixels ordered vertically, otherwise ordered horizontally.
Definition: display.h:69
@ SCREEN_INFO_MONO_MSB_FIRST
If selected, the MSB represents the first pixel, otherwise MSB represents the last pixel.
Definition: display.h:74
@ PIXEL_FORMAT_MONO10
Definition: display.h:43
@ PIXEL_FORMAT_ARGB_8888
Definition: display.h:44
@ PIXEL_FORMAT_MONO01
Definition: display.h:42
@ PIXEL_FORMAT_RGB_565
Definition: display.h:45
@ PIXEL_FORMAT_RGB_888
Definition: display.h:41
@ PIXEL_FORMAT_BGR_565
Definition: display.h:46
@ DISPLAY_ORIENTATION_ROTATED_90
Definition: display.h:96
@ DISPLAY_ORIENTATION_ROTATED_180
Definition: display.h:97
@ DISPLAY_ORIENTATION_NORMAL
Definition: display.h:95
@ DISPLAY_ORIENTATION_ROTATED_270
Definition: display.h:98
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition: util_macro.h:44
#define ENOSYS
Function not implemented.
Definition: errno.h:83
__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:381
const void * api
Address of the API structure exposed by the device instance.
Definition: device.h:387
Structure to describe display data buffer layout.
Definition: display.h:118
uint16_t pitch
Number of pixels between consecutive rows in the data buffer.
Definition: display.h:126
uint16_t height
Data buffer column height in pixels.
Definition: display.h:124
uint16_t width
Data buffer row width in pixels.
Definition: display.h:122
uint32_t buf_size
Data buffer size in bytes.
Definition: display.h:120
Structure holding display capabilities.
Definition: display.h:102
uint32_t supported_pixel_formats
Bitwise or of pixel formats supported by the display.
Definition: display.h:108
uint16_t x_resolution
Display resolution in the X direction.
Definition: display.h:104
enum display_orientation current_orientation
Current display orientation.
Definition: display.h:114
uint16_t y_resolution
Display resolution in the Y direction.
Definition: display.h:106
uint32_t screen_info
Information about display panel.
Definition: display.h:110
enum display_pixel_format current_pixel_format
Currently active pixel format for the display.
Definition: display.h:112
Display driver API API which a display driver should expose.
Definition: display.h:217
display_blanking_off_api blanking_off
Definition: display.h:219
display_set_pixel_format_api set_pixel_format
Definition: display.h:226
display_read_api read
Definition: display.h:221
display_set_orientation_api set_orientation
Definition: display.h:227
display_write_api write
Definition: display.h:220
display_set_brightness_api set_brightness
Definition: display.h:223
display_get_framebuffer_api get_framebuffer
Definition: display.h:222
display_blanking_on_api blanking_on
Definition: display.h:218
display_get_capabilities_api get_capabilities
Definition: display.h:225
display_set_contrast_api set_contrast
Definition: display.h:224