Skip to content

Commit

Permalink
Merge #21
Browse files Browse the repository at this point in the history
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
bors[bot] and azasypkin authored Sep 17, 2019
2 parents c6cec19 + 6b40c5d commit d301998
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions data.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@
author_website: https://thejpster.org.uk/
description: A simple 1980's home computer style application for the Tiva-C Launchpad
image: https://raw.githubusercontent.com/thejpster/monotron/master/screenshot.jpg
- name: Kroneum
website: https://github.com/azasypkin/kroneum
author: Aleh Zasypkin
author_website: https://github.com/azasypkin
description: An experimental, accessible (no GUI) and fully open source (both in code and hardware) time tracker device. The board exposes pads for I²C and SPI interfaces, acts as an USB HID device when connected to USB port and hence can be used as a playground for any custom firmware.
image: https://raw.githubusercontent.com/azasypkin/kroneum/master/hw/enclosure/Rev_0.5/demo/kroneum-enclosure-render.png

# Template for new entries

Expand Down

0 comments on commit d301998

Please sign in to comment.