internal override void PollData() { if (_sharedMemory != null && _sharedMemory.IsDataAvailable) { _lastFlightData = (FlightData)_sharedMemory.MarshalTo(typeof(FlightData)); float altitidue = _lastFlightData.z; if (_lastFlightData.z < 0) { altitidue = 99999.99f - _lastFlightData.z; } SetValue("Altimeter", "altitidue", new BindingValue(altitidue)); SetValue("Altimeter", "barimetric pressure", new BindingValue(29.92)); SetValue("ADI", "pitch", new BindingValue(_lastFlightData.pitch)); SetValue("ADI", "roll", new BindingValue(_lastFlightData.roll)); SetValue("ADI", "ils horizontal", new BindingValue((_lastFlightData.AdiIlsHorPos / 2.5f) - 1f)); SetValue("ADI", "ils vertical", new BindingValue((_lastFlightData.AdiIlsVerPos * 2f) - 1f)); SetValue("HSI", "bearing to beacon", new BindingValue(_lastFlightData.bearingToBeacon)); SetValue("HSI", "current heading", new BindingValue(_lastFlightData.currentHeading)); SetValue("HSI", "desired course", new BindingValue(_lastFlightData.desiredCourse)); SetValue("HSI", "desired heading", new BindingValue(_lastFlightData.desiredHeading)); float deviation = _lastFlightData.courseDeviation % 180; SetValue("HSI", "course deviation", new BindingValue(deviation / _lastFlightData.deviationLimit)); SetValue("HSI", "distance to beacon", new BindingValue(_lastFlightData.distanceToBeacon)); SetValue("VVI", "vertical velocity", new BindingValue(_lastFlightData.zDot)); SetValue("AOA", "angle of attack", new BindingValue(_lastFlightData.alpha)); SetValue("IAS", "mach", new BindingValue(_lastFlightData.mach)); SetValue("IAS", "indicated air speed", new BindingValue(_lastFlightData.kias)); SetValue("IAS", "true air speed", new BindingValue(_lastFlightData.vt)); SetValue("General", "Gs", new BindingValue(_lastFlightData.gs)); SetValue("Engine", "nozzle position", new BindingValue(NOZ(_lastFlightData.rpm, _lastFlightData.z, _lastFlightData.fuelFlow))); SetValue("Fuel", "internal fuel", new BindingValue(_lastFlightData.internalFuel)); SetValue("Fuel", "external fuel", new BindingValue(_lastFlightData.externalFuel)); SetValue("Engine", "fuel flow", new BindingValue(_lastFlightData.fuelFlow)); SetValue("Engine", "rpm", new BindingValue(_lastFlightData.rpm)); SetValue("Engine", "ftit", new BindingValue(Ftit(_lastFlightData.ftit, _lastFlightData.rpm))); SetValue("Landging Gear", "position", new BindingValue(_lastFlightData.gearPos != 0d)); SetValue("General", "speed brake position", new BindingValue(_lastFlightData.speedBrake)); SetValue("General", "speed brake indicator", new BindingValue(_lastFlightData.speedBrake > 0d)); SetValue("EPU", "fuel", new BindingValue(_lastFlightData.epuFuel)); SetValue("Engine", "oil pressure", new BindingValue(_lastFlightData.oilPressure)); SetValue("CMDS", "chaff remaining", new BindingValue(_lastFlightData.ChaffCount)); SetValue("CMDS", "flares remaining", new BindingValue(_lastFlightData.FlareCount)); SetValue("Trim", "roll trim", new BindingValue(_lastFlightData.TrimRoll)); SetValue("Trim", "pitch trim", new BindingValue(_lastFlightData.TrimPitch)); SetValue("Trim", "yaw trim", new BindingValue(_lastFlightData.TrimYaw)); SetValue("Tacan", "ufc tacan chan", new BindingValue(_lastFlightData.UFCTChan)); SetValue("Tacan", "aux tacan chan", new BindingValue(_lastFlightData.AUXTChan)); ProcessHsiBits(_lastFlightData.hsiBits, _lastFlightData.desiredCourse, _lastFlightData.bearingToBeacon); ProcessLightBits(_lastFlightData.lightBits); ProcessLightBits2(_lastFlightData.lightBits2); ProcessLightBits3(_lastFlightData.lightBits3); ProcessContacts(_lastFlightData); SetValue("Altimeter", "indicated altitude", new BindingValue(altitidue)); } }
internal override void PollData() { if (_sharedMemory != null && _sharedMemory.IsDataAvailable) { _lastFlightData = (FlightData)_sharedMemory.MarshalTo(typeof(FlightData)); float altitidue = _lastFlightData.z; if (_lastFlightData.z < 0) { altitidue = 99999.99f - _lastFlightData.z; } SetValue("Altimeter", "altitidue", new BindingValue(altitidue)); SetValue("Altimeter", "barimetric pressure", new BindingValue(29.92)); SetValue("ADI", "pitch", new BindingValue(_lastFlightData.pitch)); SetValue("ADI", "roll", new BindingValue(_lastFlightData.roll)); SetValue("ADI", "ils horizontal", new BindingValue((_lastFlightData.AdiIlsHorPos / 2.5f) - 1f)); SetValue("ADI", "ils vertical", new BindingValue((_lastFlightData.AdiIlsVerPos * 2f) - 1f)); SetValue("HSI", "bearing to beacon", new BindingValue(_lastFlightData.bearingToBeacon)); SetValue("HSI", "current heading", new BindingValue(_lastFlightData.currentHeading)); SetValue("HSI", "desired course", new BindingValue(_lastFlightData.desiredCourse)); SetValue("HSI", "desired heading", new BindingValue(_lastFlightData.desiredHeading)); float deviation = _lastFlightData.courseDeviation % 180; SetValue("HSI", "course deviation", new BindingValue(deviation / _lastFlightData.deviationLimit)); SetValue("HSI", "distance to beacon", new BindingValue(_lastFlightData.distanceToBeacon)); SetValue("VVI", "vertical velocity", new BindingValue(_lastFlightData.zDot)); SetValue("AOA", "angle of attack", new BindingValue(_lastFlightData.alpha)); SetValue("IAS", "mach", new BindingValue(_lastFlightData.mach)); SetValue("IAS", "indicated air speed", new BindingValue(_lastFlightData.kias)); SetValue("IAS", "true air speed", new BindingValue(_lastFlightData.vt)); SetValue("General", "Gs", new BindingValue(_lastFlightData.gs)); SetValue("Engine", "nozzle position", new BindingValue(NOZ(_lastFlightData.rpm, _lastFlightData.z, _lastFlightData.fuelFlow))); SetValue("Fuel", "internal fuel", new BindingValue(_lastFlightData.internalFuel)); SetValue("Fuel", "external fuel", new BindingValue(_lastFlightData.externalFuel)); SetValue("Engine", "fuel flow", new BindingValue(_lastFlightData.fuelFlow)); SetValue("Engine", "rpm", new BindingValue(_lastFlightData.rpm)); SetValue("Engine", "ftit", new BindingValue(Ftit(_lastFlightData.ftit, _lastFlightData.rpm))); SetValue("Landging Gear", "position", new BindingValue(_lastFlightData.gearPos != 0d)); // TODO Landging should be changed Landing SetValue("General", "speed brake position", new BindingValue(_lastFlightData.speedBrake)); SetValue("General", "speed brake indicator", new BindingValue(_lastFlightData.speedBrake > 0d)); SetValue("EPU", "fuel", new BindingValue(_lastFlightData.epuFuel)); SetValue("Engine", "oil pressure", new BindingValue(_lastFlightData.oilPressure)); SetValue("CMDS", "chaff remaining", new BindingValue(_lastFlightData.ChaffCount)); SetValue("CMDS", "flares remaining", new BindingValue(_lastFlightData.FlareCount)); SetValue("Trim", "roll trim", new BindingValue(_lastFlightData.TrimRoll)); SetValue("Trim", "pitch trim", new BindingValue(_lastFlightData.TrimPitch)); SetValue("Trim", "yaw trim", new BindingValue(_lastFlightData.TrimYaw)); SetValue("Tacan", "ufc tacan chan", new BindingValue(_lastFlightData.UFCTChan)); SetValue("Tacan", "aux tacan chan", new BindingValue(_lastFlightData.AUXTChan)); ProcessHsiBits(_lastFlightData.hsiBits, _lastFlightData.desiredCourse, _lastFlightData.bearingToBeacon); ProcessLightBits(_lastFlightData.lightBits); ProcessLightBits2(_lastFlightData.lightBits2); ProcessLightBits3(_lastFlightData.lightBits3); ProcessContacts(_lastFlightData); SetValue("Altimeter", "indicated altitude", new BindingValue(altitidue)); } }
private void ProcessContacts(FlightData flightData) { for(int i = 0; i < flightData.RWRsymbol.Length; i++) { _contacts[i].Symbol = (RadarSymbols)flightData.RWRsymbol[i]; _contacts[i].Selected = flightData.selected[i] > 0; _contacts[i].Bearing = flightData.bearing[i] * 57.3f; _contacts[i].RelativeBearing = (-flightData.currentHeading + _contacts[i].Bearing) % 360d; _contacts[i].Lethality = flightData.lethality[i]; _contacts[i].MissileActivity = flightData.missileActivity[i] > 0; _contacts[i].MissileLaunch = flightData.missileLaunch[i] > 0; _contacts[i].NewDetection = flightData.newDetection[i] > 0; _contacts[i].Visible = i < flightData.RwrObjectCount; } }