@@ -452,6 +452,21 @@ uint16_t build_GAM_message(struct hott_gam_message *msg)
452452 msg -> current = scale_float2uword (current , 10 , 0 );
453453 msg -> capacity = scale_float2uword (energy , 0.1f , 0 );
454454
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+
455470 // AirSpeed
456471 float airspeed = (telestate -> Airspeed .TrueAirspeed > 0 ) ? telestate -> Airspeed .TrueAirspeed : 0 ;
457472 msg -> speed = scale_float2uword (airspeed , MS_TO_KMH , 0 );
@@ -501,6 +516,19 @@ uint16_t build_EAM_message(struct hott_eam_message *msg)
501516 msg -> current = scale_float2uword (current , 10 , 0 );
502517 msg -> capacity = scale_float2uword (energy , 0.1f , 0 );
503518
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+
504532 // AirSpeed
505533 float airspeed = (telestate -> Airspeed .TrueAirspeed > 0 ) ? telestate -> Airspeed .TrueAirspeed : 0 ;
506534 msg -> speed = scale_float2uword (airspeed , MS_TO_KMH , 0 );
0 commit comments