Tinygo Org Bluetooth Versions Save

Cross-platform Bluetooth API for Go and TinyGo. Supports Linux, macOS, Windows, and bare metal using Nordic SoftDevice or HCI

v0.9.0

1 month ago
  • build
    • add arduino-nano33 and pyportal to smoke tests
    • add nina-fw smoketest as peripheral
    • add some ninafw examples to smoketest
  • core
    • add ServiceData advertising element (#243)
    • add RequestConnectionParams to request new connection parameters
    • change ManufacturerData from a map to a slice
    • don't use a pointer receiver for many method calls
    • make Device a value instead of a pointer
    • use 'debug' variable protected by build tags for debug logging
    • use Device instead of Address in SetConnectHandler
  • docs
    • a small mention of the NINA BLE support
    • complete README info about nina-fw support
  • linux
    • fix characteristic value
    • rewrite everything to use DBus directly
  • macos
    • add Write command to the gattc implementation
  • examples
    • tinyscan to replace clue-scanner, also works on pyportal and pybadge+airlift
    • update MCU central examples to use ldflags to pass the desired device to connect to
    • discover: add MTU
  • hci
    • add check for poll buffer overflow
    • allow for both ninafw and pure hci uart adapter implementations
    • implement Characteristic WriteHandler
    • multiple connections
    • return service UUIDs with scan results
    • add l2cap signaling support
    • implement evtNumCompPkts to count in-flight packets
    • correct implementation for WriteWithoutReponse
    • speed up time waiting for hardware - corrections to MTU exchange
    • add support for software RTS/CTS flow control for boards where hardware support is not available
    • BLE central implementation on nina-fw co-processors
    • fix connection timeout
    • implement BLE peripheral support
    • implement GetMTU()
    • remove some pointer receivers from method calls
    • should support muliple connections as a central
    • correctly return from read requests instead of returning spurious error
    • move some steps previously being done during Configure() into Start() where they more correctly belonged.
    • use advertising display name as the correct default value for the generic access characteristic.
    • speed up the polling for new notifications for Centrals
    • use NINA settings from board file in main TinyGo repo
  • nordic semi
    • replace unsafe.SliceData call with expression that is still supported in older Go versions
    • update to prepare for changes in the TinyGo CGo implementation
    • add address of connecting device
    • add support for connection timeout on connect
    • don't send a notify/indicate without a CCCD
    • fix connect timeout
    • fix writing to a characteristic
    • print connection parameters when debug is enabled
    • return an error on a connection timeout
  • windows
    • Release AsyncOperationCompletedHandler (#208)
    • check for error when scanning
    • bump to latest winrt

v0.8.0

7 months ago
  • build
    • remove CGo dependencies for Windows cross-compiler tests
    • add Windows to GH actions build jobs
    • add macOS 12 to GH actions build jobs
  • core
    • go 1.18 and remove old-style build tags
    • Noescape workaround
  • docs
    • update README to remove CGo requirement for Windows
    • add documentation to heartrate-monitor
  • linux
    • Added option to add ManufacturerData to Advertisement
  • macos
    • enable support for duplicate chars by moving from a map to a slice
  • examples
    • Include WriteWithoutResponse permission, for examples, where Write exists
  • nordic semi
    • softdevice: added manufacturer data support
    • softdevice: test creation of raw BLE advertisement packets
  • windows
    • update github.com/saltosystems/winrt-go to no longer require CGo

v0.7.0

11 months ago
  • build
    • switch to ghcr.io for docker container
    • update to actions/checkout@v3
    • work around for CVE-2022-24765
  • core
    • gap: Set and SetRandom methods should have a pointer receiver
    • mtu-{darwin,linux,windows,sd}: add get mtu function
    • remove Addresser
    • update uuid generation
  • docs
    • CONTRIBUTING: add note on new APIs
    • correct badge link for GH actions
    • README: add note on macOS Big Sur and iTerm2
  • linux
    • do not randomize order of returned discovered services/chars
    • fix characteristic scan order
    • implement disconnect handling
  • macos
    • implement disconnect handling
    • fix characteristic scan order
  • examples
    • add examples/stop-advertisement
  • nordic semi
    • nrf528xx: handle BLE_GAP_EVT_PHY_UPDATE_REQUEST and explicitly ignore some other events
    • softdevice: avoid a heap allocation in the SoftDevice event handler
  • windows
    • Added Indicate support to Windows driver
    • gap/windows: Scan should set scanning mode to active to match other platforms
    • support empty manufacturer data
    • winrt-go: bump to latest

v0.6.0

1 year ago
  • core
    • unify UUID16 creation for all platforms
    • Improve UUID (#107)
    • gap: stop advertising
    • advertising: add manufacturer data field to advertisement payload
  • linux
  • windows
    • add characteristic read, write and notify operations
    • add characteristic discovery
    • add service discovery
    • add device connection and disconnection
    • add winrt-go dependency and remove manually generated code
    • disable cache when reading characteristics
  • macos
    • update to tinygo-org fork of cbgo v0.0.4
    • use the same UUID format as expected by other standard
  • docs
    • update README with info on Windows support
  • build
    • add Github Action based CI build (#108)

v0.5.0

2 years ago
  • core
    • update to drivers 0.20.0
    • Fix ParseMAC bug
    • Add //go:build lines for Go 1.18
  • nordic semi
    • nrf: fix CGo errors after TinyGo update

v0.4.0

2 years ago
  • core
    • adapter: add host address function
  • linux
    • fixes bluez 0.55 service registration
    • update muka/go-bluetooth to latest version
    • gattc/linux: DiscoverServices times out in 10s
  • macos
    • make Adapter.Connect thread-safe
  • nordic semi
    • nrf51: fix assertHandler function signature
    • nrf: add support for S113 SoftDevice
    • nrf: update s140v7 SoftDevice version to latest, 7.3.0
  • examples
    • add scanner for Adafruit Clue
  • build
    • circleci: update xcode in use to 10.3.0
    • modules: add tinyterm package for clue example

v0.3.0

3 years ago
  • core
    • generate standard service and characteristic UUIDs from Nordic Semiconductor bluetooth numbers database
  • linux
    • downgrade to older version of go-bluetooth that appears to work correctly with BlueZ 5.50
  • macos
    • properly handle 16-bit UUIDs for service and characteristics in the unique format used by macOS
  • docs
    • add a few details on some newly supported boards
  • examples
    • use standard service and characteristic UUIDs
    • correct heart rate monitor data format

v0.2.0

3 years ago
  • core
    • gattc: DeviceCharacteristic Read() implementation
    • gap: add Disconnect() to Driver
    • gap: change signature for Addresser interface Set() function to accept string and then parse it as needed
  • linux
    • update to latest version of go-bluetooth package for Linux
  • macos
    • handle case when adapter enable sends notification before event delegate is set
    • Document async Disconnect behaviour
  • examples
    • discover should only wait on startup on baremetal, since macOS does not like that

v0.1.0

3 years ago

0.1.0

  • linux
    • support for both central and peripheral operation
  • macos
    • support for both central and peripheral operation
  • windows
    • experimental support for both central scanning only
  • nordic semiconductor
    • support for both central and peripheral operation on nRF82840 and nRF52832
    • support for peripheral only on nRF51822