Crate rusp_lib

Crate rusp_lib 

Source
Expand description

A toolkit, written in Rust, providing support to work with USP Records and Messages which are encoded in Protobuf bytestreams.

§What is it?

While a Protobuf schema exists which allows generating bindings for several commonly used programming languages, those are either uncomfortable to use and/or highly unsafe. By leveraging the strong Rust type system and the strict compiler, Rust is capable of detecting many incorrect or incomplete uses of the Protobuf encoding at compile time which allows for confident use of the USP protocol. This crate provides an abstraction over the automatically generated Protobuf De-/Serialisers as well as a tool to work with USP Records and Messages on the command line.

§What is included?

The toolkit includes:

  • Generated low-level Rust Protobuf bindings
  • A library providing:
    • Higher level access to deserialisation functionality
    • Convenience functions to work with the native Msg types
    • Pretty printing of USP Records and Messages
    • Serde de-/serialisation of USP Records and Messages
    • Unittests and documentation (including doctests/examples)
  • A rusp binary granting access to library functionality via command line. Included functionality at the moment are:
    • Decoding of USP Msg Protobuf byte streams from standard input
    • Decoding of USP Msg Protobuf byte streams from file(s)
    • Decoding of USP Record Protobuf byte streams from standard input
    • Decoding of USP Record Protobuf byte streams from file(s)
    • Extraction of USP Msg Protobuf byte streams from the payload of a USP Record Protobuf byte stream
    • Generation of USP Msg Protobuf byte streams and C char arrays for selected messages and Error

Modules§

usp
Automatically generated bindings for USP Msgs from the USP Messages Protobuf schema
usp_builder
Builder style functions to generate USP Messages
usp_decoder
Helper functions to decode a Protobuf encoded byte stream into Rust types
usp_encoder
Helper functions to encode native Rust types into Protobuf encoded byte streams
usp_errors
Helper functions for checking and conversion of USP error codes and messages
usp_record
Automatically generated bindings for USP Records from the USP Records Protobuf schema