PlatSim_Genova/TestEnvironment/scripts/GRIFO_M_PBIT_simulate_launcher.py
2026-01-30 16:38:33 +01:00

108 lines
2.9 KiB
Python

#!/usr/bin/env python
"""
GRIFO_M_PBIT Simulation Mode Launcher
This script is designed to be executed by uPlatSim.exe and will launch
GRIFO_M_PBIT.py in simulation mode by injecting the --simulate flag.
Usage (via uPlatSim.exe):
uPlatSim.exe --ini config.ini --batch GRIFO_M_PBIT_simulate_launcher.py
"""
import sys
import os
# Get the directory of this script (use sys.argv[0] as fallback for __file__)
try:
script_path = __file__
except NameError:
script_path = sys.argv[0] if sys.argv else os.path.abspath(__file__)
script_dir = os.path.dirname(os.path.abspath(script_path))
# Execute the main test script
main_script = os.path.join(script_dir, 'GRIFO_M_PBIT.py')
if not os.path.exists(main_script):
print(f"ERROR: Cannot find GRIFO_M_PBIT.py at: {main_script}")
sys.exit(1)
# CRITICAL: Update sys.argv[0] to point to the main test script
# This is required because the test uses sys.argv[0] to locate its JSON config file
sys.argv[0] = main_script
# Add --simulate flag to sys.argv AFTER setting argv[0]
if '--simulate' not in sys.argv:
sys.argv.append('--simulate')
print("=" * 79)
print("GRIFO M-PBIT Test - Simulation Mode Launcher")
print("=" * 79)
print()
print("This script will execute GRIFO_M_PBIT.py in SIMULATION mode")
print("No hardware connection required")
print()
print("=" * 79)
print()
# CRITICAL: Setup simulation BEFORE executing main script
# This must happen before leo_grifo_1553 and other modules are imported
print("Setting up simulation environment...")
print()
try:
from GRIFO_M_PBIT_mock import initialize_simulation, setup_simulation
# Step 1: Initialize with user interaction (ONCE)
print("[1/2] Asking user for configuration...")
initialize_simulation()
# Step 2: Setup mock modules
print("[2/2] Injecting mock modules...")
setup_simulation()
print("[OK] Simulation environment configured")
print(" - Mock 1553 interface active")
print(" - Mock power control active")
print()
except ImportError as e:
print(f"[ERROR] Cannot import simulation mock: {e}")
print("[ERROR] GRIFO_M_PBIT_mock.py must be in the same directory")
sys.exit(1)
except Exception as e:
print(f"[ERROR] Simulation setup failed: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
print()
print("Executing test...")
print("=" * 79)
print()
# Read and execute the main script
with open(main_script, 'r', encoding='utf-8') as f:
script_code = f.read()
# Create globals for execution
script_globals = {
'__name__': '__main__',
'__file__': main_script,
}
# Execute
try:
exec(compile(script_code, main_script, 'exec'), script_globals)
except SystemExit as e:
# Propagate exit code from main script
sys.exit(e.code)
except Exception as e:
print()
print("=" * 79)
print("ERROR: Test execution failed")
print("=" * 79)
print()
import traceback
traceback.print_exc()
sys.exit(1)