This adds support for the "connection supervision timeout", basically
the connection timeout while the connection is active (as opposed to
while connecting).
This allows changing the connection latency, slave latency, and
connection timeout of an active connection - whether in the central or
peripheral role. This is especially helpful on battery operated BLE
devices that don't have a lot of power and need to lower the connection
latency for improved speed. It might also be useful for devices that
need high speed, as the defaults might be too low.
For details, see: https://github.com/tinygo-org/tinygo/pull/3927
I ran the smoke tests and the binaries are exactly identical to what
they were before, so this change cannot have had an effect on these
smoke tests (which is expected, as this is mostly just changing some
types without changing the machine data type).
Make use of a few new features in TinyGo:
* Functions and globals in header files are supported.
* Static functions are supported.
This allows us to remove workarounds specifically used for the lack of
support for static functions.
Remove the Addresser type. It isn't really necessary (the Address type
can change between OSes) and makes it difficult to fix a heap allocation
in interrupts (on the Nordic SoftDevices).
This is a backwards incompatible change, but only programs that use
SetConnectHandler should notice this.
This SoftDevice is used by default on the BBC micro:bit v2 so it's a
good idea to add support here.
Unfortunately this SoftDevice does not support scanning and connecting
to other devices. This means that I unfortunately had to duplicate the
event handler. I managed to refactor most other code to avoid
duplicating much more. (This is when macros would have been useful in
Go...)