/***************************************************************************
                     FILE INFORMATION HEADER                              
                     -----------------------                                 

    a.  PROJECT NAME:       GRIFO_S7  P2813         
    b.  ITEM TYPE               
    c.  ITEM NAME:              avionic_types.h
    d.  ITEM REFERENCE:          
    e.  CURRENT VERSION:        1.2
    f.  DATE:                   5/4/98
    g.  SOURCE FILE LOCATION:   /sparc-2/library/sr3b_end/dati/common/cmn_dt/s.avionic_types.h
    h.  'C' RELEASE:            2.11
    i.  ITEM DESCRIPTION:       It contains commonly used avionic data types.
    j.  DOCUMENTATION REFERENCES:     
    k.  PROGRAMMER NAME(S):     B.Bontempi
				S.R.Curtis 
    l.  COPYRIGHT:              FIAR    
    m.  REVISION HISTORY:       07-11-01 - Baseline copied from 3B.86 R3K Metis radar version 
  
 ***************************************************************************/

#ifndef avionic_types_defined
//## attribute ::types_reverse::TopLevel.avionic_types_defined
const RhpString avionic_types_defined;

//## dependency base_types
#include "base_types.h"
namespace legacy
{
    //## type _position_t_
    struct _position_t_
    {
        cartesian_position_vector_t vector;		//## attribute vector
        validity_t validity;		//## attribute validity
        timetag_t timetag;		//## attribute timetag
    };
    
    // **** Common Avionic datatypes. ****
    //## type position_t
    typedef _position_t_ position_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 _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 _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 _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_rate_t
    typedef _attitude_rate_t_ attitude_rate_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_accel_t
    typedef _attitude_accel_t_ attitude_accel_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 _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 _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 _wind_vector_t_
    struct _wind_vector_t_
    {
        radians_t direction_wrt_north;		//## attribute direction_wrt_north
        metres_per_sec_t speed;		//## attribute speed
    };
    
    //## type wind_vector_t
    typedef _wind_vector_t_ wind_vector_t;
    
    //## 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
    };
    
    //## type inu_data_t
    typedef _inu_data_t inu_data_t;
    
    //## type _velocity_state_t_
    struct _velocity_state_t_
    {
        timetag_t timetag;		//## attribute timetag
        filter_vector_t x;		//## attribute x
        filter_vector_t y;		//## attribute y
        filter_vector_t z;		//## attribute z
    };
    
    //## type velocity_state_t
    typedef _velocity_state_t_ velocity_state_t;
    
    //## type _attitude_state_t_
    struct _attitude_state_t_
    {
        timetag_t timetag;		//## attribute timetag
        filter_vector_t plat_az;		//## attribute plat_az
        filter_vector_t pitch;		//## attribute pitch
        filter_vector_t roll;		//## attribute roll
    };
    
    //## type attitude_state_t
    typedef _attitude_state_t_ attitude_state_t;
    
    //## type _gtrk_state_t_
    struct _gtrk_state_t_
    {
        timetag_t timetag;		//## attribute timetag
        filter_vector_t ground_track;		//## attribute ground_track
    };
    
    //## type gtrk_state_t
    typedef _gtrk_state_t_ gtrk_state_t;
    
    //## type _inu_filter_cmn_t_
    struct _inu_filter_cmn_t_
    {
        validity_t validity;		//## attribute validity
        velocity_state_t velocity_state;		//## attribute velocity_state
        attitude_state_t attitude_state;		//## attribute attitude_state
        // *   gtrk_state_t         gtrk_state;  ** deleted for SR2 
        // added for SR3 
        radians_t dive_angle;		//## attribute dive_angle
    };
    
    //## type inu_filter_cmn_t
    typedef _inu_filter_cmn_t_ inu_filter_cmn_t;
}

/* modified name for SR2 */

namespace legacy
{
    //## type _inu_filter_hist_t_
    struct _inu_filter_hist_t_
    {
        /* added for SR2 */
        
        timetag_t timetag;		//## attribute timetag
        radians_t gtrk_angle;		//## attribute gtrk_angle
        radians_t az_scan_centre;		//## attribute az_scan_centre
    };
    
    //## type inu_filter_hist_t
    typedef _inu_filter_hist_t_ inu_filter_hist_t;
}

/* modified name in SR3 */

namespace legacy
{
    //## type _inu_filter_data_t_
    struct _inu_filter_data_t_
    {
        /* modified for SR2 */
        
        inu_filter_cmn_t inu_filter_cmn;		//## attribute inu_filter_cmn
        inu_filter_hist_t inu_filter_hist;		//## attribute inu_filter_hist
    };
    
    //## type inu_filter_data_t
    typedef _inu_filter_data_t_ inu_filter_data_t;
}

#endif
