mirror of
https://github.com/AU-COVIDSafe/mobile-ios.git
synced 2025-04-19 13:05:21 +00:00
COVIDSafe code from version 2.0 (#37)
This commit is contained in:
parent
cf93ea43c0
commit
8b75c1fc6f
55 changed files with 4624 additions and 1117 deletions
59
CovidSafe/Herald/Sensor/SensorArray.swift
Normal file
59
CovidSafe/Herald/Sensor/SensorArray.swift
Normal file
|
@ -0,0 +1,59 @@
|
|||
//
|
||||
// SensorArray.swift
|
||||
//
|
||||
// Copyright 2020 VMware, Inc.
|
||||
// SPDX-License-Identifier: MIT
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
/// Sensor array for combining multiple detection and tracking methods.
|
||||
public class SensorArray : NSObject, Sensor {
|
||||
private let logger = ConcreteSensorLogger(subsystem: "Sensor", category: "SensorArray")
|
||||
private var sensorArray: [Sensor] = []
|
||||
private var sensorDelegates: [SensorDelegate] = []
|
||||
public let payloadData: PayloadData
|
||||
public static let deviceDescription = "\(UIDevice.current.name) (iOS \(UIDevice.current.systemVersion))"
|
||||
|
||||
public init(_ payloadDataSupplier: PayloadDataSupplier) {
|
||||
logger.debug("init")
|
||||
// BLE sensor for detecting and tracking proximity
|
||||
sensorArray.append(ConcreteBLESensor(payloadDataSupplier))
|
||||
// Payload data at initiation time for identifying this device in the logs
|
||||
payloadData = payloadDataSupplier.payload(PayloadTimestamp())
|
||||
super.init()
|
||||
|
||||
// Loggers
|
||||
#if DEBUG
|
||||
add(delegate: ContactLog(filename: "contacts.csv"))
|
||||
add(delegate: StatisticsLog(filename: "statistics.csv", payloadData: payloadData))
|
||||
add(delegate: DetectionLog(filename: "detection.csv", payloadData: payloadData))
|
||||
_ = BatteryLog(filename: "battery.csv")
|
||||
#endif
|
||||
logger.info("DEVICE (payloadPrefix=\(payloadData.shortName),description=\(SensorArray.deviceDescription))")
|
||||
}
|
||||
|
||||
public func add(delegate: SensorDelegate) {
|
||||
sensorDelegates.append(delegate)
|
||||
sensorArray.forEach { $0.add(delegate: delegate) }
|
||||
}
|
||||
|
||||
public func start() {
|
||||
logger.debug("start")
|
||||
sensorArray.forEach { $0.start() }
|
||||
}
|
||||
|
||||
public func stop() {
|
||||
logger.debug("stop")
|
||||
sensorArray.forEach { $0.stop() }
|
||||
}
|
||||
|
||||
public func startAwakeSensor() {
|
||||
// Location sensor is necessary for enabling background BLE advert detection
|
||||
let awakeSensor = ConcreteAwakeSensor(rangeForBeacon: UUID(uuidString: BLESensorConfiguration.serviceUUID.uuidString))
|
||||
sensorDelegates.forEach { awakeSensor.add(delegate: $0) }
|
||||
sensorArray.append(awakeSensor)
|
||||
awakeSensor.start()
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue