private async Task CalibrationMinimumLight(IContext context) { if (context.Message is StopCommand stopCommand) { // Ignore previous commands if we receive any if (stopCommand[MessageProperties.Context] == "MAX") { return; } Become(StandardMode); ForwardToPowerAdapter(TurnOffCommand.Default); ResetStateValues(); TryCalculateSpectrum(); Logger.LogInformation($"Calibration of {Uid} : calibration finished with MIN: {_Minimum}, MAX: {_Maximum}, RANGE: {_Range}"); await Task.Delay(WAIT_AFTER_CHANGE).ConfigureAwait(false); ForwardToPowerAdapter(TurnOnCommand.Create(CHANGE_POWER_STATE_TIME)); } else if (context.Message is PropertyChangedEvent minimumState) { await MessageBroker.SendAfterDelay(ActorMessageContext.Create(Self, StopCommand.Create("MIN")), TimeSpan.FromMilliseconds(1500)).ConfigureAwait(false); _Minimum = minimumState.AsDouble(MessageProperties.NewValue); } else { await StandardMode(context).ConfigureAwait(false); } }
private async Task CalibrationMaximumLight(IContext context) { if (context.Message is StopCommand stopCommand) { Become(CalibrationMinimumLight); ForwardToPowerAdapter(TurnOffCommand.Default); await Task.Delay(WAIT_AFTER_CHANGE).ConfigureAwait(false); Logger.LogInformation($"Calibration of {Uid} : waiting to reach MIN state"); ForwardToPowerAdapter(TurnOnCommand.Default); } else if (context.Message is PropertyChangedEvent maximumState) { // Resend stop message to cancel scheduled message await MessageBroker.SendAfterDelay(ActorMessageContext.Create(Self, StopCommand.Create("MAX")), TimeSpan.FromMilliseconds(1500), true).ConfigureAwait(false); _Maximum = maximumState.AsDouble(MessageProperties.NewValue); } else { await StandardMode(context).ConfigureAwait(false); } }