@@ -47,6 +47,15 @@
|
||||
writes are the lowest-risk write surface (no parameter-write switch
|
||||
needed, no MDI mode required) so this stage runs whenever -Write is
|
||||
supplied.
|
||||
|
||||
.PARAMETER PmcBitAddress
|
||||
PMC bit address for the F4-c bit-write round-trip stage (default
|
||||
R100.3). Only fires when -Write is supplied AND the operator
|
||||
double-opts in via FOCAS_PMC_WRITE=1, mirroring the FOCAS_PARAM_WRITE
|
||||
gate. PMC writes have a higher blast radius than PARAM/MACRO (a
|
||||
mistargeted bit can move motion or latch a feedhold) so the gate is
|
||||
off by default — see docs/v2/focas-deployment.md "Write safety / PMC
|
||||
pre-checks".
|
||||
#>
|
||||
|
||||
param(
|
||||
@@ -57,7 +66,8 @@ param(
|
||||
[Parameter(Mandatory)] [string]$BridgeNodeId,
|
||||
[switch]$Write,
|
||||
[string]$ParamAddress = "PARAM:1815",
|
||||
[string]$MacroAddress = "MACRO:500"
|
||||
[string]$MacroAddress = "MACRO:500",
|
||||
[string]$PmcBitAddress = "R100.3"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
@@ -146,6 +156,27 @@ if ($Write) {
|
||||
} else {
|
||||
Write-Host "[skip] FOCAS_PARAM_WRITE not set — parameter-write stage requires the CNC to be in MDI mode + parameter-write switch enabled (see docs/v2/focas-deployment.md 'Write safety')."
|
||||
}
|
||||
|
||||
# F4-c — PMC bit round-trip. PMC writes have a higher blast radius
|
||||
# than PARAM/MACRO (a mistargeted bit can move motion or latch a
|
||||
# feedhold) so the stage is gated on a separate FOCAS_PMC_WRITE=1
|
||||
# opt-in. The bit write exercises the driver's read-modify-write
|
||||
# path: write 'on' -> read returns 'on'; write 'off' -> read returns
|
||||
# 'off'. Both halves run so a regression in either branch is caught.
|
||||
if ($env:FOCAS_PMC_WRITE -eq "1" -or $env:FOCAS_PMC_WRITE -eq "true") {
|
||||
$results += Test-DriverLoopback `
|
||||
-Cli $focasCli `
|
||||
-WriteArgs (@("write") + $commonFocas + @("-a", $PmcBitAddress, "-t", "Bit", "-v", "on")) `
|
||||
-ReadArgs (@("read") + $commonFocas + @("-a", $PmcBitAddress, "-t", "Bit")) `
|
||||
-ExpectedValue "True"
|
||||
$results += Test-DriverLoopback `
|
||||
-Cli $focasCli `
|
||||
-WriteArgs (@("write") + $commonFocas + @("-a", $PmcBitAddress, "-t", "Bit", "-v", "off")) `
|
||||
-ReadArgs (@("read") + $commonFocas + @("-a", $PmcBitAddress, "-t", "Bit")) `
|
||||
-ExpectedValue "False"
|
||||
} else {
|
||||
Write-Host "[skip] FOCAS_PMC_WRITE not set — PMC bit-write round-trip is off by default because a mistargeted PMC bit can move motion or latch a feedhold (see docs/v2/focas-deployment.md 'PMC pre-checks')."
|
||||
}
|
||||
}
|
||||
|
||||
Write-Summary -Title "FOCAS e2e" -Results $results
|
||||
|
||||
Reference in New Issue
Block a user