From ca2de39f662e6cfac8664e124d47a5b8c2744a1c Mon Sep 17 00:00:00 2001 From: Kalyan Sriram Date: Sun, 20 Feb 2022 23:36:15 -0800 Subject: [PATCH] update nunavut_support --- src/nunavut/lang/py/support/nunavut_support.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/nunavut/lang/py/support/nunavut_support.py b/src/nunavut/lang/py/support/nunavut_support.py index 374f2b9f..d3b0460c 100644 --- a/src/nunavut/lang/py/support/nunavut_support.py +++ b/src/nunavut/lang/py/support/nunavut_support.py @@ -19,6 +19,19 @@ import pydsdl + +if sys.byteorder != "little": # pragma: no cover + raise RuntimeError( + "BIG-ENDIAN PLATFORMS ARE NOT YET SUPPORTED. " + "The current serialization code assumes that the native byte order is little-endian. Since UAVCAN uses " + "little-endian byte order in its serialized data representations, this assumption allows us to bypass data " + "transformation in many cases, resulting in zero-cost serialization and deserialization. " + "Big-endian platforms are unable to take advantage of that, requiring byte swapping for multi-byte entities; " + "fortunately, nowadays such platforms are uncommon. If you need to use this library on a big-endian platform, " + "please implement the missing code and submit a pull request to the upstream, then remove this exception." + ) + + Byte = numpy.uint8 """ We must use uint8 instead of ubyte because uint8 is platform-invariant whereas (u)byte is platform-dependent.