/*
 *
 * Copyright (C) 2012-2021, Samsung Electronics Co., Ltd.
 *
 * StM Touch protocol header file
 */

#ifndef _STM_DRIVER_H_
#define _STM_DRIVER_H_

#include <tee_internal_api.h>
#include "tuiHal.h"
#include "touch_queue.h"


/* 16 byte */
struct stm_ts_event_coordinate {
    uint8_t eid:2;
    uint8_t tid:4;
    uint8_t tchsta:2;
    uint8_t x_11_4;
    uint8_t y_11_4;
    uint8_t y_3_0:4;
    uint8_t x_3_0:4;
    uint8_t major;
    uint8_t minor;
    uint8_t z:6;
    uint8_t ttype_3_2:2;
    uint8_t left_event:5;
    uint8_t max_energy:1;
    uint8_t ttype_1_0:2;
    uint8_t noise_level;
    uint8_t max_strength;
    uint8_t hover_id_num:4;
    uint8_t reserved10:4;
    uint8_t reserved11;
    uint8_t reserved12;
    uint8_t reserved13;
    uint8_t reserved14;
    uint8_t reserved15;
} __attribute__ ((packed));

/* 16 byte */
struct stm_ts_event_status {
    uint8_t eid:2;
    uint8_t stype:4;
    uint8_t sf:2;
    uint8_t status_id;
    uint8_t status_data_1;
    uint8_t status_data_2;
    uint8_t status_data_3;
    uint8_t status_data_4;
    uint8_t status_data_5;
    uint8_t left_event_4_0:5;
    uint8_t max_energy:1;
    uint8_t reserved:2;
    uint8_t reserved_8;
    uint8_t reserved_9;
    uint8_t reserved_10;
    uint8_t reserved_11;
    uint8_t reserved_12;
    uint8_t reserved_13;
    uint8_t reserved_14;
    uint8_t reserved_15;
} __attribute__ ((packed));

struct stm_ts_info {
    unsigned int initialized;
    unsigned int max_x;
    unsigned int max_y;
    unsigned int width;
    unsigned int height;
};

extern struct stm_ts_info ts_data;

TEE_Result stm_process(void);
TEE_Result stm_close(void);
TEE_Result stm_open(uint32_t width, uint32_t height);
TEE_Result stm_get_info(drTouchInfo_ptr touchSize);

#endif /* _STM_DRIVER_H_ */
