- passive probes (new `static passive = true` device metadata): a pure listener never drives an input and claims no pad, so it may clamp onto ANY GPIO - including pads other devices own (an LED, an I2C pair, a MAX7219 bus) and other analyzers. The runtime's pin-conflict check and the wired-AND arbitration skip passive pads; the panel's usedPins ignores them, so other devices' pickers never show them as "in use"; the analyzer's channel grid never disables a GPIO (pads owned elsewhere get a dashed "shared" hint). Replaces the analyzer's sharedBus flag. - trigger on any GPIO: trigCh (channel index) becomes trigPin (GPIO number) - the trigger pad gets its own subscription and need not be an analysed channel (off-channel triggers land in no lane, channel levels still snapshot at capture start). The window dropdown lists every valid GPIO. Tooltip documents the gpio_state visibility caveat: a trigger fires only when the FIRMWARE drives the pad - pure-input pads (driven by our button devices) never toggle the output registers. - window cap lifted 1 s -> 1 h of guest time (was a conservative guard; dense signals still freeze earlier at the 20 000-edge buffer with the buffer-full note - the natural limit, since Saleae streams into host RAM while we capture into a fixed buffer). - tests: runtime-level passive sharing (probe onto an LED pad + I2C pair + second probe, zero conflicts), off-channel trigger, 1 h clamp, trigger cases migrated to trigPin; device bumped to 1.1.0; GUI checked (shared chip clickable, 23 trigger options, 5000 ms window accepted). - docs (both languages): CHANGELOG 0.11.0 + device version table, DEVICE-API passive metadata + instrument section, README capability row, ROADMAP probe-freedoms bullet, AGENT rule 3.11; version synced to 0.11.0.
29 lines
1.2 KiB
JSON
29 lines
1.2 KiB
JSON
{
|
|
"name": "esp-emu-peris",
|
|
"version": "0.11.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"description": "Simulated peripherals for the esp-emulator browser (wasm) build",
|
|
"scripts": {
|
|
"fetch": "python tools/fetch_esp_emu.py",
|
|
"prebuild": "python tools/fetch_esp_emu.py",
|
|
"build": "tsc -p tsconfig.json",
|
|
"check": "tsc -p tsconfig.json --noEmit",
|
|
"serve": "python serve.py",
|
|
"preserve": "python tools/fetch_esp_emu.py",
|
|
"sync": "python sync_www.py",
|
|
"presync": "python tools/fetch_esp_emu.py",
|
|
"test": "node --test tests/unit/core.test.mjs tests/unit/devices.test.mjs tests/unit/protocol.test.mjs && node tests/m1_smoke.mjs",
|
|
"pretest": "python tools/fetch_esp_emu.py",
|
|
"test:unit": "node --test tests/unit/core.test.mjs tests/unit/devices.test.mjs tests/unit/protocol.test.mjs",
|
|
"test:smoke": "node tests/m1_smoke.mjs",
|
|
"pretest:smoke": "python tools/fetch_esp_emu.py",
|
|
"test:m0": "node tests/m0_probe.mjs",
|
|
"pretest:m0": "python tools/fetch_esp_emu.py",
|
|
"package": "python tools/package_release.py"
|
|
},
|
|
"devDependencies": {
|
|
"typescript": "5.9"
|
|
}
|
|
}
|