hpm_ft5406.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. * Copyright (c) 2021 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #include "hpm_ft5406.h"
  8. hpm_stat_t ft5406_read_register(ft5406_context_t *context, uint8_t reg, uint8_t *buf)
  9. {
  10. return i2c_master_address_read(context->ptr, FT5406_I2C_ADDR, &reg, 1, buf, 1);
  11. }
  12. hpm_stat_t ft5406_write_register(ft5406_context_t *context, uint8_t reg, uint8_t val)
  13. {
  14. return i2c_master_address_write(context->ptr, FT5406_I2C_ADDR, &reg, 1, &val, 1);
  15. }
  16. hpm_stat_t ft5406_set_mode(ft5406_context_t *context, uint8_t mode)
  17. {
  18. return ft5406_write_register(context, FT5406_DEVICE_MODE, 1);
  19. }
  20. hpm_stat_t ft5406_init(ft5406_context_t *context)
  21. {
  22. return ft5406_set_mode(context, FT5406_DEVICE_MODE_NORMAL);
  23. }
  24. hpm_stat_t ft5406_get_sys_info(ft5406_context_t *context, ft5406_sys_info_t *info)
  25. {
  26. hpm_stat_t stat = status_success;
  27. uint8_t reg_addr = FT5406_DEVICE_MODE;
  28. stat = ft5406_set_mode(context, FT5406_DEVICE_MODE_SYS_INFO);
  29. if (stat != status_success) {
  30. return stat;
  31. }
  32. return i2c_master_address_read(context->ptr, FT5406_I2C_ADDR, &reg_addr, 1, (uint8_t *)info, sizeof(ft5406_sys_info_t));
  33. }
  34. hpm_stat_t ft5406_read_data(ft5406_context_t *context, uint8_t addr, uint8_t *buf, uint32_t size)
  35. {
  36. return i2c_master_address_read(context->ptr, FT5406_I2C_ADDR, &addr, 1, buf, size);
  37. }
  38. hpm_stat_t ft5406_read_touch_data(ft5406_context_t *context, ft5406_touch_data_t *touch_data)
  39. {
  40. return ft5406_read_data(context, FT5406_GEST_ID, (uint8_t *)touch_data, sizeof(ft5406_touch_data_t));
  41. }