COVIDSafe code from version 2.4 (#45)

This commit is contained in:
COVIDSafe Support 2021-02-25 19:41:20 -08:00 committed by GitHub
parent f14aa60482
commit 377bc0009b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
63 changed files with 3096 additions and 372 deletions

View file

@ -323,21 +323,37 @@ class BLEPseudoDeviceAddress {
}}
init?(fromAdvertisementData: [String: Any]) {
guard let manufacturerData = fromAdvertisementData["kCBAdvDataManufacturerData"] as? Data else {
guard let manufacturerData = fromAdvertisementData[CBAdvertisementDataManufacturerDataKey] as? Data else {
return nil
}
guard let manufacturerId = manufacturerData.uint16(0), manufacturerId == BLESensorConfiguration.manufacturerIdForSensor else {
guard let manufacturerId = manufacturerData.uint16(0) else {
return nil
}
guard manufacturerData.count == 8 else {
// HERALD pseudo device address
if manufacturerId == BLESensorConfiguration.manufacturerIdForSensor, manufacturerData.count == 8 {
data = Data(manufacturerData.subdata(in: 2..<8))
var longValueData = Data(repeating: 0, count: 2)
longValueData.append(data)
guard let longValue = longValueData.int64(0) else {
return nil
}
address = Int64(longValue)
}
// Legacy pseudo device address
else if manufacturerId == UInt(1023), manufacturerData.count > 2 {
data = Data(manufacturerData.subdata(in: 2..<min(8,manufacturerData.count)))
var longValueData = Data(data)
if longValueData.count < 8 {
longValueData.append(Data(repeating: 0, count: 8 - longValueData.count))
}
guard let longValue = longValueData.int64(0) else {
return nil
}
address = Int64(longValue)
}
// Pseudo device address not detected
else {
return nil
}
data = Data(manufacturerData.subdata(in: 2..<8))
var longValueData = Data(repeating: 0, count: 2)
longValueData.append(data)
guard let longValue = longValueData.int64(0) else {
return nil
}
address = Int64(longValue)
}
}

View file

@ -123,6 +123,7 @@ class ConcreteBLESensor : NSObject, BLESensor, BLEDatabaseDelegate {
transmitter.stop()
receiver.stop()
// BLE transmitter and receivers stops on powerOff event
delegates.forEach({ $0.sensor(.BLE, didUpdateState: .off) })
}
func add(delegate: SensorDelegate) {

View file

@ -62,8 +62,7 @@ class ConcreteAwakeSensor : NSObject, AwakeSensor, CLLocationManagerDelegate {
locationManager.startRangingBeacons(in: beaconRegion)
logger.debug("startRangingBeacons(ios<13.0,beaconUUID=\(beaconUUID.uuidString)))")
}
delegates.forEach({ $0.sensor(.AWAKE, didUpdateState: .on) })
}
func stop() {
@ -82,6 +81,7 @@ class ConcreteAwakeSensor : NSObject, AwakeSensor, CLLocationManagerDelegate {
locationManager.stopRangingBeacons(in: beaconRegion)
logger.debug("stopRangingBeacons(ios<13.0,beaconUUID=\(beaconUUID.description))")
}
delegates.forEach({ $0.sensor(.AWAKE, didUpdateState: .off) })
}
// MARK:- CLLocationManagerDelegate