Files
YOUR_NAME 51bbf255c4 Fix Input Issue
Signed-off-by: YOUR_NAME <guowen24@huawei.com>
2021-11-16 08:52:40 +00:00

113 lines
2.6 KiB
C

/*
* Copyright (c) 2020-2021 Huawei Device Co., Ltd.
*
* HDF is dual licensed: you can use it either under the terms of
* the GPL, or the BSD license, at your option.
* See the LICENSE file in the root of this repository for complete details.
*/
#ifndef HDF_TOUCH_H
#define HDF_TOUCH_H
#include <securec.h>
#include "osal_time.h"
#include "hdf_input_device_manager.h"
#include "input_config.h"
#include "input_i2c_ops.h"
#define CHIP_CHECK_RETURN(ret) do { \
if ((ret) != HDF_SUCCESS) { \
return ret; \
} \
} while (0)
#define MAX_FINGERS_NUM 10
#define SELF_TEST_RESULT_LEN 20
#define PWR_TYPE_INDEX 0
#define PWR_STATUS_INDEX 1
#define PWR_DIR_INDEX 2
#define PWR_DELAY_INDEX 3
#define PWR_CELL_LEN 4
typedef enum {
TOUCH_DOWN, // 0
TOUCH_UP, // 1
TOUCH_CONTACT, // 2
} EventType;
typedef enum {
TYPE_UNKNOWN, // 0
TYPE_VCC, // 1
TYPE_VCI, // 2
TYPE_RESET, // 3
TYPE_INT, // 4
} TimingType;
typedef struct {
int32_t x; /* x coordinate */
int32_t y; /* y coordinate */
int32_t pressure;
int32_t trackId; /* touch ID */
int32_t status; /* record every point's status */
bool valid;
} FingerData;
typedef struct {
FingerData fingers[MAX_FINGERS_NUM];
int32_t realPointNum;
int32_t definedEvent; /* touch event: 0-down; 1-up; 2-contact */
OsalTimespec time;
} FrameData;
struct TouchChipDevice;
typedef struct TouchPlatformDriver {
struct HdfDeviceObject *hdfTouchDev;
InputDevice *inputDev;
struct TouchChipDevice *device;
FrameData frameData;
uint32_t devType;
const char *devName;
TouchBoardCfg *boardCfg;
InputI2cClient i2cClient;
struct OsalMutex mutex;
uint32_t pwrStatus;
uint32_t gestureMode;
bool initedFlag;
bool irqStopFlag;
} TouchDriver;
struct TouchChipOps;
typedef struct TouchChipDevice {
TouchDriver *driver;
const char *chipName;
const char *vendorName;
struct TouchChipOps *ops;
TouchChipCfg *chipCfg;
TouchBoardCfg *boardCfg;
} ChipDevice;
struct TouchChipOps {
int32_t (*Init)(ChipDevice *device);
int32_t (*Detect)(ChipDevice *device);
int32_t (*Resume)(ChipDevice *device);
int32_t (*Suspend)(ChipDevice *device);
int32_t (*DataHandle)(ChipDevice *device);
int32_t (*UpdateFirmware)(ChipDevice *device);
void (*SetAbility)(ChipDevice *device);
};
typedef struct {
uint32_t testType;
char testResult[SELF_TEST_RESULT_LEN];
} CapacitanceTestInfo;
typedef struct {
const char *cmdCode;
const char *cmdValue;
} InputExtraCmd;
int32_t RegisterTouchChipDevice(ChipDevice *chipDev);
#endif