private void StartBikeSession() { DateTime startTime = DateTime.Now; bool running = true; while (running) { DateTime currentTime = DateTime.Now; if ((currentTime - startTime).Ticks / TimeSpan.TicksPerSecond >= 1) { startTime = currentTime; currentData = bike.ReadData(); if (currentData == null) { continue; } OnBikeDataReceived?.Invoke(currentData); if (bike is BikeSimulator) { ChangeBikeValues(); } } } }
private void handleData(DataPacket data) { switch (data.type) { case "LOGINRESPONSE": { DataPacket <LoginResponse> d = data.GetData <LoginResponse>(); if (d.data.status == "OK" && !d.data.isClient) { this.loggedIn = true; OnLogin?.Invoke(this.loggedIn); Console.WriteLine("You are logged in!"); } else if (d.data.status == ("ERROR")) { this.loggedIn = false; OnLogin?.Invoke(this.loggedIn); Console.WriteLine("Your username and/or password is not valid!"); } break; } case "CHAT": { DataPacket <ChatPacket> d = data.GetData <ChatPacket>(); OnChatReceived?.Invoke(d.sender, d.data.receiver, $"{d.sender}: {d.data.chatMessage}\r\n", d.data.isDoctorMessage); break; } case "RESPONSE_CLIENTLIST": { DataPacket <ClientListPacket> d = data.GetData <ClientListPacket>(); OnClientListReceived?.Invoke(d.data.clientList); break; } case "BIKEDATA": { DataPacket <BikeDataPacket> d = data.GetData <BikeDataPacket>(); OnBikeDataReceived?.Invoke(d); break; } case "RESPONSE_SESSIONSTATE": { DataPacket <ResponseSessionStatePacket> d = data.GetData <ResponseSessionStatePacket>(); OnSessionStateReceived?.Invoke(d.data.receiver, d.data.startTimeSession, d.data.sessionState); break; } case "SESSIONSTATE_RESPONSE": { DataPacket <StartStopPacket> d = data.GetData <StartStopPacket>(); OnSessionStateMessageReceived?.Invoke(d.sender, d.data.startSession); break; } case "RESPONSE_BIKE_STATE": { DataPacket <ResponseBikeState> d = data.GetData <ResponseBikeState>(); OnBikeStateChanged?.Invoke(d.sender, d.data.bikeIsConnected); break; } case "SESSIONSTATE_EMERGENCYRESPONSE": { DataPacket <EmergencyResponsePacket> d = data.GetData <EmergencyResponsePacket>(); OnEmergencyResponse?.Invoke(d.sender, d.data.state); break; } case "RESPONSE_TRAINING_LIST": { DataPacket <ResponseTrainingList> d = data.GetData <ResponseTrainingList>(); this.OnTrainingListReceived?.Invoke(d.data.forClient, d.data.trainingList); break; } case "RESPONSE_TRAINING_DATA": { DataPacket <ResponseTrainingData> d = data.GetData <ResponseTrainingData>(); this.OnTrainingDataReceived?.Invoke(d.data.forClient, d.data.trainingName, d.data.trainingData); break; } case "DISCONNECT_REQUEST": { DataPacket <ChatPacket> d = data.GetData <ChatPacket>(); Disconnect(); break; } default: Console.WriteLine("Type is not valid"); break; } }