123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #ifndef SOFT_TATTU_H
- #define SOFT_TATTU_H
- #include "stdint.h"
- #include "stdbool.h"
- #include "common.h"
- ///////////////////
- /*
- 序列 字段 说明 长度(bytes) 备注
- 1 厂商编号 类型为 short 2 *********
- 2 电池型号编码 类型为 short 2 1
- 3 电池电压 类型为 unsigned short,单位(mv) 2
- 4 充放电电流 类型为 short,单位(10mA)注:正数充电,负数放电 2 10mA
- 5 电池温度 类型为 short,单位(0.1℃) 2 0.1C
- 6 电量百分比 类型为 unsigned short, 单位(%) 2
- 7 循环计数 类型为 unsigned short 单位(次数) 2
- 8 健康状况 类型为 short,单位(%) 2 200-CycleCount/200
- 9 电池 1 电压 类型为 unsigned short,单位(mv) 2
- 10 电池 2 电压 类型为 unsigned short,单位(mv) 2
- 11 电池 3 电压 类型为 unsigned short,单位(mv) 2
- 12 电池 4 电压 类型为 unsigned short,单位(mv) 2
- 13 电池 5 电压 类型为 unsigned short,单位(mv) 2
- 14 电池 6 电压 类型为 unsigned short,单位(mv) 2
- 15 电池 7 电压 类型为 unsigned short,单位(mv) 2
- 16 电池 8 电压 类型为 unsigned short,单位(mv) 2
- 17 电池 9 电压 类型为 unsigned short,单位(mv) 2
- 18 电池 10 电压 类型为 unsigned short,单位(mv) 2
- 19 电池 11 电压 类型为 unsigned short,单位(mv) 2
- 20 电池 12 电压 类型为 unsigned short,单位(mv) 2
- //添加了两节电池电压
- //21 电池 13 电压 类型为 unsigned short,单位(mv) 2
- //22 电池 14 电压 类型为 unsigned short,单位(mv) 2
- 21 电池设计容量 类型为 unsigned short,单位(mAh) 2 0
- 22 电池剩余容量 类型为 unsigned short,单位(mAh) 2 0
- 23/4 错误信息 Uint32 4 每位表示一种错误类型的状态
- //傻逼格式又添加了一个电池序列号
- 25~32 电池序列号 类型为 char 16
- */
- /*
- 错误信息列表 只关心不能解锁的情况 0x0000 0e02
- Bit ID description Note
- Bit0 电池温度过低 1---表示错误发生
- Bit1 电池过温 0---表示没有错误
- Bit2 充电过流
- Bit3 放电过流
- Bit4 总电压欠压
- Bit5 总电压过压
- Bit6 单节压差过大
- Bit7 单节电压过压
- Bit8 单节电压欠压
- Bit9 充电短路
- Bit10 放电短路
- Bit11 电池剩余容量过低
- Bit12 非原装充电器充电
- Bit13….Bit31 保留
- 注: 所有的数据是小端
- */
- #define TATTU_MAXLEN 200
- #pragma pack(1)
- typedef struct
- {
- unsigned char tail_tranid:5;
- unsigned char tail_toggle:1;
- unsigned char tail_end :1;
- unsigned char tail_start :1;
- }_TAIL_BYTE;
- #pragma pack()
- #pragma pack(1)
- typedef struct
- {
- //unsigned short def_info[26]; //tattu
- unsigned short tattu_company;
- unsigned short tattu_type;
- unsigned short tattu_volt;
- short tattu_cur;
- unsigned short tattu_temp;
- unsigned short tattu_perc;
- unsigned short tattu_cycle;
- unsigned short tattu_health;
- unsigned short tattu_v1;
- unsigned short tattu_v2;
- unsigned short tattu_v3;
- unsigned short tattu_v4;
- unsigned short tattu_v5;
- unsigned short tattu_v6;
- unsigned short tattu_v7;
- unsigned short tattu_v8;
- unsigned short tattu_v9;
- unsigned short tattu_v10;
- unsigned short tattu_v11;
- unsigned short tattu_v12;
- unsigned short tattu_v13;
- unsigned short tattu_v14;
- unsigned short tattu_descapa;
- unsigned short tattu_recapa;
- unsigned int tattu_err;
- unsigned char tuattu_id[16];
-
- unsigned short tattu_cnum; //tattu
- }_TATTU_INFO;
- #pragma pack()
- //extern _TATTU_INFO ttu_inf;
- #pragma pack(1)
- typedef struct {
- uint32_t deviceCanID;
- unsigned char Tattu_recv_buf[TATTU_MAXLEN];
- Connect_check Tattu_Link;
-
- short Tattu_recv_index;
- //获取到起始标志位
- bool Tattu_get_s;
- _TAIL_BYTE ttu_tailbyte;
-
- _TATTU_INFO ttu_inf;
- }_TATTU_DEVICE;
- #pragma pack()
- extern _TATTU_DEVICE tattu_device1, tattu_device2;
- extern comp_status tattu_link_status;
- void TattuCanRecvHookFunction(uint32_t ttuCanID, uint8_t data[], uint8_t len);
- extern uint16_t CCITT_CRC16;
- void CCITT_CRC16Init(uint8_t const *bytes, uint16_t len);
- void CCITT_CRC_ARRAY(uint8_t const * bytes, uint16_t len);
- #endif
|