Metadata-Version: 2.1
Name: luxwave
Version: 4.2026.4.2
Summary: Python client library for ELARA, LuxWave's RF channel emulator: RF ports, channel impairments (delay, Doppler, noise), scenarios and monitoring
Author: LuxWave
License: Proprietary
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Telecommunications Industry
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
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: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Communications
Project-URL: Homepage, http://www.luxwave.lu
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# ELARA Python API

`luxwave` is the Python client library for ELARA, LuxWave's RF channel emulator. From your own Python
scripts it sets the RF inputs and outputs, configures channel impairments (delay, Doppler, noise),
uploads and plays scenarios, and reads monitoring data.

## What you need

- An ELARA board that your computer can reach over the network.
- A LuxWave account. The client signs in with it before it connects to the board.
- 64-bit Python 3.10 or later, on Windows (x64) or Linux (x86_64).

## Install

```shell
pip install luxwave
```

## Example

```python
from luxwave import ELARA, ChannelConfig, ChannelConfigInput, ChannelConfigOutput, ChannelStart, ScenarioMode

api = ELARA("192.168.1.10", "your-username", "your-password")   # the board's address, your LuxWave account
steps = [ChannelConfig(step_number=i, delay_enable=True, delay_ms=10.0 + i,
                       doppler_enable=True, doppler_hz=5.0 * i,
                       inputs=[ChannelConfigInput(input=api.inputs[0], attenuation_db=60.0)],
                       outputs=[ChannelConfigOutput(output=api.outputs[0])])
         for i in range(1000)]                    # 1,000 steps: the delay and the Doppler shift ramp up
api.set_channel_impairments(0, steps)             # upload them to channel 0
api.start_scenario(ChannelStart(channel_index=0, scenario_mode=ScenarioMode.PLAY_ONCE))
print(api.fetch_monitoring(0).delays[0])          # the delay channel 0 applies now, in ms
api.close()
```

## User guide

The user guide is installed with the package, as `luxwave_api/docs/index.html` in your Python's
`site-packages` folder. It also comes with every Python API download on the LuxWave Toolkit's
Python API card. It describes the classes and methods, with a complete example.
