/* grove_lcd.h - Public API for the Grove RGB LCD device */ /* * Copyright (c) 2015 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ #ifndef ZEPHYR_INCLUDE_DISPLAY_GROVE_LCD_H_ #define ZEPHYR_INCLUDE_DISPLAY_GROVE_LCD_H_ #ifdef __cplusplus extern "C" { #endif /** * @brief Display Drivers * @defgroup display_interfaces Display Drivers * @{ * @} */ /** * @brief Grove display APIs * @defgroup grove_display Grove display APIs * @ingroup display_interfaces * @{ */ #define GROVE_LCD_NAME "GLCD" /** * @brief Send text to the screen * * @param port Pointer to device structure for driver instance. * @param data the ASCII text to display * @param size the length of the text in bytes */ void glcd_print(const struct device *port, char *data, uint32_t size); /** * @brief Set text cursor position for next additions * * @param port Pointer to device structure for driver instance. * @param col the column for the cursor to be moved to (0-15) * @param row the row it should be moved to (0 or 1) */ void glcd_cursor_pos_set(const struct device *port, uint8_t col, uint8_t row); /** * @brief Clear the current display * * @param port Pointer to device structure for driver instance. */ void glcd_clear(const struct device *port); /* Defines for the GLCD_CMD_DISPLAY_SWITCH options */ #define GLCD_DS_DISPLAY_ON (1 << 2) #define GLCD_DS_DISPLAY_OFF (0 << 2) #define GLCD_DS_CURSOR_ON (1 << 1) #define GLCD_DS_CURSOR_OFF (0 << 1) #define GLCD_DS_BLINK_ON (1 << 0) #define GLCD_DS_BLINK_OFF (0 << 0) /** * @brief Function to change the display state. * @details This function provides the user the ability to change the state * of the display as per needed. Controlling things like powering on or off * the screen, the option to display the cursor or not, and the ability to * blink the cursor. * * @param port Pointer to device structure for driver instance. * @param opt An 8bit bitmask of GLCD_DS_* options. * */ void glcd_display_state_set(const struct device *port, uint8_t opt); /** * @brief return the display feature set associated with the device * * @param port the Grove LCD to get the display features set * * @return the display feature set associated with the device. */ uint8_t glcd_display_state_get(const struct device *port); /* Defines for the GLCD_CMD_INPUT_SET to change text direction */ #define GLCD_IS_SHIFT_INCREMENT (1 << 1) #define GLCD_IS_SHIFT_DECREMENT (0 << 1) #define GLCD_IS_ENTRY_LEFT (1 << 0) #define GLCD_IS_ENTRY_RIGHT (0 << 0) /** * @brief Function to change the input state. * @details This function provides the user the ability to change the state * of the text input. Controlling things like text entry from the left or * right side, and how far to increment on new text * * @param port Pointer to device structure for driver instance. * @param opt A bitmask of GLCD_IS_* options * */ void glcd_input_state_set(const struct device *port, uint8_t opt); /** * @brief return the input set associated with the device * * @param port the Grove LCD to get the input features set * * @return the input set associated with the device. */ uint8_t glcd_input_state_get(const struct device *port); /* Defines for the LCD_FUNCTION_SET */ #define GLCD_FS_8BIT_MODE (1 << 4) #define GLCD_FS_ROWS_2 (1 << 3) #define GLCD_FS_ROWS_1 (0 << 3) #define GLCD_FS_DOT_SIZE_BIG (1 << 2) #define GLCD_FS_DOT_SIZE_LITTLE (0 << 2) /* Bits 0, 1 are not defined for this register */ /** * @brief Function to set the functional state of the display. * @param port Pointer to device structure for driver instance. * @param opt A bitmask of GLCD_FS_* options * * @details This function provides the user the ability to change the state * of the display as per needed. Controlling things like the number of rows, * dot size, and text display quality. */ void glcd_function_set(const struct device *port, uint8_t opt); /** * @brief return the function set associated with the device * * @param port the Grove LCD to get the functions set * * @return the function features set associated with the device. */ uint8_t glcd_function_get(const struct device *port); /* Available color selections */ #define GROVE_RGB_WHITE 0 #define GROVE_RGB_RED 1 #define GROVE_RGB_GREEN 2 #define GROVE_RGB_BLUE 3 /** * @brief Set LCD background to a predefined color * @param port Pointer to device structure for driver instance. * @param color One of the predefined color options */ void glcd_color_select(const struct device *port, uint8_t color); /** * @brief Set LCD background to custom RGB color value * * @param port Pointer to device structure for driver instance. * @param r A numeric value for the red color (max is 255) * @param g A numeric value for the green color (max is 255) * @param b A numeric value for the blue color (max is 255) */ void glcd_color_set(const struct device *port, uint8_t r, uint8_t g, uint8_t b); /** * @brief Initialize the Grove LCD panel * * @param port Pointer to device structure for driver instance. * * @return Returns 0 if all passes */ int glcd_initialize(const struct device *port); /** * @} */ #ifdef __cplusplus } #endif #endif /* ZEPHYR_INCLUDE_DISPLAY_GROVE_LCD_H_ */