From adea08cfb7b0027eae40239c818b2b5d7d2f18c1 Mon Sep 17 00:00:00 2001 From: shinichi Date: Wed, 30 Sep 2020 16:22:26 +0200 Subject: [PATCH] server can set resistance --- Client/Client.cs | 16 ++++++++++++++++ Client/Program.cs | 14 +++++++++----- ProftaakRH/BLEHandler.cs | 8 ++++++++ ProftaakRH/IHandler.cs | 2 +- ProftaakRH/Main.cs | 2 +- Server/Client.cs | 18 ++++++++++-------- 6 files changed, 45 insertions(+), 15 deletions(-) diff --git a/Client/Client.cs b/Client/Client.cs index ca6b53f..d52c349 100644 --- a/Client/Client.cs +++ b/Client/Client.cs @@ -16,6 +16,7 @@ namespace Client private int totalBufferReceived = 0; private EngineConnection engineConnection; private bool sessionRunning = false; + private IHandler handler = null; public Client() : this("localhost", 5555) @@ -102,6 +103,16 @@ namespace Client byte[] stopSession = DataParser.getStopSessionJson(); stream.BeginWrite(stopSession, 0, stopSession.Length, new AsyncCallback(OnWrite), null); break; + case DataParser.SET_RESISTANCE: + if (this.handler == null) + { + Console.WriteLine("handler is null"); + } + else + { + this.handler.setResistance(DataParser.getResistanceFromJson(payloadbytes)); + } + break; default: Console.WriteLine($"Received json with identifier {identifier}:\n{Encoding.ASCII.GetString(payloadbytes)}"); break; @@ -174,5 +185,10 @@ namespace Client initEngine(); this.stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null); } + + public void setHandler(IHandler handler) + { + this.handler = handler; + } } } diff --git a/Client/Program.cs b/Client/Program.cs index 9853e51..f8dd547 100644 --- a/Client/Program.cs +++ b/Client/Program.cs @@ -1,7 +1,6 @@ using System; using Hardware; using Hardware.Simulators; -using RH_Engine; namespace Client { @@ -20,13 +19,18 @@ namespace Client { } - //BLEHandler bLEHandler = new BLEHandler(client); + BLEHandler bLEHandler = new BLEHandler(client); - //bLEHandler.Connect(); + bLEHandler.Connect(); - BikeSimulator bikeSimulator = new BikeSimulator(client); + client.setHandler(bLEHandler); - bikeSimulator.StartSimulation(); + + //BikeSimulator bikeSimulator = new BikeSimulator(client); + + //bikeSimulator.StartSimulation(); + + //client.setHandler(bikeSimulator); while (true) { diff --git a/ProftaakRH/BLEHandler.cs b/ProftaakRH/BLEHandler.cs index 56de648..269b0a1 100644 --- a/ProftaakRH/BLEHandler.cs +++ b/ProftaakRH/BLEHandler.cs @@ -25,11 +25,13 @@ namespace Hardware public BLEHandler(IDataReceiver dataReceiver) { this.dataReceivers = new List { dataReceiver }; + } public BLEHandler(List dataReceivers) { this.dataReceivers = dataReceivers; + } public void addDataReceiver(IDataReceiver dataReceiver) @@ -43,6 +45,7 @@ namespace Hardware public void Connect() { BLE bleBike = new BLE(); + Thread.Sleep(1000); // We need some time to list available devices // List available devices @@ -170,6 +173,11 @@ namespace Hardware /// The precentage of resistance to set public void setResistance(float percentage) { + if (!this.Running) + { + Console.WriteLine("BLE is not running"); + return; + } byte[] antMessage = new byte[13]; antMessage[0] = 0x4A; antMessage[1] = 0x09; diff --git a/ProftaakRH/IHandler.cs b/ProftaakRH/IHandler.cs index c1ce11e..4f52042 100644 --- a/ProftaakRH/IHandler.cs +++ b/ProftaakRH/IHandler.cs @@ -4,7 +4,7 @@ using System.Text; namespace ProftaakRH { - interface IHandler + public interface IHandler { void setResistance(float percentage); } diff --git a/ProftaakRH/Main.cs b/ProftaakRH/Main.cs index 5ffcab4..41780f0 100644 --- a/ProftaakRH/Main.cs +++ b/ProftaakRH/Main.cs @@ -14,7 +14,7 @@ namespace ProftaakRH IDataReceiver dataReceiver = new DataConverter(); BLEHandler bLEHandler = new BLEHandler(dataReceiver); BikeSimulator bikeSimulator = new BikeSimulator(dataReceiver); - bikeSimulator.setResistance(bikeSimulator.GenerateResistance(1f)); + bikeSimulator.setResistance(1); bikeSimulator.StartSimulation(); diff --git a/Server/Client.cs b/Server/Client.cs index 1b357be..d486793 100644 --- a/Server/Client.cs +++ b/Server/Client.cs @@ -103,21 +103,17 @@ namespace Server { Console.WriteLine("Log in"); this.username = username; - byte[] response = DataParser.getLoginResponse("OK"); - stream.BeginWrite(response, 0, response.Length, new AsyncCallback(OnWrite), null); - byte[] startSession = DataParser.getStartSessionJson(); - stream.BeginWrite(startSession, 0, startSession.Length, new AsyncCallback(OnWrite), null); + sendMessage(DataParser.getLoginResponse("OK")); + sendMessage(DataParser.getStartSessionJson()); } else { - byte[] response = DataParser.getLoginResponse("wrong username or password"); - stream.BeginWrite(response, 0, response.Length, new AsyncCallback(OnWrite), null); + sendMessage(DataParser.getLoginResponse("wrong username or password")); } } else { - byte[] response = DataParser.getLoginResponse("invalid json"); - stream.BeginWrite(response, 0, response.Length, new AsyncCallback(OnWrite), null); + sendMessage(DataParser.getLoginResponse("invalid json")); } break; case DataParser.START_SESSION: @@ -142,6 +138,7 @@ namespace Server else if (payloadbytes.Length == 2) { saveData?.WriteDataRAWBPM(payloadbytes); + sendMessage(DataParser.getSetResistanceJson(50)); } else { @@ -152,6 +149,11 @@ namespace Server } + private void sendMessage(byte[] message) + { + stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null); + } + private bool verifyLogin(string username, string password) { return username == password;