Skip to content

Commit b24238d

Browse files
authored
Merge pull request #13 from Rouniy/fix/upstream-safety-reliability
Port upstream safety and reliability fixes
2 parents acc3b02 + f37bf8b commit b24238d

175 files changed

Lines changed: 4580 additions & 22088 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ExtLibs/ArduPilot/CurrentState.cs

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,8 @@ public bool prearmstatus
181181
get => connected && (sensors_health.prearm || !sensors_enabled.prearm);
182182
}
183183

184+
private readonly PrearmFailureTracker _prearmFailureTracker = new PrearmFailureTracker();
185+
184186
private bool useLocation;
185187

186188
/// <summary>
@@ -1274,10 +1276,10 @@ public string messageHigh
12741276
if (value == null || value == "")
12751277
return;
12761278
// check against get
1279+
_messageHighTime = DateTime.Now;
12771280
if (messageHigh == value)
12781281
return;
12791282
log.Info("messageHigh " + value);
1280-
_messageHighTime = DateTime.Now;
12811283
_messagehigh = value;
12821284
messageHighSeverity = MAVLink.MAV_SEVERITY.EMERGENCY;
12831285
}
@@ -2967,16 +2969,17 @@ private void Parent_OnPacketReceived(object sender, MAVLink.MAVLinkMessage mavLi
29672969

29682970
safetyactive = !sensors_enabled.motor_control;
29692971

2972+
string latestPrearmFailure = _prearmFailureTracker.Update(
2973+
sensors_health.prearm,
2974+
sensors_enabled.prearm,
2975+
sensors_present.prearm,
2976+
messages,
2977+
DateTime.Now);
2978+
29702979
if (errors_count1 > 0 || errors_count2 > 0)
29712980
{
29722981
messageHigh = "InternalError 0x" + (errors_count1 + (errors_count2 << 16)).ToString("X");
29732982
}
2974-
2975-
if (!sensors_health.prearm && sensors_enabled.prearm && sensors_present.prearm)
2976-
{
2977-
messageHigh = messages.LastOrDefault(a => a.message.ToLower().Contains("prearm")).message
2978-
?.ToString();
2979-
}
29802983
else if (!sensors_health.gps && sensors_enabled.gps && sensors_present.gps)
29812984
{
29822985
messageHigh = Strings.BadGPSHealth;
@@ -3053,6 +3056,10 @@ private void Parent_OnPacketReceived(object sender, MAVLink.MAVLinkMessage mavLi
30533056
{
30543057
messageHigh = Strings.BadAirspeed;
30553058
}
3059+
else if (!string.IsNullOrEmpty(latestPrearmFailure))
3060+
{
3061+
messageHigh = latestPrearmFailure;
3062+
}
30563063
}
30573064

30583065
break;
@@ -4056,11 +4063,11 @@ private void Parent_OnPacketReceived(object sender, MAVLink.MAVLinkMessage mavLi
40564063
case (uint)MAVLink.MAVLINK_MSG_ID.HIGHRES_IMU:
40574064
{
40584065
const ushort HIGHRES_IMU_UPDATED_XACC = 0x01;
4059-
const ushort HIGHRES_IMU_UPDATED_XGYRO = 0x08;
4060-
const ushort HIGHRES_IMU_UPDATED_XMAG = 0x40;
4061-
const ushort HIGHRES_IMU_UPDATED_ABS_PRESSURE = 0x200;
4062-
const ushort HIGHRES_IMU_UPDATED_PRESSURE_ALT = 0x800;
4063-
const ushort HIGHRES_IMU_UPDATED_TEMPERATURE = 0x1000;
4066+
const ushort HIGHRES_IMU_UPDATED_XGYRO = 0x08;
4067+
const ushort HIGHRES_IMU_UPDATED_XMAG = 0x40;
4068+
const ushort HIGHRES_IMU_UPDATED_ABS_PRESSURE = 0x200;
4069+
const ushort HIGHRES_IMU_UPDATED_PRESSURE_ALT = 0x800;
4070+
const ushort HIGHRES_IMU_UPDATED_TEMPERATURE = 0x1000;
40644071

40654072
var imu = mavLinkMessage.ToStructure<MAVLink.mavlink_highres_imu_t>();
40664073
if (imu.id == 0)
@@ -4643,8 +4650,8 @@ public void UpdateCurrentSettings(Action<CurrentState> bs, bool updatenow,
46434650
mavinterface.requestDatastream(MAVLink.MAV_DATA_STREAM.RC_CHANNELS, MAV.cs.raterc,
46444651
MAV.sysid,
46454652
MAV.compid); // request rc info
4646-
MAV.Camera?.RequestMessageIntervals(MAV.cs.ratestatus); // use ratestatus until we create a new setting for this
4647-
MAV.GimbalManager?.Discover();
4653+
// Use ratestatus until camera-specific configuration is available.
4654+
MAV.Camera?.UpdateRateIfChanged(MAV.cs.ratestatus);
46484655
}
46494656
catch
46504657
{

0 commit comments

Comments
 (0)