gokul/fieldkit-usb
USB-C-powered ESP32-S3 Wi-Fi/Bluetooth handheld with an SMD 128x32 OLED, six navigation buttons, USB-C power/data, complete checked routing, and four native schematic sheets.
- Version
- 0.4.2
- License
- UNLICENSED
- Stars
- 0
scripts/check-physical-connectivity.ts
import { readFile, writeFile } from "node:fs/promises"
import { PcbConnectivityMap } from "circuit-json-to-connectivity-map"
const circuit = JSON.parse(await readFile("dist/index/circuit.json", "utf8"))
const physical = new PcbConnectivityMap(circuit)
const sourcePorts = new Map(circuit.filter((item: any) => item.type === "source_port").map((item: any) => [item.source_port_id, item]))
const portsByNet = new Map<string, string[]>()
for (const port of circuit.filter((item: any) => item.type === "pcb_port")) {
const source: any = sourcePorts.get(port.source_port_id)
const key = source?.subcircuit_connectivity_map_key
if (!key) continue
const ports = portsByNet.get(key) ?? []
ports.push(port.pcb_port_id)
portsByNet.set(key, ports)
}
const failures: { net: string; ports: string[] }[] = []
for (const [net, ports] of portsByNet) {
if (ports.length > 1 && !physical.connMap.areAllIdsConnected(ports)) failures.push({ net, ports })
}
const result = {
checkedAt: new Date().toISOString(),
nets: portsByNet.size,
terminals: [...portsByNet.values()].reduce((sum, ports) => sum + ports.length, 0),
failures,
}
await writeFile("verification/physical-continuity-check.json", JSON.stringify(result, null, 2) + "\n")
console.log(JSON.stringify(result, null, 2))
if (failures.length) process.exit(1)