Skip to main content

DT5215 firmware emulator

A DT5215 control API on localhost. It answers every endpoint of spec/dt5215-api.yaml with plausible, consistent data, so the SDKs of all seven languages — and your own program — can be tested with no instrument in the loop.

pip install dt5215-emulator
dt5215-emulator --port 8080
curl -s -X POST http://127.0.0.1:8080/api-v1.0/login \
  -H 'Content-Type: application/json' -d '{"username":"user","password":"user"}'
from dt5215_emulator import Emulator
import dt5215

with Emulator() as emu:                       # a free port
    with dt5215.connect(emu.url, username="user", password="user") as dev:
        print(dev.info().hostname)            # dt5215-emu

What it reproduces on purpose

Three behaviours of the real firmware that a client has to get right, and that a hand-written mock usually gets wrong:

  • a refusal is HTTP 200 with result: false, not a 4xx;
  • /reboot and /restart_app answer nothing and drop the connection;
  • a bearer token is required everywhere except /login and /alive, and /alive reports whether the token it was given is valid (so a client can tell "instrument down" from "token expired").

It is also stateful: switching HV off changes what the next /get_hv_status says, disabling a chain empties it, writing a register reads back, an enumeration walks its phases (in about a second, not minutes), and a board firmware upgrade progresses board by board.

Driving it from a test

Emulator(state=...) takes a prepared State, and every field of it can be changed while the emulator runs:

from dt5215_emulator import Emulator, State

state = State()
state.chains[0].los = True              # a chain with loss of signal
state.client["control"] = True          # Janus attached: a board upgrade must be refused
with Emulator(state=state) as emu:
    ...

Options

Option Meaning
--port N TCP port (default 8080; Emulator(port=0) takes a free one)
--host H interface to bind (default 127.0.0.1)
--no-auth answer everything without a token, like the instrument's /caen/config/nologin
--hostname NAME the hostname the emulator reports
-v log every request

Default users: user/user and caen/caen.

What it is not

It does not pretend to be the instrument's data path: there is no event streaming, no FPGA, no real timing. It answers the control API, and that is all the SDK needs.

Metadata

Release files for dt5215-emulator 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dt5215-emulator 1.0.2
File Size Uploaded
dt5215_emulator-1.0.2.tar.gz 18.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dt5215-emulator 1.0.2
File Interpreter ABI Platform
dt5215_emulator-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 36.6 kB

Release files / dt5215_emulator-1.0.2.tar.gz

Download URL dt5215_emulator-1.0.2.tar.gz
Size 18.3 kB
Tags Source
SHA-256 checksum
How to use checksums
03496891f622d151be3f8d9b1744e339590aab7c593f22075b929694115e3fb4
BLAKE2b-256 checksum
How to use checksums
264939c3f3d806ba1cea4429ce718e5749a01bee00ac67d81bea9106d048db36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / dt5215_emulator-1.0.2-py3-none-any.whl

Download URL dt5215_emulator-1.0.2-py3-none-any.whl
Size 18.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
04fa6dadcdd87de23b9ef7e4641328b233fa2c93b1fc16132ffcd1e2f6461a87
BLAKE2b-256 checksum
How to use checksums
62f2904116800cc3b0da0df8b1a0d5f164bb1e844de4d2d97e7fe8d510f421f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release history Release notifications | RSS feed

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

This release

1.0.2 This release

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page