Skip to content

Commit a15b047

Browse files
committed
LP-608 Simulate individual cell voltage in Electric and General Air
1 parent 9c1175f commit a15b047

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

flight/modules/UAVOHottBridge/uavohottbridge.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)