Skip to main content

OxTS RT-Range data parsing utility

This simple parser is capable of parsing RT-Range Ethernet packets (NCOM and RCOM).

REQUIRES PYTHON 3.10 OR NEWER

Installation

Use pip to install

pip install rt-range

Usage

Basic parsing

from rt_range.ethernet import EthernetParser

rt_packet: bytes = ...  # RT-Range Ethernet packet

# Parsing with automatic packet type identification
parsed: dict[str, ...] = EthernetParser.parse_rt_ethernet(rt_packet)

The packet type will be determined automatically. Raises ValueError if the bytestring is not a valid RT-Range packet. Raises NotImplementedError if the parser for detected type is not implemented.

Specifying packet type

from rt_range.ethernet import EthernetParser, PacketType

ncom_data: list[bytes] = ...  # RT-Range Ethernet packets list

# Parsing with specified type
parsed: list[dict[str, ...]] = [
    EthernetParser.parse_rt_ethernet(packet, PacketType.NCOM)
    for packet in ncom_data
]

This forces the parser to use the specified packet type regardless of the packet contents. Use this only if you are sure about the packet content asit may lead to parsing errors or unexpected values in the parsing result.

Raises NotImplementedError if the parser for detected type is not implemented.

Using Pandas

import pandas as pd
from rt_range.ethernet import EthernetParser, PacketType

range_data: list[bytes] = ...  # RT-Range Ethernet packets list

# Parsing and converting to DataFrame
parsed = pd.DataFrame([
    EthernetParser.parse_rt_ethernet(packet, PacketType.RCOM_extended_range)
    for packet in range_data
])

The returned list of dictionaries can be easily converted to the Pandas Dataframe for further processing.

Short documentation

Class EthernetParser

  • Package: rt_range.ethernet.eth_parser
  • Import: from rt_range.ethernet import EthernetParser
  • Purpose: RT-Range NCOM and RCOM packets parsing
  • Members:
    • Class method is_implemented(cls, packet_type: PacketType)

      Returns True if the parser for the specified packet type is implemented, False otherwise

    • Class method parse_rt_ethernet(cls, buffer: bytes, packet_type: PacketType | None = None)

      Parse bytes buffer to dict[str, ...]

Enum PacketType

  • Package: rt_range.ethernet.eth_parser
  • Import: from rt_range.ethernet import PacketType
  • Purpose: RT-Range packets types definitions
  • Members:
    • NCOM
    • RCOM_lane
    • RCOM_extended_range
    • RCOM_wrapped_NCOM
    • RCOM_trigger_time
    • RCOM_polygon
    • RCOM_multiple_sensor_point
    • Unknown

Enum SyncByte

  • Package: rt_range.ethernet.eth_parser
  • Import: from rt_range.ethernet import SyncByte
  • Purpose: Sync Byte definitions for distinguishing NCOM and RCOM
  • Members:
    • NCOM
    • RCOM

Class Packet

  • Package: rt_range.ethernet.rt_packet
  • Import: from rt_range.ethernet.rt_packet import Packet
  • Purpose: RT-Range parseable Packet
  • Members:
    • Method decode(self, buffer: bytes) -> tuple[np.array, Selector]

      Decodes bytes buffer with np.dtype to np.array

    • Method get(self, obj: np.array, name: str, selector: Selector)

      Decodes raw value using rules defined in packet structure

    • Method translate(self, obj: np.array, selector: Selector) -> dict[str, ...]

      Translates np.array into a dictionary

    • Method parse(self, buffer: bytes) -> dict[str, ...]

      Wrapper for decoding and translation

Metadata

Release files for rt-range 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rt-range 0.3.2
File Size Uploaded
rt_range-0.3.2.tar.gz 15.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rt-range 0.3.2
File Interpreter ABI Platform
rt_range-0.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 32.2 kB

Release files / rt_range-0.3.2.tar.gz

Download URL rt_range-0.3.2.tar.gz
Size 15.7 kB
Tags Source
SHA-256 checksum
How to use checksums
fa92c400ca275f43f9f0af0b0f51622ec819af8c4dce8346d1e3ad5806ce57da
BLAKE2b-256 checksum
How to use checksums
5d7b83798dc3f7803331100970c473aab0501f968a119aeea8d3d976923c7a9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Release files / rt_range-0.3.2-py3-none-any.whl

Download URL rt_range-0.3.2-py3-none-any.whl
Size 16.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1d8c19c5ff30315fdbf69475645c6611d96f01cebf7ec8e90310fa941270473d
BLAKE2b-256 checksum
How to use checksums
f2c33a404f43c8488d5a78282c68f07e8f88ec23f15965d832d76e701f3bffd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Release history Release notifications | RSS feed

This release

0.3.2 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page