diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-03-30 19:31:46 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-03-30 19:31:46 +0300 |
| commit | dcfafe05ed0276274c30f40595decb19b05c284d (patch) | |
| tree | 0cb718b6795da5c3d8a291826990f878ab9c5b82 /Software/Visual_Studio/Tango.Emulations | |
| parent | 19683a5a6047e822395f56412d263dc765df82fa (diff) | |
| download | Tango-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.cs | 56 |
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 |
