41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
import { SimSession, CONTEXT_ID, PROTOCOL_SCHEMA } from "./sim-session.mjs";
|
|
import { XyzacCommandLedger, XYZAC_COMMAND_LEDGER_SCHEMA } from "./xyzac-command-ledger.mjs";
|
|
import { XyzacScheduler, XYZAC_SCHEDULER_SCHEMA } from "./xyzac-scheduler.mjs";
|
|
|
|
export const XYZAC_SESSION_SCHEMA = "xyzac-session.v1";
|
|
|
|
export class XyzacSession extends SimSession {
|
|
constructor(core, options = {}) {
|
|
super(core, options);
|
|
this.ledger = new XyzacCommandLedger();
|
|
this.scheduler = new XyzacScheduler(core);
|
|
this.session_scope = "selected_xyzac_simulation";
|
|
}
|
|
|
|
authority() {
|
|
return {
|
|
schema: XYZAC_SESSION_SCHEMA,
|
|
authority: "linuxcnc-wasm-worker",
|
|
context_id: this.contextId,
|
|
session_id: this.sessionId,
|
|
scope: this.session_scope,
|
|
protocol_schema: PROTOCOL_SCHEMA,
|
|
ledger_schema: XYZAC_COMMAND_LEDGER_SCHEMA,
|
|
scheduler_schema: XYZAC_SCHEDULER_SCHEMA,
|
|
machine: { coordinates: "XYZAC", joint_count: 5, kinematics: "xyzac-trt", rotary_units: "degrees" },
|
|
};
|
|
}
|
|
|
|
accept(input) {
|
|
const response = super.accept(input);
|
|
if (response?.payload && typeof response.payload === "object") {
|
|
response.payload.xyzac_session = this.authority();
|
|
response.payload.xyzac_ledger = this.ledger.audit();
|
|
response.payload.xyzac_scheduler = this.scheduler.export();
|
|
}
|
|
return response;
|
|
}
|
|
}
|
|
|
|
export { CONTEXT_ID, PROTOCOL_SCHEMA };
|