/*---------------------------------------------------------------------------- * Copyright (c) TJD Technologies Co., Ltd. 2024. All rights reserved. * * Description: ft6146_touch1.h * * Author: luziquan@ss-tjd.com * * Create: 2024-04-18 *--------------------------------------------------------------------------*/ #ifndef TP_DRV_FT6146_H #define TP_DRV_FT6146_H #include "soc_osal.h" #include "touch_screen_def.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /* ft6146 definitions */ #define TP_FIRMWARE_VERSION 0xA6 /* 版本 */ #define TP_FIRMWARE_VERSION_LEN 2 #define FT6146_DEVICE_MODE 0X00 /* 模式控制寄存器 */ #define FT6146_STATUS 0x02 /* 触摸状态寄存器 */ #define FT6146_TP_REG_X1 0x03 /* 第一个触摸点数据地址 */ #define FT6146_INTC_MODE 0xA4 /* 中断模式控制寄存器 */ #define FT6146_THGROUP 0x80 /* 触摸有效值设置寄存器 */ #define FT6146_PERIODACTIVE 0x88 /* 激活状态周期设置寄存器 */ #define FT6146_POWER_MODE 0xA5 /* 电源管理设置 */ #define FT6146_ESD_CHECK 0x91 /* ESD检测设置 */ #define FT6146_REG_LEN 1 #define TP_DATA_LEN 1 #define TP_CHIP_ID 0x6456 #define TP_CHIP_ID_HIGH 0xA3 /* 芯片ID */ #define TP_CHIP_ID_LOW 0x9F /* 芯片ID */ #define TP_CHIP_ID_LEN 2 #define TP_RAWDATA 0x80 /* 触摸检测阈值 */ #define FT6146_POINT1_INDEX 0 #define FT6146_MAX_SUPPORTED_FINGER_NUM 1 #define FT6146_POINTINFO_LEN 4 #define FT6146_TOUCHINFO_LEN (FT6146_POINTINFO_LEN * FT6146_MAX_SUPPORTED_FINGER_NUM) /* max wait time */ #define FT6146_OPERATER_MUTEX_WAIT_TIME 3000 /* operater tp mutex timeout ms */ #define TP_POWERON_DELAY 100 #define TP_POWEROFF_DELAY 100 #define TP_RESETHIGH_DELAY 20 #define TP_RESETLOW_DELAY 100 #define TP_RESET_DELAY 300 #define TP_INIT_RETRY_TIMERS 3 #define FT6146_REGDATA_SHIFT 8 #define FT6146_GENERAL_DELAY_5 5 #define FT6146_GENERAL_DELAY_10 10 #define FT6146_GENERAL_RETRY_4 4 #define FT6146_EVENT_OFFSET 0 #define FT6146_XH_OFFSET 0 #define FT6146_XL_OFFSET 1 #define FT6146_YH_OFFSET 2 #define FT6146_YL_OFFSET 3 /* define gesture macro */ #define FT6146_GESTURE_WAKEUP 0 /* host peripheral typedef */ // typedef ext_errno (*tp_irq_callback)(void); /* FT6146 driver typedef */ enum FT6146_POWER_MODE_ENUM { WORK_MODE = 0X00, MONITOR_MODE = 0X01, SLEEP_MODE = 0X03 }; typedef enum { PRESS_DOWN = 0x00, LIFT_UP = 0x40, CONTACT = 0x80, NO_EVENT = 0xC0, } ft6146_event_status; typedef enum { FT6146_NOT_READY = 0, FT6146_READY, } ft6146_device_status; typedef enum { FT6146_GESTURE_NONE = 0, FT6146_GESTURE_SIGNAL_CLICK = 1, FT6146_GESTURE_DOUBLE_CLICK = 2, FT6146_GESTURE_SLIDE_UP = 4, FT6146_GESTURE_SLIDE_DOWN = 5, } ft6146_gesture_event; typedef struct { uint16_t chip_id; uint16_t firmware_version; osal_mutex ops_mux; bool fw_upgrade_flag; bool gesture_wakeup; uint8_t work_status; ft6146_device_status chip_status; input_event_info touch_msg; uint32_t tp_event; } ft6146_drv_data; ext_errno ft6146_irq_callback(uint8_t *data_buf, uint8_t data_len); ext_errno ft6146_init(void); ext_errno ft6146_deinit(void); ext_errno ft6146_resume(void); ext_errno ft6146_suspend(void); ext_errno ft6146_sleep(void); ext_errno ft6146_set_power_mode(uint8_t power_mode); ext_errno ft6146_get_rawdata(uint8_t *ret_buf); ext_errno ft6146_get_chip_id(uint16_t *ret_buf); ext_errno ft6146_get_version(uint16_t *ret_buf); int fts_fwupg_auto_upgrade(void); #ifdef __cplusplus #if __cplusplus } #endif #endif #endif