@@ -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 */
787787uint8_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