Error message

5 replies 414 views started 4d ago
#1

Hi there, I have some automations that may trigger an arm/disarm even though the flight has not started yet. This causes a message to pop up that must be canceled/closed before continuing, even though the flight has started in the meantime. Even pressing the hotkey while the flight has started will not arm the bridge due to the blocking pop up.

As I'm in VR, I do not know that that message has popped up, so I only notice it once I start flying. This then requires me to pause the flight, exit VR mode or take off my headset, acknowledge the message (cancel/close to the same thing btw), and then arm the bridge. A little troublesome.

Report image

Is it possible to hide this message permanently via a setting?

Report
#2

Hi,

Can you submit a report (use the Report an Issue button). It seems like you're using vJoy with something? I'd have to see what the interactions are to troubleshoot this, and the report will send me the logs.

Can you tell me a bit more about your setup? What exactly are the automations you mention?

Report
#3
Report image

in Spad.next. I've mapped the joystick shortcut to a vjoy button (to avoid losing buttons on my setup, which I run via this script:

import ctypes, os, sys, time

LOG = os.path.join(os.environ["LOCALAPPDATA"], "ffb-bridge", "last-session.log") DLL = r"C:\Program Files\vJoy\x64\vJoyInterface.dll" DEVICE, BUTTON = 1, 1

if len(sys.argv) != 2 or sys.argv[1] not in ("on", "off"): sys.exit("usage: ffb_toggle.py on|off") want = sys.argv[1]

if not os.path.isfile(LOG): sys.exit(f"error: log not found: {LOG}")

state = "off" for line in open(LOG, encoding="utf-8", errors="replace"): if "arm: engaged" in line: state = "on" elif "disarm: done" in line: state = "off"

print(f"want={want} current={state}") if state == want: sys.exit("already in desired state; nothing to do")

try: dll = ctypes.cdll.LoadLibrary(DLL) except OSError as e: sys.exit(f"error: cannot load vJoy DLL ({e}); check path and 32/64-bit match")

if not dll.vJoyEnabled(): sys.exit("error: vJoy driver is not enabled") if not dll.AcquireVJD(DEVICE): sys.exit(f"error: cannot acquire vJoy device {DEVICE} (Demo Feeder or another app open?)")

try: dll.SetBtn(1, DEVICE, BUTTON) time.sleep(0.5) dll.SetBtn(0, DEVICE, BUTTON) finally: dll.RelinquishVJD(DEVICE)

print("toggled")

Because when I use my joystick, I don't want the FFB yoke to rumble.

I see that in the UI, I cannot press the arm button on the top. It's just the hotkey that causes it. This is partly a problem of Spad.Next that get's the Flight Started event at inappropriate times.

The report is FB-OOCM

Report
#4

https://streamable.com/45hsp0

Here is a video of the situation. I press the hotkey while in flight.

The problem is that when this window is active and a flight does start, it requires the confirmation to activate feedback.

I have modified the script (well, Claude has) to add a readiness check (based on the logs), but it's not ideal

import ctypes, os, sys, time

LOG = os.path.join(os.environ["LOCALAPPDATA"], "ffb-bridge", "last-session.log")
DLL = r"C:\Program Files\vJoy\x64\vJoyInterface.dll"
DEVICE, BUTTON = 1, 1
END_MARKERS = ("flow=FlightEnd (15)", "retiring simulator session",
               "simulator: disconnected", "SimConnectException")

def read_state():
    armed = started = rtc_done = False
    paused = True
    with open(LOG, encoding="utf-8", errors="replace") as f:
        for line in f:
            if "arm: engaged" in line:
                armed = True
            elif "disarm: done" in line:
                armed = False
            if "flow=FlightStart (14)" in line:
                started, rtc_done = True, False
            elif "flow=RtcEnd (11)" in line:
                rtc_done = True
            elif any(m in line for m in END_MARKERS):
                started = rtc_done = False
                paused = True
            if "Pause_EX1 data=" in line:
                paused = line.split("Pause_EX1 data=")[1].split()[0] != "0"
    return armed, started and rtc_done and not paused

if len(sys.argv) != 2 or sys.argv[1] not in ("on", "off"):
    sys.exit("usage: ffb_toggle.py on|off")
want_on = sys.argv[1] == "on"

if not os.path.isfile(LOG):
    sys.exit(f"error: log not found: {LOG}")

armed, ready = read_state()
print(f"want={sys.argv[1]} armed={armed} ready_to_arm={ready}")
if armed == want_on:
    sys.exit("already in desired state; nothing to do")
if want_on and not ready:
    sys.exit("not ready to arm (no running, unpaused flight); not pressing")

try:
    dll = ctypes.cdll.LoadLibrary(DLL)
except OSError as e:
    sys.exit(f"error: cannot load vJoy DLL ({e}); check path and 32/64-bit match")
if not dll.vJoyEnabled():
    sys.exit("error: vJoy driver is not enabled")
if not dll.AcquireVJD(DEVICE):
    sys.exit(f"error: cannot acquire vJoy device {DEVICE} (Demo Feeder or another app open?)")

try:
    dll.SetBtn(1, DEVICE, BUTTON)
    time.sleep(0.5)
    dll.SetBtn(0, DEVICE, BUTTON)
finally:
    dll.RelinquishVJD(DEVICE)

print("toggled")
Report
#5

Thanks, very helpful. I’ll have some more news for you on this later today.

Report