charge_box.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #ifndef _CHARGE_BOX_H
  2. #define _CHARGE_BOX_H
  3. #define LEFT_CHANNEL_USER 0x11
  4. #define RIGHT_CHANNEL_USER 0x22
  5. #define NOTFIX_LCHANEL_USER 0x33
  6. #define NOTFIX_RCHANEL_USER 0x44
  7. #define VHOUSE_DISTINGUISH 0xFF //昇生微充电仓
  8. #define VH_DATA_LEN 40
  9. ///昇生微充电仓命令
  10. enum {
  11. VHOUSE_CMD_GET_VBAT = 0x01, //获取电池电量,也可作为开始标志
  12. VHOUSE_CMD_PAIR, //充电仓发起的配对消息
  13. VHOUSE_CMD_GET_TWS_BTADDR, //获取对耳的地址信息
  14. VHOUSE_CMD_CLEAR_PAIR, //清除配对消息
  15. VHOUSE_CMD_PWROFF, //关机消息
  16. VHOUSE_CMD_ERR, //接收消息错误响应
  17. VHOUSE_CMD_SUCCESS, //成功响应
  18. VHOUSE_CMD_CLOSE_WINDOW, //关盖
  19. VHOUSE_CMD_OPEN_WINDOW, //开盖
  20. VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //关盖获取电量包
  21. /// IODM 使用范围 11起 , 29 结束,请勿在此范围添加
  22. VHOUSE_CMD_ENABLE_POPUP = 0x80, //开关广播功能控制
  23. VHOUSE_CMD_CUSTOM_RESV1=0xE0, //客户保留指令
  24. VHOUSE_CMD_GET_EAR_ADDR, //获取耳机地址
  25. VHOUSE_CMD_CUSTOM_RESV_END=0xEF,
  26. VHOUSE_CMD_SYS_RST=0xFF, //系统复位指令
  27. };
  28. typedef struct {
  29. u16 on_cnt;
  30. u16 off_cnt;
  31. u16 on_delay;
  32. u16 off_delay;
  33. #if CHARGE_BOX_OUTBOX_FLIT
  34. u8 on_cnt_filt; //防止有些通信仓在心跳包的时候会临时掉下通信电平
  35. #endif
  36. } inbox_cb_t;
  37. typedef struct {
  38. u8 out2pwr_en; //拿起开机
  39. u8 leakage_sta;
  40. u8 dc_in;
  41. volatile u8 inbox_rtt_check;
  42. } ch_box_cb_t;
  43. typedef struct {
  44. vh_packet_t packet;
  45. u32 ticks;
  46. u32 loc_ticks;
  47. u32 win_ticks;
  48. volatile u8 need_ack; //接收心跳包后5~10ms的时间需要response
  49. volatile u8 ack_dat;
  50. volatile u8 update_ear_flag;
  51. volatile u8 open_win_flag;
  52. bool rem_bat_ok;
  53. bool inbox_sta;
  54. u8 status; //仓的状态: 0->关盖充电 1->开盖状态 2->充满休眠状态
  55. u8 ack_dat_confirm; //仓的声道选择
  56. u8 rx_flag; //接收到数据标志位
  57. u8 cmd3_rx_flag; //兼容旧仓,长按3s接收不到数据的情况
  58. } vhouse_cb_t;
  59. extern ch_box_cb_t chbox_cb;
  60. extern vhouse_cb_t vhouse_cb;
  61. void charge_box_inbox_sta(u8 sta);
  62. void charge_box_update_sta(void);
  63. void charge_box_packet_recv(void);
  64. void charge_box_packet_huart_recv(u8 *buf);
  65. void charge_box_heart_beat_ack(void);
  66. void charge_box_reinit(void);
  67. void charge_box_enter(u8 out_auto_pwron);
  68. void charge_box_ssw_init(void);
  69. void charge_box_init(void);
  70. void charge_box_inbox_chk_init(u16 off_delay, u16 on_delay);
  71. void charge_box_leakage_set(u8 sta, u8 val);
  72. void charge_box_inbox_wakeup_enable(void);
  73. void charge_box_inbox_process(void);
  74. void charge_box_process(void);
  75. u8 charge_box_inbox_check(void);
  76. u8 charge_box_sta(void);
  77. u8 charge_box_popup_is_enable(void);
  78. int charge_box_outbox_stable_check(void);
  79. u32 charge_box_ssw_process(u32 charge_sta);
  80. u8 charge_box_charge_on_process(void);
  81. u8 charge_box_get_charge_box_bat_level(void);
  82. bool charge_box_bat_is_ready(void);
  83. void tws_update_local_addr(uint8_t *address);
  84. void param_vuart_popup_flag_write(u8 data);
  85. void param_vuart_popup_flag_read(void);
  86. #endif