106 lines
4.1 KiB
Python
106 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
|
|
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) |