Line data Source code
1 1 : /* 2 : * Copyright (c) 2020 Hubert Miś 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : /** 8 : * @file 9 : * @brief FT8XX coprocessor functions 10 : */ 11 : 12 : #ifndef ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_COPRO_H_ 13 : #define ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_COPRO_H_ 14 : 15 : #include <stdint.h> 16 : 17 : #ifdef __cplusplus 18 : extern "C" { 19 : #endif 20 : 21 : /** 22 : * @brief FT8xx co-processor engine functions 23 : * @defgroup ft8xx_copro FT8xx co-processor 24 : * @ingroup ft8xx_interface 25 : * @{ 26 : */ 27 : 28 : /** Co-processor widget is drawn in 3D effect */ 29 1 : #define FT8XX_OPT_3D 0 30 : /** Co-processor option to decode the JPEG image to RGB565 format */ 31 1 : #define FT8XX_OPT_RGB565 0 32 : /** Co-processor option to decode the JPEG image to L8 format, i.e., monochrome */ 33 1 : #define FT8XX_OPT_MONO 1 34 : /** No display list commands generated for bitmap decoded from JPEG image */ 35 1 : #define FT8XX_OPT_NODL 2 36 : /** Co-processor widget is drawn without 3D effect */ 37 1 : #define FT8XX_OPT_FLAT 256 38 : /** The number is treated as 32 bit signed integer */ 39 1 : #define FT8XX_OPT_SIGNED 256 40 : /** Co-processor widget centers horizontally */ 41 1 : #define FT8XX_OPT_CENTERX 512 42 : /** Co-processor widget centers vertically */ 43 1 : #define FT8XX_OPT_CENTERY 1024 44 : /** Co-processor widget centers horizontally and vertically */ 45 1 : #define FT8XX_OPT_CENTER 1536 46 : /** The label on the Coprocessor widget is right justified */ 47 1 : #define FT8XX_OPT_RIGHTX 2048 48 : /** Co-processor widget has no background drawn */ 49 1 : #define FT8XX_OPT_NOBACK 4096 50 : /** Co-processor clock widget is drawn without hour ticks. 51 : * Gauge widget is drawn without major and minor ticks. 52 : */ 53 1 : #define FT8XX_OPT_NOTICKS 8192 54 : /** Co-processor clock widget is drawn without hour and minutes hands, 55 : * only seconds hand is drawn 56 : */ 57 1 : #define FT8XX_OPT_NOHM 16384 58 : /** The Co-processor gauge has no pointer */ 59 1 : #define FT8XX_OPT_NOPOINTER 16384 60 : /** Co-processor clock widget is drawn without seconds hand */ 61 1 : #define FT8XX_OPT_NOSECS 32768 62 : /** Co-processor clock widget is drawn without hour, minutes and seconds hands */ 63 1 : #define FT8XX_OPT_NOHANDS 49152 64 : 65 : /** 66 : * @brief Execute a display list command by co-processor engine 67 : * 68 : * @param cmd Display list command to execute 69 : */ 70 1 : void ft8xx_copro_cmd(uint32_t cmd); 71 : 72 : /** 73 : * @brief Start a new display list 74 : */ 75 1 : void ft8xx_copro_cmd_dlstart(void); 76 : 77 : /** 78 : * @brief Swap the current display list 79 : */ 80 1 : void ft8xx_copro_cmd_swap(void); 81 : 82 : /** 83 : * @brief Draw text 84 : * 85 : * By default (@p x, @p y) is the top-left pixel of the text and the value of 86 : * @p options is zero. @ref FT8XX_OPT_CENTERX centers the text horizontally, 87 : * @ref FT8XX_OPT_CENTERY centers it vertically. @ref FT8XX_OPT_CENTER centers 88 : * the text in both directions. @ref FT8XX_OPT_RIGHTX right-justifies the text, 89 : * so that the @p x is the rightmost pixel. 90 : * 91 : * @param x x-coordinate of text base, in pixels 92 : * @param y y-coordinate of text base, in pixels 93 : * @param font Font to use for text, 0-31. 16-31 are ROM fonts 94 : * @param options Options to apply 95 : * @param s Character string to display, terminated with a null character 96 : */ 97 1 : void ft8xx_copro_cmd_text(int16_t x, 98 : int16_t y, 99 : int16_t font, 100 : uint16_t options, 101 : const char *s); 102 : 103 : /** 104 : * @brief Draw a decimal number 105 : * 106 : * By default (@p x, @p y) is the top-left pixel of the text. 107 : * @ref FT8XX_OPT_CENTERX centers the text horizontally, @ref FT8XX_OPT_CENTERY 108 : * centers it vertically. @ref FT8XX_OPT_CENTER centers the text in both 109 : * directions. @ref FT8XX_OPT_RIGHTX right-justifies the text, so that the @p x 110 : * is the rightmost pixel. By default the number is displayed with no leading 111 : * zeroes, but if a width 1-9 is specified in the @p options, then the number 112 : * is padded if necessary with leading zeroes so that it has the given width. 113 : * If @ref FT8XX_OPT_SIGNED is given, the number is treated as signed, and 114 : * prefixed by a minus sign if negative. 115 : * 116 : * @param x x-coordinate of text base, in pixels 117 : * @param y y-coordinate of text base, in pixels 118 : * @param font Font to use for text, 0-31. 16-31 are ROM fonts 119 : * @param options Options to apply 120 : * @param n The number to display. 121 : */ 122 1 : void ft8xx_copro_cmd_number(int16_t x, 123 : int16_t y, 124 : int16_t font, 125 : uint16_t options, 126 : int32_t n); 127 : 128 : /** 129 : * @brief Execute the touch screen calibration routine 130 : * 131 : * The calibration procedure collects three touches from the touch screen, then 132 : * computes and loads an appropriate matrix into REG_TOUCH_TRANSFORM_A-F. To 133 : * use it, create a display list and then use CMD_CALIBRATE. The co-processor 134 : * engine overlays the touch targets on the current display list, gathers the 135 : * calibration input and updates REG_TOUCH_TRANSFORM_A-F. 136 : * 137 : * @param result Calibration result, written with 0 on failure of calibration 138 : */ 139 1 : void ft8xx_copro_cmd_calibrate(uint32_t *result); 140 : 141 : /** 142 : * @} 143 : */ 144 : 145 : #ifdef __cplusplus 146 : } 147 : #endif 148 : 149 : #endif /* ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_COPRO_H_ */