4.8 KiB
Provenance of flowrs-iface
Everything here is written for flowRS (Apache-2.0) except the parts below, which are Rust ports of permissively licensed reference code, made under the flowRS porting policy (port the algorithm, keep the notice, record it here).
Ports
| flowRS file | Ported from | Licence |
|---|---|---|
src/ros/rihs.rs |
rosidl_generator_type_description/__init__.py 5.2.1 (ros2/rosidl), as shipped in ros-lyrical-rosidl-generator-type-description 5.2.1: the field type table, the service/action derivation, the reference closure and calculate_type_hash |
Apache-2.0, Copyright 2023 Open Source Robotics Foundation, Inc. |
src/ros/msg.rs, src/ros/mod.rs |
rosidl_adapter/parser.py 5.2.1 (ros2/rosidl): parse_message_string, extract_file_level_comments, process_comments (the [unit] rule), parse_value_string, parse_primitive_value_string, parse_string_array_value_string, find_matching_end_quote, the name patterns; and rosidl_adapter/msg/__init__.py (the .msg → IDL type map: char → uint8, byte → octet) |
Apache-2.0, Copyright 2014-2018 Open Source Robotics Foundation, Inc. |
src/ros/msg.rs, src/ros/rihs.rs |
rosidl_parser/definition.py 5.2.1 (ros2/rosidl): the Service event message and the Action derived types and suffixes |
Apache-2.0, Copyright Open Source Robotics Foundation, Inc. |
src/ros/idl.rs |
Reads the IDL that rosidl_adapter/resource/*.idl.em generates (the placeholder member, <Struct>_Constants modules, array typedefs, the tuple-repr defaults); the parser itself is written for flowRS |
Apache-2.0 (the templates it reads the output of) |
The Apache License 2.0 text is the repository's LICENSE. Python's json.dumps escaping
(ensure_ascii) and textwrap.dedent behaviour are reimplemented from their documented
behaviour, not ported.
Written from specifications, not ported
| flowRS file | From | Note |
|---|---|---|
src/mavlink/crc.rs |
the MAVLink serialization guide (mavlink.io, "CRC_EXTRA calculation") and the X.25 CRC (CRC-16/MCRF4XX) | No pymavlink or mavgen code (LGPLv3) was read for it; pymavlink is only run out of process as the test oracle behind fixtures/mavlink/crc_extra.tsv |
src/mavlink/mod.rs, src/mavlink/units.rs |
the MAVLink XML schema documentation (mavlink.io, "Message Definitions") and the MIT XML itself | The unit table is flowRS's: each MAVLink name mapped to a UCUM code written as UCUM publishes it, and a scale |
src/uorb.rs |
PX4's uORB documentation (docs.px4.io, "uORB Message Documentation") | — |
src/dbc/ |
the DBC grammar as can-dbc (MIT OR Apache-2.0) parses it, which flowRS links for reading |
The writer is flowRS's |
src/proto.rs |
the protobuf language specification (protobuf.dev) | — |
src/arrow.rs |
Arrow's canonical extension types (arrow.fixed_shape_tensor, arrow.apache.org) |
Built on arrow-schema (Apache-2.0) |
Data
fixtures/ros-lyrical holds unmodified interface files from 23 ROS 2 Lyrical packages: 21
under Apache-2.0 and 2 (tf2_msgs, unique_identifier_msgs) under BSD-3-Clause. Sources,
digests and per-package licences: fixtures/ros-lyrical/README.md and MANIFEST.tsv.
fixtures/mavlink (MIT), fixtures/dbc (MIT, comma.ai opendbc), fixtures/uorb
(BSD-3-Clause, PX4) and fixtures/px4_msgs (BSD-3-Clause, PX4's px4_msgs at two release
branches, what src/uorb/skew.rs is tested against) hold small unmodified files of the corpora the projections are measured
on; each directory's README.md, MANIFEST.tsv and LICENSE give sources, digests and
licence texts. fixtures/mavlink/units.tsv and fixtures/mavlink/crc_extra.tsv are numbers
derived from the pinned MAVLink corpus (by tools/projections_corpus.py units, and by
pymavlink run out of process through tools/mavlink_crc_oracle.py). The full corpora are
pinned in tests/corpus/pins/ and fetched on demand.
Units
src/unit.rs ships no UCUM table and no QUDT data. It parses UCUM's case-sensitive grammar
and resolves the atoms it knows against a table of SI dimensions and conversion factors
written for flowRS, keyed by the UCUM code that names each unit. flowRS-only units are in
the flowrs: namespace, never minted as UCUM codes. A model may carry a QUDT IRI a user
supplies. See the repository NOTICE.
Dependencies added for the projections
| Crate | Licence | Why |
|---|---|---|
roxmltree 0.21 |
MIT OR Apache-2.0 | MAVLink XML, no_std |
can-dbc 10.0.0 (feature dbc), with can-dbc-pest 0.8, pest 2.9 |
MIT OR Apache-2.0 | DBC parsing |
arrow-schema 60 (feature arrow; already in the workspace) |
Apache-2.0 | Arrow schemas |
protox 0.10, prost-reflect 0.16 (dev only), with protox-parse, logos, prost-types, miette, stacker, psm |
MIT OR Apache-2.0; prost-types and miette Apache-2.0 |
The tests compile every protobuf projection and read its options back |