refactor: project structure (#9)

Split up project into multiple crates and use a Cargo workspace.
This commit is contained in:
Markus Zehnder
2025-08-28 09:03:30 +02:00
committed by GitHub
parent f0128197d9
commit d98cd89c48
71 changed files with 672 additions and 401 deletions
+13 -11
View File
@@ -1,8 +1,8 @@
# AOOSTAR WTR MAX Screen Control
# AOOSTAR WTR MAX / GEM12+ PRO Screen Control
Reverse engineering the [AOOSTAR WTR MAX](https://aoostar.com/products/aoostar-wtr-max-amd-r7-pro-8845hs-11-bays-mini-pc)
display protocol, with a proof-of-concept application written in Rust.
This project should also support the GEM12+ PRO device.
It has only been tested on the WTR MAX, but should also support the GEM12+ PRO device.
**Disclaimer: ‼️ EXPERIMENTAL — use at your own risk ‼️**
@@ -10,6 +10,8 @@ This project should also support the GEM12+ PRO device.
> There is no official documentation available;
> all display control commands have been reverse engineered from the original AOOSTAR-X software.
Even though this software works fine **for me**, I cannot guarantee that it is risk-free:
- It may or may not work.
- It could crash the display firmware, requiring a power cycle.
- It could even brick the display firmware.
@@ -20,14 +22,14 @@ Note: Multiple attempts to contact the manufacturer for documentation have recei
With that out of the way, on to the fun stuff!
**See [Linux shell commands](doc/shell_commands.md) on how to switch off the display with standard Linux commands!**
**See [Linux shell commands](docs/shell_commands.md) on how to switch off the display with standard Linux commands!**
See [releases](https://github.com/zehnm/aoostar-rs/releases) for binary Linux x64 releases and [Linux systemd Service](linux/)
on how to automatically switch off the LCD at boot up. A Debian package for easy installation is planned for the future!
## Reverse Engineering
Reverse engineered LCD commands: [doc/lcd_protocol.md](doc/lcd_protocol.md)
Reverse engineered LCD commands: [docs/lcd_protocol.md](docs/lcd_protocol.md)
### Motivation
@@ -50,7 +52,7 @@ The display remains on continuously (24×7) if the official software is not runn
- [x] Reverse engineer the LCD serial protocol to provide open screen software.
- Utilize the official AOOSTAR-X display software by sniffing USB communication, using `strace`, and decompiling the Python app.
- [x] Document known commands so clients in other programming languages can be written.
- [ ] Eventually, create a Rust crate for easy integration into other Rust applications.
- [ ] Eventually, publish a Rust crate for easy integration into other Rust applications.
**Out of scope:**
@@ -63,7 +65,9 @@ The display remains on continuously (24×7) if the official software is not runn
- Control the AOOSTAR WTR MAX and GEM12+ PRO second screen from Linux.
- Switch the display on or off.
- Display images (with automatic scaling and partial update support).
- Proof-of-concept demo for drawing shapes and text.
- Render dynamic sensor panels defined from the AOOSTAR-X software.
- Update sensor values from simple text files.
- Rotate through multiple panels in a defined interval.
- USB device/serial port selection.
## Setup
@@ -87,21 +91,19 @@ cd aoostar-rs
### Build
A release build is highly recommended, as it significantly improves graphics performance:
A release build is highly recommended, as it significantly improves graphic rendering performance:
```shell
cargo build --release --bins --all-features
cargo build --release
```
The `--bins` option builds the main `asterctl` app and all other tools.
### Install
See [Linux systemd Service](linux/) on how to automatically switch off the LCD at boot up.
## Usage
See [asterctl documentation](doc/README.md) for more information or run `asterctl --help` for available command line options.
See [asterctl documentation](docs/README.md) for more information or run `asterctl --help` for available command line options.
## Contributing