BoundDevice.swift 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import Foundation
  2. /// Represents a physical recording device bound to a user account via BLE.
  3. struct BoundDevice: Codable, Identifiable, Equatable {
  4. let id: String // CoreBluetooth peripheral identifier
  5. var name: String // User-defined display name
  6. var peripheralUUID: String // CoreBluetooth Peripheral UUID
  7. var boundAt: Date // Date when bound to user account
  8. var isConnected: Bool // Connection status (runtime state)
  9. var batteryLevel: Int? // Battery percentage (0 - 100)
  10. var firmwareVersion: String? // Firmware version
  11. var boundUserId: String // User account ID owning this device
  12. var advertisedName: String? // Name reported in the BLE advertisement
  13. var hardwareMAC: String? // Hardware identity returned by PQ_BLE&MAC
  14. var freeStorageMB: Int?
  15. var totalStorageMB: Int?
  16. init(
  17. id: String = UUID().uuidString,
  18. name: String,
  19. peripheralUUID: String = UUID().uuidString,
  20. boundAt: Date = Date(),
  21. isConnected: Bool = false,
  22. batteryLevel: Int? = 85,
  23. firmwareVersion: String? = "v1.2.0",
  24. boundUserId: String,
  25. advertisedName: String? = nil,
  26. hardwareMAC: String? = nil,
  27. freeStorageMB: Int? = nil,
  28. totalStorageMB: Int? = nil
  29. ) {
  30. self.id = id
  31. self.name = name
  32. self.peripheralUUID = peripheralUUID
  33. self.boundAt = boundAt
  34. self.isConnected = isConnected
  35. self.batteryLevel = batteryLevel
  36. self.firmwareVersion = firmwareVersion
  37. self.boundUserId = boundUserId
  38. self.advertisedName = advertisedName
  39. self.hardwareMAC = hardwareMAC
  40. self.freeStorageMB = freeStorageMB
  41. self.totalStorageMB = totalStorageMB
  42. }
  43. }
  44. /// Helper structure for BLE scanning discovery results
  45. struct DiscoveredBLEDevice: Identifiable, Equatable {
  46. let id: String
  47. let name: String
  48. let rssi: Int
  49. let peripheralUUID: String
  50. }