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