138 lines
3.5 KiB
C
138 lines
3.5 KiB
C
/*----------------------------------------------------------------------------
|
|
* 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
|