mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-15 00:34:08 +09:00
feat: moved all reader's values to the Codable protocol
This commit is contained in:
@@ -13,7 +13,7 @@ import Foundation
|
||||
import Kit
|
||||
import CoreBluetooth
|
||||
|
||||
public struct BLEDevice {
|
||||
public struct BLEDevice: Codable {
|
||||
let address: String
|
||||
var name: String
|
||||
var uuid: UUID?
|
||||
@@ -24,7 +24,7 @@ public struct BLEDevice {
|
||||
var isConnected: Bool = false
|
||||
var isPaired: Bool = false
|
||||
|
||||
var peripheral: CBPeripheral?
|
||||
var peripheral: CBPeripheral? = nil
|
||||
var isPeripheralInitialized: Bool = false
|
||||
|
||||
var id: String {
|
||||
@@ -38,6 +38,42 @@ public struct BLEDevice {
|
||||
return Store.shared.bool(key: "ble_\(self.id)", defaultValue: false)
|
||||
}
|
||||
}
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case address, name, uuid, RSSI, batteryLevel, isConnected, isPaired
|
||||
}
|
||||
|
||||
init(address: String, name: String, uuid: UUID?, RSSI: Int?, batteryLevel: [KeyValue_t], isConnected: Bool, isPaired: Bool) {
|
||||
self.address = address
|
||||
self.name = name
|
||||
self.uuid = uuid
|
||||
self.RSSI = RSSI
|
||||
self.batteryLevel = batteryLevel
|
||||
self.isConnected = isConnected
|
||||
self.isPaired = isPaired
|
||||
}
|
||||
|
||||
public init(from decoder: Decoder) throws {
|
||||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||
self.address = try container.decode(String.self, forKey: .address)
|
||||
self.name = try container.decode(String.self, forKey: .name)
|
||||
self.uuid = try? container.decode(UUID.self, forKey: .uuid)
|
||||
self.RSSI = try? container.decode(Int.self, forKey: .RSSI)
|
||||
self.batteryLevel = try container.decode(Array<KeyValue_t>.self, forKey: .batteryLevel)
|
||||
self.isConnected = try container.decode(Bool.self, forKey: .isConnected)
|
||||
self.isPaired = try container.decode(Bool.self, forKey: .isPaired)
|
||||
}
|
||||
|
||||
public func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
try container.encode(address, forKey: .address)
|
||||
try container.encode(name, forKey: .name)
|
||||
try container.encode(uuid, forKey: .uuid)
|
||||
try container.encode(RSSI, forKey: .RSSI)
|
||||
try container.encode(batteryLevel, forKey: .batteryLevel)
|
||||
try container.encode(isConnected, forKey: .isConnected)
|
||||
try container.encode(isPaired, forKey: .isPaired)
|
||||
}
|
||||
}
|
||||
|
||||
public class Bluetooth: Module {
|
||||
|
||||
Reference in New Issue
Block a user