Skip to content

OWTS radio protobuf (Nanopb)

This folder holds the aircraft → winch telemetry message (owts_aircraft_telemetry.proto) and the generated Nanopb sources (*.pb.c, *.pb.h).

Prerequisites

From the repository root, use the project virtualenv (see root pyproject.toml):

  • nanopb — code generator
  • grpcio-tools — optional; root uv env is enough if protoc is found by the generator

Install / sync deps:

cd /path/to/OWTS
uv sync

Regenerate *.pb.c / *.pb.h

Run from the repository root (so paths stay consistent):

uv run nanopb_generator -D main/proto -I main/proto main/proto/owts_aircraft_telemetry.proto
  • -I main/proto — search path for .proto and .options (same basename, e.g. owts_aircraft_telemetry.options).
  • -D main/proto — write outputs next to the .proto.

After changing, commit the updated owts_aircraft_telemetry.pb.c and owts_aircraft_telemetry.pb.h so firmware builds without running the generator on CI.

Verbose log (debug)

uv run nanopb_generator -v -D main/proto -I main/proto main/proto/owts_aircraft_telemetry.proto

When to regenerate

  • Edited owts_aircraft_telemetry.proto (fields, types, enums).
  • Edited owts_aircraft_telemetry.options (Nanopb limits, e.g. string max_size).
  • Upgraded the nanopb Python package — regenerate and check pb.h for PB_PROTO_HEADER_VERSION / size defines.

Encoded size

AircraftRadioDownlink_size in owts_aircraft_telemetry.pb.h is the maximum encoded length of one RF downlink message (used to size the SX1262 payload buffer and packet length).