Notes
=====

This file contains various notes about the development of this
repository.


This is based upon the PingPong code from Heltec for Node 151[1].

The STM32Cube packages are undocumented as far as I can tell.  Various
files were copied from the PingPong code.

MIT licensed code for the SX1276 is available at https://github.com/HelTecAutomation/Heltec_ESP32/tree/master/src/lora .

BSD licensed code for the SX1276 is available at https://github.com/Lora-net/LoRaMac-node .
It includes support for the STM32 micros, and so was used as the basis.
Biggest issue is that it adds yet another HAL layer to the whole
thing.

mscgen for message diagram generation

ECDH: https://tools.ietf.org/html/rfc7748#section-6.1


Command to find and copy various files into the tree.  Almost all files
were pulled from the STM32CubeL1 tree, but there was one or two that
was pulled from LoRaMac-node tree.
```
cp $(find /tmp/Pingpong_CDC/ -name cmsis_gcc.h) stm32/
```

The following command can be used to strip CR's, and to remove any
trailing new lines.  Note that in order to save my sanity, the files
are committed after cleaning.  The repo does NOT contain (if it can be
avoided) the pre-cleaned files.  The diff options `-w -b` may be used
to ignore these cleanups.

```
# there is a ^V^I and a ^V^M in the following:
LANG=C sed -i '' -e 's/[       ]*^M$//' $(find stm32/ -type f)
```

Running gdb
-----------

First, just run `openocd`, but w/o any needed command, or you can reset it:
```
sudo openocd -f interface/ftdi/digilent-hs1.cfg -f interface/ftdi/swd-resistor-hack.cfg -f target/stm32l1.cfg -c "init" -c "reset init"
```

Then run `arm-none-eabi-gdb` with the elf binary, and attach to OpenOCD
with the command:
```
target remote localhost:3333
```

The gdb monitor command allows control of the device.  For example:
```
monitor reset halt
```

will reset the device, and halt it immediately, allowing setting a break
point for main, or earlier.

[1] https://heltec-automation-docs.readthedocs.io/en/latest/stm32/lora_node_151/pingpong_test.html