Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Kroneum #21

Merged
merged 1 commit into from
Sep 17, 2019
Merged

Add Kroneum #21

merged 1 commit into from
Sep 17, 2019

Conversation

azasypkin
Copy link
Contributor

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.

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

  • It's an application (binary crate) that runs on embedded hardware (Single Board Computer, development board or custom PCB). - YES (custom PCB + custom enclosure)

  • The main logic of the application must be written in Rust. - YES (including USB CLI tool)

  • The source code must be public. Licensing terms are unimportant. - YES (including PCB and enclosure design files)

Bonus points

  • The project is unlike the projects currently on display. - YES (it seems)
  • The documentation includes instructions on how to build the program, or the firmware can be built with just cargo build. - YES
  • The repository has a CI setup. - YES (very basic one though)
  • 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)
  • Code that's not target specific, if any, has unit tests. - YES and NO (target agnostic api crate has a number of unit tests, but not everything is covered)
  • Support code, if any, is documented. - YES (via code comments)

Penalties

  • 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 🤷‍♂️ )

  • 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)

@azasypkin azasypkin requested a review from a team as a code owner September 15, 2019 13:15
@rust-highfive
Copy link

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @ryankurte (or someone else) soon.

If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.

Please see the contribution instructions for more information.

Copy link
Member

@adamgreig adamgreig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like a great project, thanks for submitting it!

bors r+

bors bot added a commit that referenced this pull request Sep 17, 2019
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>
@bors
Copy link
Contributor

bors bot commented Sep 17, 2019

Build succeeded

@bors bors bot merged commit 6b40c5d into rust-embedded:master Sep 17, 2019
@azasypkin
Copy link
Contributor Author

Thanks for the quick review!

@azasypkin azasypkin deleted the issue-xxx-kroneum-submission branch September 18, 2019 10:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants