Skip to content
Permalink
Browse files

Update DESIGN.md

Added specification of the two last points as well
  • Loading branch information...
kjetilkjeka committed Aug 13, 2017
1 parent fe343de commit f8076a830ca197e3758133072400ece6298011d2
Showing with 7 additions and 0 deletions.
  1. +7 −0 DESIGN.md
@@ -2,13 +2,20 @@

## Design Goals
- High robustness and safety
- Allow error handling in an [idioatmic](https://doc.rust-lang.org/book/second-edition/ch09-00-error-handling.html) fashion
- Following the rust API [Type safety guidelines](https://rust-lang-nursery.github.io/api-guidelines/type-safety.html)
- Following the rust API [dependability guidelines](https://rust-lang-nursery.github.io/api-guidelines/dependability.html)
- The tests should provide a reasonable coverage.
- Be explicit in what kind of guarantees the library provides (and also in the lack of guarantees).
- Feature-completeness, suitability for complex applications (like Libuavcan, unlike Libcanard). This includes:
- rpc like features on top of service frames both from a caller and responder perspective. The caller should be able to choose between synchronous and asynchronous alternatives.
- Provide common application level functionality. To make the implementation as maintainable as possible, these should require as little knowledge of the internals as possibly. They will more often than not exist in their own crate depending on the other uavcan crates. Some of the feature that will be supported is listed here:
- Network discovery
- Time synchronization
- Dynamic ID allocation server and client
- Ease of use
- Follow the rust [API guidelines](https://rust-lang-nursery.github.io/api-guidelines/about.html)
- Using "ease of use" as a metric when discussing addition/changes
- Assume as little as possible about the application and hardware
- The library should be useful in the following scenarios:
- Bare metal environment

0 comments on commit f8076a8

Please sign in to comment.
You can’t perform that action at this time.