diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-12-19 18:01:01 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-12-19 18:01:01 +0200 |
| commit | 1208554e06da8aec1b074932df488769572ffcfb (patch) | |
| tree | 9858ededeb8badda5fc8b3052ef9745e419f35fd /Software/Visual_Studio/Tango.Emulations | |
| parent | 690604e6167bfa4fea0ab02f8b24a68142e8b546 (diff) | |
| download | Tango-1208554e06da8aec1b074932df488769572ffcfb.tar.gz Tango-1208554e06da8aec1b074932df488769572ffcfb.zip | |
Implemented auto thread loading.
Implemented advanced settings for technician.
Implemented thread loading on emulator.
Removed PowerUpSelectedRML from settings.
Now using LoadedRml settings for ThreadLoading and PowerUp.
Diffstat (limited to 'Software/Visual_Studio/Tango.Emulations')
| -rw-r--r-- | Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs | 64 | ||||
| -rw-r--r-- | Software/Visual_Studio/Tango.Emulations/ExternalBridge/EmulatorExternalBridge.cs | 1 |
2 files changed, 64 insertions, 1 deletions
diff --git a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs index e4b081e9e..7537e4676 100644 --- a/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs +++ b/Software/Visual_Studio/Tango.Emulations/Emulators/MachineEmulator.cs @@ -33,6 +33,7 @@ using System.Diagnostics; using Tango.Core.ExtensionMethods; using Tango.PMR.MachineStatus; using Tango.PMR.Power; +using Tango.PMR.ThreadLoading; namespace Tango.Emulations.Emulators { @@ -51,6 +52,7 @@ namespace Tango.Emulations.Emulators } private const int MAX_CHUNK_LENGTH = 4000; + private static Random _rnd = new Random(); private StartDiagnosticsRequest _diagnosticsRequest; private bool _cancelJob; private List<PMR.Hardware.HardwareMotorType> _motorJoggingRequestTypes; @@ -76,6 +78,8 @@ namespace Tango.Emulations.Emulators private FileUploadRequest _lastFileUploadRequest; private bool _isAfterReset; private bool _abortPowerDown; + private bool _isThreadLoadingStarted; + private String _threadLoadingToken; #region Properties @@ -405,6 +409,12 @@ namespace Tango.Emulations.Emulators case MessageType.AbortPowerDownRequest: HandleAbortPowerDownRequest(MessageFactory.ParseTangoMessageFromContainer<AbortPowerDownRequest>(container)); break; + case MessageType.StartThreadLoadingRequest: + HandleStartThreadLoadingRequest(MessageFactory.ParseTangoMessageFromContainer<StartThreadLoadingRequest>(container)); + break; + case MessageType.ContinueThreadLoadingRequest: + HandleContinueThreadLoadingRequest(MessageFactory.ParseTangoMessageFromContainer<ContinueThreadLoadingRequest>(container)); + break; } } @@ -1383,7 +1393,7 @@ namespace Tango.Emulations.Emulators { ProgressPercentage = 100, Message = "Machine is turned off", - State = PowerDownState.Completed + State = PowerDownState.PowerOffCompleted }, request.Container.Token, true); }); } @@ -1395,6 +1405,38 @@ namespace Tango.Emulations.Emulators await Transporter.SendResponse<AbortPowerDownResponse>(new AbortPowerDownResponse(), request.Container.Token); } + private async void HandleStartThreadLoadingRequest(TangoMessage<StartThreadLoadingRequest> request) + { + _isThreadLoadingStarted = true; + _threadLoadingToken = request.Container.Token; + await Transporter.SendResponse<StartThreadLoadingResponse>(new StartThreadLoadingResponse(), request.Container.Token); + } + + private async void HandleContinueThreadLoadingRequest(TangoMessage<ContinueThreadLoadingRequest> request) + { + if (_threadLoadingToken != null) + { + await Transporter.SendResponse<ContinueThreadLoadingResponse>(new ContinueThreadLoadingResponse(), request.Container.Token); + + await Task.Delay(1000); + await Transporter.SendResponse<StartThreadLoadingResponse>(new StartThreadLoadingResponse() { State = ThreadLoadingState.Finalizing }, _threadLoadingToken); + await Task.Delay(8000); + + if (_rnd.Next(0, 100) > 50) + { + await Transporter.SendResponse<StartThreadLoadingResponse>(new StartThreadLoadingResponse() { State = ThreadLoadingState.Completed }, _threadLoadingToken); + } + else + { + await Transporter.SendResponse<StartThreadLoadingResponse>(new StartThreadLoadingResponse() { State = ThreadLoadingState.FinalizationError, ErrorReason = "Emulator random error." }, _threadLoadingToken); + } + } + else + { + await Transporter.SendResponse<ContinueThreadLoadingResponse>(new ContinueThreadLoadingResponse(), request.Container.Token, null, ErrorCode.GeneralError, "StartThreadLoadingRequest was never sent."); + } + } + #endregion #region Public Methods @@ -1410,6 +1452,26 @@ namespace Tango.Emulations.Emulators return response.Message.Index; } + public async void StartThreadLoading() + { + await Transporter.SendResponse<StartThreadLoadingResponse>(new StartThreadLoadingResponse() { State = ThreadLoadingState.ReadyForLoading }, _threadLoadingToken); + } + + public async void FinalizeThreadLoading() + { + await Transporter.SendResponse<StartThreadLoadingResponse>(new StartThreadLoadingResponse() { State = ThreadLoadingState.Finalizing }, _threadLoadingToken); + await Task.Delay(3000); + + if (_rnd.Next(0, 100) > 50) + { + await Transporter.SendResponse<StartThreadLoadingResponse>(new StartThreadLoadingResponse() { State = ThreadLoadingState.Completed }, _threadLoadingToken); + } + else + { + await Transporter.SendResponse<StartThreadLoadingResponse>(new StartThreadLoadingResponse() { State = ThreadLoadingState.FinalizationError, ErrorReason = "Emulator random error." }, _threadLoadingToken); + } + } + #endregion } } diff --git a/Software/Visual_Studio/Tango.Emulations/ExternalBridge/EmulatorExternalBridge.cs b/Software/Visual_Studio/Tango.Emulations/ExternalBridge/EmulatorExternalBridge.cs index c1aaa3cd6..1fba528f8 100644 --- a/Software/Visual_Studio/Tango.Emulations/ExternalBridge/EmulatorExternalBridge.cs +++ b/Software/Visual_Studio/Tango.Emulations/ExternalBridge/EmulatorExternalBridge.cs @@ -44,6 +44,7 @@ namespace Tango.Emulations.ExternalBridge EnableDiagnostics = true; EnableEmbeddedDebugging = true; EnableEventsNotification = true; + EnableAutomaticThreadLoading = true; String address = new string(Guid.NewGuid().ToString().Replace("-", "").TakeLast(4).ToArray()); |
