Helium protobuf definitions compiled to JS with TypeScript types
npm install @helium/proto!lint workflow
!rust workflow
!node.js workflow
!erlang workflow
!cpp workflow
Using this repository requires protobuf's protoc to be installed. The
package to be installed differs per host platform.
- Protobuf message definitions live in either:
- src/service/*.proto if only used in gRPC service definitions, or
- src/*.proto if used by service-free code or shared across gRPC services
- 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 and should be in Hz
- rssi or signal is always negative, thus use sint32 and is in deci-dbm (aka ddbm) which is dbm * 10
- 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
- Document units of fields
- When exceptions to the above occur, please explain _why_ within comments