shibosoftwaredev/f1c100s-linux-nema17-stepper-controller

A four-layer NEMA 17 motor-controller PCB combining an Allwinner F1C100S Linux computer, USB‑PD/buck power system, W5500 Ethernet, STM32 real-time motion control, DRV8825 stepper driver, protection/temperature/current telemetry, USB interfaces, and local LED/buzzer diagnostics.

Version
0.4.56
License
unset
Stars
0

scripts/prepare-round8-rework.mjs

import fs from "node:fs"
import assert from "node:assert/strict"
import {routingSignature} from "../routing-signature"
const base="../../checkpoints/nema17-round7-validated-usb-20261020-ed31KT/restore-verified"
const read=p=>JSON.parse(fs.readFileSync(p,"utf8"))
const before=read(`${base}/dist/index/circuit.json`),after=read("dist/index/circuit.json")
assert.deepEqual(after.filter(e=>e.type.endsWith("_error")),[],"native placement first")
const moved=new Set(Object.keys(read("round8-placement.json")))
const ids=new Set(before.filter(e=>e.type==="source_component"&&moved.has(e.name)).map(e=>e.source_component_id))
const ports=new Set(before.filter(e=>e.type==="source_port"&&ids.has(e.source_component_id)).map(e=>e.source_port_id))
const affected=before.filter(e=>e.type==="source_trace"&&e.connected_source_port_ids.some(id=>ports.has(id))).map(e=>e.source_trace_id)
const retained=read(`${base}/routing/complete-routes.json`).filter(t=>!affected.includes(t.source_trace_id))
fs.writeFileSync("routing/round8-retained.json",JSON.stringify(retained,null,2)+"\n")
fs.writeFileSync("routing/placement.json",JSON.stringify(after,null,2)+"\n")
fs.writeFileSync("routing/expected-input.json",JSON.stringify(routingSignature(after),null,2)+"\n")
fs.writeFileSync("reports/round8-routing-plan.json",JSON.stringify({notInstalled:true,moved:[...moved],affectedSourceTraceIds:affected},null,2)+"\n")
console.log(JSON.stringify({retained:retained.length,affected}))