// copyright 2013-2020 BAE Systems, Thales Group, Object Management Group Inc; 2013 Selex ES, DSTO, Atlas Elektronik, EADS Deutschland GmbH
#ifndef ORGOMGC4ISERVICE_INTERFACESSUBSYSTEM_SERVICESSIMULATION_SUPPORTCONTROL_SIMULATIONDEFVAR
#define ORGOMGC4ISERVICE_INTERFACESSUBSYSTEM_SERVICESSIMULATION_SUPPORTCONTROL_SIMULATIONDEFVAR
#include "Common_Types.idl"
#include "Requests.idl"
#include "Simulation_Support.idl"
module org
{
module omg
{
module c4i
{
module Service_Interfaces
{
module Subsystem_Services
{
module Simulation_Support
{
module Control_Simulation
{
// struct holding keys for class report_sim_mode_status_type.
struct report_sim_mode_status_key_type
{
org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
// Indicates which subsystem published the data or is intended to read it as a
// subscriber
org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
};
// Receive the status and mode of simulation.
// This service controls the simulation mode of a subsystem. This simulation mode is
// independent of the operational mode of the subsystem. Simulation mode is either
// ON or OFF. “ON” has different meanings for different kinds of subsystems.
// Effector type subsystems shall not engage real targets but shall simulate the
// engagement instead. Sensor type subsystems may be fed with simulated targets
// which shall be reported as plots or tracks. In each case while in simulation mode
// “ON” the subsystem shall strictly avoid any impact on the environment that could
// be the result if simulation mode was “OFF”.
// The actor is the Combat Management System.
// Basic Flow – Control simulation mode
// Start event – command of simulation-mode
// The service is triggered by the actor. The actor commands the simulation mode
// which may be one of the following:
//
// - ON: This indicates that the subsystem shall operate in simulation mode
// - OFF: This indicates that the subsystem shall stop operating in simulation
// mode and that any current simulation shall be terminated
//
// On occurrence of the trigger provision of subsystem-simulation-mode is executed.
// Provision of subsystem-simulation-mode
// After receipt of the simulation mode from the actor the subsystem responds with
// its subsystem simulation mode.
// The subsystem simulation mode may be one of the two:
//
// - ON: This indicates that the subsystem is operating in simulation mode
// - OFF: This indicates that the subsystem is not operating in simulation mode
//
//
// Basic Flow – Control Simulation (Start/Resume, Stop/Freeze)
// START/RESUME simulation scenario
// Only when in simulation mode ON:
// Upon provision of the START/RESUME command by the actor the simulation scenario
// starts or is resumed after a previously issued FREEZE.
// STOP/FREEZE simulation scenario
// Only when in simulation mode ON:
// Upon provision of the STOP/FREEZE command by the actor the simulation scenario
// stops or stays frozen.
// The service ends.
// Provision on initialization
// The simulation mode shall be provided by the actor after initialization of the
// CMS.
// The flow of information relevant to subsystem simulation are the subject of
// another service: Define simulation scenario.
// If simulation is stopped or frozen simulation time of the subsystem and the actor
// shall be also stopped.
// The synchronization of simulation time may be performed using START/RESUME
// command.
struct report_sim_mode_status_type
{
#ifdef DDS_XTYPES
@key org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
#else
org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
#endif
// Indicates which subsystem published the data or is intended to read it as a
// subscriber
#ifdef DDS_XTYPES
@key org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
#else
org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
#endif
org::omg::c4i::Domain_Model::Subsystem_Domain::Simulation_Support::sim_mode_status_type the_status;
};
#ifndef DDS_XTYPES
#pragma keylist report_sim_mode_status_type request_id subsystem_id
#endif
// struct holding keys for class start_resume_session_type.
struct start_resume_session_key_type
{
org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
// Indicates which subsystem published the data or is intended to read it as a
// subscriber
org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
};
// This request shall be initiated on demand of the CMS. If the subsystem is in
// simulation mode it shall start/resume its simulation session and acknowledges the
// request.
struct start_resume_session_type
{
#ifdef DDS_XTYPES
@key org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
#else
org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
#endif
// Indicates which subsystem published the data or is intended to read it as a
// subscriber
#ifdef DDS_XTYPES
@key org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
#else
org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
#endif
};
#ifndef DDS_XTYPES
#pragma keylist start_resume_session_type request_id subsystem_id
#endif
// struct holding keys for class start_stop_sim_mode_type.
struct start_stop_sim_mode_key_type
{
org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
// Indicates which subsystem published the data or is intended to read it as a
// subscriber
org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
};
// This request shall be initiated on demand of the CMS to activate/deactivate the
// simulation mode of the subsystem. The subsystem needs to acknowledge the request.
struct start_stop_sim_mode_type
{
#ifdef DDS_XTYPES
@key org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
#else
org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
#endif
// Indicates which subsystem published the data or is intended to read it as a
// subscriber
#ifdef DDS_XTYPES
@key org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
#else
org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
#endif
org::omg::c4i::Domain_Model::Subsystem_Domain::Simulation_Support::start_stop_sim_mode_request_type the_request;
};
#ifndef DDS_XTYPES
#pragma keylist start_stop_sim_mode_type request_id subsystem_id
#endif
// struct holding keys for class stop_freeze_session_type.
struct stop_freeze_session_key_type
{
org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
// Indicates which subsystem published the data or is intended to read it as a
// subscriber
org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
};
// This request shall be initiated on demand of the CMS. If the subsystem is in
// simulation mode and the session state is running the subsystem needs to
// stop/freeze its session and acknowledges the request.
struct stop_freeze_session_type
{
#ifdef DDS_XTYPES
@key org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
#else
org::omg::c4i::Domain_Model::Common_Types::Requests::request_id_type request_id;
#endif
// Indicates which subsystem published the data or is intended to read it as a
// subscriber
#ifdef DDS_XTYPES
@key org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
#else
org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id;
#endif
org::omg::c4i::Domain_Model::Subsystem_Domain::Simulation_Support::stop_freeze_session_request_type the_request;
};
#ifndef DDS_XTYPES
#pragma keylist stop_freeze_session_type request_id subsystem_id
#endif
};
};
};
};
};
};
};
#endif