LibDC-Swift

GitHub forks GitHub stars License

一个 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()
                }
            }
        )
    }
}

设备配置 & 潜水日志检索

该框架围绕两个核心类构建

支持的设备

LibDC-Swift 支持所有具有 BLE 连接的潜水电脑品牌,如 libdivecomputer 中所定义。 一些支持的系列包括

文档

有关完整文档、高级用法示例和更多集成详细信息,请访问我们的 Wiki。 主题包括

贡献

欢迎贡献! 请参阅我们的 贡献指南 以获取更多信息。

许可证

本项目根据 GNU Lesser General Public License v2.1 获得许可 - 有关详细信息,请参阅 LICENSE 文件。

致谢

LibDC-Swift 构建于 libdivecomputer 之上,提供 Swift 绑定和附加功能,以支持现代 iOS 和 macOS 应用程序。