import ctypes
from Grifo_E_1553lib.data_types.relative_timetag import RelativeTimetag
from Grifo_E_1553lib.data_types.semicircle import Semicircle
from Grifo_E_1553lib.data_types.acceleration import Acceleration
from Grifo_E_1553lib.data_types.velocity import Velocity
from Grifo_E_1553lib.data_types.attitude_rate import AttitudeRate
from Grifo_E_1553lib.data_types.ang_acc import AngAcc
from Grifo_E_1553lib.data_types.enums import TwsTargetValidity, TwsTargetWhich, TrackPriority, TargetAccurancy

from Grifo_E_1553lib.data_types.valitidy_word_and_hpt_identifier import ValitidyWordAndHptIdentifier
from Grifo_E_1553lib.data_types.track_priority_01_04 import TrackPriority0104
from Grifo_E_1553lib.data_types.track_priority_05_08 import TrackPriority0508
from Grifo_E_1553lib.data_types.track_priority_09_10 import TrackPriority0910
from Grifo_E_1553lib.data_types.track_accurancy_01_04 import TrackAccurancy0104
from Grifo_E_1553lib.data_types.track_accurancy_05_08 import TrackAccurancy0508
from Grifo_E_1553lib.data_types.track_id_of_tws_tracked_target_01_02 import TrackIdOfTwsTrackedTarget0102
from Grifo_E_1553lib.data_types.track_id_of_tws_tracked_target_03_04 import TrackIdOfTwsTrackedTarget0304
from Grifo_E_1553lib.data_types.track_id_of_tws_tracked_target_05_06 import TrackIdOfTwsTrackedTarget0506
from Grifo_E_1553lib.data_types.track_id_of_tws_tracked_target_07_08 import TrackIdOfTwsTrackedTarget0708
from Grifo_E_1553lib.data_types.x_display_coord_of_the_hpt_target import XDisplayCoordOfTheHptTarget
from Grifo_E_1553lib.data_types.y_display_coord_of_the_hpt_target import YDisplayCoordOfTheHptTarget
from Grifo_E_1553lib.data_types.target_velocity_magnitude import TargetVelocityMagnitude
from Grifo_E_1553lib.data_types.tws_velocity import TwsVelocity

class TwsStatusAndTargets0102(ctypes.Structure):
    _fields_ = [
        ("valitidy_word_and_hpt_identifier", ValitidyWordAndHptIdentifier),
        ("track_priority_01_04", TrackPriority0104),
        ("track_priority_05_08", TrackPriority0508),
        ("track_accurancy_01_04", TrackAccurancy0104),
        ("track_accurancy_05_08", TrackAccurancy0508),
        ("track_id_of_tws_tracked_target_01_02", TrackIdOfTwsTrackedTarget0102),
        ("track_id_of_tws_tracked_target_03_04", TrackIdOfTwsTrackedTarget0304),
        ("track_id_of_tws_tracked_target_05_06", TrackIdOfTwsTrackedTarget0506),
        ("track_id_of_tws_tracked_target_07_08", TrackIdOfTwsTrackedTarget0708),
        ("x_display_coord_of_the_hpt_target", XDisplayCoordOfTheHptTarget),
        ("y_display_coord_of_the_hpt_target", YDisplayCoordOfTheHptTarget),
        ("time_tag_of_tracked_target_01_data", RelativeTimetag),
        ("range_of_tracked_01_target", TargetVelocityMagnitude),
        ("target_01_position_x", TwsVelocity),
        ("target_01_position_y", TwsVelocity),
        ("target_01_position_z", TwsVelocity),
        ("target_01_velocity_magnitude", TargetVelocityMagnitude),
        ("target_01_velocity_x", TwsVelocity),
        ("target_01_velocity_y", TwsVelocity),
        ("target_01_velocity_z", TwsVelocity),
        ("time_tag_of_tracked_target_02_data", RelativeTimetag),
        ("range_of_tracked_02_target", TargetVelocityMagnitude),
        ("target_02_position_x", TwsVelocity),
        ("target_02_position_y", TwsVelocity),
        ("target_02_position_z", TwsVelocity),
        ("target_02_velocity_magnitude", TargetVelocityMagnitude),
        ("target_02_velocity_x", TwsVelocity),
        ("target_02_velocity_y", TwsVelocity),
        ("target_02_velocity_z", TwsVelocity)
    ]