Version | Last Changelog | Ready? |
---|---|---|
V1.1.x | Operational initial release | โ |
V1.2.x | Crashes fixed + smoother graph + implemented medical staff feedbacks | โ |
V1.3.x | Improve text readability, by increasing font sizes | โ |
In order to setup your environment and build the code, please follow the following commands (for MacOS):
- Install Rustup
- รnsure you are using the Rust stable toolchain:
rustup default stable
- On Linux, make sure you have cmake installed and those libraries (debian):
libxcb-shape0 libxcb-shape0-dev libxcb-xfixes0 libxcb-xfixes0-dev libfontconfig libfontconfig1-dev
- Build the project:
cargo build
Wayland support may be available but it hasn't been tested. You need a working X11 server.
Tested at Rust version: rustc 1.43.0 (4fb7144ed 2020-04-20)
To run the Control UI, please ensure that your device first has an open serial connection with the motherboard.
Note that the Control UI relies on the MakAir Telemetry library, which gets pulled from the makair-telemetry repository.
Take note of the serial port used as an input on your Control UI board, and call:
- Run:
./makair-control --port=0
(where--port
is your serial port ID, maybe /dev/ttyUSB0)
You may also play a pre-recorded file, by passing it as an input (this is handy while developing; example records are available in the telemetry library repository):
- Pull the telemetry library (in the parent directory):
git pull https://github.com/makers-for-life/makair-telemetry.git
- Run an example (from the Control UI directory):
./makair-control --input=../makair-telemetry/records/few_cycles
(where--input
is an UNIX file path)
As MakAir was designed to be used internationally, we have made sure that the Control UI was fully translated in major languages.
You can pass the desired locale code when running the makair-control
binary, using the --translation
argument. Make sure to pass the locale ISO code, eg. for French: --translation=fr
.
โก๏ธ You can find the list of supported languages, with their ISO language codes below:
- ๐ฌ๐ง English:
en
- ๐ซ๐ท French:
fr
- ๐ฉ๐ช German:
de
โ (WIP) - ๐ฎ๐น Italian:
it
โ (WIP) - ๐ช๐ธ Spanish:
es
โ (WIP) - ๐ต๐น Portuguese:
pt
- ๐ต๐ฑ Polish:
pl
โ (WIP) - ๐ฑ๐ป Latvian:
lv
โ (WIP) - ๐ท๐บ Russian:
ru
โ (WIP) - ๐บ๐ฆ Ukrainian:
uk
โ (WIP) - ๐น๐ท Turkish:
tr
โ (WIP) - ๐ฆ๐ฟ Azerbaijani:
az
โ (WIP) - ๐จ๐ณ Chinese (Simplified):
zh
โน๏ธ If your language does not appear in the list above, you may translate the base English file, then open a Pull Request.
To cross-compile a new release for an ARM target (using MUSL; statically-linked libraries), you can call the release_binaries.sh
script:
- Run:
./scripts/release_binaries.sh --version=1.0.0
Make sure to replace the version
script argument with the current release version. This is used for file naming purposes only.
The Control UI behavior can be tuned at compile time, by enabling some optional features while building the binary:
- Automatic graph scaler:
- Feature name:
graph-scaler
- Build command:
cargo build --features=graph-scaler
- Purpose: enables automatic graph maximum calculation, and re-adjustments as the target peak pressure is adjusted by an operator, or the largest point pressure value on screen overflows the graph. This overrides the default static maximum pressure value, that is based on the theoretical saturation maximum in an human subject. While the dynamic graph scaler system was previously the default, based on medical staff feedback it has been made static in order to improve machine usability in real-world scenarios. The auto-scaler feature was confusing for them, as traditional respirator systems use an hardcoded maximum.
- Feature name:
In case of an issue, please review the following points and check if any could help:
- If you are on Linux, you need to be a member of the
dialout
group for your user to be able to use the device created by the serial port;