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)