1 /*! 2 * @file tsc_types.h 3 * 4 * @brief This file contains all general structures definition. 5 * 6 * @version V1.0.1 7 * 8 * @date 2022-09-20 9 * 10 * @attention 11 * 12 * Copyright (C) 2020-2022 Geehy Semiconductor 13 * 14 * You may not use this file except in compliance with the 15 * GEEHY COPYRIGHT NOTICE (GEEHY SOFTWARE PACKAGE LICENSE). 16 * 17 * The program is only for reference, which is distributed in the hope 18 * that it will be useful and instructional for customers to develop 19 * their software. Unless required by applicable law or agreed to in 20 * writing, the program is distributed on an "AS IS" BASIS, WITHOUT 21 * ANY WARRANTY OR CONDITIONS OF ANY KIND, either express or implied. 22 * See the GEEHY SOFTWARE PACKAGE LICENSE for the governing permissions 23 * and limitations under the License. 24 */ 25 26 /* Define to prevent recursive inclusion */ 27 #ifndef __TSC_TYPES_H 28 #define __TSC_TYPES_H 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 /** @addtogroup TSC_Driver_Library TSC Driver Library 35 @{ 36 */ 37 38 /** @addtogroup TSC_Types_Driver TSC Types Driver 39 @{ 40 */ 41 42 /** @defgroup TSC_Types_Macros Macros 43 @{ 44 */ 45 46 #define TSC_ACQ_STATUS_ERROR_MASK (0x02) /*!< Associated to TSC_ACQ_STATUS_T */ 47 48 #define TSC_OBJ_STATUS_ACQ_MASK (0x01) /*!< Associated to TSC_OBJ_STATUS_T */ 49 #define TSC_OBJ_STATUS_BURST_MASK (0x02) /*!< Associated to TSC_OBJ_STATUS_T */ 50 51 52 #define TSC_STATE_ERROR_BIT_MASK (0x80) /*!< Associated to TSC_STATEMASK_T */ 53 #define TSC_STATE_OFF_BIT_MASK (0x40) /*!< Associated to TSC_STATEMASK_T */ 54 #define TSC_STATE_DEBOUNCE_BIT_MASK (0x20) /*!< Associated to TSC_STATEMASK_T */ 55 #define TSC_STATE_CALIB_BIT_MASK (0x10) /*!< Associated to TSC_STATEMASK_T */ 56 #define TSC_STATE_TOUCH_BIT_MASK (0x08) /*!< Associated to TSC_STATEMASK_T */ 57 #define TSC_STATE_DETECT_BIT_MASK (0x04) /*!< Associated to TSC_STATEMASK_T */ 58 #define TSC_STATE_PROX_BIT_MASK (0x02) /*!< Associated to TSC_STATEMASK_T */ 59 #define TSC_STATE_RELEASE_BIT_MASK (0x01) /*!< Associated to TSC_STATEMASK_T */ 60 61 /**@} end of group TSC_Types_Macros */ 62 63 /** @defgroup TSC_Types_Enumerations Enumerations 64 @{ 65 */ 66 67 /** 68 * @brief Generic Boolean status 69 */ 70 typedef enum 71 { 72 TSC_FALSE = 0, /*!< A False value */ 73 TSC_TRUE = 1 /*!< A True value */ 74 } TSC_BOOL_T; 75 76 /** 77 * @brief Generic status returned by functions 78 */ 79 typedef enum 80 { 81 TSC_STATUS_OK = 0, /*!< The function has been executed correctly */ 82 TSC_STATUS_BUSY = 1, /*!< The function is in a Busy state */ 83 TSC_STATUS_ERROR = 2 /*!< The function has been executed not correctly */ 84 } TSC_STATUS_T; 85 86 /** 87 * @brief DataReady status : 1 bit 88 * Used by acquisition to indicate if a new measurement is ready or not. 89 */ 90 typedef enum 91 { 92 TSC_DATA_NOT_READY = 0, /*!< No new measurement or measurement treated */ 93 TSC_DATA_READY = 1 /*!< A new measurement is ready */ 94 } TSC_DATA_T; 95 96 /** 97 * @brief State change status 98 */ 99 typedef enum 100 { 101 TSC_STATE_NOT_CHANGED = 0, /*!< The object has the same state */ 102 TSC_STATE_CHANGED = 1 /*!< The object has changed of state */ 103 } TSC_STATE_T; 104 105 106 /** 107 * @brief Acquisition status 108 */ 109 typedef enum 110 { 111 TSC_ACQ_STATUS_OK = 0, /*!< The acquisition is correct */ 112 TSC_ACQ_STATUS_NOISE = 1, /*!< Noise detected during the acquisition */ 113 TSC_ACQ_STATUS_ERROR_MIN = TSC_ACQ_STATUS_ERROR_MASK, /*!< The measure is below the minimum threshold */ 114 TSC_ACQ_STATUS_ERROR_MAX = (TSC_ACQ_STATUS_ERROR_MASK | 0x01) /*!< The measure is above the maximum threshold */ 115 } TSC_ACQ_STATUS_T; 116 117 /** 118 * @brief Block status 119 */ 120 typedef enum 121 { 122 TSC_BLOCK_STATUS_DISABLED = 0, /*!< The block is disabled */ 123 TSC_BLOCK_STATUS_ENABLED = 1 /*!< The block is enabled */ 124 } TSC_BLOCK_STATUS_T; 125 126 /** 127 * @brief Zone status 128 */ 129 typedef enum 130 { 131 TSC_ZONE_STATUS_DISABLED = 0, /*!< The zone is disabled */ 132 TSC_ZONE_STATUS_ENABLED = 1 /*!< The zone is enabled */ 133 } TSC_ZONE_STATUS_T; 134 135 /** 136 * @brief Object status 137 */ 138 typedef enum 139 { 140 TSC_OBJ_STATUS_OFF = 0, /*!< No burst and no acquisition */ 141 TSC_OBJ_STATUS_BURST_ONLY = TSC_OBJ_STATUS_BURST_MASK, /*!< Burst only */ 142 TSC_OBJ_STATUS_ON = (TSC_OBJ_STATUS_BURST_MASK | TSC_OBJ_STATUS_ACQ_MASK) /*!< Burst and acquisition */ 143 } TSC_OBJ_STATUS_T; 144 145 /** 146 * @brief Object state masks 147 */ 148 typedef enum 149 { 150 /* Calibration states */ 151 TSC_STATEMASK_CALIB = TSC_STATE_CALIB_BIT_MASK, /*!< 0x10 */ 152 TSC_STATEMASK_DEB_CALIB = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_CALIB_BIT_MASK), /*!< 0x30 */ 153 /* Release states */ 154 TSC_STATEMASK_RELEASE = TSC_STATE_RELEASE_BIT_MASK, /*!< 0x01 */ 155 TSC_STATEMASK_DEB_RELEASE_PROX = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_RELEASE_BIT_MASK | TSC_STATE_PROX_BIT_MASK), /*!< 0x23 */ 156 TSC_STATEMASK_DEB_RELEASE_DETECT = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_RELEASE_BIT_MASK | TSC_STATE_DETECT_BIT_MASK), /*!< 0x25 */ 157 TSC_STATEMASK_DEB_RELEASE_TOUCH = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_RELEASE_BIT_MASK | TSC_STATE_TOUCH_BIT_MASK), /*!< 0x29 */ 158 /* Proximity states */ 159 TSC_STATEMASK_PROX = TSC_STATE_PROX_BIT_MASK, /*!< 0x02 */ 160 TSC_STATEMASK_DEB_PROX = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_PROX_BIT_MASK), /*!< 0x22 */ 161 TSC_STATEMASK_DEB_PROX_DETECT = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_PROX_BIT_MASK | TSC_STATE_DETECT_BIT_MASK), /*!< 0x26 */ 162 TSC_STATEMASK_DEB_PROX_TOUCH = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_PROX_BIT_MASK | TSC_STATE_TOUCH_BIT_MASK), /*!< 0x2A */ 163 /* Detect states */ 164 TSC_STATEMASK_DETECT = TSC_STATE_DETECT_BIT_MASK, /*!< 0x04 */ 165 TSC_STATEMASK_DEB_DETECT = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_DETECT_BIT_MASK), /*!< 0x24 */ 166 /* Touch state */ 167 TSC_STATEMASK_TOUCH = TSC_STATE_TOUCH_BIT_MASK, /*!< 0x08 */ 168 /* Error states */ 169 TSC_STATEMASK_ERROR = TSC_STATE_ERROR_BIT_MASK, /*!< 0x80 */ 170 TSC_STATEMASK_DEB_ERROR_CALIB = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_ERROR_BIT_MASK | TSC_STATE_CALIB_BIT_MASK), /*!< 0xB0 */ 171 TSC_STATEMASK_DEB_ERROR_RELEASE = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_ERROR_BIT_MASK | TSC_STATE_RELEASE_BIT_MASK), /*!< 0xA1 */ 172 TSC_STATEMASK_DEB_ERROR_PROX = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_ERROR_BIT_MASK | TSC_STATE_PROX_BIT_MASK), /*!< 0xA2 */ 173 TSC_STATEMASK_DEB_ERROR_DETECT = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_ERROR_BIT_MASK | TSC_STATE_DETECT_BIT_MASK), /*!< 0xA4 */ 174 TSC_STATEMASK_DEB_ERROR_TOUCH = (TSC_STATE_DEBOUNCE_BIT_MASK | TSC_STATE_ERROR_BIT_MASK | TSC_STATE_TOUCH_BIT_MASK), /*!< 0xA8 */ 175 /* OFF state */ 176 TSC_STATEMASK_OFF = TSC_STATE_OFF_BIT_MASK, /*!< 0x40 */ 177 /* Other states not associated to a state id */ 178 TSC_STATEMASK_ACTIVE = (TSC_STATE_PROX_BIT_MASK | TSC_STATE_DETECT_BIT_MASK | TSC_STATE_TOUCH_BIT_MASK | TSC_STATE_CALIB_BIT_MASK | TSC_STATE_DEBOUNCE_BIT_MASK), /*!< 0x3E */ 179 TSC_STATEMASK_UNKNOWN = 0 /*!< 0x00 */ 180 } TSC_STATEMASK_T; 181 182 /** 183 * @brief Object state identifiers 184 */ 185 typedef enum 186 { 187 /* Calibration states */ 188 TSC_STATEID_CALIB = 0, /*!< 0 - Object is in Calibration */ 189 TSC_STATEID_DEB_CALIB = 1, /*!< 1 - Object is in Debounce Calibration */ 190 /* Release states */ 191 TSC_STATEID_RELEASE = 2, /*!< 2 - Object is released */ 192 TSC_STATEID_DEB_RELEASE_PROX = 3, /*!< 3 - Object is in Debounce Release from Proximity state */ 193 TSC_STATEID_DEB_RELEASE_DETECT = 4, /*!< 4 - Object is in Debounce Release from Detect state */ 194 TSC_STATEID_DEB_RELEASE_TOUCH = 5, /*!< 5 - Object is in Debounce Release from Touch state */ 195 /* Proximity states */ 196 TSC_STATEID_PROX = 6, /*!< 6 - Object is in Proximity */ 197 TSC_STATEID_DEB_PROX = 7, /*!< 7 - Object is in Debounce Proximity from Release state */ 198 TSC_STATEID_DEB_PROX_DETECT = 8, /*!< 8 - Object is in Debounce Proximity from Detect state */ 199 TSC_STATEID_DEB_PROX_TOUCH = 9, /*!< 9 - Object is in Debounce Proximity from Detect state */ 200 /* Detect states */ 201 TSC_STATEID_DETECT = 10, /*!< 10 - Object is in Detect */ 202 TSC_STATEID_DEB_DETECT = 11, /*!< 11 - Object is in Debounce Detect */ 203 /* Touch state */ 204 TSC_STATEID_TOUCH = 12, /*!< 12 - Object is in Touch */ 205 /* Error states */ 206 TSC_STATEID_ERROR = 13, /*!< 13 - Object is in Error */ 207 TSC_STATEID_DEB_ERROR_CALIB = 14, /*!< 14 - Object is in Debounce Error from Calibration */ 208 TSC_STATEID_DEB_ERROR_RELEASE = 15, /*!< 15 - Object is in Debounce Error from Release */ 209 TSC_STATEID_DEB_ERROR_PROX = 16, /*!< 16 - Object is in Debounce Error from Proximity */ 210 TSC_STATEID_DEB_ERROR_DETECT = 17, /*!< 17 - Object is in Debounce Error from Detect */ 211 TSC_STATEID_DEB_ERROR_TOUCH = 18, /*!< 18 - Object is in Debounce Error from Touch */ 212 /* Other states */ 213 TSC_STATEID_OFF = 19 /*!< 19 - Object is OFF (no burst, no acquisition) */ 214 } TSC_STATEID_T; 215 216 /**@} end of group TSC_Types_Enumerations */ 217 218 /** @defgroup TSC_Types_Structures Structures 219 @{ 220 */ 221 222 /** 223 * @brief Object state 224 */ 225 typedef struct 226 { 227 TSC_STATEMASK_T StateMask; /*!< Current state mask */ 228 void(* StateFunc)(void); /*!< Function executed in the state */ 229 } TSC_State_T; 230 231 /** 232 * @brief Touchkey methods 233 */ 234 typedef struct 235 { 236 void(* Config)(void); /*!< Used to configure the TouchKey sensor */ 237 void(* Process)(void); /*!< Used to execute the TouchKey sensor state machine */ 238 } TSC_TouchKeyMethods_T; 239 240 /** 241 * @brief Linear/Rotary methods 242 */ 243 typedef struct 244 { 245 void(* Config)(void); /*!< Used to configure the Linear/Rotary sensor */ 246 void(* Process)(void); /*!< Used to execute the Linear/Rotary sensor state machine */ 247 TSC_STATUS_T(* CalcPosition)(void); /*!< Used to calculate the Linear/Rotary sensor position */ 248 } TSC_LinRotMethods_T; 249 250 /**@} end of group TSC_Types_Structures */ 251 252 /** @defgroup TSC_Types_Variables Variables 253 @{ 254 */ 255 256 /**@} end of group TSC_Types_Variables */ 257 258 /** @defgroup TSC_Types_Functions Functions 259 @{ 260 */ 261 262 /**@} end of group TSC_Types_Functions */ 263 264 #ifdef __cplusplus 265 } 266 #endif 267 268 #endif /* __TSC_TYPES_H */ 269 270 /**@} end of group TSC_Types_Driver */ 271 /**@} end of group TSC_Driver_Library */ 272