From 4207eaefea21c710cec09b83cb3b008553e3ecd7 Mon Sep 17 00:00:00 2001 From: shinichi Date: Thu, 29 Oct 2020 22:57:10 +0100 Subject: [PATCH] [ADD] bike speed is set to 0 when session is not running --- ClientApp/Utils/Client.cs | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/ClientApp/Utils/Client.cs b/ClientApp/Utils/Client.cs index 27d980a..438ccca 100644 --- a/ClientApp/Utils/Client.cs +++ b/ClientApp/Utils/Client.cs @@ -21,7 +21,7 @@ namespace ClientApp.Utils private byte[] totalBuffer = new byte[1024]; private int totalBufferReceived = 0; public EngineConnection engineConnection; - private bool sessionRunning = false; + private bool sessionRunning = true; private IHandler handler = null; private LoginViewModel LoginViewModel; @@ -146,6 +146,7 @@ namespace ClientApp.Utils case DataParser.STOP_SESSION: Console.WriteLine("Stop session identifier"); this.sessionRunning = false; + stopBikeInSimulation(); Debug.WriteLine("stop"); break; case DataParser.SET_RESISTANCE: @@ -230,14 +231,12 @@ namespace ClientApp.Utils } byte[] message = DataParser.GetRawBPMDataMessageServer(bytes); - if (engineConnection.Connected && engineConnection.FollowingRoute) + if (engineConnection != null && engineConnection.Connected && engineConnection.FollowingRoute) { engineConnection.BikeBPM = bytes[1]; - } - - this.stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null); + this.stream?.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null); } /// @@ -256,21 +255,29 @@ namespace ClientApp.Utils throw new ArgumentNullException("no bytes"); } byte[] message = DataParser.GetRawBikeDataMessageServer(bytes); - bool canSendToEngine = engineConnection.Connected && engineConnection.FollowingRoute; + bool canSendToEngine = engineConnection != null && engineConnection.Connected && engineConnection.FollowingRoute && this.sessionRunning; switch (bytes[0]) { case 0x10: if (canSendToEngine) engineConnection.BikeSpeed = (bytes[4] | (bytes[5] << 8)) * 0.01f; + else if (engineConnection != null) engineConnection.BikeSpeed = 0; break; case 0x19: if (canSendToEngine) engineConnection.BikePower = (bytes[5]) | (bytes[6] & 0b00001111) << 8; + else if (engineConnection != null) engineConnection.BikePower = 0; break; } - this.stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null); + this.stream?.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null); + } + + private void stopBikeInSimulation() + { + engineConnection.BikeSpeed = 0; + engineConnection.BikePower = 0; } #endregion