Metadata-Version: 2.2
Name: trafficbench
Version: 0.2.2
Summary: a tool suite for the experimental exploration of concurrent packet transmissions and their consequences (physical layer effects) in low-power wireless networks
Author: Ingmar Splitt
Author-email: Carsten Herrmann <carsten.herrmann@tu-dresden.de>
Maintainer-email: ingmar.splitt@tu-dresden.de
Project-URL: Homepage, https://pypi.org/project/trafficbench/
Project-URL: Tracker, https://github.com/orgua/trafficbench/issues
Project-URL: Source, https://github.com/orgua/trafficbench
Keywords: concurrent transmission,physical layer,low-power,wireless,rssi,scheduling,synchronization
Platform: unix
Platform: linux
Platform: osx
Platform: cygwin
Platform: win32
Platform: win64
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: OS Independent
Classifier: Natural Language :: English
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy<2.0.0
Requires-Dist: tables
Requires-Dist: cbor2<5.5.0
Requires-Dist: crcmod
Requires-Dist: chromalog
Requires-Dist: pyserial
Requires-Dist: typing-extensions
Requires-Dist: typer
Provides-Extra: glue
Requires-Dist: glue-core; extra == "glue"
Requires-Dist: glueviz; extra == "glue"
Requires-Dist: matplotlib; extra == "glue"
Provides-Extra: lognplot
Requires-Dist: lognplot; extra == "lognplot"
Provides-Extra: dev
Requires-Dist: twine; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pyright; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: coverage; extra == "test"
Requires-Dist: shepherd-core[elf]; extra == "test"

# Trafficbench

[![PyPiVersion](https://img.shields.io/pypi/v/trafficbench.svg)](https://pypi.org/project/trafficbench)
[![image](https://img.shields.io/pypi/pyversions/trafficbench.svg)](https://pypi.python.org/pypi/trafficbench)
[![Pytest](https://github.com/orgua/trafficbench/actions/workflows/py_unittest.yml/badge.svg)](https://github.com/orgua/trafficbench/actions/workflows/py_unittest.yml)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)

Python-Package to process & analyze logs generated by Trafficbench. This replaces the former collection of scripts.

## Installation

### PIP - Online

```Shell
pip install trafficbench -U
```

For bleeding-edge-features or dev-work it is possible to install directly from GitHub-Sources (here `dev`-branch):

```Shell
pip install git+https://github.com/nes-lab/TrafficBench.git@dev#subdirectory=py_package -U
```

### PIP - Offline

- clone repository
- navigate shell into directory
- install local module

```shell
git https://github.com/orgua/shepherd-targets
cd .\nrf52_rf_survey\trafficbench\py_package

pip3 install .
```

### Additional Install-Options

- `glue`: live analysis & visualization
- `lognplot`:
- `dev`: all tools used for development
- `test`: environment to run unittests

Example usage:

```shell
pip3 install .[glue]
pip3 install .[dev, test]
pip3 install .[all]
```

## Usage

### CLI

Examples

```shell
trafficbench --help
trafficbench receive --help
```

### As python library

see [examples](./examples)

## TODO

- publish on PyPI
- further break down long functions
- implement streaming-functionality -> a set of generators?
  - uart -> filter -> dump -> analyze
- further cleanup as ruff & flake8 report 300+ warnings/errors
- add proper documentation with tutorial, examples
- gts = global timestamp
  - only 32 bit, increments with 16 MHz, overflows > 4min
  - should be extended by counting overflows or get guided by receive-TS
- analyze packet reception rate
- plot graph
