41 lines
1.5 KiB
C#
41 lines
1.5 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using MultiWheelC.TrajectoryPlanning.EMPlanner;
|
|
|
|
namespace MultiWheelC.TrajectoryPlanning.TrajectoryObservation;
|
|
|
|
public sealed class TrajectoryObservationDiagnostic
|
|
{
|
|
public TrajectoryObservationDiagnostic(string text)
|
|
{
|
|
Text = text ?? string.Empty;
|
|
}
|
|
|
|
public string Text { get; }
|
|
}
|
|
|
|
public static class TrajectoryObservationDiagnostics
|
|
{
|
|
public static TrajectoryObservationDiagnostic Create(PlanningCycleResult latestCycle,
|
|
TimeSpan elapsed, bool planningInFlight, EmTrajectory publishedTrajectory)
|
|
{
|
|
if (latestCycle == null)
|
|
return new TrajectoryObservationDiagnostic(planningInFlight
|
|
? "planning status=pending"
|
|
: "planning status=not-started");
|
|
|
|
string text = "planning cycle=" + latestCycle.Version.ToString(CultureInfo.InvariantCulture) +
|
|
" status=" + latestCycle.Result.Status +
|
|
" published=" + latestCycle.Published +
|
|
" elapsed=" + Math.Max(0d, elapsed.TotalMilliseconds).ToString("F0", CultureInfo.InvariantCulture) +
|
|
"ms";
|
|
if (planningInFlight)
|
|
text += "\nreplan=pending";
|
|
if (publishedTrajectory != null)
|
|
text += "\ntrajectory=" + publishedTrajectory.Metadata.TrajectoryId;
|
|
if (!string.IsNullOrWhiteSpace(latestCycle.Result.FailureReason))
|
|
text += "\nreason=" + latestCycle.Result.FailureReason;
|
|
return new TrajectoryObservationDiagnostic(text);
|
|
}
|
|
}
|