| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- //
- // BLEFirmwareVersion.swift
- // RileyLinkBLEKit
- //
- // Copyright © 2017 Pete Schwamb. All rights reserved.
- //
- public struct BLEFirmwareVersion {
- private static let prefix = "ble_rfspy "
- let components: [Int]
- let versionString: String
- init?(versionString: String) {
- guard
- versionString.hasPrefix(BLEFirmwareVersion.prefix),
- let versionIndex = versionString.index(versionString.startIndex, offsetBy: BLEFirmwareVersion.prefix.count, limitedBy: versionString.endIndex)
- else {
- return nil
- }
- self.init(
- components: versionString[versionIndex...].split(separator: ".").compactMap({ Int($0) }),
- versionString: versionString
- )
- }
- init(components: [Int], versionString: String) {
- self.components = components
- self.versionString = versionString
- }
- }
- extension BLEFirmwareVersion {
- static var unknown: BLEFirmwareVersion {
- return self.init(components: [0], versionString: "Unknown")
- }
- public var isUnknown: Bool {
- return self == BLEFirmwareVersion.unknown
- }
- }
- extension BLEFirmwareVersion: CustomStringConvertible {
- public var description: String {
- return versionString
- }
- }
- extension BLEFirmwareVersion: Equatable {
- public static func ==(lhs: BLEFirmwareVersion, rhs: BLEFirmwareVersion) -> Bool {
- return lhs.components == rhs.components
- }
- }
- extension BLEFirmwareVersion {
- var responseType: PeripheralManager.ResponseType {
- guard let major = components.first, major >= 2 else {
- return .buffered
- }
- return .single
- }
- }
|