Commit d301998
Merge #21
21: Add Kroneum r=adamgreig a=azasypkin
Hey,
I'd like to showcase my Kroneum device. It's an experimental (yet), minimalist, accessible (no GUI) and fully open source (both in code and hardware) time tracker device.
* Source code: https://github.com/azasypkin/kroneum
* License: https://github.com/azasypkin/kroneum/blob/master/LICENSE
* Software: https://github.com/azasypkin/kroneum/tree/master/sw (firmware + CLI tool)
* Hardware: https://github.com/azasypkin/kroneum/tree/master/hw/pcb/Rev_0.5
**NOTE:** I've linked to the rendered photo even though repository contains photo of real assembled device (it just looks better than the photo taken with my not-the-best-in-class phone camera).
Would be happy to hear any improvement suggestions even if it's not accepted, thanks!
----
# Evaluation guidelines
## Hard requirements
- [x] It's an application (binary crate) that runs on embedded hardware (Single Board Computer, development board or custom PCB). - **YES** (custom PCB + custom enclosure)
- [x] The main logic of the application must be written in Rust. - **YES** (including USB CLI tool)
- [x] The source code must be public. Licensing terms are unimportant. - **YES** (including PCB and enclosure design files)
## Bonus points
- [x] The project is unlike the projects currently on display. - **YES** (it seems)
- [x] The documentation includes instructions on how to build the program, or the firmware can be built with just `cargo build`. - **YES**
- [x] The repository has a CI setup. - **YES** (very basic one though)
- [x] The application compiles on stable. - **YES**
- [ ] The application code is free from `unsafe` code and all `unsafe` code has been pushed to libraries that only expose a safe API. - **NO** (still have a bunch of cases where I couldn't find a good way to get rid of `unsafe`)
- [x] Code that's not target specific, if any, has unit tests. - **YES and NO** (target agnostic [api](https://github.com/azasypkin/kroneum/tree/master/sw/firmware/api) crate has a number of unit tests, but not everything is covered)
- [x] Support code, if any, is documented. - **YES** (via code comments)
## Penalties
- [x] The application contains potential soundness issues. For example, using
`mem::transmute`, unchecked creation of singletons and unchecked use of
`static mut` variables are huge red flags. - **YES and NO** (still have one root `static Mutex<RefCell>`, cannot migrate to and not really happy about `cortex-m-rtfm` 🤷♂️ )
- [x] Explicit panicking (e.g. `unwrap`) is used instead of proper error handling.
However, note that `unreachable!` is OK if properly used. - **YES** (have a few `.expect(..)` at the `main` during device bootstrap stage)
Co-authored-by: Aleh Zasypkin <[email protected]>1 file changed
+6
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
31 | 37 | | |
32 | 38 | | |
33 | 39 | | |
| |||
0 commit comments