#ifndef _FINGER_H_
#define _FINGER_H_


#include "stdint.h"
#include "stdbool.h"
#include "string.h"


#define MAX_CAP_CHANNEL_NUM     64  ///< 最大的通道值
#define MAX_YDDS_NUM            8   ///< 最大三维力个数
#define MAX_S_PROX_NUM          8   ///< 最大接近（自电容）数量
#define MAX_M_PROX_NUM          8   ///< 最大接近（互电容）数量

#define USE_PCA                 0   ///< 是否使用pca扩展iic


#define MAX_FINGER              2   ///< 最大可连接手指数量
#define READ_CAP_CYC            20  ///< 读取周期，单位ms

/// 三维力存储结构
typedef struct
{
    float       nf;                 ///< 法向力
    float       tf;                 ///< 切向力
    uint16_t    tfDir;              ///< 切向力方向
}ydds;


/* 三维力数据类型 */
#pragma pack(1)
typedef struct {
    float nf;
    uint32_t nfCap;
    float tf;
    uint32_t tfCap;
    uint16_t tfDir;
    uint32_t prox;
} ydds_com_ts;

typedef struct {
    uint8_t nf;
    uint8_t tf;
    uint16_t tfDir;
} ydds_u8_ts;

typedef struct {
    uint16_t nf;
    uint16_t tf;
    uint16_t tfDir;
} ydds_u16_ts;

typedef struct {
    float nf;
    float tf;
    uint16_t tfDir;
} ydds_float_ts;
#pragma pack()


extern bool fingerInit(bool isUsePca, const uint8_t *pcaIndex);
extern void fingerDeal(void);

#endif
