Metadata-Version: 2.0
Name: flora-tools
Version: 0.1.11
Summary: Tool and library for interfacing with the PermaSense Flora nodes, enabling programming, configuring and measuring.
Home-page: https://github.com/Atokulus/flora_tools.git
Author: atokulus
Author-email: atokulus@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: intelhex
Requires-Dist: jupyter
Requires-Dist: matplotlib
Requires-Dist: networkx
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: pyserial
Requires-Dist: pyvisa
Requires-Dist: setuptools

# About `flora_tools`

The `flora_tools` package provides the tools and means for developing on the new PermaSense flora DPP2 Comboards, facilitating the LoRa radio SX1262 from Semtech.

Module | Description
------ | -----------
`flora_tools`             | General resources, such as the static calculation of time-on-air, Gloria & LWB figures, <br />basic interfacing via serial/UART, and interface for the Tektronix oscilloscope to measure the timings precisely
`flora_tools.experiments` | All scripted experiments, utilizing e.g. the oscilloscope
`flora_tools.analysis`    | Jupyter notebooks for condensed visual representation.
`flora_tools.sim`         | The simulation server for the protocol layers
`flora_tools.toolchain`   | The scripts for flashing and maintaining the firmware projects
`flora_tools.stm32loader` | The script which implements the STM32's UART ROM-bootloader protocol

# Installation Guide

Install Python3.7+ and pip 10.0+. If your are using Ubuntu 18.04, these are already installed. Then you can install the pip package `flora-tools`

```sh
python -m pip install flora-tools
```

If you run into problems, try `python3 -m pip` or `pip3`, as there are still many old distributions around.

### Run The script ###

Use 

```sh
python -m flora-tools  # With a dash!
```

or just

```
flora_tools  # With an underscore!
```

### Development ### 

Do not install the python package from PyPi, but rather clone this repository and run

```sh
git submodule update --init --recursive
python -m pip install -e .
```

inside the top folder (where `setup.py` is located). You can edit the source files and the module will reflect the changes automatically.

The python package is generated and uploaded according to (https://packaging.python.org/tutorials/packaging-projects/).
Do not forget to clone the git submodules as well.


## Patch Atollic TrueStudio Eclipse Project Files
As there are no external include paths and symbols configured in a freshly generated Atollic TrueStudio project, the project's XML files have to be patched.

Just run

```sh
python -m flora-tools patch_eclipse path/to/flora_repository
```


## Mass programming/flashing DevKits (STM32L476RG) and Comboards (STM32L443CC, STM32L433CC) with built-in ROM UART-Bootloader

Using the `stm32loader` library for Python 3 (originally by *florisla*), all SX126xDVK1xAS devkits and DPP-Comboard modules can be programmed simultaneously. The library is available as a git submodule inside the `flora-tools` python package.

Ensure you have closed all your serial-port connections to your DevKits or ComBoards.

You can now either put the MCU into bootloader mode by pullin BOOT0-pin high (connect with VCC), set the J502 & J503 solder bridges on the DPP carrier board, or use the dedicated FlOS CLI command `system bootloader` inside *flora CLI* to jump directly into the ROM bootloader. All variant are supported automatically by the command below.

Check that you have compiled and built your Atollic project correctly and have a `*.hex` or `*.binary` file inside the `Outputs` folder. Then run the following command with the correct path (i.e. where the `platform` and `lib` folder are located).:

```sh
python -m flora-tools program_all path/to/flora_repository
```

## Programming single Device
```sh
python -m flora-tools program path/to/firmware(.hex/.binary) -p COM1
```

## Measurement setup

### Precise timing measurements

![Setup to measure precise timings](/doc/img/measurements-cable_setup.png)

### Measurements over GPIB/LXI/VISA
For a working PyVISA installation for interfacing with the oscilloscope and power analyzers you need to follow this [guide](https://pyvisa.readthedocs.io/en/stable/getting_nivisa.html). For Windows, you can download the following VISA backend driver: (http://www.ni.com/download/ni-visa-18.0/7597/en/)

Use NI MAX to configure all your devices.

### Tektronix MSO4104B oscilloscope

First, upgrade your oscilloscope to the lates firmware version, as the `HORIZONTAL:RECORDLENGTH` command won't work otherwise.

Connect your oscilloscope to LAN via a Ethernet.

Push the `Utility` button and switch to the `Utility Page` `I/O`. Select `Ethernet & LXI`. Disable the `e*Scope Password`. Set the `Network Configuration` (bottom) to `Automatic` to get a DHCP lease.

Add your Tektronix MSO4104B oscilloscope in NI MAX. You have to note down the VISA Resource Name.

## FlockLab Integration

*To be integrated.*


