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/install-bulk-top.mjs
import fs from "node:fs"
import assert from "node:assert/strict"
import crypto from "node:crypto"
import { routingSignature } from "../routing-signature"
const read = p => JSON.parse(fs.readFileSync(p, "utf8"))
const write = (p, v) => fs.writeFileSync(p, JSON.stringify(v, null, 2) + "\n")
const sha = p => crypto.createHash("sha256").update(fs.readFileSync(p)).digest("hex")
const report = read("routing/bulk-top-final-import/import-report.json")
assert.deepEqual(report.failures, [])
assert.equal(report.physical_island_links, 0)
assert.equal(read("reports/bulk-top-closure-closure.json").complete, true)
assert.deepEqual(read("reports/bulk-top-final-preflight/coil-all-copper-preflight.json"), [])
const checked = read("reports/bulk-top-final-preflight/coil-all-copper-preflight-meta.json")
assert.equal(checked.circuitSha256, sha("routing/review-placement.circuit.json"))
assert.equal(checked.physicalCopperSha256, sha("routing/bulk-top-closure-physical-candidate.json"))
const placement = read("routing/review-placement.circuit.json")
const cap = placement.find(e => e.type === "source_component" && e.name === "C_VM_BULK")
assert.equal(placement.find(e => e.type === "pcb_component" && e.source_component_id === cap.source_component_id)?.layer, "top", "A schematic-only checkpoint must never install an unvalidated capacitor layout")
write("routing/complete-routes.json", read("routing/bulk-top-final-import/complete-routes.json"))
write("routing/expected-input.json", routingSignature(placement))
write("routing/placement.json", placement)