Skip to main content

gRPC

gRPC is Google remote procedure call library, it uses Protocol Buffers (Protobufs or Protos) as its core data format. It supports unary and streaming for both the client and server. Within Echelon, assets are typically gRPC servers and the frontend acts as the client. Often other drones are clients as well but they should all support being a gRPC server.

The main three permutations used by Echelon are

Unary Request, Unary Response

This is used to send commands to the asset, for example the request would be some waypoint data and the response would be a wilco (will comply) or rejection.

Unary Request, Streaming Response

This is generally used to ask for telemetry or some other update from the asset. Generally, the request will contain some limited information about what they wants about the telemetry (ie report rate for example). The asset will then return data until the client either closes the stream or it breaks from some external factor (ie. network failure)

info

You might ask why this isn't done over UDP, mainly its easier and good enough for now. Eventually it will make sense to support unreliable reporting given TCP gRPC isn't super cheap network wise.