| /* |
| * |
| ************************************************************************** |
| ** STMicroelectronics ** |
| ************************************************************************** |
| ** [email protected] ** |
| ************************************************************************** |
| * * |
| * FTS functions for getting frames * |
| * * |
| ************************************************************************** |
| ************************************************************************** |
| * |
| */ |
| |
| /*! |
| * \file ftsFrame.h |
| * \brief Contains all the definitions and structs to work with frames |
| */ |
| |
| |
| #ifndef FTS_FRAME_H |
| #define FTS_FRAME_H |
| |
| #include "ftsSoftware.h" |
| #include "ftsCore.h" |
| |
| |
| |
| /* Number of data bytes for each node */ |
| #define BYTES_PER_NODE 2 /* /< number of data bytes for each node |
| * */ |
| |
| |
| #define RETRY_FRAME_DATA_READ 2 /* /< max number of attempts to read a |
| * frame */ |
| #define SYNCFRAME_DATA_HEADER (DATA_HEADER + 12) /* /< number of bytes of |
| * Sync Frame Header */ |
| |
| /** |
| * Possible types of MS frames |
| */ |
| typedef enum { |
| MS_RAW = 0, /* /< Mutual Sense Raw Frame */ |
| MS_FILTER = 1, /* /< Mutual Sense Filtered Frame */ |
| MS_STRENGTH = 2, /* /< Mutual Sense Strength Frame (Baseline-Raw) |
| * */ |
| MS_BASELINE = 3, /* /< Mutual Sense Baseline Frame */ |
| MS_KEY_RAW = 4, /* /< Mutual Sense Key Raw Frame */ |
| MS_KEY_FILTER = 5, /* /< Mutual Sense Key Filter Frame */ |
| MS_KEY_STRENGTH = 6, /* /< Mutual Sense Key Strength Frame |
| * (Baseline-Raw) */ |
| MS_KEY_BASELINE = 7, /* /< Mutual Sense Key Baseline Frame */ |
| FRC_RAW = 8, /* /< Force Raw Frame */ |
| FRC_FILTER = 9, /* /< Force Filtered Frame */ |
| FRC_STRENGTH = 10, /* /< Force Strength Frame (Baseline-Raw) */ |
| FRC_BASELINE = 11 /* /< Force Baseline Frame */ |
| } MSFrameType; |
| |
| |
| /** |
| * Possible types of SS frames |
| */ |
| typedef enum { |
| SS_RAW = 0, /* /< Self Sense Raw Frame */ |
| SS_FILTER = 1, /* /< Self Sense Filtered Frame */ |
| SS_STRENGTH = 2, /* /< Self Sense Strength Frame (Baseline-Raw) |
| * */ |
| SS_BASELINE = 3, /* /< Self Sense Baseline Frame */ |
| SS_HVR_RAW = 4, /* /< Self Sense Hover Raw Frame */ |
| SS_HVR_FILTER = 5, /* /< Self Sense Hover Filter Frame */ |
| SS_HVR_STRENGTH = 6, /* /< Self Sense Hover Strength Frame |
| * (Baseline-Raw) */ |
| SS_HVR_BASELINE = 7, /* /< Self Sense Hover Baseline Frame */ |
| SS_PRX_RAW = 8, /* /< Self Sense Proximity Raw Frame */ |
| SS_PRX_FILTER = 9, /* /< Self Sense Proximity Filtered Frame */ |
| SS_PRX_STRENGTH = 10, /* /< Self Sense Proximity Strength Frame |
| * (Baseline-Raw) */ |
| SS_PRX_BASELINE = 11, /* /< Self Sense Proximity Baseline Frame */ |
| |
| SS_DETECT_RAW = 12, /* /< Self Sense Detect Raw Frame */ |
| SS_DETECT_FILTER = 13, /* /< Self Sense Detect Filter Frame */ |
| SS_DETECT_STRENGTH = 14, /* /< Self Sense Detect Strength Frame */ |
| SS_DETECT_BASELINE = 15 /* /< Self Sense Detect Baseline Frame */ |
| } SSFrameType; |
| |
| |
| /** |
| * Struct which contains the data of a MS Frame |
| */ |
| typedef struct { |
| DataHeader header; /* /< Header which contain basic info of the |
| * frame */ |
| int16_t *node_data; /* /< Data of the frame */ |
| int node_data_size; /* /< Dimension of the data of the frame */ |
| } MutualSenseFrame; |
| |
| /** |
| * Struct which contains the data of a SS Frame |
| */ |
| typedef struct { |
| DataHeader header; /* /< Header which contain basic info of the |
| * frame */ |
| int16_t *force_data; /* /< Force Channels Data */ |
| int16_t *sense_data; /* /< Sense Channels Data */ |
| } SelfSenseFrame; |
| |
| |
| int getChannelsLength(struct fts_ts_info *info); |
| int getFrameData(struct fts_ts_info *info, u16 address, int size, |
| short *frame); |
| int getSenseLen(struct fts_ts_info *info); |
| int getForceLen(struct fts_ts_info *info); |
| int getMSFrame3(struct fts_ts_info *info, MSFrameType type, |
| MutualSenseFrame *frame); |
| int getSSFrame3(struct fts_ts_info *info, SSFrameType type, |
| SelfSenseFrame *frame); |
| int readSyncDataHeader(struct fts_ts_info *info, u8 type, DataHeader *msHeader, DataHeader *ssHeader, |
| u64 *address); |
| int getSyncFrame(struct fts_ts_info *info, u8 type, MutualSenseFrame *msFrame, |
| SelfSenseFrame *ssFrame); |
| #endif |