Skip to main content

OxTS RT-Range data parsing utility

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rt_range-0.3.2.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

rt_range-0.3.2-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file rt_range-0.3.2.tar.gz.

File metadata

  • Download URL: rt_range-0.3.2.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for rt_range-0.3.2.tar.gz
Algorithm Hash digest
SHA256 fa92c400ca275f43f9f0af0b0f51622ec819af8c4dce8346d1e3ad5806ce57da
MD5 09fb2c52c5194a5193d748651a3aa121
BLAKE2b-256 5d7b83798dc3f7803331100970c473aab0501f968a119aeea8d3d976923c7a9a

See more details on using hashes here.

File details

Details for the file rt_range-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: rt_range-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for rt_range-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1d8c19c5ff30315fdbf69475645c6611d96f01cebf7ec8e90310fa941270473d
MD5 a6d47d7e90fd1f2c940388d182b465d7
BLAKE2b-256 f2c33a404f43c8488d5a78282c68f07e8f88ec23f15965d832d76e701f3bffd5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page