import Foundation /// Configuration to write to a physical beacon struct BeaconConfig { let uuid: String // 32 hex chars, no dashes let major: UInt16 let minor: UInt16 let measuredPower: Int8 // RSSI @ 1m, typically -100 let advInterval: UInt16 // in units of 100ms (2 = 200ms) let txPower: UInt8 // 0-7 let servicePointName: String let businessName: String /// UUID formatted with dashes (8-4-4-4-12) var formattedUUID: String { uuid.uuidWithDashes } static let defaultMeasuredPower: Int8 = -100 static let defaultAdvInterval: UInt16 = 2 static let defaultTxPower: UInt8 = 1 } /// Result from provisioning a beacon struct ProvisionResult { let success: Bool let message: String let config: BeaconConfig? } /// Result from verifying a beacon broadcast struct VerifyResult { let found: Bool let rssi: Int? let message: String }