| /* grove_lcd.h - Public API for the Grove RGB LCD device */ |
| /* |
| * Copyright (c) 2015 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| #ifndef DISPLAY_GROVE_LCD_H |
| #define 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(struct device *port, char *data, u32_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(struct device *port, u8_t col, u8_t row); |
| |
| /** |
| * @brief Clear the current display |
| * |
| * @param port Pointer to device structure for driver instance. |
| */ |
| void glcd_clear(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(struct device *port, u8_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. |
| */ |
| u8_t glcd_display_state_get(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(struct device *port, u8_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. |
| */ |
| u8_t glcd_input_state_get(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(struct device *port, u8_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. |
| */ |
| u8_t glcd_function_get(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(struct device *port, u8_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(struct device *port, u8_t r, u8_t g, u8_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(struct device *port); |
| |
| |
| /** |
| * @} |
| */ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* DISPLAY_GROVE_LCD_H */ |