feat: add display UI with splash screen, dashboard, and RSSI sparkline
Implement full SSD1306 OLED display support: - Splash screen on boot (1.5s) with project name, version, board - Dashboard showing radio state, config, counters, RSSI/SNR - RSSI history sparkline (64-sample ring buffer, 2px-wide bars) - DisplayOn/DisplayOff host commands routed via dedicated channel - Pure render functions against generic DrawTarget (no hardware coupling) - Display on/off control bypasses radio task entirely Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
17624 files changed
+4564928
-38
No files matched your search
+94
@@ -0,0 +1,94 @@
|
||||
<p align="center">
|
||||
<img width="150" src="https://raw.githubusercontent.com/embedded-graphics/embedded-graphics/b225511f390c0ed9bc065eb67d05125845312148/assets/logo_core.svg?sanitize=true" alt="Embedded graphics logo">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://circleci.com/gh/embedded-graphics/embedded-graphics/tree/master"><img src="https://circleci.com/gh/embedded-graphics/embedded-graphics/tree/master.svg?style=shield" alt="Build Status"></a>
|
||||
<a href="https://crates.io/crates/embedded-graphics-core"><img src="https://img.shields.io/crates/v/embedded-graphics-core.svg" alt="Crates.io"></a>
|
||||
<a href="https://docs.rs/embedded-graphics-core"><img src="https://docs.rs/embedded-graphics-core/badge.svg" alt="Docs.rs"></a>
|
||||
<a href="https://matrix.to/#/#rust-embedded-graphics:matrix.org"><img src="https://img.shields.io/matrix/rust-embedded-graphics:matrix.org" alt="embedded-graphics on Matrix"></a>
|
||||
</p>
|
||||
|
||||
# Embedded graphics core
|
||||
|
||||
embedded-graphics-core contains the core components of [embedded-graphics] that are required to
|
||||
add embedded-graphics support to display drivers, image libraries, text renderers and other
|
||||
third party crates.
|
||||
|
||||
This crate should only be used by crates that extend embedded-graphics.
|
||||
Applications should instead depend on [embedded-graphics] itself.
|
||||
|
||||
Like any other crate, embedded-graphics-core will change over time, however it will change at a
|
||||
much slower rate than embedded-graphics itself, and will likely release fewer breaking changes.
|
||||
This will provide more stability and compatibility for the wider embedded-graphics ecosystem,
|
||||
whilst allowing non-core features of embedded-graphics to evolve at a faster pace. The same
|
||||
version of embedded-graphics-core may be used for multiple major versions of embedded-graphics.
|
||||
|
||||
### Core functionality
|
||||
|
||||
* [`DrawTarget`] - By implementing a draw target for a display driver, all embedded-graphics drawables can be drawn to that display.
|
||||
* [`Drawable`] - This trait can be implemented to make an object drawable to any [`DrawTarget`]. Examples include shapes, text, UI elements, etc.
|
||||
* [`ImageDrawable`]
|
||||
* Color types - see below.
|
||||
* Geometry - [`Point`], [`Size`] and [`Rectangle`] provide ways of defining positions, dimensions and rectangular areas respectively.
|
||||
|
||||
## Colors
|
||||
|
||||
The [`pixelcolor`] module provides various standard color types, from [`BinaryColor`] to
|
||||
[`Rgb888`]. See the [`pixelcolor`] module documentation for the complete list of color depths
|
||||
and formats available.
|
||||
|
||||
## Display drivers
|
||||
|
||||
See the [`DrawTarget`] documentation for examples on how to integrate embedded-graphics with a
|
||||
display driver using the [`DrawTarget`] trait.
|
||||
|
||||
## Images
|
||||
|
||||
The [`ImageDrawable`] trait should be implemented for any image or image-like item, for example
|
||||
a spritemap.
|
||||
|
||||
[`Pixel`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/drawable/struct.Pixel.html
|
||||
[`Point`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/geometry/struct.Point.html
|
||||
[`Size`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/geometry/struct.Size.html
|
||||
[`Drawable`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/drawable/trait.Drawable.html
|
||||
[`DrawTarget`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/draw_target/trait.DrawTarget.html
|
||||
[`Rectangle`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/primitives/rectangle/struct.Rectangle.html
|
||||
[`Dimensions`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/geometry/trait.Dimensions.html
|
||||
[`OriginDimensions`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/geometry/trait.OriginDimensions.html
|
||||
[`BinaryColor`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/pixelcolor/enum.BinaryColor.html
|
||||
[`Rgb888`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/pixelcolor/struct.Rgb888.html
|
||||
[`ImageDrawable`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/image/trait.ImageDrawable.html
|
||||
[`pixelcolor`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/pixelcolor/trait.PixelColor.html
|
||||
|
||||
## Features
|
||||
|
||||
- `defmt` - implements `defmt::Format` for all types where this is possible. Note that `defmt`
|
||||
might not work with older versions of rustc that are otherwise supported by embedded-graphics-core.
|
||||
|
||||
[embedded-graphics]: https://docs.rs/embedded-graphics
|
||||
[`Rgb888`]: pixelcolor::Rgb888
|
||||
|
||||
## Minimum supported Rust version
|
||||
|
||||
The minimum supported Rust version for embedded-graphics-core is `1.71.1` or greater.
|
||||
Ensure you have the correct version of Rust installed, preferably through <https://rustup.rs>.
|
||||
|
||||
## Development setup
|
||||
|
||||
Please see the [development setup guide](../doc/development-setup.md).
|
||||
|
||||
## License
|
||||
|
||||
Licensed under either of
|
||||
|
||||
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
|
||||
http://www.apache.org/licenses/LICENSE-2.0)
|
||||
- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
|
||||
|
||||
at your option.
|
||||
|
||||
### Contribution
|
||||
|
||||
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the
|
||||
work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
|
||||
additional terms or conditions.
|
||||
Reference in new issue
Block a user