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.5

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.5
File Size Uploaded
dt5215_emulator-1.0.5.tar.gz 18.3 kB Details

Built distribution (wheel)

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

Total release size: 36.6 kB

Release files / dt5215_emulator-1.0.5.tar.gz

Download URL dt5215_emulator-1.0.5.tar.gz
Size 18.3 kB
Tags Source
SHA-256 checksum
How to use checksums
bbd2bdffba04f80ed11d4d0705df6b1dd14e628c20ec121feb5d63a915668919
BLAKE2b-256 checksum
How to use checksums
35df44a89f9e22c42d23e7fd5ea93c318409870b7755e1aeaf72ca8c11658cac
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.5-py3-none-any.whl

Download URL dt5215_emulator-1.0.5-py3-none-any.whl
Size 18.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d7010fd97e62e41b6755ad43b8b9a765e3ca396c96587aa32f9749ba435fc64b
BLAKE2b-256 checksum
How to use checksums
73e7ee23eafebba3cdf663147393a06236e830109645cedb82071fb23bf6267a
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

This release

1.0.5 This release

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

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