SXXXXXXX_PyBusMonitor1553/pybusmonitor1553/lib1553/messages/msg_b7.py

107 lines
4.1 KiB
Python

from ..message_base import MessageBase
from ..constants import (
Subaddress, RadarMode, RadarDesignationStatus, IntBitStatus, StandbyStatus,
FreezeStatus, DegradedStatus, RfRadiationStatus, TransitionStatus, AcquisitionResult,
RWSSubmode, SpotFunction, ACMSubmode, GMSubmode, ExpandFunction, RangeScale,
BarScan, AzimuthScan, VelocityScale, ZoomCommand, MapOrientation, SarFeasibility
)
from ..fields import BitField, EnumField
class MsgB7(MessageBase):
"""
Message B7: Radar Status Tell-Back
ID: B7
Direction: RT -> BC (Transmit)
Subaddress: 17
Rate: 25 Hz
Document Ref: 7.2.7
Contains:
- Current Operational Mode (Tell-back of A2)
- Status flags (Radiation, Acquisition result, Degradation)
- Function feedback
"""
SUBADDRESS = Subaddress.TX_STATUS_TB
IS_TRANSMIT = True
RATE_HZ = 25
WORD_COUNT = 3 # ICD Spec: 3 Words
# --- Word 01: Radar Mode Tell-Back (Ref 7.2.7.1) ---
# Bits 00-03: Master Mode Tell-Back
master_mode_tb = EnumField(word_index=0, start_bit=0, width=4, enum_cls=RadarMode)
# Bits 04-07: Radar Designation Status
designation_status = EnumField(word_index=0, start_bit=4, width=4, enum_cls=RadarDesignationStatus)
# Bit 08: INT-BIT Status (0=Normal, 1=In Progress)
int_bit_status = EnumField(word_index=0, start_bit=8, width=1, enum_cls=IntBitStatus)
# Bit 09: STBY Tell-Back
standby_status = EnumField(word_index=0, start_bit=9, width=1, enum_cls=StandbyStatus)
# Bit 10: FREEZE Tell-Back
freeze_status = EnumField(word_index=0, start_bit=10, width=1, enum_cls=FreezeStatus)
# Bit 11: Degraded Performance Status
degraded_status = EnumField(word_index=0, start_bit=11, width=1, enum_cls=DegradedStatus)
# Bit 12: Reserved (set to 0)
reserved_w1_b12 = BitField(word_index=0, start_bit=12, width=1)
# Bit 13: RF Radiation Status (0=ON, 1=OFF)
rf_radiation_status = EnumField(word_index=0, start_bit=13, width=1, enum_cls=RfRadiationStatus)
# Bit 14: Transition Status (0=No Trans, 1=In Progress)
transition_status = EnumField(word_index=0, start_bit=14, width=1, enum_cls=TransitionStatus)
# Bit 15: Last Acquisition Result (0=Fail, 1=Success)
last_acq_result = EnumField(word_index=0, start_bit=15, width=1, enum_cls=AcquisitionResult)
# --- Word 02: Radar Functions and Parameters Tell-Back #1 (Ref 7.2.7.2) ---
# Bit 00: RWS Submode TB
rws_submode_tb = EnumField(word_index=1, start_bit=0, width=1, enum_cls=RWSSubmode)
# Bit 01: SPOT Function TB
spot_function_tb = EnumField(word_index=1, start_bit=1, width=1, enum_cls=SpotFunction)
# Bits 02-04: ACM Submode TB
acm_submode_tb = EnumField(word_index=1, start_bit=2, width=3, enum_cls=ACMSubmode)
# Bit 05: GM Submode TB
gm_submode_tb = EnumField(word_index=1, start_bit=5, width=1, enum_cls=GMSubmode)
# Bits 06-07: Expand Function TB
expand_function_tb = EnumField(word_index=1, start_bit=6, width=2, enum_cls=ExpandFunction)
# Bits 08-09: Range Scale TB
range_scale_tb = EnumField(word_index=1, start_bit=8, width=2, enum_cls=RangeScale)
# Bits 10-11: Number of Bars TB
bar_scan_tb = EnumField(word_index=1, start_bit=10, width=2, enum_cls=BarScan)
# Bits 12-13: Azimuth Scan Width TB
azimuth_scan_tb = EnumField(word_index=1, start_bit=12, width=2, enum_cls=AzimuthScan)
# Bit 14: Velocity Scale TB
velocity_scale_tb = EnumField(word_index=1, start_bit=14, width=1, enum_cls=VelocityScale)
# Bit 15: Spare
# --- Word 03: Radar Functions and Parameters Tell-Back #2 (Ref 7.2.7.3) ---
# Bits 00-03: Not Applicable
# Bits 04-05: Zoom Command Tell-Back
zoom_cmd_tb = EnumField(word_index=2, start_bit=4, width=2, enum_cls=ZoomCommand)
# Bits 06-07: SAR Map Orientation Tell-Back
map_orientation_tb = EnumField(word_index=2, start_bit=6, width=2, enum_cls=MapOrientation)
# Bit 08: SAR Feasibility for Cursor
sar_feasible_cursor = EnumField(word_index=2, start_bit=8, width=1, enum_cls=SarFeasibility)
# Bit 09: SAR Feasibility for SPOI
sar_feasible_spoi = EnumField(word_index=2, start_bit=9, width=1, enum_cls=SarFeasibility)