一个 Swift 框架,用于通过蓝牙低功耗 (BLE) 与潜水电脑通信。构建于 libdivecomputer 之上,此软件包为 iOS 和 macOS 应用程序提供了一个现代的 Swift API,以便与各种潜水电脑进行交互。
使用 Swift Package Manager 将 LibDC-Swift 添加到您的项目中
dependencies: [
.package(url: "https://github.com/deepsealabs/libdc-swift", from: "1.3.0")
]
在与任何潜水电脑功能交互之前,请设置共享的潜水电脑上下文。 连接到设备后(例如,使用 DeviceConfiguration.openBLEDevice(name:deviceAddress:)
),您可以使用 DiveLogRetriever
类检索潜水日志。 以下代码段演示了一个简化的 SwiftUI 集成
import SwiftUI
import CoreBluetooth
import LibDCSwift
struct ConnectedDeviceView: View {
let device: CBPeripheral
@ObservedObject var bluetoothManager: CoreBluetoothManager
@ObservedObject var diveViewModel: DiveDataViewModel
var body: some View {
VStack {
// UI elements showing device info and dive logs...
Button("Get Dive Logs") {
retrieveDiveLogs()
}
if bluetoothManager.isRetrievingLogs {
ProgressView("Downloading...")
}
}
}
private func retrieveDiveLogs() {
// Ensure we have a valid device pointer
guard let devicePtr = bluetoothManager.openedDeviceDataPtr else {
print("❌ Device not connected")
return
}
bluetoothManager.isRetrievingLogs = true
bluetoothManager.currentRetrievalDevice = device
DiveLogRetriever.retrieveDiveLogs(
from: devicePtr,
device: device,
viewModel: diveViewModel,
bluetoothManager: bluetoothManager,
onProgress: { current, total in
DispatchQueue.main.async {
diveViewModel.updateProgress(count: current + 1)
}
},
completion: { success in
DispatchQueue.main.async {
if success {
print("✅ Dive logs successfully retrieved!")
} else {
print("❌ Failed to retrieve dive logs.")
}
bluetoothManager.clearRetrievalState()
}
}
)
}
}
该框架围绕两个核心类构建
DeviceConfiguration
提供以下功能
DiveLogRetriever
处理从连接的潜水电脑检索潜水日志。 它利用
LibDC-Swift 支持所有具有 BLE 连接的潜水电脑品牌,如 libdivecomputer 中所定义。 一些支持的系列包括
有关完整文档、高级用法示例和更多集成详细信息,请访问我们的 Wiki。 主题包括
欢迎贡献! 请参阅我们的 贡献指南 以获取更多信息。
本项目根据 GNU Lesser General Public License v2.1 获得许可 - 有关详细信息,请参阅 LICENSE 文件。
LibDC-Swift 构建于 libdivecomputer 之上,提供 Swift 绑定和附加功能,以支持现代 iOS 和 macOS 应用程序。