92 lines
3.2 KiB
Python
92 lines
3.2 KiB
Python
from ..message_base import MessageBase
|
|
from ..constants import (
|
|
Subaddress, RadarMode, DesignationControl, IntBitStatus, StandbyStatus,
|
|
FreezeStatus, RWSSubmode, SpotFunction, ACMSubmode, GMSubmode,
|
|
ExpandFunction, RangeScale, BarScan, AzimuthScan, VelocityScale,
|
|
ZoomCommand, MapOrientation
|
|
)
|
|
from ..fields import BitField, EnumField
|
|
|
|
class MsgA2(MessageBase):
|
|
"""
|
|
Message A2: Radar Operation Command
|
|
|
|
ID: A2
|
|
Direction: BC -> RT (Receive)
|
|
Subaddress: 02
|
|
Rate: 25 Hz
|
|
Document Ref: 7.1.2
|
|
"""
|
|
SUBADDRESS = Subaddress.RX_COMMAND
|
|
IS_TRANSMIT = False
|
|
|
|
# --- Word 01: Radar Mode Command (Ref 7.1.2.1) ---
|
|
|
|
# Bits 00-03: Master Mode Selection
|
|
master_mode = EnumField(word_index=0, start_bit=0, width=4, enum_cls=RadarMode)
|
|
|
|
# Bits 04-07: Designation Control
|
|
designation_ctrl = EnumField(word_index=0, start_bit=4, width=4, enum_cls=DesignationControl)
|
|
|
|
# Bit 08: INT-BIT Function
|
|
int_bit_req = EnumField(word_index=0, start_bit=8, width=1, enum_cls=IntBitStatus)
|
|
|
|
# Bit 09: STBY Function
|
|
standby_cmd = EnumField(word_index=0, start_bit=9, width=1, enum_cls=StandbyStatus)
|
|
|
|
# Bit 10: FREEZE Function
|
|
freeze_cmd = EnumField(word_index=0, start_bit=10, width=1, enum_cls=FreezeStatus)
|
|
|
|
# Bit 11: Power-Up Stop (Reserved, set to Normal)
|
|
pwr_up_stop_reserved = BitField(word_index=0, start_bit=11, width=1)
|
|
|
|
# Bit 12: Reserved
|
|
reserved_w1_b12 = BitField(word_index=0, start_bit=12, width=1)
|
|
|
|
# Bit 13: Silence (Reserved, set to Off)
|
|
silence_reserved = BitField(word_index=0, start_bit=13, width=1)
|
|
|
|
# Bits 14-15: Spare
|
|
|
|
# --- Word 02: Radar Functions and Parameters #1 (Ref 7.1.2.2) ---
|
|
|
|
# Bit 00: RWS Submode
|
|
rws_submode = EnumField(word_index=1, start_bit=0, width=1, enum_cls=RWSSubmode)
|
|
|
|
# Bit 01: SPOT Function
|
|
spot_function = EnumField(word_index=1, start_bit=1, width=1, enum_cls=SpotFunction)
|
|
|
|
# Bits 02-04: ACM Submode
|
|
acm_submode = EnumField(word_index=1, start_bit=2, width=3, enum_cls=ACMSubmode)
|
|
|
|
# Bit 05: GM Submode
|
|
gm_submode = EnumField(word_index=1, start_bit=5, width=1, enum_cls=GMSubmode)
|
|
|
|
# Bits 06-07: Expand Function
|
|
expand_function = EnumField(word_index=1, start_bit=6, width=2, enum_cls=ExpandFunction)
|
|
|
|
# Bits 08-09: Range Scale
|
|
range_scale = EnumField(word_index=1, start_bit=8, width=2, enum_cls=RangeScale)
|
|
|
|
# Bits 10-11: Number of Bars
|
|
bar_scan = EnumField(word_index=1, start_bit=10, width=2, enum_cls=BarScan)
|
|
|
|
# Bits 12-13: Azimuth Scan Width
|
|
azimuth_scan = EnumField(word_index=1, start_bit=12, width=2, enum_cls=AzimuthScan)
|
|
|
|
# Bit 14: Velocity Scale
|
|
velocity_scale = EnumField(word_index=1, start_bit=14, width=1, enum_cls=VelocityScale)
|
|
|
|
# Bit 15: Spare
|
|
|
|
# --- Word 03: Radar Functions and Parameters #2 (Ref 7.1.2.3) ---
|
|
|
|
# Bits 00-03: Spare (Note 1 says Not Applicable, typically 0)
|
|
|
|
# Bits 04-05: Zoom Command
|
|
zoom_cmd = EnumField(word_index=2, start_bit=4, width=2, enum_cls=ZoomCommand)
|
|
|
|
# Bits 06-07: SAR Map Orientation
|
|
map_orientation = EnumField(word_index=2, start_bit=6, width=2, enum_cls=MapOrientation)
|
|
|
|
# Bits 08-15: Spare |