Commit Graph

81 Commits

Author SHA1 Message Date
kschappell 473db303e9 Add instrument CLI commands
CI / Lint (push) Failing after 4s
CI / Type Check (push) Failing after 17s
CI / Test (push) Failing after 21s
CI / Release (push) Has been skipped
2025-12-03 00:36:37 +00:00
kschappell e36c52cf26 Add test execution CLI commands 2025-12-03 00:33:36 +00:00
kschappell 62080ebb85 Release v0.1.0-beta.2
CI / Lint (push) Failing after 4s
CI / Type Check (push) Successful in 18s
CI / Test (push) Failing after 24s
CI / Release (push) Has been cancelled
2025-12-03 00:20:31 +00:00
kschappell a412d04820 Add TempCo integration tests 2025-12-03 00:19:11 +00:00
kschappell eaeb1aa0c3 Implement TempCo characterisation test 2025-12-03 00:11:46 +00:00
kschappell 75fc0e7fb8 Add DVT test base class 2025-12-03 00:09:48 +00:00
kschappell f8ef2e3cf7 Implement test runner 2025-12-02 23:56:05 +00:00
kschappell 7dee677597 Implement limit checker 2025-12-02 23:54:15 +00:00
kschappell 80de608edd Implement test logger 2025-12-02 23:52:33 +00:00
kschappell e25c21d1ca Add test framework models 2025-12-02 23:49:03 +00:00
kschappell 1ec3a6ddab Add data persistence tests 2025-12-02 23:24:42 +00:00
kschappell 22a79084c8 Add Parquet measurement storage 2025-12-02 23:22:13 +00:00
kschappell 272311e53a Implement SQLite repository 2025-12-02 23:18:51 +00:00
kschappell 8a13d47b9f Add data persistence models 2025-12-02 23:17:44 +00:00
kschappell 820b9b16c4 Add configuration tests 2025-12-02 23:02:31 +00:00
kschappell 802be01008 Add default configuration file 2025-12-02 23:00:02 +00:00
kschappell 25efd1f0ac Implement configuration loader 2025-12-02 22:55:48 +00:00
kschappell 640647ec5c Add configuration Pydantic models 2025-12-02 22:49:30 +00:00
kschappell 28f913c8ce Release v0.1.0-beta.1
CI / Lint (push) Failing after 4s
CI / Type Check (push) Successful in 17s
CI / Test (push) Successful in 9s
CI / Release (push) Has been cancelled
2025-12-02 22:42:52 +00:00
kschappell 424ad3f858 Add instrument interface tests 2025-12-02 22:42:03 +00:00
kschappell 02467e9933 Add instrument factory 2025-12-02 22:38:43 +00:00
kschappell 21314cae30 Implement instrument interfaces in drivers 2025-12-02 22:35:51 +00:00
kschappell 2aa149ebf1 Add instrument interface protocols 2025-12-02 22:34:11 +00:00
kschappell 97107279b2 Fix linting: use builtin OSError and TimeoutError instead of socket aliases
CI / Lint (push) Successful in 4s
CI / Type Check (push) Successful in 15s
CI / Test (push) Successful in 9s
CI / Release (push) Has been skipped
2025-12-02 22:26:08 +00:00
kschappell 52ee76046e Add driver unit tests 2025-12-02 22:24:41 +00:00
kschappell 6668df07ab Add PSU and DMM drivers 2025-12-02 22:21:59 +00:00
kschappell 22dd402bb9 Add thermal chamber driver 2025-12-02 22:20:13 +00:00
kschappell 278fca0b8d Add driver base class 2025-12-02 22:18:46 +00:00
kschappell 6b9922a8ae Refactor DUTModel from Protocol to ABC for explicit interface implementation 2025-12-02 22:11:48 +00:00
kschappell b6edb1c0bb Refactor Transport from Protocol to ABC for explicit interface implementation 2025-12-02 22:06:00 +00:00
kschappell 78a09e7bf0 Update specification to mandate ABC over Protocol for maximum type safety 2025-12-02 22:03:16 +00:00
kschappell 226fb0ad0d Add transport layer tests 2025-12-02 21:02:00 +00:00
kschappell 034d80388f Implement TCP transport 2025-12-02 20:58:40 +00:00
kschappell 0722ce92cd Add transport protocol definition 2025-12-02 20:56:14 +00:00
kschappell e36349c853 Fix linting and type errors for CI
CI / Lint (push) Successful in 4s
CI / Type Check (push) Successful in 16s
CI / Test (push) Successful in 9s
CI / Release (push) Has been skipped
- Use X | None syntax instead of Optional[X] (UP045)
- Sort imports in dashboard app (I001)
- Remove unnecessary UTF-8 encoding argument (UP012)
- Add 'from err' to exception re-raises (B904)
- Remove unused imports in integration tests (F401)
- Fix useless expression in test (B018)
- Cast **1.5 result to float in LDO model (mypy no-any-return)
- Use functools.partial instead of lambda in server (mypy misc)
2025-12-02 16:22:57 +00:00
kschappell ad8d61b649 Move InstrumentServer to instruments/transport
CI / Lint (push) Failing after 11m12s
CI / Type Check (push) Failing after 2m10s
CI / Test (push) Successful in 9s
CI / Release (push) Has been skipped
InstrumentServer is a general-purpose SCPI-over-TCP server that can
host any device implementing the SCPIDevice protocol (process method).
Moving it from simulation/ to instruments/transport/ reflects this:
- simulation package now depends on instruments package
- InstrumentServer can host both virtual and real instrument adapters
- Added SCPIDevice Protocol for type-safe device registration
2025-12-02 16:09:32 +00:00
kschappell 3bdd2e6c48 Release v0.1.0-alpha.3
CI / Lint (push) Failing after 30s
CI / Type Check (push) Failing after 36s
CI / Test (push) Failing after 28s
CI / Release (push) Has been skipped
2025-12-02 15:05:06 +00:00
kschappell b554b0327d Add TCP server integration tests
Test connection handling, multiple clients, instrument access across
all three virtual instruments, physics engine integration, and error
handling. Update pytest-asyncio config for v1.x compatibility.
2025-12-02 15:02:03 +00:00
kschappell 65a6ebae0f Add simulation server entry point
Create SimulationServer that wires physics engine to all virtual
instruments and exposes them over TCP. Add 'serve' CLI command to
start the server with configurable ports and physics rate.
2025-12-02 14:47:16 +00:00
kschappell c4fadc234d Implement TCP client handling
Add async client connection handling with:
- Multiple concurrent connections per port
- Line-based SCPI protocol (newline terminated)
- start(), stop(), and serve_forever() methods
- Proper connection lifecycle and error handling
2025-12-02 14:45:19 +00:00
kschappell 362e6c1135 Add async TCP server foundation
Create InstrumentServer class with asyncio for hosting virtual SCPI
instruments over TCP. Supports registering instruments on specific
ports with port-to-instrument mapping.
2025-12-02 14:42:13 +00:00
kschappell 0179cc384a Add multimeter simulator tests
Comprehensive test coverage for MultimeterSim including MEAS:VOLT:DC,
MEAS:CURR:DC, CONF, and READ commands. Tests both standalone operation
and physics engine integration including temperature-dependent measurements.
2025-12-02 13:46:03 +00:00
kschappell 73f792f6bc Add multimeter simulator
Implement SCPI-based virtual DMM with DC voltage and current measurement.
Supports MEAS, CONF, and READ commands. Integrates with physics engine
for DUT output measurements.
2025-12-02 13:43:56 +00:00
kschappell 40792c848d Add power supply simulator tests
Comprehensive test coverage for PowerSupplySim including VOLT, CURR,
OUTP, and MEAS commands. Tests both standalone operation and physics
engine integration.
2025-12-02 13:42:04 +00:00
kschappell 5e4f25e7b5 Add power supply simulator
Implement SCPI-based virtual power supply with voltage/current control
and output enable commands. Integrates with physics engine for DUT
input voltage simulation.
2025-12-02 13:40:30 +00:00
kschappell ca48541b91 Add thermal chamber simulator tests
Tests for ThermalChamberSim SCPI command responses:
- Basic IEEE 488.2 commands (*IDN?, *RST, *OPC?)
- TEMP:SETPOINT set/query
- TEMP:ACTUAL? query
- TEMP:STAB? stability query
- Physics engine integration tests
2025-12-02 13:27:41 +00:00
kschappell 6fae05f52d Implement thermal chamber SCPI commands
- TEMP:SETPOINT: Set/query target temperature
- TEMP:ACTUAL?: Query actual chamber temperature from physics engine
- TEMP:STAB?: Query temperature stability (within 0.5°C threshold)
2025-12-02 13:26:23 +00:00
kschappell a7926d0690 Add thermal chamber simulator stub
Defines ThermalChamberSim class with stub SCPI command handlers for
TEMP:SETPOINT, TEMP:ACTUAL?, and TEMP:STAB? commands.
2025-12-02 13:25:33 +00:00
kschappell a9f2b92fc6 Add base instrument class
Provides SCPI command parsing and dispatch mechanism for virtual
instruments. Includes IEEE 488.2 common commands (*IDN?, *RST, *CLS,
*OPC) and abstract methods for instrument-specific implementations.
2025-12-02 13:25:01 +00:00
kschappell fb7945fc84 Add SCPI parser tests
Comprehensive test suite for SCPI command parsing:
- SCPICommand dataclass tests (creation, keyword property)
- Parser tests for queries, commands, arguments
- IEEE 488.2 common command tests (*IDN?, *RST, etc.)
- Edge cases (whitespace, empty strings)
- Instrument-specific command tests

Also fixed bug where is_query was determined from command string
ending rather than header ending (handles queries with arguments).
2025-12-02 12:39:00 +00:00