chargebox.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #ifndef __chargebox_H__
  2. #define __chargebox_H__
  3. #include "typedef.h"
  4. #define DEVICE_EVENT_FROM_CHARGEBOX (('C' << 24) | ('H' << 16) | ('B' << 8) | '\0')
  5. enum {
  6. CMD_COMPLETE,
  7. CMD_RECVDATA,
  8. CMD_RECVBYTE,
  9. };
  10. enum {
  11. MODE_RECVDATA,
  12. MODE_SENDDATA,
  13. };
  14. enum {
  15. EAR_L,
  16. EAR_R,
  17. EAR_MAX,
  18. };
  19. struct chargebox_platform_data {
  20. u32 baudrate;
  21. u32 L_port;
  22. u32 R_port;
  23. void (*init)(const struct chargebox_platform_data *);
  24. void (*open)(u8 l_r, u8 mode);
  25. void (*close)(u8 l_r);
  26. u8(*write)(u8 l_r, u8 *data, u8 len);
  27. void (*set_baud)(u8 l_r, u32 baudrate);
  28. };
  29. /////handshake部分
  30. enum {
  31. HS_CMD0,
  32. HS_CMD1,
  33. HS_CMD2,
  34. HS_CMD3,
  35. };
  36. enum {
  37. HS_DELAY_48M,
  38. HS_DELAY_60M,
  39. HS_DELAY_80M,
  40. HS_DELAY_96M,
  41. HS_DELAY_120M,
  42. HS_DELAY_160M,
  43. HS_DELAY_192M,
  44. HS_DELAY_240M,
  45. };
  46. enum {
  47. HS_DELAY_2US,
  48. HS_DELAY_3US,
  49. HS_DELAY_4US,
  50. HS_DELAY_7US,
  51. HS_DELAY_8US,
  52. HS_DELAY_14US,
  53. HS_DELAY_16US,
  54. };
  55. //自定义指令
  56. enum {
  57. CMD_USER = 0xC0,
  58. /*可添加自定义指令*/
  59. };
  60. struct _hs_hdl {
  61. u32 port0;
  62. u32 port1;
  63. void (*send_delay_us)(u8 us);
  64. };
  65. //handshake
  66. extern void handshake_ctrl_init(struct _hs_hdl *hs);
  67. extern void handshake_send_app(u8 cmd);
  68. extern u8 handshake_check_fast_charge(u32 ms);
  69. //app层使用的接口
  70. extern bool chargebox_api_write_read(u8 l_r, u8 *buf, u8 len, u8 timeout);
  71. extern void chargebox_api_init(const struct chargebox_platform_data *arg);
  72. extern void chargebox_api_uninit(void);
  73. extern void chargebox_api_set_baud(u8 l_r, u32 baudrate);
  74. extern void chargebox_api_shutdown_port(u8 l_r);
  75. extern void chargebox_api_close_port(u8 l_r);
  76. extern void chargebox_api_open_port(u8 l_r);
  77. extern void chargebox_api_reset(void);//左右耳掉线时调用
  78. //协议层api
  79. extern u8 chargebox_get_power(u8 lr);
  80. extern u8 chargebox_send_power_close(u8 lr, u8 power, u8 is_charge, u8 other_power);
  81. extern u8 chargebox_send_power_open(u8 lr, u8 power, u8 is_charge, u8 other_power);
  82. extern u8 chargebox_send_shut_down(u8 lr);
  83. extern u8 chargebox_send_restore_sys(u8 lr);
  84. extern u8 chargebox_send_enter_dut(u8 lr);
  85. extern u8 chargebox_send_close_cid(u8 lr, u8 data);
  86. extern u8 chargebox_delete_tws_addr(u8 lr);
  87. extern u8 chargebox_delete_phone_addr(u8 lr);
  88. extern u8 chargebox_delete_all_addr(u8 lr);
  89. extern u8 chargebox_send_L_or_R(u8 lr);
  90. extern u8 chargebox_exchange_addr(void (*get_addr_cb)(u8 lr, u8 *inbuf), void (*exchange_succ_cb)(void));
  91. #endif