ft6x46_ctrl_attr g_ctrl_attr;
touch_callback g_ft6x46_callback = NULL;
+static uint8_t g_tp_recv_buf[FT6X46_INPUT_SIZE] = {0};
+
static void ft6x46_gpio_isr_handle(pin_t pin, uintptr_t param)
{
unused(pin);
errcode_t ret;
uint32_t retry;
i2c_data_t data;
- //uint8_t tp_reg_addr[FT6X46_REG_BYTE_LEN];
+
ret = tp_i2c_rd_wr_param_check(data_buf, data_len);
if (ret != 0) {
return ret;
}
- memset_s(data_buf, data_len, 0, data_len);
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX0] = reg_addr & 0xff;
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX1] = (reg_addr >> OFFSET_8_BITS) & 0xff;
-
- data.send_buf = ®_addr;
+ if (memset_s(g_tp_recv_buf, data_len, 0, data_len) != EOK) {
+ tp_err("tp read buff set fail! ret=0x%x", ret);
+ return EXT_ERR_FAILURE;
+ }
+
+ data.send_buf = ®_addr;
data.send_len = FT6X46_CMD_SEND_LEN;
- data.receive_buf = data_buf;
+ data.receive_buf = g_tp_recv_buf;
data.receive_len = data_len;
for (retry = 0; retry < FT6X46_I2C_TIME_MAX; retry++) {
tp_err("tp data read fail! ret=0x%x", ret);
return ret;
}
-
+ ret = (uint32_t)memcpy_s(data_buf, data_len, g_tp_recv_buf, data_len);
+ if (ret != EOK) {
+ tp_err("tp data buf content copy fail! ret=0x%x", ret);
+ return ret;
+ }
return EXT_ERR_SUCCESS;
}
ret = (uint32_t)memcpy_s(write_data + sizeof(uint8_t), send_len - sizeof(uint8_t), data_buf, data_len);
if (ret != EOK) {
tp_err("tp send_buf content copy fail! ret=0x%x", ret);
+ osal_kfree(write_data);
return ret;
}
}
if (ret != EXT_ERR_SUCCESS) {
tp_err("tp data write fail! ret=0x%x", ret);
+ osal_kfree(write_data);
return ret;
}
- tp_mem_free(write_data);
+ osal_kfree(write_data);
return EXT_ERR_SUCCESS;
}
ret = (uint32_t)memcpy_s(write_data + sizeof(uint8_t), send_len - sizeof(uint8_t), data_buf, data_len);
if (ret != EOK) {
tp_err("tp send_buf content copy fail! ret=0x%x", ret);
+ osal_kfree(write_data);
return ret;
}
}
if (ret != EXT_ERR_SUCCESS) {
tp_err("tp data write fail! ret=0x%x", ret);
- tp_mem_free(write_data);
+ osal_kfree(write_data);
return ret;
}
- tp_mem_free(write_data);
+ osal_kfree(write_data);
return EXT_ERR_SUCCESS;
}