Class Protocol
A Protocol defines a plan for collecting (via Probes), anonymizing (via Anonymizers), and
storing (via LocalDataStores and RemoteDataStores) data from a device. Study organizers use Sensus to configure the
study's Protocol. Study participants use Sensus to load a Protocol and enroll in the study. All of this happens within the Sensus app.
Inheritance
System.Object
Protocol
Implements
System.ComponentModel.INotifyPropertyChanged
Assembly: SensusAndroid.dll
Syntax
public class Protocol : Object, INotifyPropertyChanged, IProtocol
Fields
GPS_DEFAULT_ACCURACY_METERS
Declaration
public const int GPS_DEFAULT_ACCURACY_METERS = 25
Field Value
Type |
Description |
System.Int32 |
|
GPS_DEFAULT_DEFERRAL_DISTANCE_METERS
Declaration
public const int GPS_DEFAULT_DEFERRAL_DISTANCE_METERS = 500
Field Value
Type |
Description |
System.Int32 |
|
GPS_DEFAULT_DEFERRAL_TIME_MINUTES
Declaration
public const int GPS_DEFAULT_DEFERRAL_TIME_MINUTES = 5
Field Value
Type |
Description |
System.Int32 |
|
GPS_DEFAULT_MIN_DISTANCE_DELAY_METERS
Declaration
public const int GPS_DEFAULT_MIN_DISTANCE_DELAY_METERS = 50
Field Value
Type |
Description |
System.Int32 |
|
GPS_DEFAULT_MIN_TIME_DELAY_MS
Declaration
public const int GPS_DEFAULT_MIN_TIME_DELAY_MS = 5000
Field Value
Type |
Description |
System.Int32 |
|
MANAGED_URL_STRING
Declaration
public const string MANAGED_URL_STRING = "managed"
Field Value
Type |
Description |
System.String |
|
Properties
Agent
Gets or sets the SensingAgent that controls this Protocol. See
here for more information. This property is not serialized because,
on Android, the assembly containing its type is not necessarily in the app's executing
assembly; rather, on Android, the type might be contained in an assembly (i.e., DLL) that
has been provided by a third-party for run-time code injection (plug-in). Instead of
storing the SensingAgent directly, we therefore store the assembly bytes and
the identifier of the agent within the assembly, so that we can load the agent at run time.
Declaration
public SensingAgent Agent { get; set; }
Property Value
AgentAssemblyBytes
Bytes of the assembly in which the Agent is contained.
Declaration
public byte[] AgentAssemblyBytes { get; set; }
Property Value
Type |
Description |
System.Byte[] |
The agent assembly bytes.
|
AgentId
Declaration
public string AgentId { get; set; }
Property Value
Type |
Description |
System.String |
The agent identifier.
|
AgentPolicy
Gets or sets the agent policy.
Declaration
public JObject AgentPolicy { get; set; }
Property Value
Type |
Description |
Newtonsoft.Json.Linq.JObject |
The agent policy JSON.
|
AlertExclusionWindowString
A comma-separated list of time windows during which alerts from Sensus (e.g., notifications
about new surveys) should not have a sound or vibration associated with them. The format
is the same as described for TriggerWindowsString, except that
exact times (e.g., 11:32am) do not make any sense -- only windows (e.g., 11:32am-1:00pm) do.
The start time must precede the end time (e.g., 19:00-2:00 is not permitted). To specify,
such a time, provide both intervals (e.g.: 0:00-2:00,19:00-23:59).
Declaration
[EntryStringUiProperty("Alert Exclusion Windows:", true, 36, false)]
public string AlertExclusionWindowString { get; set; }
Property Value
Type |
Description |
System.String |
The alert exclusion window string.
|
AllowCopy
Whether or not to allow the user to copy the Protocol.
Declaration
[OnOffUiProperty("Allow Copy:", true, 42)]
public bool AllowCopy { get; set; }
Property Value
Type |
Description |
System.Boolean |
true to allow; otherwise, false .
|
AllowLocalDataShare
Whether or not to allow the user to share local data collected on the device.
Declaration
[OnOffUiProperty("Allow Local Data Share:", true, 44)]
public bool AllowLocalDataShare { get; set; }
Property Value
Type |
Description |
System.Boolean |
true to allow; otherwise, false .
|
AllowParticipantIdReset
Declaration
[OnOffUiProperty("Allow ID Reset:", true, 45)]
public bool AllowParticipantIdReset { get; set; }
Property Value
Type |
Description |
System.Boolean |
true if allow participant identifier reset; otherwise, false .
|
AllowParticipationScanning
Whether or not to allow the user to display/scan participation QR codes for the Protocol.
Declaration
[OnOffUiProperty("Allow Participation Scanning:", true, 41)]
public bool AllowParticipationScanning { get; set; }
Property Value
Type |
Description |
System.Boolean |
true to allow; otherwise, false .
|
AllowPause
Whether or not to allow the user to put the protocol into the Paused state.
Declaration
[OnOffUiProperty("Allow Pause: ", true, 48)]
public bool AllowPause { get; set; }
Property Value
Type |
Description |
System.Boolean |
true to allow pause; otherwise, false .
|
AllowSubmitData
Whether or not to allow the user to manually submit data being collected by the Protocol.
Declaration
[OnOffUiProperty("Allow Submit Data:", true, 40)]
public bool AllowSubmitData { get; set; }
Property Value
Type |
Description |
System.Boolean |
true to allow; otherwise, false .
|
AllowTagging
Whether or not to allow the user to enter tagging mode. See this article for more information.
Declaration
[OnOffUiProperty("Allow Tagging:", true, 46)]
public bool AllowTagging { get; set; }
Property Value
Type |
Description |
System.Boolean |
true if allow tagging; otherwise, false .
|
AllowTestPushNotification
Whether or not to allow the user to request a test push notification.
Declaration
[OnOffUiProperty("Allow Test Push: ", true, 49)]
public bool AllowTestPushNotification { get; set; }
Property Value
Type |
Description |
System.Boolean |
true if allow test push notification; otherwise, false .
|
AllowViewData
Whether or not to allow the user to view data being collected by the Protocol.
Declaration
[OnOffUiProperty("Allow View Data:", true, 38)]
public bool AllowViewData { get; set; }
Property Value
Type |
Description |
System.Boolean |
true to allow; otherwise, false .
|
AllowViewStatus
Whether or not to allow the user to view the status of the Protocol.
Declaration
[OnOffUiProperty("Allow View Status:", true, 39)]
public bool AllowViewStatus { get; set; }
Property Value
Type |
Description |
System.Boolean |
true to allow; otherwise, false .
|
AsymmetricEncryptionPublicKey
Sensus is able to use asymmetric key encryption to secure data before transmission from the device to a remote endpoint (e.g., AWS S3). This
provides a layer of security on top of SSL encryption and certificate pinning. For example, even if an attacker is able to intercept
and decrypt a service request (e.g., write data) to AWS S3 via a man-in-the-middle attack, the attacker would not be able to decrypt
the Sensus data payload, which is encrypted with an additional public/private key pair that you control. This protects against two
threats. First, it protects against the case where a man-in-the-middle has gained access to your pinned private encryption key and
intercepts data. Second, it protects against unauthorized access to Sensus data payloads after storage within the intended system
(e.g., within AWS S3). In the latter case, the data payloads are transferred to the correct server, but they live unencrypted on
that system. Asymmetric encryption prevents unauthorized access to the data by ensuring that Sensus data payloads can only be decrypted
by those who have the asymmetric private encryption key. To use asymmetric data encryption within Sensus, you must generate a public/private
key pair and enter the public key within AsymmetricEncryptionPublicKey. You can generate a public/private key pair in the
appropriate format using the following steps (on Mac):
- Generate a 2048-bit
RSA PRIVATE KEY
:
openssl genrsa -des3 -out private.pem 2048
- Extract the
PUBLIC KEY
for entering into your Sensus Protocol:
openssl rsa -in private.pem -outform PEM -pubout -out public.pem
Keep all PRIVATE KEY
information safe and secure. Never share it.
Declaration
[EntryStringUiProperty("Asymmetric Encryption Public Key:", true, 37, false)]
public string AsymmetricEncryptionPublicKey { get; set; }
Property Value
Type |
Description |
System.String |
The asymmetric encryption public key.
|
AuthenticationService
The authentication service. This is serialized to JSON; however, the only thing that is retained in the
serialized JSON is the service base URL. No account or credential information is serialized; rather,
this information is refreshed when needed.
Declaration
public AuthenticationService AuthenticationService { get; set; }
Property Value
The tags to make available when in tagging mode. See this article for more information.
Declaration
[EditableListUiProperty("Available Tags:", true, 47, false)]
public List<string> AvailableTags { get; set; }
Property Value
Type |
Description |
System.Collections.Generic.List<System.String> |
The tags.
|
Caption
Declaration
public string Caption { get; }
Property Value
Type |
Description |
System.String |
|
CompatibilityMode
Specifies whether the current Protocol should be compatible with Android only, iOS only, or both.
Declaration
[ListUiProperty]
public ProtocolCompatibilityMode CompatibilityMode { get; set; }
Property Value
An email address for the individual who is responsible for handling questions
associated with this study.
Declaration
[EntryStringUiProperty("Contact Email:", true, 24, false)]
public string ContactEmail { get; set; }
Property Value
Type |
Description |
System.String |
The contact email.
|
ContinueIndefinitely
Whether or not to execute the Protocol forever after it has started.
Declaration
[OnOffUiProperty("Continue Indefinitely:", true, 19)]
public bool ContinueIndefinitely { get; set; }
Property Value
Type |
Description |
System.Boolean |
true to execute forever; otherwise, false .
|
Description
A detailed description of the Protocol (e.g., what it does, who it is intended for, etc.).
Declaration
[EditorUiProperty(null, true, 15, false)]
public string Description { get; set; }
Property Value
Type |
Description |
System.String |
The description.
|
DisplayParticipationPercentageInForegroundServiceNotification
Available on Android only. Whether or not to display the participation percentage (see ParticipationHorizonDays) in the
foreground service notification. If multiple Protocols enable this option, then the average percentage across these will
be displayed.
Declaration
[OnOffUiProperty("(Android) Display Participation:", true, 55)]
public bool DisplayParticipationPercentageInForegroundServiceNotification { get; set; }
Property Value
Type |
Description |
System.Boolean |
true if display participation percentage in foreground service notification; otherwise, false .
|
EndDate
Declaration
[DateUiProperty("End Date:", true, 20, false)]
public DateTime EndDate { get; set; }
Property Value
Type |
Description |
System.DateTime |
The end date.
|
EndTime
Declaration
[TimeUiProperty("End Time:", true, 21, false)]
public TimeSpan EndTime { get; set; }
Property Value
Type |
Description |
System.TimeSpan |
The end time.
|
EnvelopeEncryptor
Declaration
public IEnvelopeEncryptor EnvelopeEncryptor { get; }
Property Value
GpsDeferLocationUpdates
Available on iOS only. Whether or not to defer location updates until the app is active, thereby conserving battery.
Declaration
[OnOffUiProperty("(iOS) GPS - Defer Location Updates:", true, 34)]
public bool GpsDeferLocationUpdates { get; set; }
Property Value
Type |
Description |
System.Boolean |
true if gps defer location updates; otherwise, false .
|
GpsDeferralDistanceMeters
Available on iOS only. How far to travel before deferred location updates are delivered.
Declaration
[EntryFloatUiProperty("(iOS) GPS - Deferral Distance (Meters):", true, 35, false)]
public float GpsDeferralDistanceMeters { get; set; }
Property Value
Type |
Description |
System.Single |
The gps deferral distance meters.
|
GpsDeferralTimeMinutes
Available on iOS only. How long to wait before deferred location updates are delivered.
Declaration
[EntryFloatUiProperty("(iOS) GPS - Deferral Time (Mins.):", true, 36, false)]
public float GpsDeferralTimeMinutes { get; set; }
Property Value
Type |
Description |
System.Single |
The gps deferral time minutes.
|
GpsDesiredAccuracyMeters
The desired accuracy in meters of the collected GPS readings. There are no guarantees that this accuracy
will be achieved.
Declaration
[EntryFloatUiProperty("GPS - Desired Accuracy (Meters):", true, 27, true)]
public float GpsDesiredAccuracyMeters { get; set; }
Property Value
Type |
Description |
System.Single |
The GPS desired accuracy, in meters.
|
GpsListenForSignificantChanges
Available on iOS only. Whether or not to use significant changes in location (e.g., moving between
cellular towers) in place of GPS.
Declaration
[OnOffUiProperty("(iOS) GPS - Significant Changes:", true, 33)]
public bool GpsListenForSignificantChanges { get; set; }
Property Value
Type |
Description |
System.Boolean |
true if gps listen for significant changes; otherwise, false .
|
GpsLongitudeAnonymizationParticipantOffset
We regenerate the offset every time a protocol starts, so there's
no need to serialize it. Furthermore, we never want the offset
to be shared.
Declaration
public double GpsLongitudeAnonymizationParticipantOffset { get; set; }
Property Value
Type |
Description |
System.Double |
The gps longitude anonymization participant offset.
|
GpsLongitudeAnonymizationStudyOffset
Declaration
public double GpsLongitudeAnonymizationStudyOffset { get; set; }
Property Value
Type |
Description |
System.Double |
|
GpsMinDistanceDelayMeters
The minimum distance in meters to wait between deliveries of GPS readings.
Declaration
[EntryFloatUiProperty("GPS - Minimum Distance Delay (Meters):", true, 29, true)]
public float GpsMinDistanceDelayMeters { get; set; }
Property Value
Type |
Description |
System.Single |
The GPS minimum distance delay, in meters.
|
GpsMinTimeDelayMS
The minimum amount of time in milliseconds to wait between deliveries of GPS readings.
Declaration
[EntryIntegerUiProperty("GPS - Minimum Time Delay (MS):", true, 28, true)]
public int GpsMinTimeDelayMS { get; set; }
Property Value
Type |
Description |
System.Int32 |
The GPS minimum time delay, in milliseconds.
|
GpsPauseActivityType
Declaration
[ListUiProperty]
public ActivityType GpsPauseActivityType { get; set; }
Property Value
Type |
Description |
Plugin.Geolocator.Abstractions.ActivityType |
The type of the gps pause activity.
|
GpsPauseLocationUpdatesAutomatically
Available on iOS only. Whether or not to pause location updates when movement is unlikely.
Declaration
[OnOffUiProperty("(iOS) GPS - Pause Location Updates:", true, 31)]
public bool GpsPauseLocationUpdatesAutomatically { get; set; }
Property Value
Type |
Description |
System.Boolean |
true if gps pause location updates automatically; otherwise, false .
|
Groupable
Whether the user should be allowed to group the Protocol with other Protocols to form a
bundle that participant's are randomized into.
Declaration
[OnOffUiProperty(null, true, 25)]
public bool Groupable { get; set; }
Property Value
Type |
Description |
System.Boolean |
true if groupable; otherwise, false .
|
GroupedProtocols
Declaration
public List<Protocol> GroupedProtocols { get; set; }
Property Value
Type |
Description |
System.Collections.Generic.List<Protocol> |
|
Id
The study's identifier. All studies on the same device must have unique identifiers. Certain Probes
like the BluetoothDeviceProximityProbe rely on the study identifiers to be the same
across Android and iOS platforms in order to make detections.
Declaration
[EntryStringUiProperty(null, false, 0, true)]
public string Id { get; set; }
Property Value
Type |
Description |
System.String |
The identifier.
|
JsonAnonymizer
Declaration
public AnonymizedJsonContractResolver JsonAnonymizer { get; set; }
Property Value
LocalDataStore
Declaration
public LocalDataStore LocalDataStore { get; set; }
Property Value
LockPasswordHash
Declaration
public string LockPasswordHash { get; set; }
Property Value
Type |
Description |
System.String |
|
LongitudeOffsetParticipantSeededRandom
Gets a System.Random that is seeded specifically to the participant.
Declaration
public Random LongitudeOffsetParticipantSeededRandom { get; }
Property Value
Type |
Description |
System.Random |
The seeded System.Random.
|
Name
Declaration
[EntryStringUiProperty("Name:", true, 1, true)]
public string Name { get; set; }
Property Value
Type |
Description |
System.String |
The name.
|
ParticipantId
Gets or sets the participant identifier.
Declaration
public string ParticipantId { get; set; }
Property Value
Type |
Description |
System.String |
The participant identifier.
|
Participation
Declaration
public double Participation { get; }
Property Value
Type |
Description |
System.Double |
|
ParticipationHorizon
Declaration
public DateTime ParticipationHorizon { get; }
Property Value
Type |
Description |
System.DateTime |
|
ParticipationHorizonDays
The number of days used to calculate the participation percentage. For example, if the participation horizon is
7 days, and the user has been running a ListeningProbe for 1 day, then the participation percentage
would be 1/7 (~14%). On the other hand, if the participation horizon is 1 day, then the same user would have a
participation percentage of 1/1 (100%). Must be at least 1.
Declaration
[EntryIntegerUiProperty("Participation Horizon (Days):", true, 23, true)]
public int ParticipationHorizonDays { get; set; }
Property Value
Type |
Description |
System.Int32 |
The participation horizon, in days.
|
PointsOfInterest
Declaration
public ConcurrentObservableCollection<PointOfInterest> PointsOfInterest { get; }
Property Value
Probes
Declaration
public List<Probe> Probes { get; set; }
Property Value
Type |
Description |
System.Collections.Generic.List<Probe> |
|
PushNotificationsHub
The push notification hub to listen to. This can be created within the Azure Portal. The
value to use here is the name of the hub (e.g., xxxx-notifications). You must also include
the PushNotificationsSharedAccessSignature for this hub.
Declaration
[EntryStringUiProperty("Push Notification Hub:", true, 51, false)]
public string PushNotificationsHub { get; set; }
Property Value
Type |
Description |
System.String |
The push notifications hub.
|
PushNotificationsSharedAccessSignature
The shared access signature for listening for push notifications at the PushNotificationsHub. This
value can be obtained by inspecting the Access Policies tab of the Notification Hub within the Azure Portal. Locate
the DefaultListenSharedAccessSignature policy and copy the entire value of the connection string into this field.
Declaration
[EntryStringUiProperty("Push Notifications Shared Access Signature:", true, 52, false)]
public string PushNotificationsSharedAccessSignature { get; set; }
Property Value
Type |
Description |
System.String |
The push notifications shared access signature.
|
RandomTimeAnchor
Declaration
public DateTimeOffset RandomTimeAnchor { get; set; }
Property Value
Type |
Description |
System.DateTimeOffset |
|
RemoteDataStore
Declaration
public RemoteDataStore RemoteDataStore { get; set; }
Property Value
RewardThreshold
The participation percentage required for a user to be considered eligible for rewards.
Declaration
[EntryFloatUiProperty("Reward Threshold:", true, 26, false)]
public Nullable<float> RewardThreshold { get; set; }
Property Value
Type |
Description |
System.Nullable<System.Single> |
The reward threshold.
|
Shareable
Whether or not to allow the user to share the Protocol.
Declaration
[OnOffUiProperty("Allow Protocol Share:", true, 43)]
public bool Shareable { get; set; }
Property Value
Type |
Description |
System.Boolean |
true to allow; otherwise, false .
|
StartConfirmationMode
Declaration
[ListUiProperty]
public ProtocolStartConfirmationMode StartConfirmationMode { get; set; }
Property Value
StartDate
Declaration
[DateUiProperty("Start Date:", true, 17, false)]
public DateTime StartDate { get; set; }
Property Value
Type |
Description |
System.DateTime |
The start date.
|
Whether or not to start the Protocol immediately after the user has opted into it.
Declaration
[OnOffUiProperty("Start Immediately:", true, 16)]
public bool StartImmediately { get; set; }
Property Value
Type |
Description |
System.Boolean |
true to start immediately; otherwise, false .
|
StartIsScheduled
Declaration
public bool StartIsScheduled { get; }
Property Value
Type |
Description |
System.Boolean |
|
StartTime
Declaration
[TimeUiProperty("Start Time:", true, 18, false)]
public TimeSpan StartTime { get; set; }
Property Value
Type |
Description |
System.TimeSpan |
The start time.
|
State
Declaration
public ProtocolState State { get; }
Property Value
StorageDirectory
Declaration
public string StorageDirectory { get; set; }
Property Value
Type |
Description |
System.String |
|
SubCaption
Declaration
public string SubCaption { get; }
Property Value
Type |
Description |
System.String |
|
TaggedEventId
The current event identifier for tagging. See this article for more information.
Declaration
public string TaggedEventId { get; set; }
Property Value
Type |
Description |
System.String |
The tag identifier.
|
The current tags applied during event tagging. See this article for more information.
Declaration
public List<string> TaggedEventTags { get; set; }
Property Value
Type |
Description |
System.Collections.Generic.List<System.String> |
The set tags.
|
TaggingEndTimestamp
The time at which the current tagging ended.
Declaration
public Nullable<DateTimeOffset> TaggingEndTimestamp { get; set; }
Property Value
Type |
Description |
System.Nullable<System.DateTimeOffset> |
The tagging end timestamp.
|
TaggingStartTimestamp
The time at which the current tagging started.
Declaration
public Nullable<DateTimeOffset> TaggingStartTimestamp { get; set; }
Property Value
Type |
Description |
System.Nullable<System.DateTimeOffset> |
The tagging start timestamp.
|
TaggingsToExport
A list of taggings to export.
Declaration
public List<string> TaggingsToExport { get; }
Property Value
Type |
Description |
System.Collections.Generic.List<System.String> |
The taggings to export.
|
VariableValue
Declaration
public Dictionary<string, string> VariableValue { get; set; }
Property Value
Type |
Description |
System.Collections.Generic.Dictionary<System.String, System.String> |
|
VariableValueUiProperty
A Protocol may delare variables whose values can be easily reused throughout the
system. For example, if many of the survey inputs share a particular substring (e.g., the study
name), consider defining a variable named study-name
that holds the study name. You can then
reference this variable when defining the survey input label via {study-name}
. The format
of this field is variable-name:variable-value
.
Declaration
[EditableListUiProperty("Variables:", true, 30, false)]
public List<string> VariableValueUiProperty { get; set; }
Property Value
Type |
Description |
System.Collections.Generic.List<System.String> |
The variable value user interface property.
|
Methods
ApplySettingsAsync(List<ProtocolSetting>, CancellationToken)
Declaration
public Task<bool> ApplySettingsAsync(List<ProtocolSetting> settings, CancellationToken cancellationToken)
Parameters
Type |
Name |
Description |
System.Collections.Generic.List<ProtocolSetting> |
settings |
Settings.
|
System.Threading.CancellationToken |
cancellationToken |
Cancellation token.
|
Returns
Type |
Description |
System.Threading.Tasks.Task<System.Boolean> |
True if either the current Protocol or any of its Probes were restarted as a result of applying the passed ProtocolSettings.
|
CancelScheduledStartAsync()
Declaration
public Task CancelScheduledStartAsync()
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
CancelScheduledStopAsync()
Declaration
public Task CancelScheduledStopAsync()
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
CopyAsync(Boolean, Boolean)
Declaration
public Task<Protocol> CopyAsync(bool resetId, bool register)
Parameters
Type |
Name |
Description |
System.Boolean |
resetId |
|
System.Boolean |
register |
|
Returns
Type |
Description |
System.Threading.Tasks.Task<Protocol> |
|
CreateAsync(String)
Declaration
public static Task<Protocol> CreateAsync(string name)
Parameters
Type |
Name |
Description |
System.String |
name |
|
Returns
Type |
Description |
System.Threading.Tasks.Task<Protocol> |
|
DeleteAsync()
Declaration
public Task DeleteAsync()
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
DeserializeAsync(Byte[], Boolean)
Declaration
public static Task<Protocol> DeserializeAsync(byte[] bytes, bool offerToReplaceExistingProtocol)
Parameters
Type |
Name |
Description |
System.Byte[] |
bytes |
|
System.Boolean |
offerToReplaceExistingProtocol |
|
Returns
Type |
Description |
System.Threading.Tasks.Task<Protocol> |
|
DeserializeAsync(Uri, Boolean, AmazonS3Credentials)
Declaration
public static Task<Protocol> DeserializeAsync(Uri uri, bool offerToReplaceExistingProtocol, AmazonS3Credentials credentials = null)
Parameters
Type |
Name |
Description |
System.Uri |
uri |
|
System.Boolean |
offerToReplaceExistingProtocol |
|
AmazonS3Credentials |
credentials |
|
Returns
Type |
Description |
System.Threading.Tasks.Task<Protocol> |
|
DisplayAndStartAsync(Protocol)
Declaration
public static Task DisplayAndStartAsync(Protocol protocol)
Parameters
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
Equals(Object)
Declaration
public override bool Equals(object obj)
Parameters
Type |
Name |
Description |
System.Object |
obj |
|
Returns
Type |
Description |
System.Boolean |
|
GetAgent(String, Byte[])
Declaration
public SensingAgent GetAgent(string agentId, byte[] assemblyBytes)
Parameters
Type |
Name |
Description |
System.String |
agentId |
Agent identifier.
|
System.Byte[] |
assemblyBytes |
Assembly bytes. This is only permitted on Android, as
iOS does not permit dynamic code loading. Attempting to do this crashes the app.
|
Returns
GetAgents(Byte[])
Gets available SensingAgents from the current executing assembly.
Declaration
public List<SensingAgent> GetAgents(byte[] assemblyBytes)
Parameters
Type |
Name |
Description |
System.Byte[] |
assemblyBytes |
Additional assembly to scan for SensingAgents. Pass null for no assembly, in
which case only agents present in the executing assembly (the app codebase) will be loaded.
Only permitted on Android
|
Returns
Type |
Description |
System.Collections.Generic.List<SensingAgent> |
The agents.
|
GetHashCode()
Declaration
public override int GetHashCode()
Returns
Type |
Description |
System.Int32 |
|
PauseAsync()
Declaration
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
ResumeAsync()
Declaration
public Task ResumeAsync()
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
RunUiTestingProtocolAsync(Stream)
Declaration
public static Task RunUiTestingProtocolAsync(Stream uiTestingProtocolFile)
Parameters
Type |
Name |
Description |
System.IO.Stream |
uiTestingProtocolFile |
|
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
Save(String)
Declaration
public void Save(string path)
Parameters
Type |
Name |
Description |
System.String |
path |
|
ScheduleAgentControlCompletionCheckAsync(SensingAgent.ControlCompletionCheck)
Declaration
public Task ScheduleAgentControlCompletionCheckAsync(SensingAgent.ControlCompletionCheck controlCompletionCheck)
Parameters
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
ScheduleStartAsync()
Declaration
public Task ScheduleStartAsync()
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
ScheduleStopAsync()
Declaration
public Task ScheduleStopAsync()
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
ShareAsync()
Declaration
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
StartAsync(CancellationToken)
Declaration
public Task StartAsync(CancellationToken cancellationToken)
Parameters
Type |
Name |
Description |
System.Threading.CancellationToken |
cancellationToken |
|
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
StartWithUserAgreementAsync()
Starts the current Protocol after displaying a message to the user indicating what is about to happen. This is
also the place where the user's agreement to the Protocol is obtained through the various
ProtocolStartConfirmationMode options. After obtaining agreement, a ProgressPage is displayed
to show progress and prevent the user from interacting with the app until the Protocol is fully started.
Declaration
public Task StartWithUserAgreementAsync()
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
StopAsync()
Declaration
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
TestHealthAsync(Boolean, CancellationToken)
Declaration
public Task<List<AnalyticsTrackedEvent>> TestHealthAsync(bool userInitiated, CancellationToken cancellationToken)
Parameters
Type |
Name |
Description |
System.Boolean |
userInitiated |
|
System.Threading.CancellationToken |
cancellationToken |
|
Returns
TimeIsWithinAlertExclusionWindow(TimeSpan)
Declaration
public bool TimeIsWithinAlertExclusionWindow(TimeSpan time)
Parameters
Type |
Name |
Description |
System.TimeSpan |
time |
|
Returns
Type |
Description |
System.Boolean |
|
ToString()
Declaration
public override string ToString()
Returns
Type |
Description |
System.String |
|
TryGetProbe(Type, out Probe)
Declaration
public bool TryGetProbe(Type type, out Probe probe)
Parameters
Type |
Name |
Description |
System.Type |
type |
|
Probe |
probe |
|
Returns
Type |
Description |
System.Boolean |
|
TryGetProbe<DatumInterface, ProbeType>(out ProbeType)
Declaration
public bool TryGetProbe<DatumInterface, ProbeType>(out ProbeType probe)
where DatumInterface : IDatum where ProbeType : class, IProbe
Parameters
Type |
Name |
Description |
ProbeType |
probe |
|
Returns
Type |
Description |
System.Boolean |
|
Type Parameters
Name |
Description |
DatumInterface |
|
ProbeType |
|
UpdateScriptAgentPolicyAsync(JObject)
Declaration
public Task UpdateScriptAgentPolicyAsync(JObject policy)
Parameters
Type |
Name |
Description |
Newtonsoft.Json.Linq.JObject |
policy |
|
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
UpdateScriptAgentPolicyAsync(CancellationToken)
Declaration
public Task UpdateScriptAgentPolicyAsync(CancellationToken cancellationToken)
Parameters
Type |
Name |
Description |
System.Threading.CancellationToken |
cancellationToken |
|
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
UpdateSensingAgentPolicyAsync(JObject)
Declaration
public Task UpdateSensingAgentPolicyAsync(JObject policy)
Parameters
Type |
Name |
Description |
Newtonsoft.Json.Linq.JObject |
policy |
|
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
UpdateSensingAgentPolicyAsync(CancellationToken)
Declaration
public Task UpdateSensingAgentPolicyAsync(CancellationToken cancellationToken)
Parameters
Type |
Name |
Description |
System.Threading.CancellationToken |
cancellationToken |
|
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
WriteSensingAgentStateDatum(SensingAgentState, SensingAgentState, String, CancellationToken)
Declaration
public void WriteSensingAgentStateDatum(SensingAgentState previousState, SensingAgentState currentState, string description, CancellationToken cancellationToken)
Parameters
Events
PropertyChanged
Declaration
public event PropertyChangedEventHandler PropertyChanged
Event Type
Type |
Description |
System.ComponentModel.PropertyChangedEventHandler |
|
StateChanged
Declaration
public event EventHandler<ProtocolState> StateChanged
Event Type
Implements
System.ComponentModel.INotifyPropertyChanged