Zephyr API Documentation 4.4.0-rc2
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
auxdisplay.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2022-2023 Jamie McCrae
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12
13#ifndef ZEPHYR_INCLUDE_DRIVERS_AUXDISPLAY_H_
14#define ZEPHYR_INCLUDE_DRIVERS_AUXDISPLAY_H_
15
24
25#include <stdint.h>
26#include <stddef.h>
27#include <zephyr/kernel.h>
28#include <zephyr/device.h>
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
35#define AUXDISPLAY_LIGHT_NOT_SUPPORTED 0
36
39
57
68
79
106
118
136
141
146typedef int (*auxdisplay_display_on_t)(const struct device *dev);
147
152typedef int (*auxdisplay_display_off_t)(const struct device *dev);
153
158typedef int (*auxdisplay_cursor_set_enabled_t)(const struct device *dev, bool enabled);
159
164typedef int (*auxdisplay_position_blinking_set_enabled_t)(const struct device *dev,
165 bool enabled);
166
171typedef int (*auxdisplay_cursor_shift_set_t)(const struct device *dev, uint8_t direction,
172 bool display_shift);
173
178typedef int (*auxdisplay_cursor_position_set_t)(const struct device *dev,
179 enum auxdisplay_position type,
180 int16_t x, int16_t y);
181
186typedef int (*auxdisplay_cursor_position_get_t)(const struct device *dev, int16_t *x,
187 int16_t *y);
188
193typedef int (*auxdisplay_display_position_set_t)(const struct device *dev,
194 enum auxdisplay_position type,
195 int16_t x, int16_t y);
196
201typedef int (*auxdisplay_display_position_get_t)(const struct device *dev, int16_t *x,
202 int16_t *y);
203
208typedef int (*auxdisplay_capabilities_get_t)(const struct device *dev,
209 struct auxdisplay_capabilities *capabilities);
210
215typedef int (*auxdisplay_clear_t)(const struct device *dev);
216
221typedef int (*auxdisplay_brightness_get_t)(const struct device *dev, uint8_t *brightness);
222
227typedef int (*auxdisplay_brightness_set_t)(const struct device *dev, uint8_t brightness);
228
233typedef int (*auxdisplay_backlight_get_t)(const struct device *dev, uint8_t *backlight);
234
239typedef int (*auxdisplay_backlight_set_t)(const struct device *dev, uint8_t backlight);
240
245typedef int (*auxdisplay_is_busy_t)(const struct device *dev);
246
251typedef int (*auxdisplay_custom_character_set_t)(const struct device *dev,
252 struct auxdisplay_character *character);
253
258typedef int (*auxdisplay_write_t)(const struct device *dev, const uint8_t *data, uint16_t len);
259
264typedef int (*auxdisplay_custom_command_t)(const struct device *dev,
265 struct auxdisplay_custom_data *command);
266
348
352
362__syscall int auxdisplay_display_on(const struct device *dev);
363
364static inline int z_impl_auxdisplay_display_on(const struct device *dev)
365{
366 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
367
368 if (!api->display_on) {
369 return -ENOSYS;
370 }
371
372 return api->display_on(dev);
373}
374
384__syscall int auxdisplay_display_off(const struct device *dev);
385
386static inline int z_impl_auxdisplay_display_off(const struct device *dev)
387{
388 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
389
390 if (!api->display_off) {
391 return -ENOSYS;
392 }
393
394 return api->display_off(dev);
395}
396
407__syscall int auxdisplay_cursor_set_enabled(const struct device *dev,
408 bool enabled);
409
410static inline int z_impl_auxdisplay_cursor_set_enabled(const struct device *dev,
411 bool enabled)
412{
413 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
414
415 if (!api->cursor_set_enabled) {
416 return -ENOSYS;
417 }
418
419 return api->cursor_set_enabled(dev, enabled);
420}
421
432__syscall int auxdisplay_position_blinking_set_enabled(const struct device *dev,
433 bool enabled);
434
435static inline int z_impl_auxdisplay_position_blinking_set_enabled(const struct device *dev,
436 bool enabled)
437{
438 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
439
440 if (!api->position_blinking_set_enabled) {
441 return -ENOSYS;
442 }
443
444 return api->position_blinking_set_enabled(dev, enabled);
445}
446
460__syscall int auxdisplay_cursor_shift_set(const struct device *dev,
461 uint8_t direction, bool display_shift);
462
463static inline int z_impl_auxdisplay_cursor_shift_set(const struct device *dev,
464 uint8_t direction,
465 bool display_shift)
466{
467 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
468
469 if (!api->cursor_shift_set) {
470 return -ENOSYS;
471 }
472
473 if (direction >= AUXDISPLAY_DIRECTION_COUNT) {
474 return -EINVAL;
475 }
476
477 return api->cursor_shift_set(dev, direction, display_shift);
478}
479
493__syscall int auxdisplay_cursor_position_set(const struct device *dev,
494 enum auxdisplay_position type,
495 int16_t x, int16_t y);
496
497static inline int z_impl_auxdisplay_cursor_position_set(const struct device *dev,
498 enum auxdisplay_position type,
499 int16_t x, int16_t y)
500{
501 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
502
503 if (!api->cursor_position_set) {
504 return -ENOSYS;
505 } else if (type >= AUXDISPLAY_POSITION_COUNT) {
506 return -EINVAL;
507 } else if (type == AUXDISPLAY_POSITION_ABSOLUTE && (x < 0 || y < 0)) {
508 return -EINVAL;
509 }
510
511 return api->cursor_position_set(dev, type, x, y);
512}
513
526__syscall int auxdisplay_cursor_position_get(const struct device *dev,
527 int16_t *x, int16_t *y);
528
529static inline int z_impl_auxdisplay_cursor_position_get(const struct device *dev,
530 int16_t *x, int16_t *y)
531{
532 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
533
534 if (!api->cursor_position_get) {
535 return -ENOSYS;
536 }
537
538 return api->cursor_position_get(dev, x, y);
539}
540
554__syscall int auxdisplay_display_position_set(const struct device *dev,
555 enum auxdisplay_position type,
556 int16_t x, int16_t y);
557
558static inline int z_impl_auxdisplay_display_position_set(const struct device *dev,
559 enum auxdisplay_position type,
560 int16_t x, int16_t y)
561{
562 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
563
564 if (!api->display_position_set) {
565 return -ENOSYS;
566 } else if (type >= AUXDISPLAY_POSITION_COUNT) {
567 return -EINVAL;
568 } else if (type == AUXDISPLAY_POSITION_ABSOLUTE && (x < 0 || y < 0)) {
569 return -EINVAL;
570 }
571
572 return api->display_position_set(dev, type, x, y);
573}
574
587__syscall int auxdisplay_display_position_get(const struct device *dev,
588 int16_t *x, int16_t *y);
589
590static inline int z_impl_auxdisplay_display_position_get(const struct device *dev,
591 int16_t *x, int16_t *y)
592{
593 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
594
595 if (!api->display_position_get) {
596 return -ENOSYS;
597 }
598
599 return api->display_position_get(dev, x, y);
600}
601
611__syscall int auxdisplay_capabilities_get(const struct device *dev,
612 struct auxdisplay_capabilities *capabilities);
613
614static inline int z_impl_auxdisplay_capabilities_get(const struct device *dev,
615 struct auxdisplay_capabilities *capabilities)
616{
617 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
618
619 return api->capabilities_get(dev, capabilities);
620}
621
632__syscall int auxdisplay_clear(const struct device *dev);
633
634static inline int z_impl_auxdisplay_clear(const struct device *dev)
635{
636 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
637
638 return api->clear(dev);
639}
640
651__syscall int auxdisplay_brightness_get(const struct device *dev,
652 uint8_t *brightness);
653
654static inline int z_impl_auxdisplay_brightness_get(const struct device *dev,
655 uint8_t *brightness)
656{
657 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
658
659 if (!api->brightness_get) {
660 return -ENOSYS;
661 }
662
663 return api->brightness_get(dev, brightness);
664}
665
677__syscall int auxdisplay_brightness_set(const struct device *dev,
678 uint8_t brightness);
679
680static inline int z_impl_auxdisplay_brightness_set(const struct device *dev,
681 uint8_t brightness)
682{
683 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
684
685 if (!api->brightness_set) {
686 return -ENOSYS;
687 }
688
689 return api->brightness_set(dev, brightness);
690}
691
702__syscall int auxdisplay_backlight_get(const struct device *dev,
703 uint8_t *backlight);
704
705static inline int z_impl_auxdisplay_backlight_get(const struct device *dev,
706 uint8_t *backlight)
707{
708 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
709
710 if (!api->backlight_get) {
711 return -ENOSYS;
712 }
713
714 return api->backlight_get(dev, backlight);
715}
716
728__syscall int auxdisplay_backlight_set(const struct device *dev,
729 uint8_t backlight);
730
731static inline int z_impl_auxdisplay_backlight_set(const struct device *dev,
732 uint8_t backlight)
733{
734 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
735
736 if (!api->backlight_set) {
737 return -ENOSYS;
738 }
739
740 return api->backlight_set(dev, backlight);
741}
742
753__syscall int auxdisplay_is_busy(const struct device *dev);
754
755static inline int z_impl_auxdisplay_is_busy(const struct device *dev)
756{
757 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
758
759 if (!api->is_busy) {
760 return -ENOSYS;
761 }
762
763 return api->is_busy(dev);
764}
765
786__syscall int auxdisplay_custom_character_set(const struct device *dev,
787 struct auxdisplay_character *character);
788
789static inline int z_impl_auxdisplay_custom_character_set(const struct device *dev,
790 struct auxdisplay_character *character)
791{
792 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
793
794 if (!api->custom_character_set) {
795 return -ENOSYS;
796 }
797
798 return api->custom_character_set(dev, character);
799}
800
812__syscall int auxdisplay_write(const struct device *dev, const uint8_t *data,
813 uint16_t len);
814
815static inline int z_impl_auxdisplay_write(const struct device *dev,
816 const uint8_t *data, uint16_t len)
817{
818 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
819
820 return api->write(dev, data, len);
821}
822
834__syscall int auxdisplay_custom_command(const struct device *dev,
835 struct auxdisplay_custom_data *data);
836
837static inline int z_impl_auxdisplay_custom_command(const struct device *dev,
838 struct auxdisplay_custom_data *data)
839{
840 struct auxdisplay_driver_api *api = (struct auxdisplay_driver_api *)dev->api;
841
842 if (!api->custom_command) {
843 return -ENOSYS;
844 }
845
846 return api->custom_command(dev, data);
847}
848
849#ifdef __cplusplus
850}
851#endif
852
856
857#include <zephyr/syscalls/auxdisplay.h>
858
859#endif /* ZEPHYR_INCLUDE_DRIVERS_AUXDISPLAY_H_ */
int(* auxdisplay_brightness_get_t)(const struct device *dev, uint8_t *brightness)
Callback API to get the current and supported brightness settings.
Definition auxdisplay.h:221
int(* auxdisplay_display_position_set_t)(const struct device *dev, enum auxdisplay_position type, int16_t x, int16_t y)
Callback API to set the current position of the display.
Definition auxdisplay.h:193
int(* auxdisplay_custom_command_t)(const struct device *dev, struct auxdisplay_custom_data *command)
Callback API to send a custom command to the display.
Definition auxdisplay.h:264
int(* auxdisplay_custom_character_set_t)(const struct device *dev, struct auxdisplay_character *character)
Callback API to set a custom character on the display.
Definition auxdisplay.h:251
int(* auxdisplay_cursor_set_enabled_t)(const struct device *dev, bool enabled)
Callback API to set display cursor visibility on or off.
Definition auxdisplay.h:158
int(* auxdisplay_display_off_t)(const struct device *dev)
Callback API to turn display off.
Definition auxdisplay.h:152
int(* auxdisplay_position_blinking_set_enabled_t)(const struct device *dev, bool enabled)
Callback API to set the current position blinking on or off.
Definition auxdisplay.h:164
int(* auxdisplay_cursor_shift_set_t)(const struct device *dev, uint8_t direction, bool display_shift)
Callback API to set how the cursor shifts after a character is written.
Definition auxdisplay.h:171
int(* auxdisplay_cursor_position_get_t)(const struct device *dev, int16_t *x, int16_t *y)
Callback API to get the cursor position.
Definition auxdisplay.h:186
int(* auxdisplay_write_t)(const struct device *dev, const uint8_t *data, uint16_t len)
Callback API to write text to the display.
Definition auxdisplay.h:258
int(* auxdisplay_clear_t)(const struct device *dev)
Callback API to clear the contents of the display.
Definition auxdisplay.h:215
int(* auxdisplay_brightness_set_t)(const struct device *dev, uint8_t brightness)
Callback API to set the brightness of the display.
Definition auxdisplay.h:227
int(* auxdisplay_backlight_get_t)(const struct device *dev, uint8_t *backlight)
Callback API to get the current and supported backlight settings.
Definition auxdisplay.h:233
int(* auxdisplay_is_busy_t)(const struct device *dev)
Callback API to check if the display is busy with an operation.
Definition auxdisplay.h:245
int(* auxdisplay_display_on_t)(const struct device *dev)
Callback API to turn display on.
Definition auxdisplay.h:146
int(* auxdisplay_display_position_get_t)(const struct device *dev, int16_t *x, int16_t *y)
Callback API to get the current position of the display.
Definition auxdisplay.h:201
int(* auxdisplay_cursor_position_set_t)(const struct device *dev, enum auxdisplay_position type, int16_t x, int16_t y)
Callback API to set the cursor position.
Definition auxdisplay.h:178
int(* auxdisplay_backlight_set_t)(const struct device *dev, uint8_t backlight)
Callback API to set the backlight level.
Definition auxdisplay.h:239
int(* auxdisplay_capabilities_get_t)(const struct device *dev, struct auxdisplay_capabilities *capabilities)
Callback API to get display capabilities.
Definition auxdisplay.h:208
int auxdisplay_display_position_set(const struct device *dev, enum auxdisplay_position type, int16_t x, int16_t y)
Set display position on an auxiliary display.
int auxdisplay_brightness_get(const struct device *dev, uint8_t *brightness)
Get the current brightness level of an auxiliary display.
int auxdisplay_display_position_get(const struct device *dev, int16_t *x, int16_t *y)
Get current display position on an auxiliary display.
int auxdisplay_write(const struct device *dev, const uint8_t *data, uint16_t len)
Write data to auxiliary display screen at current position.
int auxdisplay_backlight_set(const struct device *dev, uint8_t backlight)
Update the backlight level of an auxiliary display.
int auxdisplay_is_busy(const struct device *dev)
Check if an auxiliary display driver is busy.
int auxdisplay_brightness_set(const struct device *dev, uint8_t brightness)
Update the brightness level of an auxiliary display.
int auxdisplay_cursor_position_get(const struct device *dev, int16_t *x, int16_t *y)
Get current cursor on an auxiliary display.
int auxdisplay_capabilities_get(const struct device *dev, struct auxdisplay_capabilities *capabilities)
Fetch capabilities (and details) of auxiliary display.
auxdisplay_direction
Used for setting character append position.
Definition auxdisplay.h:59
int auxdisplay_display_off(const struct device *dev)
Turn display off.
int auxdisplay_position_blinking_set_enabled(const struct device *dev, bool enabled)
Set cursor blinking status on an auxiliary display.
int auxdisplay_cursor_set_enabled(const struct device *dev, bool enabled)
Set cursor enabled status on an auxiliary display.
uint32_t auxdisplay_mode_t
Used to describe the mode of an auxiliary (text) display.
Definition auxdisplay.h:38
int auxdisplay_custom_command(const struct device *dev, struct auxdisplay_custom_data *data)
Send a custom command to the display (if supported by driver).
auxdisplay_position
Used for moving the cursor or display position.
Definition auxdisplay.h:41
int auxdisplay_cursor_position_set(const struct device *dev, enum auxdisplay_position type, int16_t x, int16_t y)
Set cursor (and write position) on an auxiliary display.
int auxdisplay_clear(const struct device *dev)
Clear display of auxiliary display and return to home position.
int auxdisplay_custom_character_set(const struct device *dev, struct auxdisplay_character *character)
Sets a custom character in the display.
int auxdisplay_backlight_get(const struct device *dev, uint8_t *backlight)
Get the backlight level details of an auxiliary display.
int auxdisplay_cursor_shift_set(const struct device *dev, uint8_t direction, bool display_shift)
Set cursor shift after character write and display shift.
int auxdisplay_display_on(const struct device *dev)
Turn display on.
@ AUXDISPLAY_DIRECTION_LEFT
Each character will be placed to the left of existing characters.
Definition auxdisplay.h:64
@ AUXDISPLAY_DIRECTION_COUNT
Definition auxdisplay.h:66
@ AUXDISPLAY_DIRECTION_RIGHT
Each character will be placed to the right of existing characters.
Definition auxdisplay.h:61
@ AUXDISPLAY_POSITION_COUNT
Definition auxdisplay.h:55
@ AUXDISPLAY_POSITION_ABSOLUTE
Moves to specified X,Y position.
Definition auxdisplay.h:43
@ AUXDISPLAY_POSITION_RELATIVE
Shifts current position by +/- X,Y position, does not take display direction into consideration.
Definition auxdisplay.h:48
@ AUXDISPLAY_POSITION_RELATIVE_DIRECTION
Shifts current position by +/- X,Y position, takes display direction into consideration.
Definition auxdisplay.h:53
#define EINVAL
Invalid argument.
Definition errno.h:60
#define ENOSYS
Function not implemented.
Definition errno.h:82
Public kernel APIs.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
__INT16_TYPE__ int16_t
Definition stdint.h:73
Structure holding display capabilities.
Definition auxdisplay.h:81
struct auxdisplay_light brightness
Brightness details for display (if supported).
Definition auxdisplay.h:92
uint8_t custom_characters
Number of custom characters supported by display (0 if unsupported).
Definition auxdisplay.h:98
auxdisplay_mode_t mode
Display-specific data (e.g.
Definition auxdisplay.h:89
uint16_t columns
Number of character columns.
Definition auxdisplay.h:83
struct auxdisplay_light backlight
Backlight details for display (if supported).
Definition auxdisplay.h:95
uint8_t custom_character_width
Width (in pixels) of a custom character, supplied custom characters should match.
Definition auxdisplay.h:101
uint8_t custom_character_height
Height (in pixels) of a custom character, supplied custom characters should match.
Definition auxdisplay.h:104
uint16_t rows
Number of character rows.
Definition auxdisplay.h:86
Structure for a custom character.
Definition auxdisplay.h:120
uint8_t character_code
Will be updated with custom character index to use in the display write function to disaplay this cus...
Definition auxdisplay.h:134
uint8_t * data
Custom character pixel data, a character must be valid for a display consisting of a uint8 array of s...
Definition auxdisplay.h:129
uint8_t index
Custom character index on the display.
Definition auxdisplay.h:122
Structure for a custom command.
Definition auxdisplay.h:108
uint32_t options
Display-driver specific options for command.
Definition auxdisplay.h:116
uint16_t len
Length of supplied data.
Definition auxdisplay.h:113
uint8_t * data
Raw command data to be sent.
Definition auxdisplay.h:110
<span class="mlabel">Driver Operations</span> Auxiliary Display driver operations
Definition auxdisplay.h:270
auxdisplay_display_position_set_t display_position_set
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:302
auxdisplay_display_position_get_t display_position_get
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:306
auxdisplay_display_on_t display_on
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:274
auxdisplay_cursor_position_set_t cursor_position_set
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:294
auxdisplay_backlight_set_t backlight_set
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:330
auxdisplay_write_t write
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition auxdisplay.h:342
auxdisplay_display_off_t display_off
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:278
auxdisplay_brightness_get_t brightness_get
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:318
auxdisplay_backlight_get_t backlight_get
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:326
auxdisplay_capabilities_get_t capabilities_get
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition auxdisplay.h:310
auxdisplay_is_busy_t is_busy
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:334
auxdisplay_position_blinking_set_enabled_t position_blinking_set_enabled
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:286
auxdisplay_cursor_set_enabled_t cursor_set_enabled
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:282
auxdisplay_clear_t clear
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition auxdisplay.h:314
auxdisplay_cursor_shift_set_t cursor_shift_set
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:290
auxdisplay_brightness_set_t brightness_set
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:322
auxdisplay_cursor_position_get_t cursor_position_get
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:298
auxdisplay_custom_command_t custom_command
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:346
auxdisplay_custom_character_set_t custom_character_set
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition auxdisplay.h:338
Light levels for brightness and/or backlight.
Definition auxdisplay.h:72
uint8_t minimum
Minimum light level supported.
Definition auxdisplay.h:74
uint8_t maximum
Maximum light level supported.
Definition auxdisplay.h:77
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
void * data
Address of the device instance private data.
Definition device.h:523
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:519