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


#ifndef idd_acquisition_types_H
#define idd_acquisition_types_H

//## auto_generated
#include "iddtypes.h"
//## dependency idd_antenna_types
#include "idd_antenna_types.h"
//## dependency idd_base_types
#include "idd_base_types.h"
//## dependency idd_mode_types
#include "idd_mode_types.h"
//## dependency idd_waveform_types
#include "idd_waveform_types.h"
//## dependency stdint
#include "stdint.h"
namespace iddtypes
{
    //## package iddtypes::idd_acquisition_types
    
    
    //#[ type waveforms_and_scan_rates_t
    typedef struct {
      waveform_t  waveform;
      scan_rate_t scan_rate;
    } waveforms_and_scan_rates_t;
    //#]
    
    //#[ type acq_qualifier_t
    typedef enum CPP_ENUM_BASE(uint32_t)
    {
      acq_invalid_qual,
      acq_for_vs,
      acq_for_stt,
      acq_for_sam,
      acq_for_sam_on_new_hpt,
      acq_for_dtt,
      acq_for_sstt,
      acq_for_smtt,
      acq_for_gmtt,
      aoj_for_sam,
      aoj_for_stt,
      acq_for_ftt,
      acq_for_sar
    } acq_qualifier_t;
    
    #define ACQ_QUALIFIER_T_MIN  iddtypes::acq_invalid_qual
    #define ACQ_QUALIFIER_T_MAX  iddtypes::acq_for_sar
    #define ACQ_QUALIFIER_T_SIZE (ACQ_QUALIFIER_T_MAX-ACQ_QUALIFIER_T_MIN+1)
    //#]
    
    //#[ type acq_scan_par_t
    typedef struct {
      radians_per_sec_t bar_scan_rate;
      radians_t         scan_width;
      bar_number_t      no_of_bars;
      radians_t         normal_bar_dist;
    } acq_scan_par_t;
    //#]
    
    //#[ type acq_scan_t
    #define ACQ_SCAN_PAR_SIZE 2
    
    typedef struct {
      unsigned int   max_phases;
      float          elevation;
      float          azimuth;
      float          scan_time;
      timetag_t      timetag;
      acq_scan_par_t par[ACQ_SCAN_PAR_SIZE];
    } acq_scan_t;
    //#]
    
    //#[ type acq_object_t
    typedef enum CPP_ENUM_BASE(uint32_t)
    {
      acq_target,
      acq_jammer
    } acq_object_t;
    //#]
    
    //#[ type designated_target_t
    struct designated_target_t {
      acq_qualifier_t designation_mode; 
      timetag_t         target_time_tag;  
      metres_t          target_rng;   
      radians_t         target_az;
      radians_t         target_el;
      metres_per_sec_t  target_rng_rate; 
      validity_t        target_rng_rate_val;   
      pure_number_t     target_amplitude; 
      waveform_t        waveform;
      range_scale_t     range_scale;
      metres2_t         target_range_variance;  
      float             target_sdr;
      uint32_t          nfft_total;
      float             target_tx_chan_mhz;
      monopulse_validity_t monopulse_valid;     
      float             target_u;
      float             target_v;
      range_bin_t       prt;
      
      float target_altitude;
      float target_latitude;
      float target_longitude;
      
      uint32_t          spare_[15-3];
    };
    
    //#]
    
    //#[ type acquisition_setup_data_t
    #define MIN_NUM_OF_SEARCH_PHASE 1
    #define MAX_NUM_OF_SEARCH_PHASE 2
    
    struct acquisition_setup_data_t
    {
      designated_target_t         designated_target;
      unsigned int                max_num_of_search_phase;
      waveforms_and_scan_rates_t  waveforms_and_scan_rates[MAX_NUM_OF_SEARCH_PHASE];
    };
    
    //#]
}

#endif
//;;Rpy:: end


