GATT

3.2.1

Bluetooth Generic Attribute Profile (GATT) for Swift
PureSwift/GATT

What's New

3.2.1

2024-03-15T19:48:03Z

Full Changelog: 3.2.0...3.2.1

GATT

Swift Platform Release License

Bluetooth Generic Attribute Profile (GATT) for Swift

Usage

Peripheral

import Bluetooth
#if canImport(Darwin)
import DarwinGATT
#elseif os(Linux)
import BluetoothLinux
#endif

#if os(Linux)
typealias LinuxPeripheral = GATTPeripheral<BluetoothLinux.HostController, BluetoothLinux.L2CAPSocket>
guard let hostController = await HostController.default else {
    fatalError("No Bluetooth hardware connected")
}
let serverOptions = GATTPeripheralOptions(
    maximumTransmissionUnit: .max,
    maximumPreparedWrites: 1000
)
let peripheral = LinuxPeripheral(
    hostController: hostController,
    options: serverOptions,
    socket: BluetoothLinux.L2CAPSocket.self
)
#elseif canImport(Darwin)
let peripheral = DarwinPeripheral()
#else
#error("Unsupported platform")
#endif

// start advertising
try await peripheral.start()

Central

import Bluetooth
#if canImport(Darwin)
import DarwinGATT
#elseif os(Linux)
import BluetoothLinux
#endif

#if os(Linux)
typealias LinuxCentral = GATTCentral<BluetoothLinux.HostController, BluetoothLinux.L2CAPSocket>
let hostController = await HostController.default
let central = LinuxCentral(
    hostController: hostController,
    socket: BluetoothLinux.L2CAPSocket.self
)
#elseif canImport(Darwin)
let central = DarwinCentral()
#else
#error("Unsupported platform")
#endif

// start scanning
let stream = try await central.scan(filterDuplicates: true)
for try await scanData in stream {
    print(scanData)
    stream.stop()
}

Documentation

Read the documentation here. Documentation can be generated with DocC.

See Also

  • Bluetooth - Pure Swift Bluetooth Definitions
  • BluetoothLinux - Pure Swift Linux Bluetooth Stack
  • Netlink - Swift library for communicating with Linux Kernel Netlink subsystem (Linux Only)

License

GATT is released under the MIT license. See LICENSE for details.

Description

  • Swift Tools 5.6.0
View More Packages from this Author

Dependencies

Last updated: Sun Dec 01 2024 12:25:01 GMT-1000 (Hawaii-Aleutian Standard Time)