// copyright 2013-2020 BAE Systems, Thales Group, Object Management Group Inc; 2013 Selex ES, DSTO, Atlas Elektronik, EADS Deutschland GmbH
#ifndef ORGOMGC4ISERVICE_INTERFACESSENSOR_SERVICESSENSOR_PERFORMANCEPROVIDE_PERFORMANCE_ASSESSMENTDEFVAR
#define ORGOMGC4ISERVICE_INTERFACESSENSOR_SERVICESSENSOR_PERFORMANCEPROVIDE_PERFORMANCE_ASSESSMENTDEFVAR
#include "Common_Types.idl"
#include "Requests.idl"
#include "Sensor_Performance.idl"
module org
{
  module omg
  {
    module c4i
    {
      module Service_Interfaces
      {
        module Sensor_Services
        {
          module Sensor_Performance
          {
            module Provide_Performance_Assessment
            {
              // struct holding keys for class performance_assessment_response_type.
              struct performance_assessment_response_key_type
              {
                // The unique identifier for this assessment. This identifier is supplied by the CMS
                // when the assessment is requested.
                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;
              };
              // The subsystem responds to the previous performance assessment request with its
              // assessment of the requested aspect of actual performance.
              // This is incremental to Register Interest, which deals with the
              // subscription to subsystem functions and Provide Nominal Performance which
              // provides the subsystem nominal performance. This interface reports the real-time
              // performance of the available subsystem functions against the goals of the
              // mission. The reported performance is that currently being attained by the
              // subsystem subject to the current operating regime and environmental conditions,
              // including any clutter and jamming and taking account of any
              // mitigation/cancellation of such effects by the subsystem. 
              // This interface is aimed at a subsystem such as an MFR radar. Information is
              // provided to the Command function allowing decisions to be made on the achieved
              // performance, which is often considerably different to the anticipated performance
              // level as reported through the Provide Nominal Performance Service. 
              // The most basic example of performance would be reporting of the radar coverage,
              // in elevation, azimuth and range, for the current operating regime and
              // environmental conditions. This would take account of any clutter and jamming
              // present. Other examples might be that the actor requests the probability of
              // detection for a specified target type or perhaps the probability of correct
              // automatic classification of such a target within a specified range under current
              // environmental conditions N.B. if the radar is operating in an appropriate mode
              // then real-time clutter and/or jamming data might be available to the radar
              // subsystem. Otherwise the actor would have to supply any known data to the
              // subsystem for performance assessment (see Receive Encyclopaedic Data and Receive
              // Geographic Information). If no environmental data is specified then the design
              // performance would be reported.
              struct performance_assessment_response_type
              {
                // The unique identifier for this assessment. This identifier is supplied by the CMS
                // when the assessment is requested.
#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
                // The details of the assessment
                org::omg::c4i::Domain_Model::Sensor_Domain::Sensor_Performance::performance_assessment_report_type performance_assessment;
              };
#ifndef DDS_XTYPES
#pragma keylist performance_assessment_response_type request_id subsystem_id
#endif
              // struct holding keys for class performance_assessment_request_type.
              struct performance_assessment_request_key_type
              {
                // The unique identifier for this assessment. This identifier is contained in all
                // related replies from the sensor.
                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;
              };
              // The CMS requests assessment of actual performance of the subsystem. The aspect of
              // performance requested is a parameter of the request.
              // Subsystem interface for provision of current performance assessment.
              // Note that the coordinates are always polar for this service and that the origin
              // is always the sensor reference point as per the coordinates and positions
              // package.
              struct performance_assessment_request_type
              {
                // The unique identifier for this assessment. This identifier is contained in all
                // related replies from the sensor.
#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
                // Details of the assessment
                org::omg::c4i::Domain_Model::Sensor_Domain::Sensor_Performance::performance_assessment_parameters_type request;
              };
#ifndef DDS_XTYPES
#pragma keylist performance_assessment_request_type request_id subsystem_id
#endif
            };
          };
        };
      };
    };
  };
};
#endif