108 lines
2.9 KiB
Python
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)
|