RileyLinkDevice.swift 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //
  2. // RileyLinkDevice.swift
  3. // RileyLinkBLEKit
  4. //
  5. // Copyright © 2017 Pete Schwamb. All rights reserved.
  6. //
  7. import CoreBluetooth
  8. public enum RileyLinkHardwareType {
  9. case riley
  10. case orange
  11. case ema
  12. var monitorsBattery: Bool {
  13. if self == .riley {
  14. return false
  15. }
  16. return true
  17. }
  18. }
  19. public struct RileyLinkDeviceStatus {
  20. public let lastIdle: Date?
  21. public let name: String?
  22. public let version: String
  23. public let ledOn: Bool
  24. public let vibrationOn: Bool
  25. public let voltage: Float?
  26. public let battery: Int?
  27. public let hasPiezo: Bool
  28. public init(lastIdle: Date?, name: String?, version: String, ledOn: Bool, vibrationOn: Bool, voltage: Float?, battery: Int?, hasPiezo: Bool) {
  29. self.lastIdle = lastIdle
  30. self.name = name
  31. self.version = version
  32. self.ledOn = ledOn
  33. self.vibrationOn = vibrationOn
  34. self.voltage = voltage
  35. self.battery = battery
  36. self.hasPiezo = hasPiezo
  37. }
  38. }
  39. public protocol RileyLinkDevice {
  40. var isConnected: Bool { get }
  41. var rlFirmwareDescription: String { get }
  42. var hasOrangeLinkService: Bool { get }
  43. var hardwareType: RileyLinkHardwareType? { get }
  44. var rssi: Int? { get }
  45. var name: String? { get }
  46. var deviceURI: String { get }
  47. var peripheralIdentifier: UUID { get }
  48. var peripheralState: CBPeripheralState { get }
  49. func readRSSI()
  50. func setCustomName(_ name: String)
  51. func updateBatteryLevel()
  52. func orangeAction(_ command: OrangeLinkCommand)
  53. func setOrangeConfig(_ config: OrangeLinkConfigurationSetting, isOn: Bool)
  54. func orangeWritePwd()
  55. func orangeClose()
  56. func orangeReadSet()
  57. func orangeReadVDC()
  58. func findDevice()
  59. func setDiagnosticeLEDModeForBLEChip(_ mode: RileyLinkLEDMode)
  60. func readDiagnosticLEDModeForBLEChip(completion: @escaping (RileyLinkLEDMode?) -> Void)
  61. func assertOnSessionQueue()
  62. func sessionQueueAsyncAfter(deadline: DispatchTime, execute: @escaping () -> Void)
  63. func runSession(withName name: String, _ block: @escaping (_ session: CommandSession) -> Void)
  64. func getStatus(_ completion: @escaping (_ status: RileyLinkDeviceStatus) -> Void)
  65. }
  66. extension Array where Element == RileyLinkDevice {
  67. public var firstConnected: Element? {
  68. return self.first { (device) -> Bool in
  69. return device.isConnected
  70. }
  71. }
  72. }