mirror of
https://github.com/openharmony/drivers_framework.git
synced 2026-08-27 10:51:15 -04:00
51bbf255c4
Signed-off-by: YOUR_NAME <guowen24@huawei.com>
113 lines
2.6 KiB
C
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
|