SXXXXXXX_RadarDataReader/_src_cpp/IDD/files/idd_softsc.h
VALLONGOL 5de2650675 add
2025-11-12 13:43:30 +01:00

196 lines
4.7 KiB
C++

//!;;Rpy::+
//!;;Rpy::ModelElement: idd_softsc
//!;;Rpy::
//!;;Rpy::Component: IDDComponent
//!;;Rpy::Configuration: IDDConfig
//!;;Rpy::Project: IDD
//!;;Rpy::
//!;;Rpy::FilePath: idd_softsc.h
//!;;Rpy::Tag: $Tag
//!;;Rpy::
//!;;Rpy::Copyright: Leonardocompany - COMPANY RESTRICTED
//!;;Rpy::
//!;;Rpy::Generated by Rhapsody: 7.5.3
//!;;Rpy::-
#ifndef idd_softsc_H
#define idd_softsc_H
//## dependency rtg_compiler
#include <rtg_compiler.h>
//## dependency stdint
#include <stdint.h>
namespace idd_softsc
{
//## package idd_softsc
//## type sc_image_sample_t
typedef unsigned char sc_image_sample_t;
//## type sc_polar_sample_t
typedef unsigned char sc_polar_sample_t;
//#[ type sc_image_descriptor_t
struct sc_image_descriptor_t
{
uint32_t valid_bpp; //0=invalid, 1=8bits per pixel, 2=16bits per pixel, >2: invalid
uint32_t clear;
uint32_t dx;
uint32_t dy;
uint32_t ox;
uint32_t oy;
uint32_t rows;
uint32_t stride;
uint32_t spare[8];
};
//#]
//#[ type sc_mode_t
enum sc_mode_t CPP_ENUM_BASE(int)
{
sc_disable=0, sc_test=1, sc_polar, sc_image, sc_oscilloscope
};
//#]
//#[ type sc_cmd_t
struct sc_cmd_t
{
uint32_t mode;
enum sc_mode_t { sc_disable=0, sc_test=1, sc_polar, sc_image, sc_oscilloscope};
uint32_t sc_mode;
uint32_t rbins;
float rbin_meters;
//Antenna
uint32_t bar_number;
float scan_center;
float azimuth;
float elevation;
int32_t ant_direction;
uint32_t ant_progress;
float az_limit_left;
float az_limit_right;
float range_scale;
float platform_azimuth;
float vx;
float vy;
float ant_u;
float ant_v;
int bar_progress;
int frame_progress;
enum palet_t { palet_auto, palet_dbs, palet_rbm, palet_wa, palet_ta, palet_grayscale};
uint32_t palet_type;
unsigned int image_counter;
float image_cit;
unsigned int batch;
uint32_t spare__[2];
sc_image_descriptor_t image_descriptor;
}
;
//#]
//#[ type sc_sweep_samples_t
struct sc_sweep_samples_t
{
enum { sweep_max_rbins=4096};
unsigned int valid;
float azimuth;
unsigned int samples;
unsigned int spare[2];
uint8_t data[sweep_max_rbins];
};
//#]
// Meaning of row and columns depend on the mode:
// - polar: rows= number of sweep, columns= number of sample per sweep - signal size = rows*columns
// - image: rows= cross range dimension, columns=range - again signal size =rows*columns
//## type sc_signal_description_t
struct sc_signal_description_t
{
int rows; //## attribute rows
int columns; //## attribute columns
float max_level; //## attribute max_level
};
// The signal data type is a variant type. Its real contents depend on the mode. Also the real size depend on ravious parameters. This structure defines only a base "placeholder".
// The responsability of reinterpret the data and dimension is to the consumer
//#[ type sc_signal_data_t
struct sc_signal_data_t
{
const void* rawData() const { return &data_placeholder[0];}
const sc_polar_sample_t* polarData() const { return reinterpret_cast<const sc_polar_sample_t*>(&data_placeholder[0]);}
const sc_image_sample_t* imageData() const { return reinterpret_cast<const sc_image_sample_t*>(&data_placeholder[0]);}
private:
unsigned int data_placeholder[1];
}
;
//#]
//#[ type sc_sweep_radials_t
struct sc_sweep_radials_t
{
enum {max_radials=32};
unsigned int valid_radials;
sc_sweep_samples_t sweep[max_radials];
};
//#]
//#[ type sc_geo_info_t
struct sc_geo_info_t
{
int valid;
float latitude;
float longitude;
float true_heading;
float image_resolution;
uint32_t spare[8];
};
//#]
//#[ type sc_data_t
struct sc_data_t
{
enum {msg_enable_marker=0x12345678, msg_max=2, msg_max_len=32};
sc_cmd_t header;
unsigned int msg_enable_;
char info_msg_[msg_max][msg_max_len];
sc_geo_info_t geo_info;
uint32_t spare[128];
uint32_t align_reserved[256/sizeof(uint32_t)]; //WARNING: reserved from radial cache line alignment!!!
sc_sweep_radials_t radials; //Note: this could also be an image, depending on the sc_mode
};
//#]
}
#endif
//;;Rpy:: end