//!;;Rpy::+
//!;;Rpy::ModelElement: iddtypes::idd_avionic_types
//!;;Rpy::
//!;;Rpy::Component: IDDComponent 
//!;;Rpy::Configuration: IDDConfig
//!;;Rpy::Project: IDD
//!;;Rpy::
//!;;Rpy::FilePath: idd_avionic_types.h
//!;;Rpy::Tag: $Tag
//!;;Rpy::
//!;;Rpy::Copyright: Leonardocompany - COMPANY RESTRICTED
//!;;Rpy::
//!;;Rpy::Generated by Rhapsody: 7.5.3 
//!;;Rpy::-


#ifndef idd_avionic_types_H
#define idd_avionic_types_H

//## auto_generated
#include "iddtypes.h"
//## attribute direction_wrt_north
#include "idd_base_types.h"
//## dependency stdint
#include "stdint.h"
namespace iddtypes
{
    //## package iddtypes::idd_avionic_types
    
    
    //## type _wind_vector_t_
    struct _wind_vector_t_
    {
        radians_t direction_wrt_north;		//## attribute direction_wrt_north
        radians_per_sec_t speed;		//## attribute speed
    };
    
    //## type wind_vector_t
    typedef _wind_vector_t_ wind_vector_t;
    
    //## type _angular_position_vector_t_
    struct _angular_position_vector_t_
    {
        radians_t roll;		//## attribute roll
        radians_t pitch;		//## attribute pitch
        radians_t platform_azimuth;		//## attribute platform_azimuth
    };
    
    // The following are angular vectors which are structually
    // equivalent to allow generic functions for them 
    //## type angular_position_vector_t
    typedef _angular_position_vector_t_ angular_position_vector_t;
    
    //## type _attitude_timetags_t_
    struct _attitude_timetags_t_
    {
        timetag_t pitch;		//## attribute pitch
        timetag_t roll;		//## attribute roll
        timetag_t platform_azimuth;		//## attribute platform_azimuth
    };
    
    //## type attitude_timetags_t
    typedef _attitude_timetags_t_ attitude_timetags_t;
    
    //## type _attitude_t_
    struct _attitude_t_
    {
        radians_t true_heading;		//## attribute true_heading
        radians_t magnetic_heading;		//## attribute magnetic_heading
        angular_position_vector_t vector;		//## attribute vector
        validity_t validity;		//## attribute validity
        attitude_timetags_t timetags;		//## attribute timetags
    };
    
    //## type attitude_t
    typedef _attitude_t_ attitude_t;
    
    //## type _angular_accel_vector_t_
    struct _angular_accel_vector_t_
    {
        radians_per_sec2_t roll_accel;		//## attribute roll_accel
        radians_per_sec2_t pitch_accel;		//## attribute pitch_accel
        radians_per_sec2_t yaw_accel;		//## attribute yaw_accel
    };
    
    //## type _angular_rate_vector_t_
    struct _angular_rate_vector_t_
    {
        radians_per_sec_t roll_rate;		//## attribute roll_rate
        radians_per_sec_t pitch_rate;		//## attribute pitch_rate
        radians_per_sec_t yaw_rate;		//## attribute yaw_rate
    };
    
    //## type angular_accel_vector_t
    typedef _angular_accel_vector_t_ angular_accel_vector_t;
    
    //## type angular_rate_vector_t
    typedef _angular_rate_vector_t_ angular_rate_vector_t;
    
    //## type _altitude_t_
    struct _altitude_t_
    {
        metres_t data;		//## attribute data
        validity_t validity;		//## attribute validity
        timetag_t timetag;		//## attribute timetag
    };
    
    //## type altitude_t
    typedef _altitude_t_ altitude_t;
    
    //## type _cartesian_accel_vector_t_
    struct _cartesian_accel_vector_t_
    {
        metres_per_sec2_t x;		//## attribute x
        metres_per_sec2_t y;		//## attribute y
        metres_per_sec2_t z;		//## attribute z
    };
    
    //## type cartesian_accel_vector_t
    typedef _cartesian_accel_vector_t_ cartesian_accel_vector_t;
    
    //## type _acceleration_t_
    struct _acceleration_t_
    {
        cartesian_accel_vector_t vector;		//## attribute vector
        validity_t validity;		//## attribute validity
        timetag_t timetag;		//## attribute timetag
    };
    
    //## type acceleration_t
    typedef _acceleration_t_ acceleration_t;
    
    //## type _cartesian_position_vector_t_
    struct _cartesian_position_vector_t_
    {
        metres_t x;		//## attribute x
        metres_t y;		//## attribute y
        metres_t z;		//## attribute z
    };
    
    //## type _cartesian_velocity_vector_t_
    struct _cartesian_velocity_vector_t_
    {
        metres_per_sec_t x;		//## attribute x
        metres_per_sec_t y;		//## attribute y
        metres_per_sec_t z;		//## attribute z
    };
    
    //## type cartesian_position_vector_t
    typedef _cartesian_position_vector_t_ cartesian_position_vector_t;
    
    //## type cartesian_velocity_vector_t
    typedef _cartesian_velocity_vector_t_ cartesian_velocity_vector_t;
    
    //## type _attitude_accel_t_
    struct _attitude_accel_t_
    {
        angular_accel_vector_t vector;		//## attribute vector
        validity_t validity;		//## attribute validity
        timetag_t timetag;		//## attribute timetag
    };
    
    //## type _attitude_rate_t_
    struct _attitude_rate_t_
    {
        angular_rate_vector_t vector;		//## attribute vector
        validity_t validity;		//## attribute validity
        timetag_t timetag;		//## attribute timetag
    };
    
    //## type attitude_accel_t
    typedef _attitude_accel_t_ attitude_accel_t;
    
    //## type attitude_rate_t
    typedef _attitude_rate_t_ attitude_rate_t;
    
    //## type _ground_trk_t_
    struct _ground_trk_t_
    {
        angular_position_vector_t vector;		//## attribute vector
        validity_t validity;		//## attribute validity
        timetag_t timetag;		//## attribute timetag
    };
    
    //## type ground_trk_t
    typedef _ground_trk_t_ ground_trk_t;
    
    //## type _velocity_t_
    struct _velocity_t_
    {
        cartesian_velocity_vector_t vector;		//## attribute vector
        validity_t validity;		//## attribute validity
        timetag_t timetag;		//## attribute timetag
    };
    
    //## type velocity_t
    typedef _velocity_t_ velocity_t;
    
    //## type _true_air_speed_t_
    struct _true_air_speed_t_
    {
        metres_per_sec_t TAS_data;		//## attribute TAS_data
        validity_t validity;		//## attribute validity
        timetag_t timetag;		//## attribute timetag
    };
    
    //## type true_air_speed_t
    typedef _true_air_speed_t_ true_air_speed_t;
    
    //## type geo_pos_t
    struct geo_pos_t
    {
        validity_t validity;		//## attribute validity
        timetag_t timetag;		//## attribute timetag
        float latitude;		//## attribute latitude
        float longitude;		//## attribute longitude
    };
    
    //## type _inu_data_t
    struct _inu_data_t
    {
        velocity_t own_ship_velocity;		//## attribute own_ship_velocity
        acceleration_t own_ship_acceleration;		//## attribute own_ship_acceleration
        acceleration_t own_ship_long_accel;		//## attribute own_ship_long_accel
        attitude_t own_ship_attitude;		//## attribute own_ship_attitude
        attitude_rate_t own_ship_attitude_rate;		//## attribute own_ship_attitude_rate
        attitude_accel_t own_ship_attitude_accel;		//## attribute own_ship_attitude_accel
        true_air_speed_t true_air_speed;		//## attribute true_air_speed
        altitude_t radiometric_altitude;		//## attribute radiometric_altitude
        altitude_t inertial_altitude;		//## attribute inertial_altitude
        wind_vector_t wind_vector;		//## attribute wind_vector
        ground_trk_t own_ship_gtrk;		//## attribute own_ship_gtrk
        geo_pos_t geo_pos;		//## attribute geo_pos
    };
    
    //## type inu_data_t
    typedef _inu_data_t inu_data_t;
    
    //#[ type inu_data_filter_enum_t
    typedef enum CPP_ENUM_BASE(int) { e_nominal_filter, e_dbs_filter }  inu_data_filter_enum_t;
    //#]
    
    //## type inu_data_filter_t
    struct inu_data_filter_t
    {
        boolean navigation_invalid;		//## attribute navigation_invalid
        boolean attitude_invalid;		//## attribute attitude_invalid
        inu_data_filter_enum_t filter_kind;		//## attribute filter_kind
    };
    
    //#[ type iff_type_t
    typedef enum CPP_ENUM_BASE(uint32_t)
    {
        iff_off,
        iff_unknown,
        iff_friend,
        iff_foe
    } iff_type_t;
    //#]
    
    //#[ type iff_status_t
    typedef struct
    {
        bool       active;
        iff_type_t hpt;
        iff_type_t spt;
    } iff_status_t;
    //#]
}

#endif
//;;Rpy:: end


