aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Emulations
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-30 19:31:46 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-30 19:31:46 +0300
commitdcfafe05ed0276274c30f40595decb19b05c284d (patch)
tree0cb718b6795da5c3d8a291826990f878ab9c5b82 /Software/Visual_Studio/Tango.Emulations
parent19683a5a6047e822395f56412d263dc765df82fa (diff)
downloadTango-dcfafe05ed0276274c30f40595decb19b05c284d.tar.gz
Tango-dcfafe05ed0276274c30f40595decb19b05c284d.zip
Implemented PPC head cleaning.
Diffstat (limited to 'Software/Visual_Studio/Tango.Emulations')
-rw-r--r--Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs56
1 files changed, 56 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
index 17a7fbe58..42a1902e4 100644
--- a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
+++ b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs
@@ -83,6 +83,7 @@ namespace Tango.Emulations.Emulators
private String _threadLoadingToken;
private DateTime _connectionTime;
private int _jobAbortCounter;
+ private bool _abortHeadCleaning;
#region Properties
@@ -418,6 +419,12 @@ namespace Tango.Emulations.Emulators
case MessageType.ContinueThreadLoadingRequest:
HandleContinueThreadLoadingRequest(MessageFactory.ParseTangoMessageFromContainer<ContinueThreadLoadingRequest>(container));
break;
+ case MessageType.StartHeadCleaningRequest:
+ HandleStartHeadCleaningRequest(MessageFactory.ParseTangoMessageFromContainer<StartHeadCleaningRequest>(container));
+ break;
+ case MessageType.AbortHeadCleaningRequest:
+ HandleAbortHeadCleaningRequest(MessageFactory.ParseTangoMessageFromContainer<AbortHeadCleaningRequest>(container));
+ break;
}
}
@@ -1526,6 +1533,55 @@ namespace Tango.Emulations.Emulators
}
}
+ private async void HandleStartHeadCleaningRequest(TangoMessage<StartHeadCleaningRequest> request)
+ {
+ _abortHeadCleaning = false;
+
+ for (int i = 0; i < 100; i++)
+ {
+ if (_abortHeadCleaning)
+ {
+ await Transporter.SendResponse<StartHeadCleaningResponse>(new StartHeadCleaningResponse()
+ {
+
+ }, request.Container.Token, new TransportResponseConfig()
+ {
+ Completed = true,
+ ErrorCode = ErrorCode.ContinuousResponseAborted
+ });
+
+ return;
+ }
+
+ await Task.Delay(200);
+ await Transporter.SendResponse<StartHeadCleaningResponse>(new StartHeadCleaningResponse()
+ {
+ Progress = i++,
+ Total = 100,
+ Status = $"Performing head cleaning..."
+ }, request.Container.Token);
+ }
+
+ await Task.Delay(500);
+
+ await Transporter.SendResponse<StartHeadCleaningResponse>(new StartHeadCleaningResponse()
+ {
+ Progress = 100,
+ Total = 100,
+ Status = "Completed",
+ }, request.Container.Token, new TransportResponseConfig() { Completed = true });
+ }
+
+ private async void HandleAbortHeadCleaningRequest(TangoMessage<AbortHeadCleaningRequest> request)
+ {
+ if (_rnd.Next(0, 100) > 60)
+ {
+ _abortHeadCleaning = true;
+ await Task.Delay(1000);
+ await Transporter.SendResponse<AbortHeadCleaningResponse>(new AbortHeadCleaningResponse(), request.Container.Token);
+ }
+ }
+
#endregion
#region Public Methods