S1005403_RisCC/cpp/DspRIS/sfp_dsp_ris.h

148 lines
2.0 KiB
C++

/*
* sfp_dsp_ris.h
*
*/
#ifndef SFP_DSP_RIS_H_
#define SFP_DSP_RIS_H_
#include "DspHeaderResults.h"
#include "sfp/sfp_types.h"
#include "sfp/sfp_helper.h"
namespace SFP_RIS
{
enum ris_chunk_tags_t
{
tag_sts_scenario='S',
tag_targets_db='T',
tag_header='H',
};
struct scenario_t
{
uint32_t timetag;
uint32_t flags;
uint32_t mode;
uint32_t spare_[8-(2+3)];
uint32_t cc_cookie;
uint32_t nav_timetag;
uint32_t nav_invalidity; //real time mask of nav_validity_flags_t;
enum nav_invalidity_flags_t
{
nav_geopos_invalid=(1<<0),
nav_altitude_invalid=(1<<1),
nav_attitude_invalid=(1<<2)
};
float platform_azimuth;
float vx;
float vy;
float vz;
float baro_altitude;
float true_heading;
float latitude;
float longitude;
float ant_nav_az;
float ant_nav_el;
uint32_t spare[16-9];
};
struct target_status_t
{
uint32_t flags;
float heading;
float x;
float y;
float z;
// float vx;
// float vy;
// float vz;
uint32_t spare[8-5];
};
enum { k_max_tgt=32};
struct target_db_t
{
uint32_t flags;
target_status_t tgt[k_max_tgt];
};
struct status_payload_t
{
SFP::data_tag_t scenario_tag;
scenario_t scenario;
SFP::data_tag_t target_tag;
target_db_t tgt;
};
struct status_message_t
{
SFP::frag_header_t header;
status_payload_t payload;
};
struct cc_sync_payload_t
{
uint32_t flags; //=0; don't reply immediately
uint32_t cc_cookie;
uint32_t ris_timetag;
int32_t tx_period_ms;
};
struct cc_ctrl_data_t
{
uint32_t features;
enum features_t
{
feat_disable=(1<<0),
feat_tgt_inject_signal=(1<<1),
feat_map_inject_signal=(1<<2)
};
uint32_t spare[32-(1+6)];
};
struct script_payload_t
{
//uint32_t ctrl[32];
SFP::data_tag_t sync_tag; //TAG="SY", 2w
cc_sync_payload_t sync;
SFP::data_tag_t ctrl_tag;
cc_ctrl_data_t ctrl;
SFP::data_tag_t script_tag;
int8_t script[1024];
};
struct script_message_t
{
SFP::frag_header_t header;
script_payload_t payload;
};
}
#endif /* SFP_DSP_RIS_H_ */