feat(focas): cnc_statinfo status flags as Status/ fixed-tree nodes (#257)
Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
@@ -121,6 +121,21 @@ internal class FakeFocasClient : IFocasClient
|
||||
public virtual Task<FocasProgramInfo> GetProgramInfoAsync(CancellationToken ct) =>
|
||||
Task.FromResult(ProgramInfo);
|
||||
|
||||
/// <summary>Gets or sets the cnc_statinfo status snapshot.</summary>
|
||||
public FocasStatus Status { get; set; } = new(1, 3, 1, 0, 0, 0, 0, 0);
|
||||
/// <summary>Gets or sets a value indicating whether <see cref="GetStatusAsync"/> throws (older series / refused call).</summary>
|
||||
public bool ThrowOnStatus { get; set; }
|
||||
/// <summary>Gets the number of status reads served.</summary>
|
||||
public int StatusReads { get; private set; }
|
||||
/// <summary>Gets the CNC status flags asynchronously.</summary>
|
||||
/// <param name="ct">The cancellation token.</param>
|
||||
public virtual Task<FocasStatus> GetStatusAsync(CancellationToken ct)
|
||||
{
|
||||
StatusReads++;
|
||||
if (ThrowOnStatus) throw new InvalidOperationException("cnc_statinfo refused");
|
||||
return Task.FromResult(Status);
|
||||
}
|
||||
|
||||
/// <summary>Gets the dictionary of timers keyed by timer kind.</summary>
|
||||
public Dictionary<FocasTimerKind, FocasTimer> Timers { get; } = [];
|
||||
/// <summary>Gets timer data asynchronously.</summary>
|
||||
|
||||
Reference in New Issue
Block a user