@@ -268,6 +268,30 @@ bool bms_process_can_frame(uint32_t can_id, uint8_t *data8, int len, bool is_ext
268
268
}
269
269
} break ;
270
270
271
+ case CAN_PACKET_BMS_AH_WH_CHG_TOTAL : {
272
+ used_data = true;
273
+
274
+ if (id == m_values .can_id || UTILS_AGE_S (m_values .update_time ) > MAX_CAN_AGE_SEC ) {
275
+ int32_t ind = 0 ;
276
+ m_values .can_id = id ;
277
+ m_values .update_time = chVTGetSystemTimeX ();
278
+ m_values .ah_cnt_chg_total = buffer_get_float32_auto (data8 , & ind );
279
+ m_values .wh_cnt_chg_total = buffer_get_float32_auto (data8 , & ind );
280
+ }
281
+ } break ;
282
+
283
+ case CAN_PACKET_BMS_AH_WH_DIS_TOTAL : {
284
+ used_data = true;
285
+
286
+ if (id == m_values .can_id || UTILS_AGE_S (m_values .update_time ) > MAX_CAN_AGE_SEC ) {
287
+ int32_t ind = 0 ;
288
+ m_values .can_id = id ;
289
+ m_values .update_time = chVTGetSystemTimeX ();
290
+ m_values .ah_cnt_dis_total = buffer_get_float32_auto (data8 , & ind );
291
+ m_values .wh_cnt_dis_total = buffer_get_float32_auto (data8 , & ind );
292
+ }
293
+ } break ;
294
+
271
295
default :
272
296
break ;
273
297
}
@@ -390,6 +414,12 @@ void bms_process_cmd(unsigned char *data, unsigned int len,
390
414
// CAN ID
391
415
send_buffer [ind ++ ] = m_values .can_id ;
392
416
417
+ // Total charge and discharge counters
418
+ buffer_append_float32_auto (send_buffer , m_values .ah_cnt_chg_total , & ind );
419
+ buffer_append_float32_auto (send_buffer , m_values .wh_cnt_chg_total , & ind );
420
+ buffer_append_float32_auto (send_buffer , m_values .ah_cnt_dis_total , & ind );
421
+ buffer_append_float32_auto (send_buffer , m_values .wh_cnt_dis_total , & ind );
422
+
393
423
reply_func (send_buffer , ind );
394
424
} break ;
395
425
0 commit comments