Skip to content

Guide for contributors #208

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

Merged
merged 3 commits into from
Oct 25, 2022
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,18 @@
![rust workflow](https://github.com/helium/proto/actions/workflows/rust.yml/badge.svg)
![node.js workflow](https://github.com/helium/proto/actions/workflows/node.yml/badge.svg)
![erlang workflow](https://github.com/helium/proto/actions/workflows/erlang.yml/badge.svg)

## Contributing

- Avoid `float` in Protobufs because representations differ across hardware architectures
+ There are many floating point representations from IEEE, plus others
+ i.e., some range of interior digits are random per float spec
- Frequency should use `uint32`
+ Locally, define accessor functions to return float after appropriate division
- rssi or signal is always negative, thus use `sint32`
- snr is signal-to-noise ratio and should be `uint32`
- Fetch and share time in nanos, then truncate to appropriate granularity as needed
+ e.g., get from OS in nanos
- Reject any PR unless units are documented inline within Protobuf definition
- Append units suffix on field names when deviating from the above descriptions
- When exceptions to the above occur, please explain *why* within comments