Skip to main content

Rust backend for NaluDAQ

Project description

NaluDAQ_rs

Rust backend for NaluDaq.

Setup

Make sure the Rust toolchain is installed.

Clone the repository to a suitable location:

git clone https://github.com/NaluScientific/naludaq_rs.git

Done!

Building the backend for python

pip install maturin
maturin build

Building the Backend

The backend is easy to build:

cd naludaq_rs
cargo build --release

Developers may ommit the --release flag for unoptimized builds.

Building for RPI4

Building using docker:

docker build . -t cc/rpi4

to make the container, the build the app with:

docker run --rm -v ${pwd}:/app cc/rpi4

Running the Backend

To run the backend, run the following command:

cargo run  --release -- [<ROOT>] [--addr <ADDR>] [-d | --debug]  [--api]

Where the arguments are as follows:

  • <ROOT> is the root directory to run the server in. By default, it is the current working directory of the terminal it was run from.
  • --addr <ADDR> is the address to bind the server to in the format IP:PORT. If unspecified, the server is bound to an open port on the loopback address.
  • -d | --debug shows additional debug messages.
  • --api will open the Swagger UI in the system browser.

Documentation

The documentation can be built using the following command:

cargo doc --document-private-items --no-deps

The API

NaluDAQ_rs is controlled through its REST API over HTTP. This allows it to be controlled from any machine connected to a network.

The backend can be controlled on the fly via Swagger. Use the --api flag when starting the backend to display the Swagger UI.

Alternatively, the (non-interactive) Swagger UI may be viewed without the backend by running the following command:

cargo run --bin api -- [--output OUTPUT_FILE]

If the --output argument is provided, the OpenAPI JSON data describing the API is written to the file and the program will immediately exit.

Developers

Profiling

Use the build profile called `release-with-debug for building release mode with debug symbols.

cargo build --profile release-with-debug

On Windows machines with Intel processors you can use Intel VTune to profile the backend.

Building the Documentation

cargo doc --open

Tweaking Dependencies

The crate depends on a couple crates published to crates.io. If you are touching these dependencies and wish to test out your changes without publishing the crates, clone the dependencies and change these lines in Cargo.toml:

# naluacq = "X.X.X"
# ft60x_rs = "X.X.X"
naluacq = { "path" = "path/to/naluacq" }
ft60x_rs = { "path" = "path/to/ft60x-rs" }

Architecture

Below is a non-exhaustive diagram of the architecture of the backend highlighting only the main components and their interactions.

graph LR

    Board[Board]
    Connection[Connection]
    Disk[Disk]
    subgraph workers [Workers]
        Worker_Connection[Connection Worker]
        Worker_Package[Package Worker]
        Worker_Storage[Storage Worker]
        Worker_Answer[Answer Worker]
        Worker_Answer_Buffer[Answer Buffer]
    end
    subgraph server [Server Endpoints]
        Endpt_Configure_Workers[Configure Workers]
        Endpt_Send_Command[Send Command]
        Endpt_Recv_Answer[Receive Answer]
        Endpt_Fetch_Event[Fetch Event]
        Endpt_Manage_Connection[Manage Connection]
    end
    Board -->|Readout/Answer| Connection
    Connection -->|Board Output| Worker_Connection
    Connection -->|Command| Board
    Worker_Connection -->|Board Output| Worker_Package
    Worker_Package -->|Event| Worker_Storage
    Worker_Package -->|Answer| Worker_Answer
    Worker_Storage -->|Event| Disk
    Worker_Answer -->|Answer| Worker_Answer_Buffer

    Endpt_Send_Command -->|Command| Connection
    Worker_Answer_Buffer -->|Answer| Endpt_Recv_Answer
    Disk -->|Event| Endpt_Fetch_Event
    Endpt_Manage_Connection -->|Configuration| Connection
    Endpt_Configure_Workers -->|Configuration| Worker_Package
    Endpt_Configure_Workers -->|Configuration| Worker_Storage
    Endpt_Configure_Workers -->|Configuration| Worker_Answer

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

naludaq_rs-0.2.8-cp39-abi3-win_amd64.whl (8.1 MB view details)

Uploaded CPython 3.9+ Windows x86-64

naludaq_rs-0.2.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.3 MB view details)

Uploaded CPython 3.9+ manylinux: glibc 2.17+ x86-64

naludaq_rs-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.5 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

naludaq_rs-0.2.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.3 MB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ x86-64

File details

Details for the file naludaq_rs-0.2.8-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for naludaq_rs-0.2.8-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 bb87bbbeac89973106aa3c6ea9a61dd4820a0fc9810d4696a8ca0fc4c0ce5ec3
MD5 a331408d17d41ba3046ff2053246d8d0
BLAKE2b-256 35a0d6c3a378e8eb175eefd7198f255773a02317ed0258c5b403f2a3182e6f00

See more details on using hashes here.

File details

Details for the file naludaq_rs-0.2.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for naludaq_rs-0.2.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 56fd3942259a880bf3b283e4e6c68a93dc2cb5e31d2acf8971a485498f119dc2
MD5 191be85ed47f2e644c2a69099b9ec627
BLAKE2b-256 c8a1c8ed4d41d5fdb3a407bdbd76c5f1d983d988dd2a8d93ba153dca8d9cf57b

See more details on using hashes here.

File details

Details for the file naludaq_rs-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for naludaq_rs-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3142cf6aa7e7ae248678522520f66bca84490a59c550422eb3cd2f7377a97f35
MD5 1406a3cc3aafbf6e740126427ec81187
BLAKE2b-256 b6604bf214defa5845785aeefe93db07f5a578de235614b290af64ccb185ec4f

See more details on using hashes here.

File details

Details for the file naludaq_rs-0.2.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for naludaq_rs-0.2.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ade376cbef9aa619f3bb8f4b24153d784970c4499b325ef02cc40040a5793cb
MD5 66f15b3f4b795579b4bc9c3366ef41fd
BLAKE2b-256 0ae4ec52a98a3b711c1d26db6c781ec9b86aa1cbac062e340f5b432182032914

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page