SXXXXXXX_PyBusMonitor1553/pybusmonitor1553/lib1553/messages/msg_a8.py

85 lines
4.5 KiB
Python

from ..message_base import MessageBase
from ..constants import Subaddress, DLTargetType
from ..fields import BitField, EnumField, ScaledField, ASCIIField
class MsgA8(MessageBase):
"""
Message A8: Data Link Targets (Message #2)
ID: A8
Direction: BC -> RT (Receive)
Subaddress: 08
Rate: 6.25 Hz
Document Ref: 7.1.8
Contains:
- Data for Targets 06-10
"""
SUBADDRESS = Subaddress.RX_DATALINK_2
IS_TRANSMIT = False
RATE_HZ = 6.25
# ========================== TARGET 06 ==========================
tgt_06_pos_x = ScaledField(word_index=0, start_bit=0, width=16, lsb_value=16.0, signed=True)
tgt_06_pos_y = ScaledField(word_index=1, start_bit=0, width=16, lsb_value=16.0, signed=True)
tgt_06_track_angle = ScaledField(word_index=2, start_bit=0, width=16, lsb_value=3.05176e-5, signed=True)
tgt_06_type = EnumField(word_index=3, start_bit=0, width=2, enum_cls=DLTargetType)
tgt_06_velocity = ScaledField(word_index=3, start_bit=2, width=3, lsb_value=143.0)
tgt_06_altitude = ScaledField(word_index=3, start_bit=5, width=7, lsb_value=1000.0)
tgt_06_intercept_zone = BitField(word_index=3, start_bit=12, width=1)
tgt_06_callsign_ab = ASCIIField(word_index=4)
tgt_06_callsign_cd = ASCIIField(word_index=5)
# ========================== TARGET 07 ==========================
tgt_07_pos_x = ScaledField(word_index=6, start_bit=0, width=16, lsb_value=16.0, signed=True)
tgt_07_pos_y = ScaledField(word_index=7, start_bit=0, width=16, lsb_value=16.0, signed=True)
tgt_07_track_angle = ScaledField(word_index=8, start_bit=0, width=16, lsb_value=3.05176e-5, signed=True)
tgt_07_type = EnumField(word_index=9, start_bit=0, width=2, enum_cls=DLTargetType)
tgt_07_velocity = ScaledField(word_index=9, start_bit=2, width=3, lsb_value=143.0)
tgt_07_altitude = ScaledField(word_index=9, start_bit=5, width=7, lsb_value=1000.0)
tgt_07_intercept_zone = BitField(word_index=9, start_bit=12, width=1)
tgt_07_callsign_ab = ASCIIField(word_index=10)
tgt_07_callsign_cd = ASCIIField(word_index=11)
# ========================== TARGET 08 ==========================
tgt_08_pos_x = ScaledField(word_index=12, start_bit=0, width=16, lsb_value=16.0, signed=True)
tgt_08_pos_y = ScaledField(word_index=13, start_bit=0, width=16, lsb_value=16.0, signed=True)
tgt_08_track_angle = ScaledField(word_index=14, start_bit=0, width=16, lsb_value=3.05176e-5, signed=True)
tgt_08_type = EnumField(word_index=15, start_bit=0, width=2, enum_cls=DLTargetType)
tgt_08_velocity = ScaledField(word_index=15, start_bit=2, width=3, lsb_value=143.0)
tgt_08_altitude = ScaledField(word_index=15, start_bit=5, width=7, lsb_value=1000.0)
tgt_08_intercept_zone = BitField(word_index=15, start_bit=12, width=1)
tgt_08_callsign_ab = ASCIIField(word_index=16)
tgt_08_callsign_cd = ASCIIField(word_index=17)
# ========================== TARGET 09 ==========================
tgt_09_pos_x = ScaledField(word_index=18, start_bit=0, width=16, lsb_value=16.0, signed=True)
tgt_09_pos_y = ScaledField(word_index=19, start_bit=0, width=16, lsb_value=16.0, signed=True)
tgt_09_track_angle = ScaledField(word_index=20, start_bit=0, width=16, lsb_value=3.05176e-5, signed=True)
tgt_09_type = EnumField(word_index=21, start_bit=0, width=2, enum_cls=DLTargetType)
tgt_09_velocity = ScaledField(word_index=21, start_bit=2, width=3, lsb_value=143.0)
tgt_09_altitude = ScaledField(word_index=21, start_bit=5, width=7, lsb_value=1000.0)
tgt_09_intercept_zone = BitField(word_index=21, start_bit=12, width=1)
tgt_09_callsign_ab = ASCIIField(word_index=22)
tgt_09_callsign_cd = ASCIIField(word_index=23)
# ========================== TARGET 10 ==========================
tgt_10_pos_x = ScaledField(word_index=24, start_bit=0, width=16, lsb_value=16.0, signed=True)
tgt_10_pos_y = ScaledField(word_index=25, start_bit=0, width=16, lsb_value=16.0, signed=True)
tgt_10_track_angle = ScaledField(word_index=26, start_bit=0, width=16, lsb_value=3.05176e-5, signed=True)
tgt_10_type = EnumField(word_index=27, start_bit=0, width=2, enum_cls=DLTargetType)
tgt_10_velocity = ScaledField(word_index=27, start_bit=2, width=3, lsb_value=143.0)
tgt_10_altitude = ScaledField(word_index=27, start_bit=5, width=7, lsb_value=1000.0)
tgt_10_intercept_zone = BitField(word_index=27, start_bit=12, width=1)
tgt_10_callsign_ab = ASCIIField(word_index=28)
tgt_10_callsign_cd = ASCIIField(word_index=29)