1 /* grove_lcd.h - Public API for the Grove RGB LCD device */ 2 /* 3 * Copyright (c) 2015 Intel Corporation 4 * 5 * SPDX-License-Identifier: Apache-2.0 6 */ 7 #ifndef ZEPHYR_INCLUDE_DISPLAY_GROVE_LCD_H_ 8 #define ZEPHYR_INCLUDE_DISPLAY_GROVE_LCD_H_ 9 10 #include <stdint.h> 11 12 #include <zephyr/device.h> 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 /** 19 * @brief Grove display APIs 20 * @defgroup grove_display Grove display APIs 21 * @ingroup third_party 22 * @{ 23 */ 24 25 /** 26 * @brief Send text to the screen 27 * 28 * @param dev Pointer to device structure for driver instance. 29 * @param data the ASCII text to display 30 * @param size the length of the text in bytes 31 */ 32 void glcd_print(const struct device *dev, char *data, uint32_t size); 33 34 35 /** 36 * @brief Set text cursor position for next additions 37 * 38 * @param dev Pointer to device structure for driver instance. 39 * @param col the column for the cursor to be moved to (0-15) 40 * @param row the row it should be moved to (0 or 1) 41 */ 42 void glcd_cursor_pos_set(const struct device *dev, uint8_t col, uint8_t row); 43 44 /** 45 * @brief Clear the current display 46 * 47 * @param dev Pointer to device structure for driver instance. 48 */ 49 void glcd_clear(const struct device *dev); 50 51 /* Defines for the GLCD_CMD_DISPLAY_SWITCH options */ 52 #define GLCD_DS_DISPLAY_ON (1 << 2) 53 #define GLCD_DS_DISPLAY_OFF (0 << 2) 54 #define GLCD_DS_CURSOR_ON (1 << 1) 55 #define GLCD_DS_CURSOR_OFF (0 << 1) 56 #define GLCD_DS_BLINK_ON (1 << 0) 57 #define GLCD_DS_BLINK_OFF (0 << 0) 58 /** 59 * @brief Function to change the display state. 60 * @details This function provides the user the ability to change the state 61 * of the display as per needed. Controlling things like powering on or off 62 * the screen, the option to display the cursor or not, and the ability to 63 * blink the cursor. 64 * 65 * @param dev Pointer to device structure for driver instance. 66 * @param opt An 8bit bitmask of GLCD_DS_* options. 67 * 68 */ 69 void glcd_display_state_set(const struct device *dev, uint8_t opt); 70 71 /** 72 * @brief return the display feature set associated with the device 73 * 74 * @param dev the Grove LCD to get the display features set 75 * 76 * @return the display feature set associated with the device. 77 */ 78 uint8_t glcd_display_state_get(const struct device *dev); 79 80 /* Defines for the GLCD_CMD_INPUT_SET to change text direction */ 81 #define GLCD_IS_SHIFT_INCREMENT (1 << 1) 82 #define GLCD_IS_SHIFT_DECREMENT (0 << 1) 83 #define GLCD_IS_ENTRY_LEFT (1 << 0) 84 #define GLCD_IS_ENTRY_RIGHT (0 << 0) 85 /** 86 * @brief Function to change the input state. 87 * @details This function provides the user the ability to change the state 88 * of the text input. Controlling things like text entry from the left or 89 * right side, and how far to increment on new text 90 * 91 * @param dev Pointer to device structure for driver instance. 92 * @param opt A bitmask of GLCD_IS_* options 93 * 94 */ 95 void glcd_input_state_set(const struct device *dev, uint8_t opt); 96 97 /** 98 * @brief return the input set associated with the device 99 * 100 * @param dev the Grove LCD to get the input features set 101 * 102 * @return the input set associated with the device. 103 */ 104 uint8_t glcd_input_state_get(const struct device *dev); 105 106 /* Defines for the LCD_FUNCTION_SET */ 107 #define GLCD_FS_8BIT_MODE (1 << 4) 108 #define GLCD_FS_ROWS_2 (1 << 3) 109 #define GLCD_FS_ROWS_1 (0 << 3) 110 #define GLCD_FS_DOT_SIZE_BIG (1 << 2) 111 #define GLCD_FS_DOT_SIZE_LITTLE (0 << 2) 112 /* Bits 0, 1 are not defined for this register */ 113 114 /** 115 * @brief Function to set the functional state of the display. 116 * @param dev Pointer to device structure for driver instance. 117 * @param opt A bitmask of GLCD_FS_* options 118 * 119 * @details This function provides the user the ability to change the state 120 * of the display as per needed. Controlling things like the number of rows, 121 * dot size, and text display quality. 122 */ 123 void glcd_function_set(const struct device *dev, uint8_t opt); 124 125 /** 126 * @brief return the function set associated with the device 127 * 128 * @param dev the Grove LCD to get the functions set 129 * 130 * @return the function features set associated with the device. 131 */ 132 uint8_t glcd_function_get(const struct device *dev); 133 134 135 /* Available color selections */ 136 #define GROVE_RGB_WHITE 0 137 #define GROVE_RGB_RED 1 138 #define GROVE_RGB_GREEN 2 139 #define GROVE_RGB_BLUE 3 140 /** 141 * @brief Set LCD background to a predefined color 142 * @param dev Pointer to device structure for driver instance. 143 * @param color One of the predefined color options 144 */ 145 void glcd_color_select(const struct device *dev, uint8_t color); 146 147 148 /** 149 * @brief Set LCD background to custom RGB color value 150 * 151 * @param dev Pointer to device structure for driver instance. 152 * @param r A numeric value for the red color (max is 255) 153 * @param g A numeric value for the green color (max is 255) 154 * @param b A numeric value for the blue color (max is 255) 155 */ 156 void glcd_color_set(const struct device *dev, uint8_t r, uint8_t g, 157 uint8_t b); 158 159 160 /** 161 * @} 162 */ 163 164 #ifdef __cplusplus 165 } 166 #endif 167 168 #endif /* ZEPHYR_INCLUDE_DISPLAY_GROVE_LCD_H_ */ 169