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

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.6
File Size Uploaded
dt5215_emulator-1.0.6.tar.gz 18.4 kB Details

Built distribution (wheel)

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

Total release size: 36.8 kB

Release files / dt5215_emulator-1.0.6.tar.gz

Download URL dt5215_emulator-1.0.6.tar.gz
Size 18.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a1b5fccaa6803c312ccc55de8ab55fb4bcbb6d0b0087ab11f4572a583d64590a
BLAKE2b-256 checksum
How to use checksums
bf8ca5ec7d372adf3e2baa095cdf19ade9ea9b2a91732c0ec04bdf49714cbe70
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.6-py3-none-any.whl

Download URL dt5215_emulator-1.0.6-py3-none-any.whl
Size 18.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
233f3d4fe89ea51806eff649b17831319ba1506d40ac8de9867cb9501ea2fc95
BLAKE2b-256 checksum
How to use checksums
b95189bc64dc4ea99baa5ea224b5950b875ca07c6f8527ad205ecfcda7af1b9b
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

This release

1.0.6 This release

2 release files

1.0.5

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