Skip to content

Commit 14a7e7a

Browse files
committed
LP-608 Prevent false warning alarms related to speed and distance from GPS
1 parent f602e04 commit 14a7e7a

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

flight/modules/UAVOHottBridge/uavohottbridge.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -497,13 +497,13 @@ uint16_t build_EAM_message(struct hott_eam_message *msg)
497497
float voltage = (telestate->Battery.Voltage > 0) ? telestate->Battery.Voltage : 0;
498498
float current = (telestate->Battery.Current > 0) ? telestate->Battery.Current : 0;
499499
float energy = (telestate->Battery.ConsumedEnergy > 0) ? telestate->Battery.ConsumedEnergy : 0;
500-
msg->voltage = scale_float2uword(voltage, 10, 0);
501-
msg->current = scale_float2uword(current, 10, 0);
502-
msg->capacity = scale_float2uword(energy, 0.1f, 0);
500+
msg->voltage = scale_float2uword(voltage, 10, 0);
501+
msg->current = scale_float2uword(current, 10, 0);
502+
msg->capacity = scale_float2uword(energy, 0.1f, 0);
503503

504504
// AirSpeed
505505
float airspeed = (telestate->Airspeed.TrueAirspeed > 0) ? telestate->Airspeed.TrueAirspeed : 0;
506-
msg->speed = scale_float2uword(airspeed, MS_TO_KMH, 0);
506+
msg->speed = scale_float2uword(airspeed, MS_TO_KMH, 0);
507507

508508
// temperatures
509509
msg->temperature1 = scale_float2uint8(telestate->Gyro.temperature, 1, OFFSET_TEMPERATURE);
@@ -786,10 +786,12 @@ void update_telemetrydata()
786786
*/
787787
uint8_t generate_warning()
788788
{
789+
bool gps_ok = (telestate->SysAlarms.Alarm.GPS == SYSTEMALARMS_ALARM_OK);
790+
789791
// set warning tone with hardcoded priority
790792
if ((telestate->Settings.Warning.MinSpeed == HOTTBRIDGESETTINGS_WARNING_ENABLED) &&
791-
(telestate->Settings.Limit.MinSpeed > telestate->GPS.Groundspeed * MS_TO_KMH)) {
792-
return HOTT_TONE_A; // maximum speed
793+
(telestate->Settings.Limit.MinSpeed > telestate->GPS.Groundspeed * MS_TO_KMH) && gps_ok) {
794+
return HOTT_TONE_A; // minimum speed
793795
}
794796
if ((telestate->Settings.Warning.NegDifference2 == HOTTBRIDGESETTINGS_WARNING_ENABLED) &&
795797
(telestate->Settings.Limit.NegDifference2 > telestate->climbrate3s)) {
@@ -800,7 +802,7 @@ uint8_t generate_warning()
800802
return HOTT_TONE_C; // sink rate 1s
801803
}
802804
if ((telestate->Settings.Warning.MaxDistance == HOTTBRIDGESETTINGS_WARNING_ENABLED) &&
803-
(telestate->Settings.Limit.MaxDistance < telestate->homedistance)) {
805+
(telestate->Settings.Limit.MaxDistance < telestate->homedistance) && gps_ok) {
804806
return HOTT_TONE_D; // maximum distance
805807
}
806808
if ((telestate->Settings.Warning.MinSensor1Temp == HOTTBRIDGESETTINGS_WARNING_ENABLED) &&
@@ -820,7 +822,7 @@ uint8_t generate_warning()
820822
return HOTT_TONE_I; // maximum temperature sensor 2
821823
}
822824
if ((telestate->Settings.Warning.MaxSpeed == HOTTBRIDGESETTINGS_WARNING_ENABLED) &&
823-
(telestate->Settings.Limit.MaxSpeed < telestate->GPS.Groundspeed * MS_TO_KMH)) {
825+
(telestate->Settings.Limit.MaxSpeed < telestate->GPS.Groundspeed * MS_TO_KMH) && gps_ok) {
824826
return HOTT_TONE_L; // maximum speed
825827
}
826828
if ((telestate->Settings.Warning.PosDifference2 == HOTTBRIDGESETTINGS_WARNING_ENABLED) &&

0 commit comments

Comments
 (0)