alipay_rom.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /*******************************************************************************
  2. * @file alipay_rom.c
  3. * @author ZS308A Team
  4. * @version V1.0
  5. * @date 2022-12-13
  6. * @brief alipay rom api
  7. *******************************************************************************/
  8. /******************************************************************************/
  9. //includes
  10. /******************************************************************************/
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <string.h>
  14. #include <device.h>
  15. #include <errno.h>
  16. #include <sdfs.h>
  17. #include "alipay_rom.h"
  18. /******************************************************************************/
  19. //constants
  20. /******************************************************************************/
  21. /******************************************************************************/
  22. //variables
  23. /******************************************************************************/
  24. /******************************************************************************/
  25. //functions
  26. /******************************************************************************/
  27. static int sd_load(const char *filename, void *dst)
  28. {
  29. struct sd_file *sdf;
  30. int ret;
  31. sdf = sd_fopen(filename);
  32. if (!sdf) {
  33. return -EINVAL;
  34. }
  35. ret = sd_fread(sdf, dst, sdf->size);
  36. printk("%s size: %d, load: %d\n", filename, sdf->size, ret);
  37. if (ret == sdf->size) {
  38. ret = 0;
  39. } else {
  40. printk("load %s failed!\n", filename);
  41. ret = -EINVAL;
  42. }
  43. sd_fclose(sdf);
  44. return ret;
  45. }
  46. void alipay_rom_init(const alipay_os_api_t *api)
  47. {
  48. // load rom bin
  49. sd_load(CONFIG_ALIPAY_WXPAY_ROM_NAME, (void *)CONFIG_ALIPAY_WXPAY_ROM_BASE);
  50. // init os api
  51. p_alipay_api->init(api);
  52. }
  53. uint8_t pay_lib_init(uint8_t type)
  54. {
  55. return p_alipay_api->pay_lib_init(type);
  56. }
  57. void alipay_send_ble_data_proc(void)
  58. {
  59. p_alipay_api->alipay_send_ble_data_proc();
  60. }
  61. void alipay_master_write_data(uint8_t buf[],uint8_t len)
  62. {
  63. p_alipay_api->alipay_master_write_data(buf, len);
  64. }
  65. alipay_status_e alipay_get_bind_status(uint32_t unix_second,uint8_t is_connected,uint8_t type)
  66. {
  67. return p_alipay_api->alipay_get_bind_status(unix_second, is_connected, type);
  68. }
  69. void alipay_get_bind_code(uint8_t buf[],uint8_t *buf_size)
  70. {
  71. p_alipay_api->alipay_get_bind_code(buf, buf_size);
  72. }
  73. void alipay_get_pay_code128(uint8_t buf[],uint16_t *buf_size)
  74. {
  75. p_alipay_api->alipay_get_pay_code(buf, buf_size);
  76. }
  77. void alipay_get_userinfo(uint8_t nick_name[],uint16_t *name_len,uint8_t login_id[],uint16_t *id_len)
  78. {
  79. p_alipay_api->alipay_get_userinfo(nick_name, name_len, login_id, id_len);
  80. }
  81. void alipay_detect_bind(void)
  82. {
  83. p_alipay_api->alipay_detect_bind();
  84. }
  85. void wxpay_send_ble_data_proc(void)
  86. {
  87. p_alipay_api->wxpay_send_ble_data_proc();
  88. }
  89. void wxpay_master_write_data(uint8_t buf[],uint8_t len)
  90. {
  91. p_alipay_api->wxpay_master_write_data(buf, len);
  92. }
  93. wxpay_status_e wxpay_get_bind_status(uint32_t unix_second,uint8_t is_connected,uint8_t type)
  94. {
  95. return p_alipay_api->wxpay_get_bind_status(unix_second, is_connected, type);
  96. }
  97. void wxpay_get_bind_code(uint8_t buf[],uint8_t *buf_size)
  98. {
  99. p_alipay_api->wxpay_get_bind_code(buf, buf_size);
  100. }
  101. void wxpay_get_pay_code128(uint8_t buf[],uint16_t *buf_size)
  102. {
  103. p_alipay_api->wxpay_get_pay_code(buf, buf_size);
  104. }
  105. void wxpay_get_userinfo(uint8_t nick_name[],uint16_t *name_len,uint8_t login_id[],uint16_t *id_len)
  106. {
  107. p_alipay_api->wxpay_get_userinfo(nick_name, name_len, login_id, id_len);
  108. }
  109. void wxpay_detect_bind(void)
  110. {
  111. p_alipay_api->wxpay_detect_bind();
  112. }