1 /* 2 * Copyright (c) 2020 Hubert Miś 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 /** 8 * @file 9 * @brief FT8XX public API 10 */ 11 12 #ifndef ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_H_ 13 #define ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_H_ 14 15 #include <stdint.h> 16 17 #ifdef __cplusplus 18 extern "C" { 19 #endif 20 21 /** 22 * @brief FT8xx driver public APIs 23 * @defgroup ft8xx_interface FT8xx driver APIs 24 * @ingroup misc_interfaces 25 * @{ 26 */ 27 28 /** 29 * @struct ft8xx_touch_transform 30 * @brief Structure holding touchscreen calibration data 31 * 32 * The content of this structure is filled by ft8xx_calibrate(). 33 */ 34 struct ft8xx_touch_transform { 35 uint32_t a; 36 uint32_t b; 37 uint32_t c; 38 uint32_t d; 39 uint32_t e; 40 uint32_t f; 41 }; 42 43 /** 44 * @typedef ft8xx_int_callback 45 * @brief Callback API to inform API user that FT8xx triggered interrupt 46 * 47 * This callback is called from IRQ context. 48 */ 49 typedef void (*ft8xx_int_callback)(void); 50 51 /** 52 * @brief Calibrate touchscreen 53 * 54 * Run touchscreen calibration procedure that collects three touches from touch 55 * screen. Computed calibration result is automatically applied to the 56 * touchscreen processing and returned with @p data. 57 * 58 * The content of @p data may be stored and used after reset in 59 * ft8xx_touch_transform_set() to avoid calibrating touchscreen after each 60 * device reset. 61 * 62 * @param data Pointer to touchscreen transform structure to populate 63 */ 64 void ft8xx_calibrate(struct ft8xx_touch_transform *data); 65 66 /** 67 * @brief Set touchscreen calibration data 68 * 69 * Apply given touchscreen transform data to the touchscreen processing. 70 * Data is to be obtained from calibration procedure started with 71 * ft8xx_calibrate(). 72 * 73 * @param data Pointer to touchscreen transform structure to apply 74 */ 75 void ft8xx_touch_transform_set(const struct ft8xx_touch_transform *data); 76 77 /** 78 * @brief Get tag of recently touched element 79 * 80 * @return Tag value 0-255 of recently touched element 81 */ 82 int ft8xx_get_touch_tag(void); 83 84 /** 85 * @brief Set callback executed when FT8xx triggers interrupt 86 * 87 * This function configures FT8xx to trigger interrupt when touch event changes 88 * tag value. 89 * 90 * When touch event changes tag value, FT8xx activates INT line. The line is 91 * kept active until ft8xx_get_touch_tag() is called. It results in single 92 * execution of @p callback until ft8xx_get_touch_tag() is called. 93 * 94 * @param callback Pointer to function called when FT8xx triggers interrupt 95 */ 96 void ft8xx_register_int(ft8xx_int_callback callback); 97 98 /** 99 * @} 100 */ 101 102 #ifdef __cplusplus 103 } 104 #endif 105 106 #endif /* ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_H_ */ 107