Commit Graph

23 Commits

Author SHA1 Message Date
Ayke van Laethem
96a2be1571 Add //go:build lines for Go 1.18
This will be needed eventually, so add them now already.
2022-04-19 11:00:08 +02:00
Ayke van Laethem
4c0df2892d nrf: fix CGo errors after TinyGo update
For details, see: https://github.com/tinygo-org/tinygo/pull/2774
2022-04-13 18:59:12 +02:00
Ron Evans
6dc1dff711
gap: add connection handler to be called on adapter connect/disconnect
Signed-off-by: deadprogram <ron@hybridgroup.com>
2020-09-10 17:17:45 +02:00
Ayke van Laethem
15b3e8e3e2
nrf: add GATT client
This is not entirely complete (some errors are not handled properly) but
it's a start.
2020-06-28 00:21:40 +02:00
Ayke van Laethem
b568c93250
all: add support for sending notifications
This is done by enabling the Notify permission and writing to the
characteristics: writes will automatically notify connected centrals.
2020-06-03 19:42:21 +02:00
Ayke van Laethem
f69df9d879
all: fix bug that caused a copied DefaultAdapter
The DefaultAdapter was a regular value, not a pointer-to-struct. This
meant that simply copying bluetooth.DefaultAdapter caused a copy of the
object itself (instead of a copy of the reference, as intended). This
meant that write events did not arrive.
2020-06-03 01:13:46 +02:00
Ayke van Laethem
49f8082e4b
all: replace GAP events with auto-restarting advertisements
There used to be GAP events (connect/disconnect). The main purpose for
these events was to allow applications to re-start advertisement when a
connection was lost - on nrf. Unfortunately things work differently on
Linux, which already has this behavior and for which I haven't yet
implemented these events. Therefore I have removed these events and
instead added code to automatically restart advertisement on connection
loss.

Supporting multiple (incoming) connections as a peripheral would be
useful, but is not currently supported.
2020-06-01 23:29:31 +02:00
Ayke van Laethem
0474d7b750
all: change DefaultAdapter function to global
All initialization can be done in the Enable call. This makes the API a
bit simpler and a bit more consistent between Nordic chips and other BLE
interfaces.
2020-06-01 13:27:56 +02:00
Ayke van Laethem
f91f73ede2
Add S110 version 8.0.0 SoftDevice for nrf51822
The nrf51822 chip is still widely available, for example in the BBC
micro:bit. Therefore it's a good idea to support it too.

Unfortunately, Nordic decided to change the API in some significant ways
so many parts are not compatible between S110 for nrf51 and the other
nrf52* SoftDevices.
2020-05-31 15:40:57 +02:00
Ayke van Laethem
7a11ef8562
Add support for scanning for devices
There are some limitations, but it basically works (on both Linux and
nrf).
2020-05-28 11:57:02 +02:00
Ayke van Laethem
93550127da
nrf: handle other GAP events even without event handler
There was a bug (fixed by this commit) that if there was no event
handler, other GAP events would also be ignored.
2020-05-27 16:50:41 +02:00
Ayke van Laethem
8162ae22f7
Handle BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST
Yet another event that must be handled. This is needed for newer Android
devices (with Android 10).
2020-05-25 17:52:08 +02:00
Ayke van Laethem
2d541f01eb
Handle BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST
Use the default PPCP parameters, don't set anything specific for this
connection.
2020-05-25 17:33:00 +02:00
Ayke van Laethem
f2f9a517d0
Add flag for debug printing
This should normally be false, but can be set to true for debugging.
2020-05-25 17:26:24 +02:00
Ayke van Laethem
d715f7d4df
Support BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST
This is generated by BlueZ (or Chromium?) and by some Android devices
(but not on my Android device for some reason). We currently default to
the lowest possible MTU for ease of implementing, but could perhaps
support a larger MTU in the future.
2020-05-25 16:56:36 +02:00
Ayke van Laethem
6f9f11dbac
Fix timeout when reading Generic Attribute 2020-05-23 20:25:03 +02:00
Ayke van Laethem
f86fd36240
softdevice: make code more flexible for other SoftDevices
This is required for adding S140 support. It relies on the following
TinyGo PR:
https://github.com/tinygo-org/tinygo/pull/942
2020-03-06 13:46:42 +01:00
Ayke van Laethem
6ded078c91
softdevice: fix event handler 2019-11-16 19:00:18 +01:00
Ayke van Laethem
e453c4d3f9
Add Linux support
Very much experimental, no BLE service support yet and BLE LocalName in
advertisement packet doesn't seem to work. So rather useless at the
moment.
2019-11-09 17:55:19 +01:00
Ayke van Laethem
6e4cf6f8e0
gatts: implement write event for characteristics 2019-11-09 13:55:34 +01:00
Ayke van Laethem
1d44126ac9
gap: implement basic event handling: connect/disconnect 2019-11-09 13:50:00 +01:00
Ayke van Laethem
62131e4c55
Allow setting permission flags on characteristics 2019-11-09 13:02:58 +01:00
Ayke van Laethem
0cabe28570
Initial commit 2019-11-08 10:58:02 +01:00