2019-10-18 16:39:08 +01:00

88 lines
3.7 KiB
C

/**
******************************************************************************
* @file tsl_object.h
* @author MCD Application Team
* @brief This file contains external declarations of the tsl_object.c file.
******************************************************************************
* @attention
*
* <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
*
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.st.com/software_license_agreement_liberty_v2
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __TSL_OBJECT_H
#define __TSL_OBJECT_H
/* Includes ------------------------------------------------------------------*/
#include "tsl_touchkey.h"
#include "tsl_linrot.h"
/* Exported types ------------------------------------------------------------*/
#define TSL_OBJ_TYPE_TKEY_MASK (0x10) /**< TouchKey object mask */
#define TSL_OBJ_TYPE_LINROT_MASK (0x20) /**< Linear and Rotary objects mask */
#define TSL_OBJ_TYPE_TRACKNAV_MASK (0x40) /**< TrackPad and NaviPad objects mask */
/** Contains all different kinds of sensors.
*/
typedef enum
{
TSL_OBJ_TOUCHKEY = (TSL_OBJ_TYPE_TKEY_MASK + 0), /**< Normal TouchKey */
TSL_OBJ_TOUCHKEYB = (TSL_OBJ_TYPE_TKEY_MASK + 1), /**< Basic TouchKey */
TSL_OBJ_LINEAR = (TSL_OBJ_TYPE_LINROT_MASK + 0), /**< Normal Linear sensor */
TSL_OBJ_LINEARB = (TSL_OBJ_TYPE_LINROT_MASK + 1), /**< Basic Linear sensor */
TSL_OBJ_ROTARY = (TSL_OBJ_TYPE_LINROT_MASK + 2), /**< Normal Rotary sensor */
TSL_OBJ_ROTARYB = (TSL_OBJ_TYPE_LINROT_MASK + 3), /**< Basic Rotary sensor */
TSL_OBJ_TRACKPAD = (TSL_OBJ_TYPE_TRACKNAV_MASK + 0), /**< TrackPad sensor */
TSL_OBJ_NAVIPAD = (TSL_OBJ_TYPE_TRACKNAV_MASK + 1) /**< NaviPad sensor */
} TSL_ObjectType_enum_T;
/** Contains the definition of an Object.
* Variables of this structure type can be placed in RAM or ROM.
*/
typedef struct
{
TSL_ObjectType_enum_T Type; /**< Object type */
void *Elmt; /**< Pointer to the object */
} TSL_Object_T;
/** Contains the definition of a Group of Objects.
* Variables of this structure type must be placed in RAM only.
*/
typedef struct
{
CONST TSL_Object_T *p_Obj; /**< Pointer to the first object */
TSL_tNb_T NbObjects; /**< Number of objects in the group */
TSL_tNb_T StateMask; /**< "OR" of all objects state mask */
TSL_StateChange_enum_T Change; /**< The State is different from the previous one */
TSL_tIndex_T ECS_exec; /**< Flag for the ECS execution */
#if TSLPRM_ECS_DELAY > 0
TSL_tIndex_T ECS_wait; /**< Flag for the ECS delay */
TSL_tTick_ms_T ECS_start_time; /**< Keep the time for the ECS delay */
#endif
} TSL_ObjectGroup_T;
/* Exported functions --------------------------------------------------------*/
void TSL_obj_GroupInit(TSL_ObjectGroup_T *objgrp);
void TSL_obj_GroupProcess(TSL_ObjectGroup_T *objgrp);
void TSL_obj_SetGlobalObj(CONST TSL_Object_T *pobj);
#endif /* __TSL_OBJECT_H */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/