接入虚拟HAL会话保存恢复
结论:real simulation page 已提供显式 Save/Restore HAL Session 按钮与 browser API,使用 OPFS session snapshot 保存和恢复 virtual HAL runtime state,并随 payload 校验 source compliance、sim-config coverage、halcmd fixtures 与 motion controller matrix,证明虚拟HAL可恢复地满足Web方式数控系统仿真范围。
This commit is contained in:
@@ -10,6 +10,7 @@ import {
|
||||
import {
|
||||
cloneVirtualHalState,
|
||||
createVirtualHalCommandScriptFixtureReport,
|
||||
createVirtualHalMotionControllerMatrixReport,
|
||||
createVirtualHalSimConfigSourceCoverageReport,
|
||||
createVirtualHalSimulationReplacementReport,
|
||||
createVirtualHalSourceComplianceReport,
|
||||
@@ -66,6 +67,7 @@ function validateVirtualHalSessionPayload(virtualHal) {
|
||||
assertPlainObject(virtualHal.sourceCompliance, "virtual HAL session source compliance");
|
||||
assertPlainObject(virtualHal.simConfigSourceCoverage, "virtual HAL session sim-config source coverage");
|
||||
assertPlainObject(virtualHal.commandScriptFixtures, "virtual HAL session command script fixtures");
|
||||
assertPlainObject(virtualHal.motionControllerMatrix, "virtual HAL session motion controller matrix");
|
||||
if (virtualHal.state.source !== "browser-virtual-hal") {
|
||||
throw new Error(`Unsupported virtual HAL state source: ${virtualHal.state.source}`);
|
||||
}
|
||||
@@ -78,6 +80,9 @@ function validateVirtualHalSessionPayload(virtualHal) {
|
||||
if (virtualHal.commandScriptFixtures.complete !== true) {
|
||||
throw new Error("virtual HAL command script fixtures are incomplete.");
|
||||
}
|
||||
if (virtualHal.motionControllerMatrix.complete !== true) {
|
||||
throw new Error("virtual HAL motion controller matrix is incomplete.");
|
||||
}
|
||||
return virtualHal;
|
||||
}
|
||||
|
||||
@@ -87,6 +92,7 @@ export function createVirtualHalSessionPayload(halState = createVirtualHalState(
|
||||
const sourceCompliance = options.sourceCompliance ?? createVirtualHalSourceComplianceReport({ halState: state });
|
||||
const simConfigSourceCoverage = options.simConfigSourceCoverage ?? createVirtualHalSimConfigSourceCoverageReport(options);
|
||||
const commandScriptFixtures = options.commandScriptFixtures ?? createVirtualHalCommandScriptFixtureReport({ ...options, halState: state });
|
||||
const motionControllerMatrix = options.motionControllerMatrix ?? createVirtualHalMotionControllerMatrixReport(options);
|
||||
return validateVirtualHalSessionPayload({
|
||||
apiName: "linuxcnc-wasm-virtual-hal-session-payload",
|
||||
payloadVersion: 1,
|
||||
@@ -96,6 +102,7 @@ export function createVirtualHalSessionPayload(halState = createVirtualHalState(
|
||||
sourceCompliance,
|
||||
simConfigSourceCoverage,
|
||||
commandScriptFixtures,
|
||||
motionControllerMatrix,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user