Auto: focas-f2c — PMC F/G for 16i

Capability-matrix correctness fix: real 16i ladders use F (CNC->PMC) and
G (PMC->CNC) signal groups for handshakes, but PmcLetters(Sixteen_i) was
returning {X,Y,R,D} only. Widen to {X,Y,F,G,R,D}; M/C/E/A/K/T remain
0i-F / 30i-only. Updated the matching test row.

Closes #265
This commit is contained in:
Joseph Doherty
2026-04-25 19:49:25 -04:00
parent 7042b11f34
commit 63099115bf
2 changed files with 7 additions and 5 deletions

View File

@@ -97,11 +97,12 @@ public static class FocasCapabilityMatrix
_ => (0, int.MaxValue),
};
/// <summary>PMC letters accepted per series. Legacy controllers omit F/M/C
/// signal groups that 30i-family ladder programs use.</summary>
/// <summary>PMC letters accepted per series. Legacy 16i ladders use X/Y/F/G
/// for handshakes plus R/D for retained/data; M/C/E/A/K/T are the 0i-F /
/// 30i-family extensions.</summary>
internal static IReadOnlySet<string> PmcLetters(FocasCncSeries series) => series switch
{
FocasCncSeries.Sixteen_i => new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "X", "Y", "R", "D" },
FocasCncSeries.Sixteen_i => new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "X", "Y", "F", "G", "R", "D" },
FocasCncSeries.Zero_i_D => new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "X", "Y", "R", "D", "E", "A" },
FocasCncSeries.Zero_i_F or
FocasCncSeries.Zero_i_MF or