fork of the tinygo bluetooth library with some bad ideas implemented
Go to file
Ayke van Laethem c26709f8c6 Update README
2020-05-30 23:42:45 +02:00
.circleci Add initial Windows support 2020-05-30 21:51:27 +02:00
examples Add support for scanning for devices 2020-05-28 11:57:02 +02:00
s132_nrf52_6.1.1 Initial commit 2019-11-08 10:58:02 +01:00
s140_nrf52_7.0.1 Port current codebase to S140 softdevice 2020-03-06 14:24:50 +01:00
winbt Add initial Windows support 2020-05-30 21:51:27 +02:00
.gitattributes Initial commit 2019-11-08 10:58:02 +01:00
.gitignore Add smoke tests that run in CI 2020-05-24 19:19:37 +02:00
adapter_linux.go Add support for scanning for devices 2020-05-28 11:57:02 +02:00
adapter_s132.c softdevice: make code more flexible for other SoftDevices 2020-03-06 13:46:42 +01:00
adapter_s132.go softdevice: make code more flexible for other SoftDevices 2020-03-06 13:46:42 +01:00
adapter_s140.c Port current codebase to S140 softdevice 2020-03-06 14:24:50 +01:00
adapter_s140.go Port current codebase to S140 softdevice 2020-03-06 14:24:50 +01:00
adapter_sd.go Add support for scanning for devices 2020-05-28 11:57:02 +02:00
adapter_windows.go Add initial Windows support 2020-05-30 21:51:27 +02:00
adapter.go Add flag for debug printing 2020-05-25 17:26:24 +02:00
error_sd.go softdevice: make code more flexible for other SoftDevices 2020-03-06 13:46:42 +01:00
gap_linux.go Add support for scanning for devices 2020-05-28 11:57:02 +02:00
gap_sd.go Add support for scanning for devices 2020-05-28 11:57:02 +02:00
gap_windows.go Add initial Windows support 2020-05-30 21:51:27 +02:00
gap.go Add support for scanning for devices 2020-05-28 11:57:02 +02:00
gatts_linux.go Add Go module support 2020-05-25 00:10:28 +02:00
gatts_sd.go softdevice: make code more flexible for other SoftDevices 2020-03-06 13:46:42 +01:00
gatts.go gatts: implement write event for characteristics 2019-11-09 13:55:34 +01:00
go.mod Add initial Windows support 2020-05-30 21:51:27 +02:00
go.sum Add initial Windows support 2020-05-30 21:51:27 +02:00
LICENSE Initial commit 2019-11-08 10:58:02 +01:00
mac.go Add support for scanning for devices 2020-05-28 11:57:02 +02:00
Makefile Add initial Windows support 2020-05-30 21:51:27 +02:00
README.md Update README 2020-05-30 23:42:45 +02:00
uuid_sd.go softdevice: make code more flexible for other SoftDevices 2020-03-06 13:46:42 +01:00
uuid_test.go linux: add support for services 2019-11-16 19:11:59 +00:00
uuid.go go fmt 2020-05-27 16:50:21 +02:00

Go Bluetooth

CircleCI GoDoc

This package attempts to build a cross-platform Bluetooth Low Energy module for Go. It currently supports the following systems:

Windows Linux Nordic chips
Scanning ✔️ ✔️ ✔️
Advertisement ✔️ ✔️
Local services ✔️ ✔️
Local characteristics ✔️

Baremetal support

As you can see above, there is support for some chips from Nordic Semiconductors. At the moment the following chips are supported:

These chips are supported through TinyGo.

The SoftDevice is a binary blob that implements the BLE stack. There are other (open source) BLE stacks, but the SoftDevices are pretty solid and have all the qualifications you might need. Other BLE stacks might be added in the future.

Flashing the SoftDevice

Flashing the SoftDevice can be tricky. If you have nrfjprog installed, you can erase the flash and flash the new BLE firmware using the following commands. Replace the path to the hex file with the correct SoftDevice, for example s132_nrf52_6.1.1/s132_nrf52_6.1.1_softdevice.hex for S132 version 6.

nrfjprog -f nrf52 --eraseall
nrfjprog -f nrf52 --program path/to/softdevice.hex

After that, don't reset the board but instead flash a new program to it. For example, you can flash the Heart Rate Sensor example using tinygo (modify the -target flag as needed for your board):

tinygo flash -target=pca10040-s132v6 ./examples/heartrate

Flashing will normally reset the board.

License

This project is licensed under the BSD 3-clause license, see the LICENSE file for details.

The SoftDevices from Nordic are licensed under a different license, check the license file in the SoftDevice source directory.