private void GetTextureArea(FalconTextures texture) { _textureRectangles.Remove(Texture); _sharedMemory2 = new SharedMemory("FalconSharedMemoryArea2"); if (_sharedMemory2 != null & _sharedMemory2.IsDataAvailable) { _lastFlightData2 = (FlightData2)_sharedMemory2.MarshalTo(typeof(FlightData2)); var left = _lastFlightData2.RTT_area[(int)texture * 4]; var top = _lastFlightData2.RTT_area[(int)texture * 4 + 1]; var right = _lastFlightData2.RTT_area[(int)texture * 4 + 2]; var bottom = _lastFlightData2.RTT_area[(int)texture * 4 + 3]; var width = (right - 1) - left; var height = (bottom - 1) - top; if (width > 0 && height > 0) { _textureRectangles.Add(texture, new Rect(left, top, width, height)); } } }
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); } }
internal override void PollData() { if (_sharedMemory != null && _sharedMemory.IsDataAvailable) { _lastFlightData = (FlightData)_sharedMemory.MarshalTo(typeof(FlightData)); SetValue("Altimeter", "altitidue", new BindingValue(Math.Abs(_lastFlightData.z))); 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(_lastFlightData.nozzlePos * 100)); 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(_lastFlightData.ftit * 100)); 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); } if (_sharedMemory2 != null & _sharedMemory2.IsDataAvailable) { _lastFlightData2 = (FlightData2)_sharedMemory2.MarshalTo(typeof(FlightData2)); SetValue("Altimeter", "indicated altitude", new BindingValue(Math.Abs(_lastFlightData2.aauz))); SetValue("Altimeter", "barimetric pressure", new BindingValue(_lastFlightData2.AltCalReading)); SetValue("HSI", "nav mode", new BindingValue(_lastFlightData2.navMode)); SetValue("Tacan", "ufc tacan band", new BindingValue(_lastFlightData2.tacanInfo[(int)TacanSources.UFC].HasFlag(TacanBits.band) ? 1 : 2)); SetValue("Tacan", "aux tacan band", new BindingValue(_lastFlightData2.tacanInfo[(int)TacanSources.AUX].HasFlag(TacanBits.mode) ? 2 : 1)); SetValue("Tacan", "ufc tacan mode", new BindingValue(_lastFlightData2.tacanInfo[(int)TacanSources.UFC].HasFlag(TacanBits.band) ? 1 : 2)); SetValue("Tacan", "aux tacan mode", new BindingValue(_lastFlightData2.tacanInfo[(int)TacanSources.AUX].HasFlag(TacanBits.mode) ? 2 : 1)); } }
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", "barometric 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(_lastFlightData.nozzlePos * 100)); 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(_lastFlightData.ftit * 100)); 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)); ProcessContacts(_lastFlightData); _lastFlightData2 = (FlightData2)_sharedMemory2.MarshalTo(typeof(FlightData2)); SetValue("Altimeter", "indicated altitude", new BindingValue(-_lastFlightData2.aauz)); SetValue("HSI", "nav mode", new BindingValue((int)_lastFlightData2.navMode)); SetValue("Tacan", "ufc tacan band", new BindingValue(_lastFlightData2.tacanInfo[(int)TacanSources.UFC].HasFlag(TacanBits.band) ? 1 : 2)); SetValue("Tacan", "aux tacan band", new BindingValue(_lastFlightData2.tacanInfo[(int)TacanSources.AUX].HasFlag(TacanBits.mode) ? 2 : 1)); SetValue("Tacan", "ufc tacan mode", new BindingValue(_lastFlightData2.tacanInfo[(int)TacanSources.UFC].HasFlag(TacanBits.band) ? 1 : 2)); SetValue("Tacan", "aux tacan mode", new BindingValue(_lastFlightData2.tacanInfo[(int)TacanSources.AUX].HasFlag(TacanBits.mode) ? 2 : 1)); //BMS 4.33 addition SetValue("Engine", "nozzle 2 position", new BindingValue(_lastFlightData2.nozzlePos2)); SetValue("Engine", "rpm 2 position", new BindingValue(_lastFlightData2.rpm2)); SetValue("Engine", "ftit 2 position", new BindingValue(_lastFlightData2.ftit2)); SetValue("Engine", "oil pressure 2", new BindingValue(_lastFlightData2.oilPressure2)); SetValue("Engine", "fuel flow 2", new BindingValue(_lastFlightData2.fuelFlow2)); SetValue("Altimeter", "barometric pressure", new BindingValue(_lastFlightData2.AltCalReading)); ProcessAltBits(_lastFlightData2.altBits); ProcessPowerBits(_lastFlightData2.powerBits); //ProcessBlinkBits(_lastFlightData2.blinkBits); SetValue("CMDS", "CMDS Mode", new BindingValue((int)_lastFlightData2.cmdsMode)); SetValue("UHF", "Backup channel", new BindingValue(_lastFlightData2.BupUhfPreset)); SetValue("UHF", "Backup frequency", new BindingValue(_lastFlightData2.BupUhfFreq)); SetValue("UHF", "Backup frequency digit 1", new BindingValue(_lastFlightData2.BupUhfFreq / 100000 % 10)); SetValue("UHF", "Backup frequency digit 2", new BindingValue(_lastFlightData2.BupUhfFreq / 10000 % 10)); SetValue("UHF", "Backup frequency digit 3", new BindingValue(_lastFlightData2.BupUhfFreq / 1000 % 10)); SetValue("UHF", "Backup frequency digit 4", new BindingValue(_lastFlightData2.BupUhfFreq / 100 % 10)); SetValue("UHF", "Backup frequency digit 5,6", new BindingValue(_lastFlightData2.BupUhfFreq % 100)); SetValue("Altitude", "Cabin Altitude", new BindingValue(_lastFlightData2.cabinAlt)); SetValue("HYD", "Pressure A", new BindingValue(_lastFlightData2.hydPressureA)); SetValue("HYD", "Pressure B", new BindingValue(_lastFlightData2.hydPressureB)); SetValue("Time", "Time", new BindingValue(_lastFlightData2.currentTime)); ProcessHsiBits(_lastFlightData.hsiBits, _lastFlightData.desiredCourse, _lastFlightData.bearingToBeacon, _lastFlightData2.blinkBits, _lastFlightData2.currentTime); ProcessLightBits(_lastFlightData.lightBits); ProcessLightBits2(_lastFlightData.lightBits2, _lastFlightData2.blinkBits, _lastFlightData2.currentTime); ProcessLightBits3(_lastFlightData.lightBits3); } }