Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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 <aleh.zasypkin@gmail.com>
- Loading branch information