Zephyr API Documentation 4.3.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
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
13#ifndef ZEPHYR_INCLUDE_DRIVERS_DISPLAY_H_
14#define ZEPHYR_INCLUDE_DRIVERS_DISPLAY_H_
15
29
30#include <zephyr/device.h>
31#include <errno.h>
32#include <stddef.h>
33#include <zephyr/types.h>
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
153
162#define DISPLAY_BITS_PER_PIXEL(fmt) \
163 ((((fmt & PIXEL_FORMAT_RGB_888) >> 0) * 24U) + \
164 (((fmt & PIXEL_FORMAT_MONO01) >> 1) * 1U) + \
165 (((fmt & PIXEL_FORMAT_MONO10) >> 2) * 1U) + \
166 (((fmt & PIXEL_FORMAT_ARGB_8888) >> 3) * 32U) + \
167 (((fmt & PIXEL_FORMAT_RGB_565) >> 4) * 16U) + \
168 (((fmt & PIXEL_FORMAT_RGB_565X) >> 5) * 16U) + \
169 (((fmt & PIXEL_FORMAT_L_8) >> 6) * 8U) + \
170 (((fmt & PIXEL_FORMAT_AL_88) >> 7) * 16U))
171
199
209
225
239
245typedef int (*display_blanking_on_api)(const struct device *dev);
246
252typedef int (*display_blanking_off_api)(const struct device *dev);
253
259typedef int (*display_write_api)(const struct device *dev, const uint16_t x,
260 const uint16_t y,
261 const struct display_buffer_descriptor *desc,
262 const void *buf);
263
269typedef int (*display_read_api)(const struct device *dev, const uint16_t x,
270 const uint16_t y,
271 const struct display_buffer_descriptor *desc,
272 void *buf);
273
279typedef int (*display_clear_api)(const struct device *dev);
280
286typedef void *(*display_get_framebuffer_api)(const struct device *dev);
287
293typedef int (*display_set_brightness_api)(const struct device *dev,
294 const uint8_t brightness);
295
301typedef int (*display_set_contrast_api)(const struct device *dev,
302 const uint8_t contrast);
303
309typedef void (*display_get_capabilities_api)(const struct device *dev,
310 struct display_capabilities *
311 capabilities);
312
318typedef int (*display_set_pixel_format_api)(const struct device *dev,
319 const enum display_pixel_format
320 pixel_format);
321
327typedef int (*display_set_orientation_api)(const struct device *dev,
328 const enum display_orientation
329 orientation);
330
348
360static inline int display_write(const struct device *dev, const uint16_t x,
361 const uint16_t y,
362 const struct display_buffer_descriptor *desc,
363 const void *buf)
364{
365 struct display_driver_api *api =
366 (struct display_driver_api *)dev->api;
367
368 return api->write(dev, x, y, desc, buf);
369}
370
383static inline int display_read(const struct device *dev, const uint16_t x,
384 const uint16_t y,
385 const struct display_buffer_descriptor *desc,
386 void *buf)
387{
388 struct display_driver_api *api =
389 (struct display_driver_api *)dev->api;
390
391 if (api->read == NULL) {
392 return -ENOSYS;
393 }
394
395 return api->read(dev, x, y, desc, buf);
396}
397
406static inline int display_clear(const struct device *dev)
407{
408 struct display_driver_api *api =
409 (struct display_driver_api *)dev->api;
410
411 if (api->clear == NULL) {
412 return -ENOSYS;
413 }
414
415 return api->clear(dev);
416}
417
427static inline void *display_get_framebuffer(const struct device *dev)
428{
429 struct display_driver_api *api =
430 (struct display_driver_api *)dev->api;
431
432 if (api->get_framebuffer == NULL) {
433 return NULL;
434 }
435
436 return api->get_framebuffer(dev);
437}
438
458static inline int display_blanking_on(const struct device *dev)
459{
460 struct display_driver_api *api =
461 (struct display_driver_api *)dev->api;
462
463 if (api->blanking_on == NULL) {
464 return -ENOSYS;
465 }
466
467 return api->blanking_on(dev);
468}
469
482static inline int display_blanking_off(const struct device *dev)
483{
484 struct display_driver_api *api =
485 (struct display_driver_api *)dev->api;
486
487 if (api->blanking_off == NULL) {
488 return -ENOSYS;
489 }
490
491 return api->blanking_off(dev);
492}
493
506static inline int display_set_brightness(const struct device *dev,
507 uint8_t brightness)
508{
509 struct display_driver_api *api =
510 (struct display_driver_api *)dev->api;
511
512 if (api->set_brightness == NULL) {
513 return -ENOSYS;
514 }
515
516 return api->set_brightness(dev, brightness);
517}
518
531static inline int display_set_contrast(const struct device *dev, uint8_t contrast)
532{
533 struct display_driver_api *api =
534 (struct display_driver_api *)dev->api;
535
536 if (api->set_contrast == NULL) {
537 return -ENOSYS;
538 }
539
540 return api->set_contrast(dev, contrast);
541}
542
549static inline void display_get_capabilities(const struct device *dev,
550 struct display_capabilities *
551 capabilities)
552{
553 struct display_driver_api *api =
554 (struct display_driver_api *)dev->api;
555
556 api->get_capabilities(dev, capabilities);
557}
558
568static inline int
570 const enum display_pixel_format pixel_format)
571{
572 struct display_driver_api *api =
573 (struct display_driver_api *)dev->api;
574
575 if (api->set_pixel_format == NULL) {
576 return -ENOSYS;
577 }
578
579 return api->set_pixel_format(dev, pixel_format);
580}
581
591static inline int display_set_orientation(const struct device *dev,
592 const enum display_orientation
593 orientation)
594{
595 struct display_driver_api *api =
596 (struct display_driver_api *)dev->api;
597
598 if (api->set_orientation == NULL) {
599 return -ENOSYS;
600 }
601
602 return api->set_orientation(dev, orientation);
603}
604
605#ifdef __cplusplus
606}
607#endif
608
612
613#endif /* ZEPHYR_INCLUDE_DRIVERS_DISPLAY_H_ */
System error numbers.
display_screen_info
Display screen information.
Definition display.h:175
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:318
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:360
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:383
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:309
static void * display_get_framebuffer(const struct device *dev)
Get pointer to framebuffer for direct access.
Definition display.h:427
static int display_blanking_off(const struct device *dev)
Turn display blanking off.
Definition display.h:482
static int display_set_orientation(const struct device *dev, const enum display_orientation orientation)
Set display orientation.
Definition display.h:591
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:259
static int display_clear(const struct device *dev)
Clear the screen of the display device.
Definition display.h:406
static void display_get_capabilities(const struct device *dev, struct display_capabilities *capabilities)
Get display capabilities.
Definition display.h:549
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:293
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:286
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:569
static int display_set_contrast(const struct device *dev, uint8_t contrast)
Set the contrast of the display.
Definition display.h:531
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:269
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:252
display_pixel_format
Display pixel formats.
Definition display.h:48
display_orientation
Enumeration with possible display orientation.
Definition display.h:203
static int display_blanking_on(const struct device *dev)
Turn display blanking on.
Definition display.h:458
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:245
static int display_set_brightness(const struct device *dev, uint8_t brightness)
Set the brightness of the display.
Definition display.h:506
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:301
int(* display_clear_api)(const struct device *dev)
Definition display.h:279
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:327
@ SCREEN_INFO_X_ALIGNMENT_WIDTH
Screen has x alignment constrained to width.
Definition display.h:197
@ SCREEN_INFO_EPD
Electrophoretic Display.
Definition display.h:189
@ SCREEN_INFO_DOUBLE_BUFFER
Screen has two alternating ram buffers.
Definition display.h:193
@ SCREEN_INFO_MONO_VTILED
If selected, one octet represents 8 pixels ordered vertically, otherwise ordered horizontally.
Definition display.h:180
@ SCREEN_INFO_MONO_MSB_FIRST
If selected, the MSB represents the first pixel, otherwise MSB represents the last pixel.
Definition display.h:185
@ PIXEL_FORMAT_RGB_565X
16-bit RGB format packed into two bytes.
Definition display.h:118
@ PIXEL_FORMAT_L_8
8-bit Greyscale format
Definition display.h:131
@ PIXEL_FORMAT_MONO10
Monochrome (1=Black 0=White).
Definition display.h:77
@ PIXEL_FORMAT_ARGB_8888
32-bit RGB format with 8 bits per component and 8 bits for alpha.
Definition display.h:91
@ PIXEL_FORMAT_AL_88
16-bit Greyscale format with 8-bit luminance and 8-bit for alpha
Definition display.h:145
@ PIXEL_FORMAT_PRIV_START
This and higher values are display specific.
Definition display.h:151
@ PIXEL_FORMAT_MONO01
1-bit monochrome format with 1 bit per pixel, thus each byte represent 8 pixels Two variants,...
Definition display.h:76
@ PIXEL_FORMAT_RGB_565
16-bit RGB format packed into two bytes: 5 red bits [15:11], 6 green bits [10:5], 5 blue bits [4:0].
Definition display.h:106
@ PIXEL_FORMAT_RGB_888
24-bit RGB format with 8 bits per component.
Definition display.h:61
@ DISPLAY_ORIENTATION_ROTATED_90
Rotated 90 degrees clockwise.
Definition display.h:205
@ DISPLAY_ORIENTATION_ROTATED_180
Rotated 180 degrees clockwise.
Definition display.h:206
@ DISPLAY_ORIENTATION_NORMAL
No rotation.
Definition display.h:204
@ DISPLAY_ORIENTATION_ROTATED_270
Rotated 270 degrees clockwise.
Definition display.h:207
#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:82
#define NULL
Definition iar_missing_defs.h:20
__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:513
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:519
Structure to describe display data buffer layout.
Definition display.h:227
uint16_t pitch
Number of pixels between consecutive rows in the data buffer.
Definition display.h:235
bool frame_incomplete
Indicates that this is not the last write buffer of the frame.
Definition display.h:237
uint16_t height
Data buffer column height in pixels.
Definition display.h:233
uint16_t width
Data buffer row width in pixels.
Definition display.h:231
uint32_t buf_size
Data buffer size in bytes.
Definition display.h:229
Structure holding display capabilities.
Definition display.h:211
uint32_t supported_pixel_formats
Bitwise or of pixel formats supported by the display.
Definition display.h:217
uint16_t x_resolution
Display resolution in the X direction.
Definition display.h:213
enum display_orientation current_orientation
Current display orientation.
Definition display.h:223
uint16_t y_resolution
Display resolution in the Y direction.
Definition display.h:215
uint32_t screen_info
Information about display panel.
Definition display.h:219
enum display_pixel_format current_pixel_format
Currently active pixel format for the display.
Definition display.h:221
Display driver API API which a display driver should expose.
Definition display.h:335
display_blanking_off_api blanking_off
Definition display.h:337
display_set_pixel_format_api set_pixel_format
Definition display.h:345
display_read_api read
Definition display.h:339
display_set_orientation_api set_orientation
Definition display.h:346
display_write_api write
Definition display.h:338
display_clear_api clear
Definition display.h:340
display_set_brightness_api set_brightness
Definition display.h:342
display_get_framebuffer_api get_framebuffer
Definition display.h:341
display_blanking_on_api blanking_on
Definition display.h:336
display_get_capabilities_api get_capabilities
Definition display.h:344
display_set_contrast_api set_contrast
Definition display.h:343