Client, server, and protobuf libraries#

pw_rpc: Efficient, low-code-size RPC system for embedded devices

C++ server and client

C++ server and client library API guides. Server, client, and server/client libraries are available. Sharing code between servers and clients is possible. RPC calls are represented through a call class; both servers and clients use the same base call class. RPCs can be invoked asynchronously through callbacks or synchronously through a blocking API. RPC calls can be introspected to obtain information that was generated during compilation.

Python client

Python client library API reference. The Python client can send requests and handle responses for a set of channels. The callback-based API supports invoking RPCs asynchronously. There’s also an utilities API for extending pw_console to interact with RPCs.

TypeScript client

TypeScript client library API guide. Unary-streaming, server-streaming, client-streaming, and bi-directional streaming are supported. RPCs can be invoked asynchronously through callbacks or synchronously through promises.

Nanopb codegen

Nanopb codegen library API guide. Generates services which encode and decode RPC requests and responses as Nanopb message structs.

pw_protobuf codegen

pw_protobuf codegen library API guide. Generates services which encode and decode RPC requests and responses as pw_protobuf message structs.