Zephyr Project API 4.2.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
13#ifndef ZEPHYR_INCLUDE_DRIVERS_DISPLAY_H_
14#define ZEPHYR_INCLUDE_DRIVERS_DISPLAY_H_
15
25#include <zephyr/device.h>
26#include <errno.h>
27#include <stddef.h>
28#include <zephyr/types.h>
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
74
82#define DISPLAY_BITS_PER_PIXEL(fmt) \
83 ((((fmt & PIXEL_FORMAT_RGB_888) >> 0) * 24U) + \
84 (((fmt & PIXEL_FORMAT_MONO01) >> 1) * 1U) + \
85 (((fmt & PIXEL_FORMAT_MONO10) >> 2) * 1U) + \
86 (((fmt & PIXEL_FORMAT_ARGB_8888) >> 3) * 32U) + \
87 (((fmt & PIXEL_FORMAT_RGB_565) >> 4) * 16U) + \
88 (((fmt & PIXEL_FORMAT_BGR_565) >> 5) * 16U) + \
89 (((fmt & PIXEL_FORMAT_L_8) >> 6) * 8U) + \
90 (((fmt & PIXEL_FORMAT_AL_88) >> 7) * 16U))
91
119
129
145
159
165typedef int (*display_blanking_on_api)(const struct device *dev);
166
172typedef int (*display_blanking_off_api)(const struct device *dev);
173
179typedef int (*display_write_api)(const struct device *dev, const uint16_t x,
180 const uint16_t y,
181 const struct display_buffer_descriptor *desc,
182 const void *buf);
183
189typedef int (*display_read_api)(const struct device *dev, const uint16_t x,
190 const uint16_t y,
191 const struct display_buffer_descriptor *desc,
192 void *buf);
193
199typedef int (*display_clear_api)(const struct device *dev);
200
206typedef void *(*display_get_framebuffer_api)(const struct device *dev);
207
213typedef int (*display_set_brightness_api)(const struct device *dev,
214 const uint8_t brightness);
215
221typedef int (*display_set_contrast_api)(const struct device *dev,
222 const uint8_t contrast);
223
229typedef void (*display_get_capabilities_api)(const struct device *dev,
230 struct display_capabilities *
231 capabilities);
232
238typedef int (*display_set_pixel_format_api)(const struct device *dev,
239 const enum display_pixel_format
240 pixel_format);
241
247typedef int (*display_set_orientation_api)(const struct device *dev,
248 const enum display_orientation
249 orientation);
250
268
280static inline int display_write(const struct device *dev, const uint16_t x,
281 const uint16_t y,
282 const struct display_buffer_descriptor *desc,
283 const void *buf)
284{
285 struct display_driver_api *api =
286 (struct display_driver_api *)dev->api;
287
288 return api->write(dev, x, y, desc, buf);
289}
290
303static inline int display_read(const struct device *dev, const uint16_t x,
304 const uint16_t y,
305 const struct display_buffer_descriptor *desc,
306 void *buf)
307{
308 struct display_driver_api *api =
309 (struct display_driver_api *)dev->api;
310
311 if (api->read == NULL) {
312 return -ENOSYS;
313 }
314
315 return api->read(dev, x, y, desc, buf);
316}
317
326static inline int display_clear(const struct device *dev)
327{
328 struct display_driver_api *api =
329 (struct display_driver_api *)dev->api;
330
331 if (api->clear == NULL) {
332 return -ENOSYS;
333 }
334
335 return api->clear(dev);
336}
337
347static inline void *display_get_framebuffer(const struct device *dev)
348{
349 struct display_driver_api *api =
350 (struct display_driver_api *)dev->api;
351
352 if (api->get_framebuffer == NULL) {
353 return NULL;
354 }
355
356 return api->get_framebuffer(dev);
357}
358
378static inline int display_blanking_on(const struct device *dev)
379{
380 struct display_driver_api *api =
381 (struct display_driver_api *)dev->api;
382
383 if (api->blanking_on == NULL) {
384 return -ENOSYS;
385 }
386
387 return api->blanking_on(dev);
388}
389
402static inline int display_blanking_off(const struct device *dev)
403{
404 struct display_driver_api *api =
405 (struct display_driver_api *)dev->api;
406
407 if (api->blanking_off == NULL) {
408 return -ENOSYS;
409 }
410
411 return api->blanking_off(dev);
412}
413
426static inline int display_set_brightness(const struct device *dev,
427 uint8_t brightness)
428{
429 struct display_driver_api *api =
430 (struct display_driver_api *)dev->api;
431
432 if (api->set_brightness == NULL) {
433 return -ENOSYS;
434 }
435
436 return api->set_brightness(dev, brightness);
437}
438
451static inline int display_set_contrast(const struct device *dev, uint8_t contrast)
452{
453 struct display_driver_api *api =
454 (struct display_driver_api *)dev->api;
455
456 if (api->set_contrast == NULL) {
457 return -ENOSYS;
458 }
459
460 return api->set_contrast(dev, contrast);
461}
462
469static inline void display_get_capabilities(const struct device *dev,
470 struct display_capabilities *
471 capabilities)
472{
473 struct display_driver_api *api =
474 (struct display_driver_api *)dev->api;
475
476 api->get_capabilities(dev, capabilities);
477}
478
488static inline int
490 const enum display_pixel_format pixel_format)
491{
492 struct display_driver_api *api =
493 (struct display_driver_api *)dev->api;
494
495 if (api->set_pixel_format == NULL) {
496 return -ENOSYS;
497 }
498
499 return api->set_pixel_format(dev, pixel_format);
500}
501
511static inline int display_set_orientation(const struct device *dev,
512 const enum display_orientation
513 orientation)
514{
515 struct display_driver_api *api =
516 (struct display_driver_api *)dev->api;
517
518 if (api->set_orientation == NULL) {
519 return -ENOSYS;
520 }
521
522 return api->set_orientation(dev, orientation);
523}
524
525#ifdef __cplusplus
526}
527#endif
528
533#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:238
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:172
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:221
display_screen_info
Display screen information.
Definition display.h:95
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:247
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:280
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:303
static void * display_get_framebuffer(const struct device *dev)
Get pointer to framebuffer for direct access.
Definition display.h:347
static int display_blanking_off(const struct device *dev)
Turn display blanking off.
Definition display.h:402
static int display_set_orientation(const struct device *dev, const enum display_orientation orientation)
Set display orientation.
Definition display.h:511
static int display_clear(const struct device *dev)
Clear the screen of the display device.
Definition display.h:326
static void display_get_capabilities(const struct device *dev, struct display_capabilities *capabilities)
Get display capabilities.
Definition display.h:469
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:489
static int display_set_contrast(const struct device *dev, uint8_t contrast)
Set the contrast of the display.
Definition display.h:451
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:213
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:189
display_pixel_format
Display pixel formats.
Definition display.h:43
display_orientation
Enumeration with possible display orientation.
Definition display.h:123
static int display_blanking_on(const struct device *dev)
Turn display blanking on.
Definition display.h:378
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:165
static int display_set_brightness(const struct device *dev, uint8_t brightness)
Set the brightness of the display.
Definition display.h:426
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:206
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:179
int(* display_clear_api)(const struct device *dev)
Definition display.h:199
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:229
@ SCREEN_INFO_X_ALIGNMENT_WIDTH
Screen has x alignment constrained to width.
Definition display.h:117
@ SCREEN_INFO_EPD
Electrophoretic Display.
Definition display.h:109
@ SCREEN_INFO_DOUBLE_BUFFER
Screen has two alternating ram buffers.
Definition display.h:113
@ SCREEN_INFO_MONO_VTILED
If selected, one octet represents 8 pixels ordered vertically, otherwise ordered horizontally.
Definition display.h:100
@ SCREEN_INFO_MONO_MSB_FIRST
If selected, the MSB represents the first pixel, otherwise MSB represents the last pixel.
Definition display.h:105
@ PIXEL_FORMAT_L_8
8-bit Grayscale/Luminance, equivalent to
Definition display.h:70
@ PIXEL_FORMAT_MONO10
Monochrome (1=Black 0=White)
Definition display.h:46
@ PIXEL_FORMAT_ARGB_8888
32-bit ARGB
Definition display.h:47
@ PIXEL_FORMAT_AL_88
8-bit Grayscale/Luminance with alpha
Definition display.h:72
@ PIXEL_FORMAT_MONO01
Monochrome (0=Black 1=White)
Definition display.h:45
@ 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:58
@ PIXEL_FORMAT_RGB_888
24-bit RGB
Definition display.h:44
@ PIXEL_FORMAT_BGR_565
16-bit RGB format packed into two bytes: 5 blue bits [15:11], 6 green bits [10:5],...
Definition display.h:69
@ DISPLAY_ORIENTATION_ROTATED_90
Rotated 90 degrees clockwise.
Definition display.h:125
@ DISPLAY_ORIENTATION_ROTATED_180
Rotated 180 degrees clockwise.
Definition display.h:126
@ DISPLAY_ORIENTATION_NORMAL
No rotation.
Definition display.h:124
@ DISPLAY_ORIENTATION_ROTATED_270
Rotated 270 degrees clockwise.
Definition display.h:127
#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:510
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:516
Structure to describe display data buffer layout.
Definition display.h:147
uint16_t pitch
Number of pixels between consecutive rows in the data buffer.
Definition display.h:155
bool frame_incomplete
Indicates that this is not the last write buffer of the frame.
Definition display.h:157
uint16_t height
Data buffer column height in pixels.
Definition display.h:153
uint16_t width
Data buffer row width in pixels.
Definition display.h:151
uint32_t buf_size
Data buffer size in bytes.
Definition display.h:149
Structure holding display capabilities.
Definition display.h:131
uint32_t supported_pixel_formats
Bitwise or of pixel formats supported by the display.
Definition display.h:137
uint16_t x_resolution
Display resolution in the X direction.
Definition display.h:133
enum display_orientation current_orientation
Current display orientation.
Definition display.h:143
uint16_t y_resolution
Display resolution in the Y direction.
Definition display.h:135
uint32_t screen_info
Information about display panel.
Definition display.h:139
enum display_pixel_format current_pixel_format
Currently active pixel format for the display.
Definition display.h:141
Display driver API API which a display driver should expose.
Definition display.h:255
display_blanking_off_api blanking_off
Definition display.h:257
display_set_pixel_format_api set_pixel_format
Definition display.h:265
display_read_api read
Definition display.h:259
display_set_orientation_api set_orientation
Definition display.h:266
display_write_api write
Definition display.h:258
display_clear_api clear
Definition display.h:260
display_set_brightness_api set_brightness
Definition display.h:262
display_get_framebuffer_api get_framebuffer
Definition display.h:261
display_blanking_on_api blanking_on
Definition display.h:256
display_get_capabilities_api get_capabilities
Definition display.h:264
display_set_contrast_api set_contrast
Definition display.h:263