import ctypes
from enum import IntEnum


class DataRecordingValue(IntEnum):
    No_recording = 0
    DSP_OUT_DSP_IN_MTI_OUT = 1
    DSP_OUT_DSP_IN_SH_MTI_OUT = 2
    DSP_OUT_DSP_IN_SH_CFAR_OUT = 3
    DSP_OUT_DSP_IN_MTI_IN = 4
    DSP_OUT_DSP_IN_TMC_MTI_OUT = 5
    DSP_OUT_DSP_IN_TMC_CFAR_OUT = 6
    DSP_OUT_DSP_IN_PGA_MTI_OUT = 7
    DSP_OUT_DSP_IN_PGA_CFAR_OUT = 8
    DSP_OUT_DSP_IN_SH_MTI_IN = 9
    DSP_OUT_DSP_IN_SC_MTI_OUT = 10
    DSP_OUT_DSP_IN_RCM_MTI_OUT = 11
    DSP_OUT_DSP_IN_DELTA_MTI_OUT = 12

# Enum for target_history_t
class TargetHistory(IntEnum):
    TARGET_HISTORY_LEVEL_01 = 0
    TARGET_HISTORY_LEVEL_02 = 1
    TARGET_HISTORY_LEVEL_03 = 2
    TARGET_HISTORY_LEVEL_04 = 3
    
class NormalizationFactor(IntEnum):
    FACTOR_0 = 0
    FACTOR_1 = 1
    FACTOR_2 = 2
    FACTOR_3 = 3
    FACTOR_4 = 4
    FACTOR_5 = 5
class NormalizationFactor2(IntEnum):
    FACTOR_0 = 0
    FACTOR_1 = 1
    FACTOR_2 = 2
    FACTOR_3 = 3

# Enum for ground_target_rejected_radial_vel_t
class GroundTargetRejectVel(IntEnum):
    GROUND_TARGET_REJ_LOW = 0
    GROUND_TARGET_REJ_HIGH = 1

# Enum for min_detect_ground_tgt_radial_vel_t
class MinDetectGroundVel(IntEnum):
    MIN_DETECT_GROUND_LOW = 0
    MIN_DETECT_GROUND_HIGH = 1
    
class RFRadiationStatus(IntEnum):
    RADIATION_ON = 0
    RADIATION_OFF = 1
    

# Enum for ale_blanking_t
class ALEBlanking(IntEnum):
    ALE_BLANKING_ENABLED = 0
    ALE_BLANKING_DISABLED = 1

# Enum for altitude_block_t
class AltitudeBlock(IntEnum):
    BTBK = 0
    TPBK = 1
    NORMAL_BK = 2

# Enum for prf_lookup_selection_t
class PRFLookup(IntEnum):
    LPRF = 0
    MPRF_LOOKUP = 1
    
class RadarFailStatus(IntEnum):
    RDR_OK = 0
    RDR_FAILED = 1
    
class LRUFailStatus(IntEnum):
    LRU_OK = 0
    LRU_FAILED = 1

class OvertemperatureAlarm(IntEnum):
    NO_OVERTEMP = 0
    OVERTEMP = 1


# Enum for frequency_agility_type_t
class FrequencyAgilityType(IntEnum):
    FIXED = 0
    RANDOM = 1
    ADAPTIVE = 2
    AGILITY_NOT_VALID = 3

# Enum for frequency_group_selector_tellback_t
class FrequencyGroupSelector(IntEnum):
    FREQUENCY_GROUP_NOT_ACTIVE = 0
    FREQUENCY_GROUP_ACTIVE = 1

# Enum for waveform_interleave_selection_tellback_t
class WaveformInterleave(IntEnum):
    WAVEFORM_INT_SEL_SPARE = 0
    WAVEFORM_INT_01_SEL_SPARE = 1
    WAVEFORM_INT_02_SEL_SPARE = 2
    WAVEFORM_INT_03_SEL_SPARE = 3

# Enum for lprf_threshold_selection_tellback_t
class LPRFThreshold(IntEnum):
    THRESHOLD_LOW = 0
    THRESHOLD_HIGH = 1

# Enum for parameter_transfer_enabled_t
class ParameterTransferEnabled(IntEnum):
    PAR_TRANSF_NOT_ACTIVE = 0
    PAR_TRANSF_ACTIVE = 1

# Enum for receive_transmit_selector_t
class ReceiveTransmitSelector(IntEnum):
    SELECTOR_RECEIVE = 0
    SELECTOR_TRANSMIT = 1

# Enum for param_id_code_t
class ParamIdCode(IntEnum):
    param_antenna_harmonization_yaw = 1
    param_antenna_harmonization_pitch = 2
    param_antenna_harmonization_roll = 3
    param_bulkhead_x_displacement = 4
    param_bulkhead_y_displacement = 5
    param_bulkhead_z_displacement = 6
    param_symbol_intensity_a = 11
    param_symbol_intensity_b = 12
    param_symbol_intensity_c = 13
    param_symbol_waveform_command = 21
    param_symbol_cutt_off_velocity = 31
    param_symbol_range_threshold_for_aws = 41
    param_symbol_test_01_for_new_modes = 51
    param_symbol_test_02_for_new_modes = 52
    param_symbol_test_03_for_new_modes = 53
    param_symbol_test_04_for_new_modes = 54
    param_symbol_white_level_for_sar_images = 61
    param_symbol_black_level_for_sar_images = 62
    param_symbol_pre_compression_factor_for_sar_images = 63
    param_data_recording = 71
    param_present_position = 81

# Enum for rdr_modes_t
class RdrModes(IntEnum):
    RWS = 0
    VS = 1
    ACM = 2
    TWS = 3
    MODE_SPARE_4 = 4
    GM = 5
    SEA_LOW = 6
    SEA_HIGH = 7
    GMTI = 8
    BCN = 9
    AGR = 10
    TA = 11
    WA = 12
    TS = 13
    MODE_SPARE_14 = 14
    RDR_DLY = 15

# Enum for des_control_t
class DesControl(IntEnum):
    LOCK_ON = 0
    LOCK_ON_DTT = 1
    TRANS_HPT_BUT = 2
    REJECT = 3
    LOCK_ON_STT = 4
    DES_TRACK_LABEL = 5
    EXEC_SAR = 6
    NOT_VALID = 7
    
class DesignationStatus(IntEnum):
    STT = 0
    MTT = 1
    RESERVED2 = 2
    TS_WITH_AUTOMATIC_HPT = 3
    RESERVED4 = 4
    ACQUISITION_IN_PROGRESS = 5
    RESERVED6 = 6
    NOT_VALID = 7

class DegradedPerformanceStatus(IntEnum):
    NORMAL = 0
    DEGRADED = 1

class LastAcquisitionResult(IntEnum):
    LAST_ACQUISITION_UNSUCCESFULL = 0
    LAST_ACQUISITION_SUCCESFULL = 1

class TransferFeatureBug(IntEnum):
    TRANSFER_HPT_BUG = 0
    TRANSFER_LPT_BUG = 1
    

# Enum for ibit_request_t
class IbitRequest(IntEnum):
    NORMAL = 0
    INT_BIT = 1

class BITReportAvailable(IntEnum):
    NOT_AVAILABLE = 0
    AVAILABLE = 1

# Enum for stby_selection_t
class StbySelection(IntEnum):
    STBY_OFF = 0
    STBY_ON = 1
    
class TransitionStatus(IntEnum):
    NO_TRANSITION = 0
    TRANSITION_IN_PROGRESS = 1

# Enum for sar_exec_selection_t
class SarExecSelection(IntEnum):
    SAR_ON_CURSOR = 0
    SAR_ON_SPOI = 1

# Enum for rws_submode_t
class RwsSubmode(IntEnum):
    RWS_NAM = 0
    RWS_ASM = 1

# Enum for spot_selection_t
class SpotSelection(IntEnum):
    SEL_NORMAL = 0
    SEL_STOP = 1
    
class SilenceSelection(IntEnum):
    SEL_SILENCE_OFF = 0
    SEL_SILENCE_ON = 1

# Enum for acm_submode_t
class AcmSubmode(IntEnum):
    BORESIGHT = 0
    NARROW = 1
    HUD = 2
    WIDE = 3
    VERTICAL = 4
    SLEWABLE = 5
    ACM_SPARE_6 = 6
    ACM_SPARE_7 = 7

# Enum for gm_submode_t
class GmSubmode(IntEnum):
    GM_RBM = 0
    GM_DBS = 1

# Enum for expand_t
class Expand(IntEnum):
    EXP_NORMAL = 0
    EXPAND = 1
    EXP_SPARE2 = 2
    EXP_SPARE3 = 3

# Enum for range_scale_t
class RangeScale(IntEnum):
    NM80 = 0
    NM40 = 1
    NM20 = 2
    NM10 = 3

# Enum for bars_num_t
class BarsNum(IntEnum):
    BARS_1 = 0
    BARS_2 = 1
    BARS_SPARE = 2
    BARS_4 = 3

# Enum for scan_width_t
class ScanWidth(IntEnum):
    W60 = 0
    W30 = 1
    W25 = 2
    W15 = 3

# Enum for velocity_scale_t
class VelocityScale(IntEnum):
    KTS2400 = 0
    KTS1200 = 1
    
# Enum for frequency_grouping_t
class FrequencyGrouping(IntEnum):
    FREQUENCY_GROUPING_OPTION_01 = 0
    FREQUENCY_GROUPING_OPTION_02 = 1
    
# Enum for velocity_scale_t
class VelocityScale(IntEnum):
    KTS2400 = 0
    KTS1200 = 1

# Enum for scan_width_t
class ScanWidth(IntEnum):
    W60 = 0
    W30 = 1
    W25 = 2
    W15 = 3
    
class AzimuthScanWidth(IntEnum):
    W60 = 0
    W55 = 1
    W50 = 2
    W45 = 3
    W40 = 4
    W35 = 5
    W30 = 6
    W25 = 7
    W20 = 8
    W15 = 9
    W10 = 10
    W05 = 11
    W00 = 12
    SPARE_13 = 13
    SPARE_14 = 14
    SPARE_15 = 15


# Enum for bars_num_t
class BarsNum(IntEnum):
    BARS_1 = 0
    BARS_2 = 1
    BARS_3 = 2
    BARS_4 = 3

# Enum for range_scale_t
class RangeScale(IntEnum):
    NM80 = 0
    NM40 = 1
    NM20 = 2
    NM10 = 3

# Enum for expand_t
class Expand(IntEnum):
    EXP_NORMAL = 0
    EXPAND = 1
    EXP_SPARE2 = 2
    EXP_SPARE3 = 3

# Enum for gm_submode_t
class GmSubmode(IntEnum):
    GM_RBM = 0
    GM_DBS = 1

# Enum for acm_submode_t
class AcmSubmode(IntEnum):
    BORESIGHT = 0
    NARROW = 1
    HUD = 2
    WIDE = 3
    VERTICAL = 4
    SLEWABLE = 5
    ACM_SPARE_6 = 6
    ACM_SPARE_7 = 7

# Enum for spot_selection_t
class SpotSelection(IntEnum):
    SEL_NORMAL = 0
    SEL_SPOT = 1

# Enum for rws_submode_t
class RwsSubmode(IntEnum):
    RWS_NAM = 0
    RWS_ASM = 1
    
#Enum zoom_t
class Zoom(IntEnum):
    ZOOM_NOT_ATIVE = 0
    ZOOM_IN = 1
    ZOOM_OUT = 2
    ZOOM_SPARE = 3

#Enum sar_map_orientation_t
class SarMapOrientation(IntEnum):
    SAR_AC_NOSE_REFERENCE = 0
    SAR_SLANT_CROSS_RANGE = 1
    NOT_USED_1 = 2
    NOT_USED_2 = 3
    
    # Enum for bulls_eye_identifier_t
class BullsEyeIdentifier(IntEnum):
    NO_BULLS_EYE = 0
    BULLS_EYE_WAYPOINT_01 = 1
    BULLS_EYE_WAYPOINT_02 = 2
    BULLS_EYE_WAYPOINT_03 = 3
    
# Enum for waypoint_fyt_selection_t
class WaypointFytSelection(IntEnum):
    WAYPOINT = 0
    FYT = 1

# Enum for waypoint_qualifier_value_t
class WaypointQualifierValue(IntEnum):
    WAYPOINT_LEFT = 0
    WAYPOINT_RIGHT = 1
    WAYPOINT_DTK = 2
    WAYPOINT_MARK = 3
    
# enum per nav_data_invalid_field_t
class NavDataInvalidField(IntEnum):
    NAVIGATION_INVALID = 0
    ATTITUDE_INVALID = 1
    BARO_INTERTIAL_ALTITUDE_INVALID = 2
    CORRECT_BARO_ALTITUDE_INVALID = 3
    RADIO_ALTIMETER_INVALID = 4
    SPOI_ALTITUDE_INVALID = 5
    SPOI_POSITION_INVALID = 6
    TAS_INVALID = 7
    CAS_INVALID = 8
    PRESENT_POSITION_INVALID = 9
    ANT_SLEW_VALID = 10
    CRS_RATE_INVALID = 11
    CRS_NORMAL_SLAVE = 12
    CRS_ZERO_VALID_FIELD = 13
    CRS_SNOWPLOUGH_VALID_FIELD = 14

# enum per accurancy_level_t
class AccurancyLevel(IntEnum):
    ACCURANCY_LELEL_0 = 0
    ACCURANCY_LELEL_1 = 1
    ACCURANCY_LELEL_2 = 2
    ACCURANCY_LELEL_3 = 3
    
#A4-19: Rate of motion of acquisition cursor x
#A5-19: Rate of motion of acquisition cursor x

#enum A4-19: Rate of motion of acquisition cursor x
class CrsGhostSelector(IntEnum):
    NORMAL = 0
    GHOST = 1

#enum A4-19: Rate of motion of acquisition cursor x
class CrsMttSelector(IntEnum):
    NORMAL = 0
    MTT_ENABLED = 1

#enum A4-19: Rate of motion of acquisition cursor x
class CrsSarSelector(IntEnum):
    NORMAL = 0
    SAR_ENABLED = 1
    
class CrsNormalSlaveSelector(IntEnum):
    NORMAL = 0
    SLAVE = 1

class CrsSnowploughCommand(IntEnum):
    NORMAL = 0
    SNOWPLOUGH = 1
    
# Enum for dl_target_validity_t
class DlTargetValidity(IntEnum):
    DL_TGT_VALIDITY_NOT_ACTIVE = 0
    DL_TGT_VALIDITY_ACTIVE = 1

# Enum for dl_target_type_selector_t
class DlTargetTypeSelector(IntEnum):
    DL_TARGET = 0
    DL_HIGH_PRIORITY_TARGET = 1
    DL_MEMBER = 2
    DL_HIGH_PRIORITY_MEMBER = 3

# Enum for friend_foe_selector_t
class FriendFoeSelector(IntEnum):
    FRIEND = 0
    FOE = 1
    
# Enum for tws_target_validity_t
class TwsTargetValidity(IntEnum):
    TWS_NOT_ACTIVE = 0
    TWS_ACTIVE = 1

# Enum for tws_target_which_t
class TwsTargetWhich(IntEnum):
    TARGET_01_HPT = 0
    TARGET_02_HPT = 1
    TARGET_03_HPT = 2
    TARGET_04_HPT = 3
    TARGET_05_HPT = 4
    TARGET_06_HPT = 5
    TARGET_07_HPT = 6
    TARGET_08_HPT = 7
    HPT_NOT_PRESENT = 8

# Enum for track_priority_t
class TrackPriority(IntEnum):
    PRIORITY_LEVEL_1 = 0
    PRIORITY_LEVEL_2 = 1
    PRIORITY_LEVEL_3 = 2
    PRIORITY_LEVEL_4 = 3
    PRIORITY_LEVEL_5 = 4
    PRIORITY_LEVEL_6 = 5
    PRIORITY_LEVEL_7 = 6
    PRIORITY_LEVEL_8 = 7

# Enum for target_accurancy_t
class TargetAccurancy(IntEnum):
    TARGET_ACCURANCY_LEVEL_0 = 0
    TARGET_ACCURANCY_LEVEL_1 = 1
    TARGET_ACCURANCY_LEVEL_2 = 2
    TARGET_ACCURANCY_LEVEL_3 = 3
    
class Accuracy(IntEnum):
    LEVEL_0 = 0
    LEVEL_1 = 1
    LEVEL_2 = 2
    LEVEL_3 = 3
    
class InterceptModeSelection(IntEnum):
    REAR = 0
    ALL = 0
    
class NormalDashedSelection(IntEnum):
    NORMAL = 0
    DASHED = 1

class NormalBlinkSelection(IntEnum):
    NORMAL = 0
    BLINK = 1

class FriendFoeSelection(IntEnum):
    FRIEND = 0
    FOE = 1