Classes
The following classes are available globally.
-
Undocumented
See moreDeclaration
Swift
public class FowlerBasicAnalyser : AnalysisProvider
-
Extension of SmoothedLinearModel to include self-calibration
- Assume minimum and average distance between people for entire population is similar over time (e.g. weeks and months).
- Experiments have shown advertised TX power for all test phones are similar while the measured RSSI by different phones differs at the same distance.
- Normalisation of measured RSSI value is required to bring all receivers to a common range, and then use the minimum and median value to determine the intercept and coefficient.
- Histogram normalisation is enabled by a long term histogram of all measured RSSI values by a device.
- Use social norm to set minimum and mean distance between people, then set time duration within minimum and mean distance to derive percentiles for self-calibration based on observed values.
Declaration
Swift
public class SelfCalibratedModel : SmoothedLinearModel
-
Accumulate histogram of all RSSI measurements to build a profile of the receiver for normalisation
See moreDeclaration
Swift
public class RssiHistogram : SensorDelegate
-
Distance model based on cable car experiment data collected on test rig 2
Experiment
Experiment data shows constructive and destructive wave interference have significant impact on RSSI measurements at short range (0 - 3 metres).- Interference stems from a combination of reflections in the environment (random) and mixture of the three BLE advertising channels (more predictable). For reference, channel 37 = 2.402 GHz, channel 38 = 2.426 GHz, and channel 39 = 2.480 GHz.
- Simulations have shown mixture of BLE channels play a significant part in RSSI variance over minute distances, e.g. a change of 1cm can result in large RSSI change due to subtle change in phases between the three channels. The impact of this is particularly dominant at short range (0 - 2 metres).
- A range of modelling and smoothing algorithms were investigated to counter the impact of reflections and channel mixing. Test results have shown the most widely applicable method that is effective irrespective of environment is running a sliding window of fixed duration (last 60 seconds) over the raw RSSI samples to calculate the median RSSI value. Assuming the phones are not perfectly static (i.e. resting on a desk), the small movements between two phones when carried on a person should be sufficient to produce a wide range of interference patterns that on average offer a reasonably stable estimate of the actual measurement.
- Experiments were conducted using different pairs of iOS and Android phones using test rig 2, to capture raw RSSI measurements from 0 - 3.4 metres at 1cm resolution. On average at least 60 RSSI measurements were taken at every 1cm. The data from all the test runs were combined using dynamic time warping to align the RSSI data at each distance. The result was then smoothed using median of a sliding window, then linear regression was applied to estimate the intercept and coefficient for translating RSSI to distance. Linear regression offered the following equation: DistanceInMetres = Intercept + Coefficient x MedianOfRssi
- Physical models for electromagnetic wave signal propagation are typically based on log or squared distance, i.e. signal strength degrades logarithmically over distance. The test rig 2 results confirm this, but also shows logarithmic degradation is only obvious within the initial 0 - 20cm, then becomes linear. Given the intended purpose of the distance metric (contact tracing) where risk score remains constant below 1m and also the significant impact of interference within a short range, a linear model avoids being skewed by the 0 - 20cm range, and offer simplicity for fitting the data range of interest (1 - 8m).
Declaration
Swift
public class SmoothedLinearModel : Aggregate
-
Undocumented
See moreDeclaration
Swift
public class SmoothedLinearModelAnalyser : AnalysisProvider
-
Log of interactions for recording encounters (time, proximity, and identity). This is can be used as basis for maintaining a persistent log of encounters for on-device or centralised matching.
See moreDeclaration
Swift
public class Interactions : SensorDelegateLogger
-
Encounter record describing proximity with target at a moment in time
Declaration
Swift
public class Encounter
-
Estimate distance travelled without recording actual locations visited to produce mobility indicator for prioritising work based on potential range of influence
See moreDeclaration
Swift
public class Mobility : EventLog<MobilityEvent>
-
Sample statistics, assumes normal distribution.
See moreDeclaration
Swift
public class SampleStatistics
-
Undocumented
Declaration
Swift
public class Aggregate
-
Undocumented
See moreDeclaration
Swift
public class AnalysisDelegate : CallableForNewSample
-
Undocumented
See moreDeclaration
Swift
public class CallableForNewSample
-
Undocumented
See moreDeclaration
Swift
public class AnalysisDelegateManager : CallableForNewSample
-
Undocumented
See moreDeclaration
Swift
public class AnalysisProvider
-
Undocumented
See moreDeclaration
Swift
public class AnalysisProviderManager
-
Undocumented
See moreDeclaration
Swift
public class AnalysisRunner : CallableForNewSample
-
Undocumented
See moreDeclaration
Swift
public class Filter
-
Undocumented
See moreDeclaration
Swift
public class ListManager
-
Undocumented
See moreDeclaration
Swift
public class Sample
-
Undocumented
See moreDeclaration
Swift
public class SampledID : Equatable, Comparable, Hashable, CustomStringConvertible
-
Undocumented
See moreDeclaration
Swift
public class SampleList
-
Undocumented
See moreDeclaration
Swift
public class SampleIterator
-
Undocumented
See moreDeclaration
Swift
public class SampleListIterator : SampleIterator
-
Undocumented
See moreDeclaration
Swift
public class SampleIteratorProxy : SampleIterator
-
Undocumented
See moreDeclaration
Swift
public class Summary
-
Undocumented
See moreDeclaration
Swift
public class VariantSet
-
Estimate social distance to other app users to encourage people to keep their distance from people. This is intended to be used to generate a daily score as indicator of behavioural change to improve awareness of social mixing behaviour.
See moreDeclaration
Swift
public class SocialDistance : Interactions
-
Represents a Venue Diary event.
It is possible to have more than one diary event in a given day. E.g. if you leave and return. This timing is controlled by a global variable in BLESensorConfiguration. It is also possible to visit a place and have an event logged temporarily, but it not be shown in the diary. E.g. walking past a restaurant and checking its menu. This timing is again controlled by a global variable in BLESensorConfiguration.
See moreDeclaration
Swift
public class VenueDiaryEvent : NSObject
-
Undocumented
See moreDeclaration
Swift
public class UniqueVenue
extension UniqueVenue : Equatable
-
Undocumented
See moreDeclaration
Swift
public class VenueDiary : NSObject, SensorDelegate
-
Encounter record describing proximity with target at a moment in time
See moreDeclaration
Swift
public class VenueEncounter
-
Battery log for monitoring battery level over time
See moreDeclaration
Swift
public class BatteryLog : SensorDelegateLogger
-
CSV contact log for post event analysis and visualisation
See moreDeclaration
Swift
public class ContactLog : SensorDelegateLogger
-
CSV contact log for post event analysis and visualisation
See moreDeclaration
Swift
public class DetectionLog : SensorDelegateLogger
-
Generic event log with optional data retention enforcement functions
See moreDeclaration
Swift
public class EventLog<T> : SensorDelegateLogger where T : Event
-
CSV log of events for analysis and visualisation
See moreDeclaration
Swift
public class EventTimeIntervalLog : SensorDelegateLogger
-
AES128 encryption algorithm
See moreDeclaration
Swift
public class AES128 : Encryption
-
Diffie-Hellman-Merkle key exchange using NCSC Foundation Profile MODP group 14 (2048-bit) by default
See moreDeclaration
Swift
public class DiffieHellmanMerkle : KeyExchange
-
Common Diffie-Hellman parameters
See moreDeclaration
Swift
public class DiffieHellmanParameters
-
Undocumented
See moreDeclaration
Swift
public class SecureRandomFunction : PseudoRandomFunction
-
Test random source that produces the same ressult for all calls
See moreDeclaration
Swift
public class TestRandomFunction : PseudoRandomFunction
-
Default sensor delegate with convenient functions for writing data to log file.
See moreDeclaration
Swift
public class SensorDelegateLogger : SensorDelegate, Resettable
-
Undocumented
See moreDeclaration
Swift
public class ConcreteSensorLogger : NSObject, SensorLogger, Resettable
-
CSV contact log for post event analysis and visualisation
See moreDeclaration
Swift
public class StatisticsLog : SensorDelegateLogger
-
Undocumented
See moreDeclaration
Swift
public class TextFile : Resettable
-
Generic mutable double value
See moreDeclaration
Swift
public class DoubleValue : CustomStringConvertible
-
Received signal strength indicator (RSSI)
See moreDeclaration
Swift
public class RSSI : DoubleValue
-
Physical distance in metres
See moreDeclaration
Swift
public class Distance : DoubleValue
-
Undocumented
See moreDeclaration
Swift
public class RingBuffer<T>
-
Mutable unsigned integer of unlimited size (for 32-bit architectures)
See moreDeclaration
Swift
public class UIntBig : Equatable, Hashable, Comparable
-
Undocumented
See moreDeclaration
Swift
public class Device : NSObject
-
Beacon payload data supplier.
See moreDeclaration
Swift
public class ConcreteBeaconPayloadDataSupplierV1 : BeaconPayloadDataSupplier
-
Undocumented
See moreDeclaration
Swift
public class ConcreteExtendedDataSectionV1
-
Beacon payload data supplier.
See moreDeclaration
Swift
public class ConcreteExtendedDataV1 : ExtendedData
-
Simple payload data supplier.
See moreDeclaration
Swift
public class ConcreteSimplePayloadDataSupplier : SimplePayloadDataSupplier
-
Undocumented
See moreDeclaration
Swift
public class ConcreteTestPayloadDataSupplier : TestPayloadDataSupplier
-
Encrypted payload data received from target. This is likely to be an encrypted datagram of the target’s actual permanent identifier.
See moreDeclaration
Swift
public class PayloadData : Hashable, Equatable
-
Payload data associated with legacy service
See moreDeclaration
Swift
public class LegacyPayloadData : PayloadData