public ParticipantVehicleNamesDataDecoder() { packetBase = new PacketBaseDecoder(); vehicles = new VehicleInfoArrayDecoder(); Add(packetBase); Add(vehicles); }
public VehicleClassNamesDataDecoder() { packetBase = new PacketBaseDecoder(); classInfo = new ClassInfoArrayDecoder(); Add(packetBase); Add(classInfo); }
public TimeStatsDataDecoder() { packetBase = new PacketBaseDecoder(); participantsChangedTimestamp = new FourByteDecoder(); stats = new ParticipantsStatsArrayDecoder(); Add(packetBase); Add(participantsChangedTimestamp); Add(stats); }
public ParticipantsDataDecoder() { packetBase = new PacketBaseDecoder(); participantsChangedTimestamp = new FourByteDecoder(); name = new StringMatrixDecoder(PARTICIPANTS_PER_PACKET, PARTICIPANT_NAME_LENGTH_MAX); nationality = new FourByteArrayDecoder(PARTICIPANTS_PER_PACKET); index = new TwoByteArrayDecoder(PARTICIPANTS_PER_PACKET); Add(packetBase); Add(participantsChangedTimestamp); Add(name); Add(nationality); Add(index); }
public GameStateDataDecoder() { packetBase = new PacketBaseDecoder(); buildVersionNumber = new TwoByteDecoder(); gameState = new GameStateDecoder(); ambientTemperature = new OneByteDecoder(); trackTemperature = new OneByteDecoder(); rainDensity = new OneByteDecoder(); snowDensity = new OneByteDecoder(); windSpeed = new OneByteDecoder(); windDirectionX = new OneByteDecoder(); windDirectionY = new OneByteDecoder(); Add(packetBase); Add(buildVersionNumber); Add(gameState); Add(ambientTemperature); Add(trackTemperature); Add(rainDensity); Add(snowDensity); Add(windSpeed); Add(windDirectionX); Add(windDirectionY); }
public RaceDataDecoder() { packetBase = new PacketBaseDecoder(); worldFastestLapTime = new FourByteDecoder(); personalFastestLapTime = new FourByteDecoder(); personalFastestSector1Time = new FourByteDecoder(); personalFastestSector2Time = new FourByteDecoder(); personalFastestSector3Time = new FourByteDecoder(); worldFastestSector1Time = new FourByteDecoder(); worldFastestSector2Time = new FourByteDecoder(); worldFastestSector3Time = new FourByteDecoder(); trackLength = new FourByteDecoder(); trackLocation = new StringMatrixDecoder(1, TRACKNAME_LENGTH_MAX); trackVariation = new StringMatrixDecoder(1, TRACKNAME_LENGTH_MAX); translatedTrackLocation = new StringMatrixDecoder(1, TRACKNAME_LENGTH_MAX); translatedTrackVariation = new StringMatrixDecoder(1, TRACKNAME_LENGTH_MAX); lapsTimeInEvent = new LapsTimeInEvent(); // need to test this in binary enforcedPitStopLap = new OneByteDecoder(); Add(packetBase); Add(worldFastestLapTime); Add(personalFastestLapTime); Add(personalFastestSector1Time); Add(personalFastestSector2Time); Add(personalFastestSector3Time); Add(worldFastestSector1Time); Add(worldFastestSector2Time); Add(worldFastestSector3Time); Add(trackLength); Add(trackLocation); Add(trackVariation); Add(translatedTrackLocation); Add(translatedTrackVariation); Add(lapsTimeInEvent); Add(enforcedPitStopLap); }
public TimingsDataDecoder() { packetBase = new PacketBaseDecoder(); numParticipants = new OneByteDecoder(); participantsChangedTimestamp = new FourByteDecoder(); eventTimeRemaining = new FourByteDecoder(); splitTimeAhead = new FourByteDecoder(); splitTimeBehind = new FourByteDecoder(); splitTime = new FourByteDecoder(); participants = new ParticipantInfoArrayDecoder(ParticipantInfoArrayDecoder.UDP_STREAMER_PARTICIPANTS_SUPPORTED); localParticipantIndex = new TwoByteDecoder(); tickCount = new FourByteDecoder(); Add(packetBase); Add(numParticipants); Add(participantsChangedTimestamp); Add(eventTimeRemaining); Add(splitTimeAhead); Add(splitTimeBehind); Add(splitTime); Add(participants); Add(localParticipantIndex); Add(tickCount); }
public void Process() { while (true) { var bytes = reader.Read(); if (bytes.Length > 0) { int index = 0; var packetBase = new PacketBaseDecoder(); packetBase.Decode(ref bytes, ref index); if (packetBase.packetType.UInt() == 0 && bytes.Length == 559) { var telem = new TelemetryDataDecoder(); index = 0; telem.Decode(ref bytes, ref index); packets.Push(telem); } if (packetBase.packetType.UInt() == 1 && bytes.Length == 308) { var race = new RaceDataDecoder(); index = 0; race.Decode(ref bytes, ref index); packets.Push(race); } if (packetBase.packetType.UInt() == 2 && bytes.Length == 1136) { var participants = new ParticipantsDataDecoder(); index = 0; participants.Decode(ref bytes, ref index); packets.Push(participants); } if (packetBase.packetType.UInt() == 3 && bytes.Length == 1063) { var timing = new TimingsDataDecoder(); index = 0; timing.Decode(ref bytes, ref index); packets.Push(timing); } if (packetBase.packetType.UInt() == 4 && bytes.Length == 24) { var gamestate = new GameStateDataDecoder(); index = 0; gamestate.Decode(ref bytes, ref index); packets.Push(gamestate); } if (packetBase.packetType.UInt() == 7 && bytes.Length == 1040) { var timestats = new TimeStatsDataDecoder(); index = 0; timestats.Decode(ref bytes, ref index); packets.Push(timestats); } if (packetBase.packetType.UInt() == 8 && bytes.Length == 1164) { var vehicleName = new ParticipantVehicleNamesDataDecoder(); index = 0; vehicleName.Decode(ref bytes, ref index); packets.Push(vehicleName); } if (packetBase.packetType.UInt() == 8 && bytes.Length == 1452) { var className = new VehicleClassNamesDataDecoder(); index = 0; className.Decode(ref bytes, ref index); packets.Push(className); } } } }
public TelemetryDataDecoder() { packetBase = new PacketBaseDecoder(); viewedParticipantIndex = new OneByteDecoder(); unfilteredThrottle = new OneByteDecoder(); unfilteredBrake = new OneByteDecoder(); unfilteredSteering = new OneByteDecoder(); unfilteredClutch = new OneByteDecoder(); carFlags = new OneByteDecoder(); oilTempCelsius = new TwoByteDecoder(); oilPressureKPa = new TwoByteDecoder(); waterTempCelsius = new TwoByteDecoder(); waterPressureKpa = new TwoByteDecoder(); fuelPressureKpa = new TwoByteDecoder(); fuelCapacity = new OneByteDecoder(); brake = new OneByteDecoder(); throttle = new OneByteDecoder(); clutch = new OneByteDecoder(); fuelLevel = new FourByteDecoder(); speed = new FourByteDecoder(); rpm = new TwoByteDecoder(); maxRpm = new TwoByteDecoder(); steering = new OneByteDecoder(); gearNumGears = new GearNumGearsDecoder(); boostAmount = new OneByteDecoder(); crashState = new OneByteDecoder(); odometerKM = new FourByteDecoder(); orientation = new FourByteArrayDecoder(3); localVelocity = new FourByteArrayDecoder(3); worldVelocity = new FourByteArrayDecoder(3); angularVelocity = new FourByteArrayDecoder(3); localAcceleration = new FourByteArrayDecoder(3); worldAcceleration = new FourByteArrayDecoder(3); extentsCentre = new FourByteArrayDecoder(3); tyreFlags = new OneByteArrayDecoder(4); terrain = new OneByteArrayDecoder(4); tyreY = new FourByteArrayDecoder(4); tyreRPS = new FourByteArrayDecoder(4); tyreTemp = new OneByteArrayDecoder(4); tyreHeightAboveGround = new FourByteArrayDecoder(4); tyreWear = new OneByteArrayDecoder(4); brakeDamage = new OneByteArrayDecoder(4); suspensionDamage = new OneByteArrayDecoder(4); brakeTempCelsius = new TwoByteArrayDecoder(4); tyreTreadTemp = new TwoByteArrayDecoder(4); tyreLayerTemp = new TwoByteArrayDecoder(4); tyreCarcassTemp = new TwoByteArrayDecoder(4); tyreRimTemp = new TwoByteArrayDecoder(4); tyreInternalAirTemp = new TwoByteArrayDecoder(4); tyreTempLeft = new TwoByteArrayDecoder(4); tyreTempCenter = new TwoByteArrayDecoder(4); tyreTempRight = new TwoByteArrayDecoder(4); wheelLocalPositionY = new FourByteArrayDecoder(4); rideHeight = new FourByteArrayDecoder(4); suspensionTravel = new FourByteArrayDecoder(4); suspensionVelocity = new FourByteArrayDecoder(4); suspensionRideHeight = new TwoByteArrayDecoder(4); airPressure = new TwoByteArrayDecoder(4); engineSpeed = new FourByteDecoder(); engineTorque = new FourByteDecoder(); wings = new OneByteArrayDecoder(2); handBrake = new OneByteDecoder(); aeroDamage = new OneByteDecoder(); engineDamage = new OneByteDecoder(); joyPad0 = new FourByteDecoder(); dPad = new OneByteDecoder(); tyreCompound = new StringMatrixDecoder(4, TYRE_NAME_LENGTH_MAX); turboBoostPressure = new FourByteDecoder(); fullPosition = new FourByteArrayDecoder(3); brakeBias = new OneByteDecoder(); tickCount = new FourByteDecoder(); Add(packetBase); Add(viewedParticipantIndex); Add(unfilteredThrottle); Add(unfilteredBrake); Add(unfilteredSteering); Add(unfilteredClutch); Add(carFlags); Add(oilTempCelsius); Add(oilPressureKPa); Add(waterTempCelsius); Add(waterPressureKpa); Add(fuelPressureKpa); Add(fuelCapacity); Add(brake); Add(throttle); Add(clutch); Add(fuelLevel); Add(speed); Add(rpm); Add(maxRpm); Add(steering); Add(gearNumGears); Add(boostAmount); Add(crashState); Add(odometerKM); Add(orientation); Add(localVelocity); Add(worldVelocity); Add(angularVelocity); Add(localAcceleration); Add(worldAcceleration); Add(extentsCentre); Add(tyreFlags); Add(terrain); Add(tyreY); Add(tyreRPS); Add(tyreTemp); Add(tyreHeightAboveGround); Add(tyreWear); Add(brakeDamage); Add(suspensionDamage); Add(brakeTempCelsius); Add(tyreTreadTemp); Add(tyreLayerTemp); Add(tyreCarcassTemp); Add(tyreRimTemp); Add(tyreInternalAirTemp); Add(tyreTempLeft); Add(tyreTempCenter); Add(tyreTempRight); Add(wheelLocalPositionY); Add(rideHeight); Add(suspensionTravel); Add(suspensionVelocity); Add(suspensionRideHeight); Add(airPressure); Add(engineSpeed); Add(engineTorque); Add(wings); Add(handBrake); Add(aeroDamage); Add(engineDamage); Add(joyPad0); Add(dPad); Add(tyreCompound); Add(turboBoostPressure); Add(fullPosition); Add(brakeBias); Add(tickCount); }
public Test() { var packetBase = new PacketBaseDecoder(); IReader reader = new UDPNonBlockingReader(5606); while (true) { var bytes = reader.Read(); if (bytes.Length > 0) { int index = 0; packetBase.Decode(ref bytes, ref index); //Console.WriteLine("Packet Type " + packetBase.packetType.UInt()); if (packetBase.packetType.UInt() == 8 && packetBase.partialPacketIndex.UInt() == 2) { Console.WriteLine("Packet Type " + packetBase.packetType.UInt()); Console.WriteLine("Packet number " + packetBase.partialPacketNumber.UInt()); Console.WriteLine("Packet index " + packetBase.partialPacketIndex.UInt()); var className = new VehicleClassNamesDataDecoder(); index = 0; className.Decode(ref bytes, ref index); for (int i = 0; i < 60; ++i) { Console.WriteLine("class index " + i + " " + className.classInfo.ClassInfoArray(i).classIndex.UInt()); Console.WriteLine("name " + i + " " + className.classInfo.ClassInfoArray(i).name.String(0)); } } if (packetBase.packetType.UInt() == 8 && packetBase.partialPacketIndex.UInt() == 1) // disabled // if (packetBase.packetType.UInt() == 8000 && packetBase.partialPacketIndex.UInt() == 1) { Console.WriteLine("Packet Type " + packetBase.packetType.UInt()); Console.WriteLine("Packet number " + packetBase.partialPacketNumber.UInt()); Console.WriteLine("Packet index " + packetBase.partialPacketIndex.UInt()); var vehicleName = new ParticipantVehicleNamesDataDecoder(); index = 0; vehicleName.Decode(ref bytes, ref index); for (int i = 0; i < 16; ++i) { Console.WriteLine("index " + i + " " + vehicleName.vehicles.VehicleInfoArray(i).index.UInt()); Console.WriteLine("class " + i + " " + vehicleName.vehicles.VehicleInfoArray(i).vehicleClass.UInt()); Console.WriteLine("name " + i + " " + vehicleName.vehicles.VehicleInfoArray(i).name.String(0)); } } //if (packetBase.packetType.UInt() == 7 && bytes.Length == 1040) // disable if (packetBase.packetType.UInt() == 7000 && bytes.Length == 1040) { Console.WriteLine("Packet Type " + packetBase.packetType.UInt()); var timestats = new TimeStatsDataDecoder(); index = 0; timestats.Decode(ref bytes, ref index); Console.WriteLine("participants Changed Timestamp " + timestats.participantsChangedTimestamp.UInt()); for (int i = 0; i < 32; ++i) { Console.WriteLine("fastest lap time " + i + " " + timestats.stats.ParticipantsStatsArray(i).fastestLapTime.TimeStamp()); Console.WriteLine("fastest sector 1 time " + i + " " + timestats.stats.ParticipantsStatsArray(i).fastestSector1Time.TimeStamp()); Console.WriteLine("fastest sector 2 time " + i + " " + timestats.stats.ParticipantsStatsArray(i).fastestSector2Time.TimeStamp()); Console.WriteLine("fastest sector 3 time " + i + " " + timestats.stats.ParticipantsStatsArray(i).fastestSector3Time.TimeStamp()); Console.WriteLine("last lap time " + i + " " + timestats.stats.ParticipantsStatsArray(i).lastLapTime.TimeStamp()); Console.WriteLine("last sector time " + i + " " + timestats.stats.ParticipantsStatsArray(i).lastSectorTime.TimeStamp()); Console.WriteLine("participant Online Rep " + i + " " + timestats.stats.ParticipantsStatsArray(i).participantOnlineRep.UInt()); Console.WriteLine("MP Participant Index " + i + " " + timestats.stats.ParticipantsStatsArray(i).MPParticipantIndex.UShort()); } } // if (packetBase.packetType.UInt() == 4 && bytes.Length == 24) // disable if (packetBase.packetType.UInt() == 4000 && bytes.Length == 24) { Console.WriteLine("Packet Type " + packetBase.packetType.UInt()); var gamestate = new GameStateDataDecoder(); index = 0; gamestate.Decode(ref bytes, ref index); Console.WriteLine("build version number " + gamestate.buildVersionNumber.UShort()); Console.WriteLine("game state " + gamestate.gameState.GameState()); Console.WriteLine("session state " + gamestate.gameState.SessionState()); Console.WriteLine("ambient Temperature " + gamestate.ambientTemperature.Int()); Console.WriteLine("track Temperature " + gamestate.trackTemperature.Int()); Console.WriteLine("rain Density " + gamestate.rainDensity.UInt()); Console.WriteLine("snow Density " + gamestate.snowDensity.UInt()); Console.WriteLine("wind Speed " + gamestate.windSpeed.Int()); Console.WriteLine("wind DirectionX " + gamestate.windDirectionX.Int()); Console.WriteLine("wind DirectionY " + gamestate.windDirectionY.Int()); } // if (packetBase.packetType.UInt() == 2 && bytes.Length == 1136) //disabled if (packetBase.packetType.UInt() == 2000 && bytes.Length == 1136) { Console.WriteLine("Packet Type " + packetBase.packetType.UInt()); var participants = new ParticipantsDataDecoder(); index = 0; participants.Decode(ref bytes, ref index); Console.WriteLine("participants Changed Timestamp " + participants.participantsChangedTimestamp.UInt()); // I get a bunch of different names here not sure how this works for (int i = 0; i < 16; ++i) { Console.WriteLine("name " + i + " " + participants.name.String(i)); } for (int i = 0; i < 16; ++i) { Console.WriteLine("nationality " + i + " " + participants.nationality.UInt(i)); } for (int i = 0; i < 16; ++i) { Console.WriteLine("index " + i + " " + participants.index.UShort(i)); } } //if (packetBase.packetType.UInt() == 1 && bytes.Length == 308) //disable if (packetBase.packetType.UInt() == 10000 && bytes.Length == 308) { Console.WriteLine("Packet Type " + packetBase.packetType.UInt()); var race = new RaceDataDecoder(); index = 0; race.Decode(ref bytes, ref index); Console.WriteLine("world Fastest Lap Time " + race.worldFastestLapTime.TimeStamp()); Console.WriteLine("personel Fastest Lap Time " + race.personalFastestLapTime.TimeStamp()); Console.WriteLine("personal Fastest Sector1 Time " + race.personalFastestSector1Time.TimeStamp()); Console.WriteLine("personal Fastest Sector2 Time " + race.personalFastestSector2Time.TimeStamp()); Console.WriteLine("personal Fastest Sector3 Time " + race.personalFastestSector3Time.TimeStamp()); Console.WriteLine("world Fastest Sector1 Time " + race.worldFastestSector1Time.TimeStamp()); Console.WriteLine("world Fastest Sector2 Time " + race.worldFastestSector2Time.TimeStamp()); Console.WriteLine("world Fastest Sector3 Time " + race.worldFastestSector3Time.TimeStamp()); Console.WriteLine("track length " + race.trackLength.Float()); Console.WriteLine("track location " + race.trackLocation.String(0)); Console.WriteLine("track variation " + race.trackVariation.String(0)); Console.WriteLine("translated Track Location " + race.translatedTrackLocation.String(0)); Console.WriteLine("translated Track Variation " + race.translatedTrackVariation.String(0)); Console.WriteLine("is timed event " + race.lapsTimeInEvent.IsTimedEvent()); Console.WriteLine("laps " + race.lapsTimeInEvent.Laps()); Console.WriteLine("Time in Event " + race.lapsTimeInEvent.TimeInEvent()); Console.WriteLine("enforced Pit Stop Lap " + race.enforcedPitStopLap.Int()); } //if (packetBase.packetType.UInt() == 0 && bytes.Length == 559) // disabled if (packetBase.packetType.UInt() == 5555 && bytes.Length == 1063) { var telem = new TelemetryDataDecoder(); index = 0; telem.Decode(ref bytes, ref index); Console.WriteLine("participant index " + telem.viewedParticipantIndex.Int()); Console.WriteLine("unfiltered throttle " + telem.unfilteredThrottle.UInt()); Console.WriteLine("unfiltered brake " + telem.unfilteredBrake.UInt()); Console.WriteLine("unfiltered steering " + telem.unfilteredSteering.Int()); Console.WriteLine("unfiltered clutch " + telem.unfilteredClutch.UInt()); Console.WriteLine("car flags " + telem.carFlags.CarFlags()); Console.WriteLine("oil temp celsius " + telem.oilTempCelsius.Short()); Console.WriteLine("oil pressure kpa " + telem.oilPressureKPa.UShort()); Console.WriteLine("water Temp Celsius " + telem.waterTempCelsius.Short()); Console.WriteLine("water Pressure Kpa " + telem.waterPressureKpa.UShort()); Console.WriteLine("fuel pressure kpa " + telem.fuelPressureKpa.UShort()); Console.WriteLine("fuel capacity " + telem.fuelCapacity.UInt()); Console.WriteLine("brake " + telem.brake.UInt()); Console.WriteLine("throttle " + telem.throttle.UInt()); Console.WriteLine("clutch " + telem.clutch.UInt()); // between 1 full to 0 empty Console.WriteLine("fuel level " + telem.fuelLevel.Float()); Console.WriteLine("speed " + telem.speed.Float()); Console.WriteLine("rpm " + telem.rpm.UShort()); Console.WriteLine("max rpm " + telem.maxRpm.UShort()); Console.WriteLine("steering " + telem.steering.Int()); Console.WriteLine("gear " + telem.gearNumGears.Gear()); Console.WriteLine("num gear " + telem.gearNumGears.NumGears()); Console.WriteLine("boost amount " + telem.boostAmount.UInt()); Console.WriteLine("odometer KM " + telem.odometerKM.Float()); Console.WriteLine("orientation 0 " + telem.orientation.Float(0)); Console.WriteLine("orientation 1 " + telem.orientation.Float(1)); Console.WriteLine("orientation 2 " + telem.orientation.Float(2)); Console.WriteLine("local velocity 0 " + telem.localVelocity.Float(0)); Console.WriteLine("local velocity 1 " + telem.localVelocity.Float(1)); Console.WriteLine("local velocity 2 " + telem.localVelocity.Float(2)); Console.WriteLine("world velocity 0 " + telem.worldVelocity.Float(0)); Console.WriteLine("world velocity 1 " + telem.worldVelocity.Float(1)); Console.WriteLine("local velocity 2 " + telem.worldVelocity.Float(2)); Console.WriteLine("angular velocity 0 " + telem.angularVelocity.Float(0)); Console.WriteLine("angular velocity 1 " + telem.angularVelocity.Float(1)); Console.WriteLine("angular velocity 2 " + telem.angularVelocity.Float(2)); Console.WriteLine("local acceleration 0 " + telem.localAcceleration.Float(0)); Console.WriteLine("local acceleration 1 " + telem.localAcceleration.Float(1)); Console.WriteLine("local acceleration 2 " + telem.localAcceleration.Float(2)); Console.WriteLine("world acceleration 0 " + telem.worldAcceleration.Float(0)); Console.WriteLine("world acceleration 1 " + telem.worldAcceleration.Float(1)); Console.WriteLine("world acceleration 2 " + telem.worldAcceleration.Float(2)); Console.WriteLine("extents centre 0 " + telem.extentsCentre.Float(0)); Console.WriteLine("extents centre 1 " + telem.extentsCentre.Float(1)); Console.WriteLine("extents centre 2 " + telem.extentsCentre.Float(2)); Console.WriteLine("tyre flags 0 " + telem.tyreFlags.TyreFlag(0)); Console.WriteLine("tyre flags 1 " + telem.tyreFlags.TyreFlag(1)); Console.WriteLine("tyre flags 2 " + telem.tyreFlags.TyreFlag(2)); Console.WriteLine("tyre flags 3 " + telem.tyreFlags.TyreFlag(3)); Console.WriteLine("terrain 0 " + telem.terrain.Terrain(0)); Console.WriteLine("terrain 1 " + telem.terrain.Terrain(1)); Console.WriteLine("terrain 2 " + telem.terrain.Terrain(2)); Console.WriteLine("terrain 3 " + telem.terrain.Terrain(3)); Console.WriteLine("tyre y 0 " + telem.tyreY.Float(0)); Console.WriteLine("tyre y 1 " + telem.tyreY.Float(1)); Console.WriteLine("tyre y 2 " + telem.tyreY.Float(2)); Console.WriteLine("tyre y 3 " + telem.tyreY.Float(3)); Console.WriteLine("tyre rps 0 " + telem.tyreRPS.Float(0)); Console.WriteLine("tyre rps 1 " + telem.tyreRPS.Float(1)); Console.WriteLine("tyre rps 2 " + telem.tyreRPS.Float(2)); Console.WriteLine("tyre rps 3 " + telem.tyreRPS.Float(3)); Console.WriteLine("tyre temp 0 " + telem.tyreTemp.UInt(0)); Console.WriteLine("tyre temp 1 " + telem.tyreTemp.UInt(1)); Console.WriteLine("tyre temp 2 " + telem.tyreTemp.UInt(2)); Console.WriteLine("tyre temp 3 " + telem.tyreTemp.UInt(3)); Console.WriteLine("tyre height above ground 0 " + telem.tyreHeightAboveGround.Float(0)); Console.WriteLine("tyre height above ground 1 " + telem.tyreHeightAboveGround.Float(1)); Console.WriteLine("tyre height above ground 2 " + telem.tyreHeightAboveGround.Float(2)); Console.WriteLine("tyre height above ground 3 " + telem.tyreHeightAboveGround.Float(3)); Console.WriteLine("tyre wear 0 " + telem.tyreWear.UInt(0)); Console.WriteLine("tyre wear 1 " + telem.tyreWear.UInt(1)); Console.WriteLine("tyre wear 2 " + telem.tyreWear.UInt(2)); Console.WriteLine("tyre wear 3 " + telem.tyreWear.UInt(3)); Console.WriteLine("brake damage 0 " + telem.brakeDamage.UInt(0)); Console.WriteLine("brake damage 1 " + telem.brakeDamage.UInt(1)); Console.WriteLine("brake damage 2 " + telem.brakeDamage.UInt(2)); Console.WriteLine("brake damage 3 " + telem.brakeDamage.UInt(3)); Console.WriteLine("suspension damage 0 " + telem.suspensionDamage.UInt(0)); Console.WriteLine("suspension damage 1 " + telem.suspensionDamage.UInt(1)); Console.WriteLine("suspension damage 2 " + telem.suspensionDamage.UInt(2)); Console.WriteLine("suspension damage 3 " + telem.suspensionDamage.UInt(3)); Console.WriteLine("brake temp celsius 0 " + telem.brakeTempCelsius.Short(0)); Console.WriteLine("brake temp celsius 1 " + telem.brakeTempCelsius.Short(1)); Console.WriteLine("brake temp celsius 2 " + telem.brakeTempCelsius.Short(2)); Console.WriteLine("brake temp celsius 3 " + telem.brakeTempCelsius.Short(3)); Console.WriteLine("tyre tread temp 0 " + telem.tyreTreadTemp.UShort(0)); Console.WriteLine("tyre tread temp 1 " + telem.tyreTreadTemp.UShort(1)); Console.WriteLine("tyre tread temp 2 " + telem.tyreTreadTemp.UShort(2)); Console.WriteLine("tyre tread temp 3 " + telem.tyreTreadTemp.UShort(3)); Console.WriteLine("tyre layer temp 0 " + telem.tyreLayerTemp.UShort(0)); Console.WriteLine("tyre layer temp 1 " + telem.tyreLayerTemp.UShort(1)); Console.WriteLine("tyre layer temp 2 " + telem.tyreLayerTemp.UShort(2)); Console.WriteLine("tyre layer temp 3 " + telem.tyreLayerTemp.UShort(3)); Console.WriteLine("tyre carcass temp 0 " + telem.tyreCarcassTemp.UShort(0)); Console.WriteLine("tyre carcass temp 1 " + telem.tyreCarcassTemp.UShort(1)); Console.WriteLine("tyre carcass temp 2 " + telem.tyreCarcassTemp.UShort(2)); Console.WriteLine("tyre carcass temp 3 " + telem.tyreCarcassTemp.UShort(3)); Console.WriteLine("tyre rim temp 0 " + telem.tyreRimTemp.UShort(0)); Console.WriteLine("tyre rim temp 1 " + telem.tyreRimTemp.UShort(1)); Console.WriteLine("tyre rim temp 2 " + telem.tyreRimTemp.UShort(2)); Console.WriteLine("tyre rim temp 3 " + telem.tyreRimTemp.UShort(3)); Console.WriteLine("tyre internal air temp 0 " + telem.tyreInternalAirTemp.UShort(0)); Console.WriteLine("tyre internal air temp 1 " + telem.tyreInternalAirTemp.UShort(1)); Console.WriteLine("tyre internal air temp 2 " + telem.tyreInternalAirTemp.UShort(2)); Console.WriteLine("tyre internal air temp 3 " + telem.tyreInternalAirTemp.UShort(3)); Console.WriteLine("tyre temp left 0 " + telem.tyreTempLeft.UShort(0)); Console.WriteLine("tyre temp left 1 " + telem.tyreTempLeft.UShort(1)); Console.WriteLine("tyre temp left 2 " + telem.tyreTempLeft.UShort(2)); Console.WriteLine("tyre temp left 3 " + telem.tyreTempLeft.UShort(3)); Console.WriteLine("tyre temp centre 0 " + telem.tyreTempCenter.UShort(0)); Console.WriteLine("tyre temp centre 1 " + telem.tyreTempCenter.UShort(1)); Console.WriteLine("tyre temp centre 2 " + telem.tyreTempCenter.UShort(2)); Console.WriteLine("tyre temp centre 3 " + telem.tyreTempCenter.UShort(3)); Console.WriteLine("tyre temp right 0 " + telem.tyreTempRight.UShort(0)); Console.WriteLine("tyre temp right 1 " + telem.tyreTempRight.UShort(1)); Console.WriteLine("tyre temp right 2 " + telem.tyreTempLeft.UShort(2)); Console.WriteLine("tyre temp right 3 " + telem.tyreTempRight.UShort(3)); Console.WriteLine("wheel local position y 0 " + telem.wheelLocalPositionY.Float(0)); Console.WriteLine("wheel local position y 1 " + telem.wheelLocalPositionY.Float(1)); Console.WriteLine("wheel local position y 2 " + telem.wheelLocalPositionY.Float(2)); Console.WriteLine("wheel local position y 3 " + telem.wheelLocalPositionY.Float(3)); Console.WriteLine("ride height 0 " + telem.rideHeight.Float(0)); Console.WriteLine("ride height 1 " + telem.rideHeight.Float(1)); Console.WriteLine("ride height 2 " + telem.rideHeight.Float(2)); Console.WriteLine("ride height 3 " + telem.rideHeight.Float(3)); Console.WriteLine("suspension travel 0 " + telem.suspensionTravel.Float(0)); Console.WriteLine("suspension travel 1 " + telem.suspensionTravel.Float(1)); Console.WriteLine("suspension travel 2 " + telem.suspensionTravel.Float(2)); Console.WriteLine("suspension travel 3 " + telem.suspensionTravel.Float(3)); Console.WriteLine("suspension velocity 0 " + telem.suspensionVelocity.Float(0)); Console.WriteLine("suspension velocity 1 " + telem.suspensionVelocity.Float(1)); Console.WriteLine("suspension velocity 2 " + telem.suspensionVelocity.Float(2)); Console.WriteLine("suspension velocity 3 " + telem.suspensionVelocity.Float(3)); Console.WriteLine("suspension ride height 0 " + telem.suspensionRideHeight.UShort(0)); Console.WriteLine("suspension ride height 1 " + telem.suspensionRideHeight.UShort(1)); Console.WriteLine("suspension ride height 2 " + telem.suspensionRideHeight.UShort(2)); Console.WriteLine("suspension ride height 3 " + telem.suspensionRideHeight.UShort(3)); Console.WriteLine("air pressure 0 " + telem.airPressure.UShort(0)); Console.WriteLine("air pressure 1 " + telem.airPressure.UShort(1)); Console.WriteLine("air pressure 2 " + telem.airPressure.UShort(2)); Console.WriteLine("air pressure 3 " + telem.airPressure.UShort(3)); Console.WriteLine("engine speed " + telem.engineSpeed.Float()); Console.WriteLine("engine torque " + telem.engineTorque.Float()); Console.WriteLine("wings 0 " + telem.wings.UInt(0)); Console.WriteLine("wings 1 " + telem.wings.UInt(1)); Console.WriteLine("handbrake " + telem.handBrake.UInt()); Console.WriteLine("aero damage " + telem.aeroDamage.UInt()); Console.WriteLine("engine damage " + telem.engineDamage.UInt()); Console.WriteLine("joy pad " + telem.joyPad0.UInt()); Console.WriteLine("d pad " + telem.dPad.UInt()); Console.WriteLine("d pad " + telem.dPad.UInt()); Console.WriteLine("tyre compond 0 " + telem.tyreCompound.String(0)); Console.WriteLine("tyre compond 1 " + telem.tyreCompound.String(1)); Console.WriteLine("tyre compond 2 " + telem.tyreCompound.String(2)); Console.WriteLine("tyre compond 3 " + telem.tyreCompound.String(3)); Console.WriteLine("turbo boost pressure " + telem.turboBoostPressure.Float()); Console.WriteLine("full position 0 " + telem.fullPosition.Float(0)); Console.WriteLine("full position 1 " + telem.fullPosition.Float(1)); Console.WriteLine("full position 2 " + telem.fullPosition.Float(2)); Console.WriteLine("brake bias " + telem.brakeBias.UInt()); Console.WriteLine("tick count " + telem.tickCount.UInt()); } // if (packetBase.packetType.UInt() == 3 && bytes.Length == 1063) // disabled if (packetBase.packetType.UInt() == 5555 && bytes.Length == 1063) { var timing = new TimingsDataDecoder(); index = 0; timing.Decode(ref bytes, ref index); Console.WriteLine("num participants " + timing.numParticipants.Int()); // No idea what this is but all participant packets have one Console.WriteLine("changed timestamp " + timing.participantsChangedTimestamp.UInt()); Console.WriteLine("split time ahead " + timing.splitTimeAhead.Float()); Console.WriteLine("split time behind " + timing.splitTimeBehind.Float()); Console.WriteLine("split time " + timing.splitTime.Float()); // Not sure which one is which Console.WriteLine("world position 0 " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).worldPosition.Short(0)); Console.WriteLine("world position 1 " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).worldPosition.Short(1)); Console.WriteLine("world position 2 " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).worldPosition.Short(2)); // Direction you are facing seems to go between 520-0 Console.WriteLine("orientation 0 " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).orientation.Short(0)); // these two might have something to do with pitch of the car? Console.WriteLine("orientation 1 " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).orientation.Short(1)); Console.WriteLine("orientation 2 " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).orientation.Short(2)); Console.WriteLine("current lap distance " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).currentLapDistance.UShort()); Console.WriteLine("Is Active " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).racePosition.IsActive()); Console.WriteLine("Race Position " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).racePosition.RacePosition()); Console.WriteLine("Sector " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).sector.Sector()); Console.WriteLine("Extra world x " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).sector.XExtraPrecision()); Console.WriteLine("Extra world z " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).sector.ZExtraPrecision()); Console.WriteLine("Flag Colours " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).highestFlag.FlagColours()); Console.WriteLine("Flag Reason " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).highestFlag.FlagReason()); Console.WriteLine("Pit Mode " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).pitModeSchedule.PitMode()); Console.WriteLine("Pit Schedule " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).pitModeSchedule.PitSchedule()); // Car Index is broken waiting on patch Console.WriteLine("Car Index " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).carIndex.UShort()); Console.WriteLine("Race State " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).raceState.RaceState()); Console.WriteLine("Invalid Lap " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).raceState.InvalidLap()); Console.WriteLine("Current Lap " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).currentLap.UInt()); Console.WriteLine("Current Time " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).currentTime.TimeStamp()); Console.WriteLine("Current Sector Time " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).currentSectorTime.TimeStamp()); Console.WriteLine("Participant Index " + timing.participants.ParticipantInfoArray(timing.localParticipantIndex.Short()).participantIndex.UShort()); } } } }