#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