@@ -452,6 +452,21 @@ uint16_t build_GAM_message(struct hott_gam_message *msg)
452
452
msg -> current = scale_float2uword (current , 10 , 0 );
453
453
msg -> capacity = scale_float2uword (energy , 0.1f , 0 );
454
454
455
+ // simulate individual cell voltage
456
+ uint8_t cell_voltage = (telestate -> Battery .Voltage > 0 ) ? scale_float2uint8 (telestate -> Battery .Voltage / telestate -> Battery .NbCells , 50 , 0 ) : 0 ;
457
+ msg -> cell1 = (telestate -> Battery .NbCells >= 1 ) ? cell_voltage : 0 ;
458
+ msg -> cell2 = (telestate -> Battery .NbCells >= 2 ) ? cell_voltage : 0 ;
459
+ msg -> cell3 = (telestate -> Battery .NbCells >= 3 ) ? cell_voltage : 0 ;
460
+ msg -> cell4 = (telestate -> Battery .NbCells >= 4 ) ? cell_voltage : 0 ;
461
+ msg -> cell5 = (telestate -> Battery .NbCells >= 5 ) ? cell_voltage : 0 ;
462
+ msg -> cell6 = (telestate -> Battery .NbCells >= 6 ) ? cell_voltage : 0 ;
463
+
464
+ msg -> min_cell_volt = cell_voltage ;
465
+ msg -> min_cell_volt_num = telestate -> Battery .NbCells ;
466
+
467
+ // apply main voltage to batt1 voltage
468
+ msg -> batt1_voltage = msg -> voltage ;
469
+
455
470
// AirSpeed
456
471
float airspeed = (telestate -> Airspeed .TrueAirspeed > 0 ) ? telestate -> Airspeed .TrueAirspeed : 0 ;
457
472
msg -> speed = scale_float2uword (airspeed , MS_TO_KMH , 0 );
@@ -501,6 +516,19 @@ uint16_t build_EAM_message(struct hott_eam_message *msg)
501
516
msg -> current = scale_float2uword (current , 10 , 0 );
502
517
msg -> capacity = scale_float2uword (energy , 0.1f , 0 );
503
518
519
+ // simulate individual cell voltage
520
+ uint8_t cell_voltage = (telestate -> Battery .Voltage > 0 ) ? scale_float2uint8 (telestate -> Battery .Voltage / telestate -> Battery .NbCells , 50 , 0 ) : 0 ;
521
+ msg -> cell1_H = (telestate -> Battery .NbCells >= 1 ) ? cell_voltage : 0 ;
522
+ msg -> cell2_H = (telestate -> Battery .NbCells >= 2 ) ? cell_voltage : 0 ;
523
+ msg -> cell3_H = (telestate -> Battery .NbCells >= 3 ) ? cell_voltage : 0 ;
524
+ msg -> cell4_H = (telestate -> Battery .NbCells >= 4 ) ? cell_voltage : 0 ;
525
+ msg -> cell5_H = (telestate -> Battery .NbCells >= 5 ) ? cell_voltage : 0 ;
526
+ msg -> cell6_H = (telestate -> Battery .NbCells >= 6 ) ? cell_voltage : 0 ;
527
+ msg -> cell7_H = (telestate -> Battery .NbCells >= 7 ) ? cell_voltage : 0 ;
528
+
529
+ // apply main voltage to batt1 voltage
530
+ msg -> batt1_voltage = msg -> voltage ;
531
+
504
532
// AirSpeed
505
533
float airspeed = (telestate -> Airspeed .TrueAirspeed > 0 ) ? telestate -> Airspeed .TrueAirspeed : 0 ;
506
534
msg -> speed = scale_float2uword (airspeed , MS_TO_KMH , 0 );
0 commit comments