Просмотр исходного кода

新协议返回值调整

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 5 лет назад
Родитель
Сommit
25b5705b6e
2 измененных файлов с 15 добавлено и 4 удалено
  1. 11 2
      Application/app/bms_message.c
  2. 4 2
      Application/app/protocol.h

+ 11 - 2
Application/app/bms_message.c

@@ -76,8 +76,15 @@ void process_bms_message(can_frame_t *frame, int len){
 					bresp.max_temp = measure_value()->pack_temp[i];
 				}
 			}
-			bresp.cycle = soc_get_cycle();
-			bresp.calibrated = (get_soc()->flags & SOC_FLAG_CALIBRATED) != 0;
+			bresp.health = *((uint32_t *)bms_health());
+			stat_cmd_resp_t sresp;
+			sresp.insert = bms_insert;
+			sresp.is_charging = bms_state_get()->charging;
+			sresp.discharger_fet = ml5238_is_discharging();
+			sresp.charger_fet = ml5238_is_charging();
+			sresp.small_power = AUX_VOL_IS_OPEN();
+			sresp.is_balancing = bms_state_get()->pack_balancing;
+			bresp.state = *((uint8_t*)&sresp);
 			data = (uint8_t *)&bresp;
 			data_len = sizeof(bresp);
 			protocol_send_bms_info(frame->head.can_addr, frame->key, data, data_len);
@@ -147,6 +154,8 @@ void process_bms_message(can_frame_t *frame, int len){
 			soc.c_discharger = get_soc()->dischrger_coulomb/36.0f;
 			soc.c_charger = get_soc()->charger_coulomb/36.0f;
 			soc.c_totol = soc_get_cycle();
+			soc.cycle = soc_get_cycle();
+			soc.calibrated = (get_soc()->flags & SOC_FLAG_CALIBRATED) != 0;			
 			data = (uint8_t *)&soc;
 			data_len = sizeof(soc);
 			protocol_send_bms_info(frame->head.can_addr, frame->key, data, data_len);

+ 4 - 2
Application/app/protocol.h

@@ -83,8 +83,8 @@ typedef struct {
 	uint8_t  capacity;
 	uint32_t energy;   //能量,给PS100/200/310/360计算续航里程用
 	int8_t  max_temp;//最高的那个温度
-	uint32_t cycle; //充放电循环次数
-	uint8_t  calibrated;
+	uint32_t health :24;
+	uint32_t state  :8; // stat_cmd_resp_t
 }binfo_cmd_resp_t;
 #pragma pack(pop)
 
@@ -112,6 +112,8 @@ typedef struct {
 	int c_charger;
 	int c_discharger;
 	int   c_totol;
+	uint32_t cycle; //充放电循环次数
+	uint32_t  calibrated;	
 }soc_info_t;
 
 #define CAN_KEY_BMS_TEMPS 0x11 //return int[4]