PlatSim_Genova/tests/test_B9_access.py
2026-02-04 10:04:05 +01:00

86 lines
3.1 KiB
Python

"""
Test B9 Message Access
Quick verification script to check if B9 message is accessible via Python interface.
"""
import __init__
import sys
import time
import logging
from leo_grifo_1553 import theGrifo1553
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def test_b9_access():
"""Test if B9 message is accessible and readable."""
logging.info("=== B9 Message Access Test ===")
try:
# Get interface
interface = theGrifo1553.getInterface()
logging.info("✓ Interface obtained successfully")
# Check if B9 message is defined
try:
is_rx = interface.isMessageReadOnly("B9")
logging.info(f"✓ B9 message is defined, RX={is_rx}")
except Exception as e:
logging.error(f"✗ B9 message not defined or not accessible: {e}")
return False
# Try to get message counter
try:
msg_count = interface.getSingleMessageReceivedSz("B9")
logging.info(f"✓ B9 message counter accessible: {msg_count} messages received")
except Exception as e:
logging.error(f"✗ Cannot get B9 message counter: {e}")
return False
# Try to read key fields (even if count is 0)
fields_to_test = [
"b9_t_num", # Number of targets
"b9_t1_rng", # Target 1 range
"b9_w12", # Word 12 (timetag)
"b9_t1_az", # Target 1 azimuth
"b9_t2_rng", # Target 2 range
]
logging.info("\nTesting field access:")
for field in fields_to_test:
try:
value = interface.getMessageFieldValue("B9", field)
logging.info(f"{field:15s} = {value}")
except Exception as e:
logging.warning(f"{field:15s} - Error: {e}")
# If message count > 0, B9 is being transmitted
if msg_count > 0:
logging.info(f"\n✓✓ SUCCESS: B9 message is active and receiving data! ({msg_count} messages)")
else:
logging.warning(f"\n⚠ B9 message is accessible but no messages received yet (count={msg_count})")
logging.warning(" This is normal if radar is not transmitting or not in operational mode")
return True
except Exception as e:
logging.error(f"✗ Test failed with exception: {e}")
import traceback
traceback.print_exc()
return False
if __name__ == '__main__':
logging.info("Starting B9 access test...")
logging.info("Note: This test only checks if B9 is accessible, not if radar is transmitting it.\n")
success = test_b9_access()
if success:
logging.info("\n=== TEST PASSED ===")
logging.info("B9 message is accessible via Python interface.")
logging.info("Next step: Verify radar is configured to transmit B9 (operational mode required)")
else:
logging.error("\n=== TEST FAILED ===")
logging.error("B9 message is NOT accessible. Check ICD configuration or bindings.")
sys.exit(0 if success else 1)