Chronos Plugins 5.4.0
This documentation covers the plugin interfaces definitions and an example implementation.
Loading...
Searching...
No Matches
MockPlugin.Device.MockDevice Class Reference

A chronos plugin implementation for a fake device. We pretend we are controlling a mixture of coffee machine and waiter robot. More...

+ Inheritance diagram for MockPlugin.Device.MockDevice:
+ Collaboration diagram for MockPlugin.Device.MockDevice:

Public Member Functions

 MockDevice ()
 
void Dispose ()
 
void BrewFrappuccino (BrewFrappuccino.CompositionData composition)
 Pretend we are doing some operation on a complex parameter set.
 
void SomeDummyMethod ()
 Just for testing if methods of this device can be called from some other point in our code.
 
void Connect ()
 Inform the user of our connect attempt / success. Instead of establishing a real connection, show some message box.
 
void Disconnect ()
 Pretend we are closing the connection. Actual operation substituted by a message box.
 
void ShowTheMessage (string messageText)
 Let our device set a status message and display some message box instead of doing real work.
 
void TriggerAbort (string reason, bool softStop)
 This will trigger the AbortSchedule-Event 5 seconds after it was called from a task.
 
void CheckForAbort ()
 
Task ApplyParametersAsync (bool waitUntilSetpointIsReached, CancellationToken canToken)
 
void WaitIfPaused ()
 
void BeginInteraction ()
 Will be called if interaction is started, gives you a chance to unlock a terminal, for example.
 
void EndInteraction ()
 Will be called if you can lock the terminal again.
 
void RaiseError (string errorDescription, ErrorType errType, bool resolved)
 "Retry" here means that we don't retry some action, but that we raise the error again.
 
void Connect ()
 You may have connected to the device before this, but make sure you are connected after this.
 
void Disconnect ()
 You may disconnect now.
 
- Public Member Functions inherited from AxelSemrau.Chronos.Plugin.IHaveMachineParameters< CoffeMakerParams >
Task ApplyParametersAsync (bool waitUntilSetpointIsReached, CancellationToken cancelToken)
 Set the given parameters on the device.
 
void BeginInteraction ()
 Will be called if interaction is started, gives you a chance to unlock a terminal, for example.
 
void EndInteraction ()
 Will be called if you can lock the terminal again.
 

Static Public Attributes

const string DeviceTypeName = "ACME Coffee Maker"
 

Properties

string DisplayedTypeName [get]
 Visible to the user on the instruments page of the settings editor.
 
string DeviceTypeDescription [get]
 Device class specification referred to by some messages.
 
string Name [get, set]
 User-selected name for the device instance.
 
string Connection = "COM17" [get, set]
 Connection as set in the Chronos instrument settings.
 
bool IsConnected [get, set]
 Helper for our toolbox.
 
CoffeMakerParams Parameters = new CoffeMakerParams() [get, set]
 
bool Aborted [get, set]
 If set, abort execution as soon as possible. You can throw an OperationCanceledException. Will be set to false after termination of the run.
 
bool Paused [get, set]
 If paused, wait until paused is reset before executing the next command.
 
IEnumerable< string > LogPaths [get]
 Provide full paths to each of your log files here.
 
Func< StopRunArgs, TaskStopRun [get, set]
 Callback function returning a task that completes once the schedule queue was stopped.
 
IScheduleEvents ScheduleEvents [set]
 Hook up immediately or save this for later use.
 
- Properties inherited from AxelSemrau.Chronos.Plugin.IDevice
string DisplayedTypeName [get]
 Text which is displayed in the instruments settings "Autosampler Type" column and in many other places.
 
string DeviceTypeDescription [get]
 Text which is displayed to make clear which kind of device a named sampler is.
 
string Name [get, set]
 User-selected name for the device instance.
 
- Properties inherited from AxelSemrau.Chronos.Plugin.INeedAConnection
string Connection [get, set]
 Name of a serial port, IP address, hostname....
 
- Properties inherited from AxelSemrau.Chronos.Plugin.ICanInterrupt
bool Aborted [get, set]
 If set, abort execution as soon as possible. You can throw an OperationCanceledException. Will be set to false after termination of the run.
 
bool Paused [get, set]
 If paused, wait until paused is reset before executing the next command.
 
- Properties inherited from AxelSemrau.Chronos.Plugin.IHaveMachineParameters< CoffeMakerParams >
ParamType Parameters [get, set]
 Your parameter set.
 
- Properties inherited from AxelSemrau.Chronos.Plugin.IProvideDiagnosticLogs
IEnumerable< string > LogPaths [get]
 Provide full paths to each of your log files here.
 
- Properties inherited from AxelSemrau.Chronos.Plugin.IStopRuns
Func< StopRunArgs, TaskStopRun [set]
 Callback function returning a task that completes once the schedule queue was stopped.
 
- Properties inherited from AxelSemrau.Chronos.Plugin.IScheduleStateAware
IScheduleEvents ScheduleEvents [set]
 Hook up immediately or save this for later use.
 

Events

Action< ConnectionStateConnectionStateChanged
 
Action< string > SetStatusMessage
 
Action< string > DebugOutput
 
PropertyChangedEventHandler PropertyChanged
 
Action< string > AbortSchedule
 
EventHandler< InteractiveErrorHandlingEventArgsHandleError
 
- Events inherited from AxelSemrau.Chronos.Plugin.IDevice
Action< ConnectionStateConnectionStateChanged
 Raise this event when your connection state has changed.
 
- Events inherited from AxelSemrau.Chronos.Plugin.IProvideStatusMessages
Action< string > SetStatusMessage
 Raise this event to set your current status while doing something on the device. Messages passed to this event will be shown in the "Autosampler status" line.
 
- Events inherited from AxelSemrau.Chronos.Plugin.IHaveDebugOutput
Action< string > DebugOutput
 Messages passed to this event will be logged (including a timestamp) to the user configured debug logfile.
 
- Events inherited from AxelSemrau.Chronos.Plugin.IAbortSchedules
Action< string > AbortSchedule
 If you raise this event, the schedule will be aborted.
 
- Events inherited from AxelSemrau.Chronos.Plugin.IHaveInteractiveErrorHandling
EventHandler< InteractiveErrorHandlingEventArgsHandleError
 Raise this event if you want the user to decide how to continue, if this is desired in the settings.
 

Private Member Functions

void OnIsConnectedChanged ()
 For thread-safe update of the toolbox's GUI elements representing the connection state.
 
void ScheduleStateChangedHandler (object sender, ScheduleStateEventArgs e)
 

Private Attributes

bool mIsConnected
 
readonly ManualResetEventSlim mPauseEnded = new ManualResetEventSlim(true)
 Using an event here instead of a simple bool helps us avoid polling while checking for the events.
 
readonly ManualResetEventSlim mAborted = new ManualResetEventSlim(false)
 
IScheduleEvents mScheduleEvents
 

Detailed Description

A chronos plugin implementation for a fake device. We pretend we are controlling a mixture of coffee machine and waiter robot.

Just an example implementation that doesn't do any real work.

Definition at line 38 of file MockDevice.cs.

Constructor & Destructor Documentation

◆ MockDevice()

MockPlugin.Device.MockDevice.MockDevice ( )

Definition at line 63 of file MockDevice.cs.

64 {
65 Instances.Add(this);
66 }

Member Function Documentation

◆ ApplyParametersAsync()

Task MockPlugin.Device.MockDevice.ApplyParametersAsync ( bool  waitUntilSetpointIsReached,
CancellationToken  canToken 
)

Definition at line 267 of file MockDevice.cs.

268 {
269
270 SetStatusMessage?.Invoke($"Applying parameters: '{Parameters}' and {(!waitUntilSetpointIsReached ? "not " : "")} waiting for setpoint.");
271 if (waitUntilSetpointIsReached)
272 {
273 return Task.Delay(TimeSpan.FromSeconds(10),canToken);
274 }
275 return Task.CompletedTask;
276 }
Action< string > SetStatusMessage
Definition: MockDevice.cs:192

References MockPlugin.Device.MockDevice.SetStatusMessage, and Task.

◆ BeginInteraction()

void MockPlugin.Device.MockDevice.BeginInteraction ( )

Will be called if interaction is started, gives you a chance to unlock a terminal, for example.

Implements AxelSemrau.Chronos.Plugin.IHaveInteractiveErrorHandling.

Definition at line 354 of file MockDevice.cs.

355 {
356 DebugOutput?.Invoke("Starting error handling interaction");
357 }
Action< string > DebugOutput
Definition: MockDevice.cs:198

References MockPlugin.Device.MockDevice.DebugOutput.

◆ BrewFrappuccino()

void MockPlugin.Device.MockDevice.BrewFrappuccino ( BrewFrappuccino::CompositionData  composition)

Pretend we are doing some operation on a complex parameter set.

Parameters
composition

Definition at line 96 of file MockDevice.cs.

97 {
100 $"Making a {composition.Volume} mL frappuccino with cream type \"{composition.Cream}\"{(composition.DeCaffeinated ? ", decaffeinated." : "")}.");
101 }
void ShowTheMessage(string messageText)
Let our device set a status message and display some message box instead of doing real work.
Definition: MockDevice.cs:158

References MockPlugin.Device.MockDevice.ShowTheMessage(), and MockPlugin.Device.MockDevice.WaitIfPaused().

Referenced by MockPlugin.Tasks.BrewFrappuccino.Execute().

◆ CheckForAbort()

void MockPlugin.Device.MockDevice.CheckForAbort ( )

Definition at line 253 of file MockDevice.cs.

254 {
255 if (mAborted.IsSet)
256 {
257 throw new OperationCanceledException("Aborted");
258 }
259 }
readonly ManualResetEventSlim mAborted
Definition: MockDevice.cs:293

References MockPlugin.Device.MockDevice.mAborted.

Referenced by MockPlugin.Device.MockDevice.WaitIfPaused().

◆ Connect()

void MockPlugin.Device.MockDevice.Connect ( )

Inform the user of our connect attempt / success. Instead of establishing a real connection, show some message box.

Implements AxelSemrau.Chronos.Plugin.IDevice.

Definition at line 114 of file MockDevice.cs.

115 {
117 MessageBox.Show(Helpers.Gui.MainWindow, $"Device {Name} was connected to {Connection}.");
119 mIsConnected = true;
121 }
ConnectionState
If your connectivity state changes, you should tell the user about it.
IWin32Window MainWindow
If you need to set the owner window yourself or want to show message boxes.
Definition: Helpers.cs:37
Static instance for access to utility functions and resources.
Definition: Helpers.cs:78
static IGuiHelper Gui
Utility functions for window handling.
Definition: Helpers.cs:92
void OnIsConnectedChanged()
For thread-safe update of the toolbox's GUI elements representing the connection state.
Definition: MockDevice.cs:207
Action< ConnectionState > ConnectionStateChanged
Definition: MockDevice.cs:135

References MockPlugin.Device.MockDevice.ConnectionStateChanged, AxelSemrau.Chronos.Plugin.Helpers.Gui, AxelSemrau.Chronos.Plugin.IGuiHelper.MainWindow, MockPlugin.Device.MockDevice.mIsConnected, and MockPlugin.Device.MockDevice.OnIsConnectedChanged().

◆ Disconnect()

void MockPlugin.Device.MockDevice.Disconnect ( )

Pretend we are closing the connection. Actual operation substituted by a message box.

Implements AxelSemrau.Chronos.Plugin.IDevice.

Definition at line 126 of file MockDevice.cs.

127 {
129 MessageBox.Show(Helpers.Gui.MainWindow, $"Device {Name} was disconnected from {Connection}.");
131 mIsConnected = false;
133 }

References MockPlugin.Device.MockDevice.ConnectionStateChanged, AxelSemrau.Chronos.Plugin.Helpers.Gui, AxelSemrau.Chronos.Plugin.IGuiHelper.MainWindow, MockPlugin.Device.MockDevice.mIsConnected, and MockPlugin.Device.MockDevice.OnIsConnectedChanged().

◆ Dispose()

void MockPlugin.Device.MockDevice.Dispose ( )

Definition at line 70 of file MockDevice.cs.

71 {
72 Instances.Remove(this);
73 DebugOutput?.Invoke($"MockDevice {Name} disposed");
74 }

References MockPlugin.Device.MockDevice.DebugOutput.

◆ EndInteraction()

void MockPlugin.Device.MockDevice.EndInteraction ( )

Will be called if you can lock the terminal again.

Implements AxelSemrau.Chronos.Plugin.IHaveInteractiveErrorHandling.

Definition at line 359 of file MockDevice.cs.

360 {
361 DebugOutput?.Invoke("Ending error handling interaction");
362 }

References MockPlugin.Device.MockDevice.DebugOutput.

◆ OnIsConnectedChanged()

void MockPlugin.Device.MockDevice.OnIsConnectedChanged ( )
private

For thread-safe update of the toolbox's GUI elements representing the connection state.

Definition at line 207 of file MockDevice.cs.

208 {
209 var myHandler = PropertyChanged;
210 if (myHandler != null)
211 {
212 Helpers.Gui.GuiTaskFactory.StartNew(() => myHandler(this, new PropertyChangedEventArgs(nameof(IsConnected))));
213 }
214 }
System.Threading.Tasks.TaskFactory GuiTaskFactory
For your convenience, a default task factory for tasks running on the GUI thread.
Definition: Helpers.cs:26
PropertyChangedEventHandler PropertyChanged
Definition: MockDevice.cs:216
bool IsConnected
Helper for our toolbox.
Definition: MockDevice.cs:173

References AxelSemrau.Chronos.Plugin.Helpers.Gui, AxelSemrau.Chronos.Plugin.IGuiHelper.GuiTaskFactory, MockPlugin.Device.MockDevice.IsConnected, and MockPlugin.Device.MockDevice.PropertyChanged.

Referenced by MockPlugin.Device.MockDevice.Connect(), and MockPlugin.Device.MockDevice.Disconnect().

◆ RaiseError()

void MockPlugin.Device.MockDevice.RaiseError ( string  errorDescription,
ErrorType  errType,
bool  resolved 
)

"Retry" here means that we don't retry some action, but that we raise the error again.

Parameters
errorDescription
errType
resolved

Definition at line 370 of file MockDevice.cs.

371 {
372 var errArgs = new InteractiveErrorHandlingEventArgs() { Error = errorDescription, ErrorType = errType };
373 do
374 {
375 HandleError?.Invoke(this, errArgs);
376 } while (errArgs.RetryLastAction);
377
378 if (!resolved)
379 {
380 throw new IOException($"Coffee machine reported a problem: {errorDescription}");
381 }
382 }
ErrorType
Lets a device implementing IHaveInteractiveErrorHandling specify which kind of error occurred.
Everything needed for showing the error dialog / reacting on input.
EventHandler< InteractiveErrorHandlingEventArgs > HandleError
Definition: MockDevice.cs:383

References MockPlugin.Device.MockDevice.HandleError.

Referenced by MockPlugin.Tasks.CoffeeMachineDoesNotWorkProperly.Execute().

◆ ScheduleStateChangedHandler()

void MockPlugin.Device.MockDevice.ScheduleStateChangedHandler ( object  sender,
ScheduleStateEventArgs  e 
)
private

Definition at line 348 of file MockDevice.cs.

349 {
350 DebugOutput?.Invoke($"Schedule {e.PlanerName} ({e.PlanerID}) state {e.State}, abort reason {(string.IsNullOrEmpty(e.AbortReason) ? "N/A" : e.AbortReason)}");
351 }

References MockPlugin.Device.MockDevice.DebugOutput.

◆ ShowTheMessage()

void MockPlugin.Device.MockDevice.ShowTheMessage ( string  messageText)

Let our device set a status message and display some message box instead of doing real work.

Parameters
messageText

Definition at line 158 of file MockDevice.cs.

159 {
160 WaitIfPaused();
161 SetStatusMessage?.Invoke("The device just did something wonderful.");
162 MessageBox.Show(Helpers.Gui.MainWindow,
163 $"The following message was shown addressing the mock device {Name}:\r\n{messageText}",
164 "Mock Device",
165 MessageBoxButtons.OK);
166 DebugOutput?.Invoke($"Finished showing the message {messageText}");
167 }

References MockPlugin.Device.MockDevice.DebugOutput, AxelSemrau.Chronos.Plugin.Helpers.Gui, AxelSemrau.Chronos.Plugin.IGuiHelper.MainWindow, MockPlugin.Device.MockDevice.SetStatusMessage, and MockPlugin.Device.MockDevice.WaitIfPaused().

Referenced by MockPlugin.Device.MockDevice.BrewFrappuccino(), MockPlugin.Device.MockDeviceToolbox.btnShowMessage_Click(), and MockPlugin.Tasks.BrewCoffee.Execute().

◆ SomeDummyMethod()

void MockPlugin.Device.MockDevice.SomeDummyMethod ( )

Just for testing if methods of this device can be called from some other point in our code.

Definition at line 106 of file MockDevice.cs.

107 {
108 DebugOutput?.Invoke($"Dummy method of {Name} was called.");
109 }

References MockPlugin.Device.MockDevice.DebugOutput.

◆ TriggerAbort()

void MockPlugin.Device.MockDevice.TriggerAbort ( string  reason,
bool  softStop 
)

This will trigger the AbortSchedule-Event 5 seconds after it was called from a task.

Parameters
reason
softStop

For a real device, this would be something like a leak, a failed pump or heater or anything else that makes it impossible to operate the device properly.

Definition at line 231 of file MockDevice.cs.

232 {
233 Task.Run(() =>
234 {
235 Thread.Sleep(5000);
236 if (softStop)
237 {
238 StopRun?.Invoke(new StopRunArgs()
239 {
240 How = StopRunArgs.StopMode.NoNewJobs, StopQueue = true, Reason = reason,
241 RestartRemainingJobs = false
242 });
243 }
244 else
245 {
246 AbortSchedule?.Invoke(reason);
247 }
248 });
249}
Options for stopping the schedule/queue.
StopMode
Details how to stop the run.
Action< string > AbortSchedule
Definition: MockDevice.cs:251
Func< StopRunArgs, Task > StopRun
Callback function returning a task that completes once the schedule queue was stopped.
Definition: MockDevice.cs:325

References MockPlugin.Device.MockDevice.AbortSchedule, MockPlugin.Device.MockDevice.StopRun, and Task.

Referenced by MockPlugin.Tasks.PretendCoffeeMachineIsBroken.Execute().

◆ WaitIfPaused()

void MockPlugin.Device.MockDevice.WaitIfPaused ( )

Definition at line 280 of file MockDevice.cs.

281 {
282 WaitHandle.WaitAny(new[] { mPauseEnded.WaitHandle, mAborted.WaitHandle });
284 }
readonly ManualResetEventSlim mPauseEnded
Using an event here instead of a simple bool helps us avoid polling while checking for the events.
Definition: MockDevice.cs:291

References MockPlugin.Device.MockDevice.CheckForAbort(), and MockPlugin.Device.MockDevice.mPauseEnded.

Referenced by MockPlugin.Device.MockDevice.BrewFrappuccino(), and MockPlugin.Device.MockDevice.ShowTheMessage().

Member Data Documentation

◆ DeviceTypeName

const string MockPlugin.Device.MockDevice.DeviceTypeName = "ACME Coffee Maker"
static

Definition at line 54 of file MockDevice.cs.

◆ mAborted

readonly ManualResetEventSlim MockPlugin.Device.MockDevice.mAborted = new ManualResetEventSlim(false)
private

Definition at line 293 of file MockDevice.cs.

Referenced by MockPlugin.Device.MockDevice.CheckForAbort().

◆ mIsConnected

bool MockPlugin.Device.MockDevice.mIsConnected
private

◆ mPauseEnded

readonly ManualResetEventSlim MockPlugin.Device.MockDevice.mPauseEnded = new ManualResetEventSlim(true)
private

Using an event here instead of a simple bool helps us avoid polling while checking for the events.

Definition at line 291 of file MockDevice.cs.

Referenced by MockPlugin.Device.MockDevice.WaitIfPaused().

◆ mScheduleEvents

IScheduleEvents MockPlugin.Device.MockDevice.mScheduleEvents
private

Definition at line 329 of file MockDevice.cs.

Property Documentation

◆ Aborted

bool MockPlugin.Device.MockDevice.Aborted
getset

If set, abort execution as soon as possible. You can throw an OperationCanceledException. Will be set to false after termination of the run.

Implements AxelSemrau.Chronos.Plugin.ICanInterrupt.

Definition at line 295 of file MockDevice.cs.

296 {
297 get => mAborted.IsSet;
298 set
299 {
300 if (value) { mAborted.Set(); } else { mAborted.Reset(); }
301 }
302 }

◆ Connection

string MockPlugin.Device.MockDevice.Connection = "COM17"
getset

Connection as set in the Chronos instrument settings.

If this gets a bit more complicated, you can also use a UITypeEditor here.

Implements AxelSemrau.Chronos.Plugin.INeedAConnection.

Definition at line 148 of file MockDevice.cs.

148{ get; set; } = "COM17";

◆ DeviceTypeDescription

string MockPlugin.Device.MockDevice.DeviceTypeDescription
get

Device class specification referred to by some messages.

Implements AxelSemrau.Chronos.Plugin.IDevice.

Definition at line 84 of file MockDevice.cs.

◆ DisplayedTypeName

string MockPlugin.Device.MockDevice.DisplayedTypeName
get

Visible to the user on the instruments page of the settings editor.

Implements AxelSemrau.Chronos.Plugin.IDevice.

Definition at line 79 of file MockDevice.cs.

◆ IsConnected

bool MockPlugin.Device.MockDevice.IsConnected
getset

Helper for our toolbox.

Definition at line 172 of file MockDevice.cs.

173 {
174 get => mIsConnected;
175 set
176 {
177 if (!mIsConnected && value)
178 {
179 Connect();
180 }
181 else if (mIsConnected && !value)
182 {
183 Disconnect();
184 }
185 }
186 }
void Connect()
Inform the user of our connect attempt / success. Instead of establishing a real connection,...
Definition: MockDevice.cs:114
void Disconnect()
Pretend we are closing the connection. Actual operation substituted by a message box.
Definition: MockDevice.cs:126

Referenced by MockPlugin.Device.MockDevice.OnIsConnectedChanged().

◆ LogPaths

IEnumerable<string> MockPlugin.Device.MockDevice.LogPaths
get

Provide full paths to each of your log files here.

Implements AxelSemrau.Chronos.Plugin.IProvideDiagnosticLogs.

Definition at line 322 of file MockDevice.cs.

◆ Name

string MockPlugin.Device.MockDevice.Name
getset

User-selected name for the device instance.

Please return what you are given. Note: Before Chronos 5.1.8, this was set to "Uninitialized Device" for temporary device instances. With later versions, the name should only be set for a "real" instance.

Implements AxelSemrau.Chronos.Plugin.IDevice.

Definition at line 86 of file MockDevice.cs.

87 {
88 get;
89 set;
90 }

Referenced by MockPlugin.Tasks.BrewCoffee.RegisterCoffeeConsumption(), MockPlugin.Tasks.BrewFrappuccino.RegisterConsumption(), and MockPlugin.Misc.StatusViewControl.timer1_Tick().

◆ Parameters

CoffeMakerParams MockPlugin.Device.MockDevice.Parameters = new CoffeMakerParams()
getset

Definition at line 265 of file MockDevice.cs.

265{ get; set; } = new CoffeMakerParams();

◆ Paused

bool MockPlugin.Device.MockDevice.Paused
getset

If paused, wait until paused is reset before executing the next command.

Implements AxelSemrau.Chronos.Plugin.ICanInterrupt.

Definition at line 304 of file MockDevice.cs.

305 {
306 get => !mPauseEnded.IsSet;
307 set
308 {
309 if (value)
310 {
311 mPauseEnded.Reset();
312 }
313 else
314 {
315 mPauseEnded.Set();
316 }
317 }
318 }

◆ ScheduleEvents

IScheduleEvents MockPlugin.Device.MockDevice.ScheduleEvents
set

Hook up immediately or save this for later use.

Implements AxelSemrau.Chronos.Plugin.IScheduleStateAware.

Definition at line 331 of file MockDevice.cs.

332 {
333 set
334 {
335 if (mScheduleEvents != null)
336 {
337 mScheduleEvents.ScheduleStateChanged -= ScheduleStateChangedHandler;
338 }
339
340 mScheduleEvents = value;
341 if (value != null)
342 {
343 mScheduleEvents.ScheduleStateChanged += ScheduleStateChangedHandler;
344 }
345 }
346 }
void ScheduleStateChangedHandler(object sender, ScheduleStateEventArgs e)
Definition: MockDevice.cs:348
IScheduleEvents mScheduleEvents
Definition: MockDevice.cs:329

◆ StopRun

Func<StopRunArgs, Task> MockPlugin.Device.MockDevice.StopRun
getset

Callback function returning a task that completes once the schedule queue was stopped.

Implements AxelSemrau.Chronos.Plugin.IStopRuns.

Definition at line 325 of file MockDevice.cs.

325{ get; set; }

Referenced by MockPlugin.Device.MockDevice.TriggerAbort().

Event Documentation

◆ AbortSchedule

Action<string> MockPlugin.Device.MockDevice.AbortSchedule

Definition at line 251 of file MockDevice.cs.

Referenced by MockPlugin.Device.MockDevice.TriggerAbort().

◆ ConnectionStateChanged

Action<ConnectionState> MockPlugin.Device.MockDevice.ConnectionStateChanged

◆ DebugOutput

◆ HandleError

EventHandler<InteractiveErrorHandlingEventArgs> MockPlugin.Device.MockDevice.HandleError

Definition at line 383 of file MockDevice.cs.

Referenced by MockPlugin.Device.MockDevice.RaiseError().

◆ PropertyChanged

PropertyChangedEventHandler MockPlugin.Device.MockDevice.PropertyChanged

Definition at line 216 of file MockDevice.cs.

Referenced by MockPlugin.Device.MockDevice.OnIsConnectedChanged().

◆ SetStatusMessage

Action<string> MockPlugin.Device.MockDevice.SetStatusMessage

The documentation for this class was generated from the following file: