12#ifndef ZEPHYR_INCLUDE_DRIVERS_AUXDISPLAY_H_
13#define ZEPHYR_INCLUDE_DRIVERS_AUXDISPLAY_H_
32#define AUXDISPLAY_LIGHT_NOT_SUPPORTED 0
145typedef int (*auxdisplay_display_on_t)(
const struct device *dev);
152typedef int (*auxdisplay_display_off_t)(
const struct device *dev);
159typedef int (*auxdisplay_cursor_set_enabled_t)(
const struct device *dev,
bool enabled);
166typedef int (*auxdisplay_position_blinking_set_enabled_t)(
const struct device *dev,
174typedef int (*auxdisplay_cursor_shift_set_t)(
const struct device *dev,
uint8_t direction,
182typedef int (*auxdisplay_cursor_position_set_t)(
const struct device *dev,
191typedef int (*auxdisplay_cursor_position_get_t)(
const struct device *dev,
int16_t *x,
199typedef int (*auxdisplay_display_position_set_t)(
const struct device *dev,
208typedef int (*auxdisplay_display_position_get_t)(
const struct device *dev,
int16_t *x,
216typedef int (*auxdisplay_capabilities_get_t)(
const struct device *dev,
224typedef int (*auxdisplay_clear_t)(
const struct device *dev);
232typedef int (*auxdisplay_brightness_get_t)(
const struct device *dev,
uint8_t *brightness);
239typedef int (*auxdisplay_brightness_set_t)(
const struct device *dev,
uint8_t brightness);
247typedef int (*auxdisplay_backlight_get_t)(
const struct device *dev,
uint8_t *backlight);
254typedef int (*auxdisplay_backlight_set_t)(
const struct device *dev,
uint8_t backlight);
261typedef int (*auxdisplay_is_busy_t)(
const struct device *dev);
268typedef int (*auxdisplay_custom_character_set_t)(
const struct device *dev,
283typedef int (*auxdisplay_custom_command_t)(
const struct device *dev,
286__subsystem
struct auxdisplay_driver_api {
287 auxdisplay_display_on_t display_on;
288 auxdisplay_display_off_t display_off;
289 auxdisplay_cursor_set_enabled_t cursor_set_enabled;
290 auxdisplay_position_blinking_set_enabled_t position_blinking_set_enabled;
291 auxdisplay_cursor_shift_set_t cursor_shift_set;
292 auxdisplay_cursor_position_set_t cursor_position_set;
293 auxdisplay_cursor_position_get_t cursor_position_get;
294 auxdisplay_display_position_set_t display_position_set;
295 auxdisplay_display_position_get_t display_position_get;
296 auxdisplay_capabilities_get_t capabilities_get;
297 auxdisplay_clear_t clear;
298 auxdisplay_brightness_get_t brightness_get;
299 auxdisplay_brightness_set_t brightness_set;
300 auxdisplay_backlight_get_t backlight_get;
301 auxdisplay_backlight_set_t backlight_set;
302 auxdisplay_is_busy_t is_busy;
303 auxdisplay_custom_character_set_t custom_character_set;
304 auxdisplay_write_t write;
305 auxdisplay_custom_command_t custom_command;
323static inline int z_impl_auxdisplay_display_on(
const struct device *dev)
325 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
327 if (!api->display_on) {
331 return api->display_on(dev);
345static inline int z_impl_auxdisplay_display_off(
const struct device *dev)
347 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
349 if (!api->display_off) {
353 return api->display_off(dev);
369static inline int z_impl_auxdisplay_cursor_set_enabled(
const struct device *dev,
372 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
374 if (!api->cursor_set_enabled) {
378 return api->cursor_set_enabled(dev, enabled);
394static inline int z_impl_auxdisplay_position_blinking_set_enabled(
const struct device *dev,
397 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
399 if (!api->position_blinking_set_enabled) {
403 return api->position_blinking_set_enabled(dev, enabled);
420 uint8_t direction,
bool display_shift);
422static inline int z_impl_auxdisplay_cursor_shift_set(
const struct device *dev,
426 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
428 if (!api->cursor_shift_set) {
436 return api->cursor_shift_set(dev, direction, display_shift);
456static inline int z_impl_auxdisplay_cursor_position_set(
const struct device *dev,
460 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
462 if (!api->cursor_position_set) {
470 return api->cursor_position_set(dev, type, x, y);
488static inline int z_impl_auxdisplay_cursor_position_get(
const struct device *dev,
491 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
493 if (!api->cursor_position_get) {
497 return api->cursor_position_get(dev, x, y);
517static inline int z_impl_auxdisplay_display_position_set(
const struct device *dev,
521 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
523 if (!api->display_position_set) {
531 return api->display_position_set(dev, type, x, y);
549static inline int z_impl_auxdisplay_display_position_get(
const struct device *dev,
552 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
554 if (!api->display_position_get) {
558 return api->display_position_get(dev, x, y);
573static inline int z_impl_auxdisplay_capabilities_get(
const struct device *dev,
576 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
578 return api->capabilities_get(dev, capabilities);
593static inline int z_impl_auxdisplay_clear(
const struct device *dev)
595 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
597 return api->clear(dev);
613static inline int z_impl_auxdisplay_brightness_get(
const struct device *dev,
616 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
618 if (!api->brightness_get) {
622 return api->brightness_get(dev, brightness);
639static inline int z_impl_auxdisplay_brightness_set(
const struct device *dev,
642 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
644 if (!api->brightness_set) {
648 return api->brightness_set(dev, brightness);
664static inline int z_impl_auxdisplay_backlight_get(
const struct device *dev,
667 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
669 if (!api->backlight_get) {
673 return api->backlight_get(dev, backlight);
690static inline int z_impl_auxdisplay_backlight_set(
const struct device *dev,
693 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
695 if (!api->backlight_set) {
699 return api->backlight_set(dev, backlight);
714static inline int z_impl_auxdisplay_is_busy(
const struct device *dev)
716 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
722 return api->is_busy(dev);
748static inline int z_impl_auxdisplay_custom_character_set(
const struct device *dev,
751 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
753 if (!api->custom_character_set) {
757 return api->custom_character_set(dev, character);
774static inline int z_impl_auxdisplay_write(
const struct device *dev,
777 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
779 return api->write(dev, data, len);
796static inline int z_impl_auxdisplay_custom_command(
const struct device *dev,
799 struct auxdisplay_driver_api *api = (
struct auxdisplay_driver_api *)dev->
api;
801 if (!api->custom_command) {
805 return api->custom_command(dev, data);
816#include <syscalls/auxdisplay.h>
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:56
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:35
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:38
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 (note that this does not reset the dis...
int auxdisplay_custom_character_set(const struct device *dev, struct auxdisplay_character *character)
Sets a custom character in the display, the custom character struct must contain the pixel data for t...
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:61
@ AUXDISPLAY_DIRECTION_COUNT
Definition: auxdisplay.h:63
@ AUXDISPLAY_DIRECTION_RIGHT
Each character will be placed to the right of existing characters.
Definition: auxdisplay.h:58
@ AUXDISPLAY_POSITION_COUNT
Definition: auxdisplay.h:52
@ AUXDISPLAY_POSITION_ABSOLUTE
Moves to specified X,Y position.
Definition: auxdisplay.h:40
@ AUXDISPLAY_POSITION_RELATIVE
Shifts current position by +/- X,Y position, does not take display direction into consideration.
Definition: auxdisplay.h:45
@ AUXDISPLAY_POSITION_RELATIVE_DIRECTION
Shifts current position by +/- X,Y position, takes display direction into consideration.
Definition: auxdisplay.h:50
#define EINVAL
Invalid argument.
Definition: errno.h:61
#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
__INT16_TYPE__ int16_t
Definition: stdint.h:73
Structure holding display capabilities.
Definition: auxdisplay.h:78
struct auxdisplay_light brightness
Brightness details for display (if supported)
Definition: auxdisplay.h:89
uint8_t custom_characters
Number of custom characters supported by display (0 if unsupported)
Definition: auxdisplay.h:95
auxdisplay_mode_t mode
Display-specific data (e.g.
Definition: auxdisplay.h:86
uint16_t columns
Number of character columns.
Definition: auxdisplay.h:80
struct auxdisplay_light backlight
Backlight details for display (if supported)
Definition: auxdisplay.h:92
uint8_t custom_character_width
Width (in pixels) of a custom character, supplied custom characters should match.
Definition: auxdisplay.h:98
uint8_t custom_character_height
Height (in pixels) of a custom character, supplied custom characters should match.
Definition: auxdisplay.h:101
uint16_t rows
Number of character rows.
Definition: auxdisplay.h:83
Structure for a custom character.
Definition: auxdisplay.h:117
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:131
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:126
uint8_t index
Custom character index on the display.
Definition: auxdisplay.h:119
Structure for a custom command.
Definition: auxdisplay.h:105
uint32_t options
Display-driver specific options for command.
Definition: auxdisplay.h:113
uint16_t len
Length of supplied data.
Definition: auxdisplay.h:110
uint8_t * data
Raw command data to be sent.
Definition: auxdisplay.h:107
Light levels for brightness and/or backlight.
Definition: auxdisplay.h:69
uint8_t minimum
Minimum light level supported.
Definition: auxdisplay.h:71
uint8_t maximum
Maximum light level supported.
Definition: auxdisplay.h:74
Runtime device structure (in ROM) per driver instance.
Definition: device.h:381
void * data
Address of the device instance private data.
Definition: device.h:391
const void * api
Address of the API structure exposed by the device instance.
Definition: device.h:387