344 lines
7.1 KiB
Python
344 lines
7.1 KiB
Python
from enum import IntEnum, unique
|
|
|
|
@unique
|
|
class Subaddress(IntEnum):
|
|
"""
|
|
MIL-STD-1553 Subaddresses for GRIFO-F/TH (Ref. Tab. 3.11-1 & 3.11-2).
|
|
"""
|
|
# RX Messages (BC -> RT)
|
|
RX_SETTINGS = 1 # Msg A1
|
|
RX_COMMAND = 2 # Msg A2
|
|
RX_GRAPHIC = 3 # Msg A3
|
|
RX_NAV_DATA = 4 # Msg A4
|
|
RX_INU_HS = 5 # Msg A5
|
|
RX_NOT_USED = 6 # Msg A6
|
|
RX_DATALINK_1 = 7 # Msg A7
|
|
RX_DATALINK_2 = 8 # Msg A8
|
|
RX_RESERVED = 9 # Msg A9
|
|
|
|
# Mode Codes
|
|
MODE_CODE_RX = 0 # 00000
|
|
MODE_CODE_TX = 31 # 11111
|
|
|
|
# TX Messages (RT -> BC)
|
|
TX_TWS_1_2 = 11 # Msg B1
|
|
TX_TWS_3_4_5 = 12 # Msg B2
|
|
TX_TWS_6_7_8 = 13 # Msg B3
|
|
TX_SPT = 14 # Msg B4
|
|
TX_TRACKED = 15 # Msg B5
|
|
TX_SETTING_TB = 16 # Msg B6 (Tell-Back)
|
|
TX_STATUS_TB = 17 # Msg B7 (Tell-Back)
|
|
TX_BIT_REPORT = 18 # Msg B8
|
|
TX_RES_SEARCH = 19 # Msg B9
|
|
TX_RES_MODE = 20 # Msg B10
|
|
TX_RES_DEBUG = 21 # Msg B11
|
|
TX_WRAPAROUND = 30 # Data Wraparound
|
|
|
|
|
|
# --- A1: Radar Operational Setting Enums ---
|
|
|
|
class TargetHistory(IntEnum):
|
|
"""Ref. Tab. A1/01-A"""
|
|
LEVEL_1 = 0
|
|
LEVEL_2 = 1
|
|
LEVEL_3 = 2
|
|
LEVEL_4 = 3
|
|
|
|
class AltitudeBlock(IntEnum):
|
|
"""Ref. Tab. A1/01-F"""
|
|
BTBK = 0 # Bottom Block
|
|
TPBK = 1 # Top Block
|
|
NORMAL = 2
|
|
SPARE = 3
|
|
|
|
class FrequencyAgility(IntEnum):
|
|
"""Ref. Tab. A1/02-A"""
|
|
FIXED = 0
|
|
RANDOM = 1
|
|
ADAPTIVE = 2
|
|
SPARE = 3
|
|
|
|
|
|
# --- A2: Radar Operation Command Enums ---
|
|
|
|
class RadarMode(IntEnum):
|
|
"""Ref. Tab. A2/01-A and B7/01 (Master Mode)"""
|
|
RWS = 0 # Range While Search
|
|
VS = 1 # Velocity Search
|
|
ACM = 2 # Air Combat Mode
|
|
TWS = 3 # Track While Scan
|
|
SPARE_04 = 4
|
|
GM = 5 # Ground Map
|
|
SEA1 = 6 # Sea Mode 1
|
|
SEA2 = 7 # Sea Mode 2
|
|
GMTI = 8 # Ground Moving Target Indicator
|
|
BCN = 9 # Beacon
|
|
AGR = 10 # Air to Ground Ranging
|
|
TA = 11 # Terrain Avoidance
|
|
WA = 12 # Weather Avoidance
|
|
# 13-15 Spare/Reserved
|
|
|
|
class DesignationControl(IntEnum):
|
|
"""Ref. Tab. A2/01-B"""
|
|
LOCK_ON_ENABLE = 0
|
|
LOCK_ON_DTT = 1
|
|
TRANSFER_HPT = 2
|
|
REJECT = 3
|
|
LOCK_ON_STT = 4
|
|
DESIGNATE_TRACK = 5
|
|
SPARE_06 = 6
|
|
EXEC_SAR_SPOI = 7
|
|
EXEC_SAR_CURSOR = 8
|
|
NOT_VALID = 15
|
|
|
|
class RWSSubmode(IntEnum):
|
|
"""Ref. Tab. A2/02-A"""
|
|
NAM = 0 # Normal Air Mode
|
|
ASM = 1 # Adaptive Search Mode
|
|
|
|
class ACMSubmode(IntEnum):
|
|
"""Ref. Tab. A2/02-C"""
|
|
BORESIGHT = 0
|
|
NARROW = 1
|
|
HUD = 2
|
|
WIDE = 3
|
|
VERTICAL = 4
|
|
SLEWABLE = 5
|
|
|
|
class GMSubmode(IntEnum):
|
|
"""Ref. Tab. A2/02-D"""
|
|
RBM = 0 # Real Beam Map
|
|
DBS = 1 # Doppler Beam Sharpening
|
|
|
|
class RangeScale(IntEnum):
|
|
"""Ref. Tab. A2/02-G"""
|
|
NM_80 = 0
|
|
NM_40 = 1
|
|
NM_20 = 2
|
|
NM_10 = 3
|
|
|
|
class BarScan(IntEnum):
|
|
"""Ref. Tab. A2/02-G (Elevation Bars)"""
|
|
BAR_1 = 0
|
|
BAR_2 = 1
|
|
SPARE = 2
|
|
BAR_4 = 3
|
|
|
|
class AzimuthScan(IntEnum):
|
|
"""Ref. Tab. A2/02-I"""
|
|
DEG_60 = 0 # +/- 60 (or 45)
|
|
DEG_30 = 1 # +/- 30
|
|
DEG_25 = 2 # +/- 25
|
|
DEG_15 = 3 # +/- 15
|
|
|
|
class VelocityScale(IntEnum):
|
|
"""Ref. Tab. A2/02-I (VS Mode)"""
|
|
KTS_2400 = 0
|
|
KTS_1200 = 1
|
|
|
|
class IntBitStatus(IntEnum):
|
|
"""Ref. Tab. A2/01-C"""
|
|
NORMAL = 0
|
|
REQUEST = 1
|
|
|
|
class StandbyStatus(IntEnum):
|
|
"""Ref. Tab. A2/01-D"""
|
|
OFF = 0
|
|
ON = 1
|
|
|
|
class FreezeStatus(IntEnum):
|
|
"""Ref. Tab. A2/01-E"""
|
|
NORMAL = 0
|
|
FREEZE = 1
|
|
|
|
class SpotFunction(IntEnum):
|
|
"""Ref. Tab. A2/02-B"""
|
|
NORMAL = 0
|
|
SPOT = 1
|
|
|
|
class ExpandFunction(IntEnum):
|
|
"""Ref. Tab. A2/02-E"""
|
|
NORMAL = 0
|
|
EXPAND = 1
|
|
# 2-3 Spare
|
|
|
|
class ZoomCommand(IntEnum):
|
|
"""Ref. Tab. A2/03-B"""
|
|
NOT_ACTIVE = 0
|
|
ZOOM_IN = 1
|
|
ZOOM_OUT = 2
|
|
SPARE = 3
|
|
|
|
class MapOrientation(IntEnum):
|
|
"""Ref. Tab. A2/03-C"""
|
|
AC_NOSE = 0
|
|
SLANT_CROSS_RANGE = 1
|
|
# 2-3 Not Used
|
|
|
|
class BullsEyeSelect(IntEnum):
|
|
"""Ref. Tab. A3/01-B"""
|
|
NONE = 0
|
|
WAYPOINT_1 = 1
|
|
WAYPOINT_2 = 2
|
|
WAYPOINT_3 = 3
|
|
|
|
class WaypointType(IntEnum):
|
|
"""Ref. Tab. A3/04-B"""
|
|
WAYPOINT = 0
|
|
FLY_TO = 1
|
|
|
|
class WaypointQualifier(IntEnum):
|
|
"""Ref. Tab. A3/04-D"""
|
|
LEFT = 0
|
|
RIGHT = 1
|
|
DTK = 2 # Desired Track
|
|
MARK = 3
|
|
|
|
class InterceptMode(IntEnum):
|
|
"""Ref. Tab. A3/15-B"""
|
|
REAR = 0
|
|
ALL = 1
|
|
|
|
class LineStyle(IntEnum):
|
|
"""Ref. Tab. A3/15-C (Normal/Dashed)"""
|
|
NORMAL = 0
|
|
DASHED = 1
|
|
|
|
class SymbolState(IntEnum):
|
|
"""Ref. Tab. A3/21-B (Normal/Blink)"""
|
|
NORMAL = 0
|
|
BLINK = 1
|
|
|
|
class Identity(IntEnum):
|
|
"""Ref. Tab. A3/24-C/F"""
|
|
FRIEND = 0
|
|
FOE = 1
|
|
|
|
class CursorMode(IntEnum):
|
|
"""Ref. Tab. A4/01-M"""
|
|
NORMAL = 0
|
|
SLAVE = 1
|
|
|
|
class CursorSnowplough(IntEnum):
|
|
"""Ref. Tab. A4/01-O"""
|
|
NORMAL = 0
|
|
SNOWPLOUGH = 1
|
|
|
|
class CursorGhost(IntEnum):
|
|
"""Ref. Tab. A4/19-B"""
|
|
NORMAL = 0
|
|
GHOST = 1
|
|
|
|
class DTTEnable(IntEnum):
|
|
"""Ref. Tab. A4/19-C"""
|
|
NORMAL = 0
|
|
DTT_ENABLED = 1
|
|
|
|
class SAREnable(IntEnum):
|
|
"""SAR Enable flag (Ref. A4-related)"""
|
|
NORMAL = 0
|
|
SAR_ENABLED = 1
|
|
|
|
class DLTargetType(IntEnum):
|
|
"""Ref. Tab. A7/05-A"""
|
|
TARGET = 0
|
|
HIGH_PRIORITY_TARGET = 1
|
|
MEMBER = 2
|
|
HIGH_PRIORITY_MEMBER = 3
|
|
|
|
class TwsValidity(IntEnum):
|
|
"""Ref. Tab. B1/01-A"""
|
|
INVALID = 0
|
|
VALID = 1
|
|
|
|
class HptIdentifier(IntEnum):
|
|
"""Ref. Tab. B1/01-B"""
|
|
TARGET_01 = 0
|
|
TARGET_02 = 1
|
|
TARGET_03 = 2
|
|
TARGET_04 = 3
|
|
TARGET_05 = 4
|
|
TARGET_06 = 5
|
|
TARGET_07 = 6
|
|
TARGET_08 = 7
|
|
NO_HPT = 15
|
|
|
|
class TrackPriority(IntEnum):
|
|
"""Ref. Tab. B1/02-A"""
|
|
LEVEL_1 = 0 # Highest
|
|
LEVEL_2 = 1
|
|
LEVEL_3 = 2
|
|
LEVEL_4 = 3
|
|
LEVEL_5 = 4
|
|
LEVEL_6 = 5
|
|
LEVEL_7 = 6
|
|
LEVEL_8 = 7 # Lowest
|
|
|
|
class TrackAccuracy(IntEnum):
|
|
"""Ref. Tab. B1/04-A"""
|
|
LEVEL_0 = 0
|
|
LEVEL_1 = 1
|
|
LEVEL_2 = 2
|
|
LEVEL_3 = 3
|
|
|
|
class NormFactorXY(IntEnum):
|
|
"""Ref. Tab. B4/02-E/F"""
|
|
FACTOR_0 = 0 # Multiplier 0.5 ft
|
|
FACTOR_1 = 1 # Multiplier 1 ft
|
|
FACTOR_2 = 2 # Multiplier 2 ft
|
|
FACTOR_3 = 3 # Multiplier 4 ft
|
|
FACTOR_4 = 4 # Multiplier 8 ft
|
|
FACTOR_5 = 5 # Multiplier 16 ft
|
|
|
|
class NormFactorZ(IntEnum):
|
|
"""Ref. Tab. B4/02-G"""
|
|
FACTOR_0 = 0 # Multiplier 0.5 ft
|
|
FACTOR_1 = 1 # Multiplier 1 ft
|
|
FACTOR_2 = 2 # Multiplier 2 ft
|
|
FACTOR_3 = 3 # Multiplier 4 ft
|
|
|
|
class RadarDesignationStatus(IntEnum):
|
|
"""Ref. Tab. B7/01-B"""
|
|
STT = 0
|
|
DTT = 1
|
|
SAM = 2
|
|
TWS_WITH_HPT = 3
|
|
AGR_LOCK_ON = 4
|
|
ACQUISITION_IN_PROGRESS = 5
|
|
SAR = 7
|
|
NOT_VALID = 15
|
|
|
|
class DegradedStatus(IntEnum):
|
|
"""Ref. Tab. B7/01-F"""
|
|
NORMAL = 0
|
|
DEGRADED = 1
|
|
|
|
class RfRadiationStatus(IntEnum):
|
|
"""Ref. Tab. B7/01-H"""
|
|
ON = 0
|
|
OFF = 1
|
|
|
|
class TransitionStatus(IntEnum):
|
|
"""Ref. Tab. B7/01-I"""
|
|
NO_TRANSITION = 0
|
|
IN_PROGRESS = 1
|
|
|
|
class AcquisitionResult(IntEnum):
|
|
"""Ref. Tab. B7/01-J"""
|
|
UNSUCCESSFUL = 0
|
|
SUCCESSFUL = 1
|
|
|
|
class SarFeasibility(IntEnum):
|
|
"""Ref. Tab. B7/03-D/E"""
|
|
NOT_FEASIBLE = 0
|
|
FEASIBLE = 1
|
|
|
|
class BitReportLabel(IntEnum):
|
|
"""Ref. Tab. B8/01-A"""
|
|
POWER_UP_BIT = 0
|
|
FAST_POWER_UP_BIT = 1
|
|
INT_BIT = 2
|
|
SWITCH_OFF = 3
|
|
FAIL_ONSET = 4
|
|
FAIL_STOP = 5
|
|
# 6-7 Spare |