// copyright 2013-2020 BAE Systems, Thales Group, Object Management Group Inc; 2013 Selex ES, DSTO, Atlas Elektronik, EADS Deutschland GmbH
#ifndef ORGOMGC4ISERVICE_INTERFACESSUBSYSTEM_SERVICESSUBSYSTEM_CONTROLMANAGE_TECHNICAL_STATEDEFVAR
#define ORGOMGC4ISERVICE_INTERFACESSUBSYSTEM_SERVICESSUBSYSTEM_CONTROLMANAGE_TECHNICAL_STATEDEFVAR
#include "Common_Types.idl"
#include "Requests.idl"
#include "Subsystem_Control.idl"
module org
{
module omg
{
module c4i
{
module Service_Interfaces
{
module Subsystem_Services
{
module Subsystem_Control
{
// Contains operations and sequence diagrams for the Manage Technical State
// interface.
module Manage_Technical_State
{
// Interface used by CMS to receive periodic technical state reports from the
// subsystem.
// Manage Technical State causes the subsystem to provide or change its technical
// state.
// Special Requirements:
// Initialization: Upon initialization, reset or power-on, the sub-system shall
// transition to a pre-defined state and report the current state to the CMS.
// Additional Information:
// If a critical component of the subsystem becomes NOT AVAILABLE, the technical
// state shall transition to FAILED.
// All states may transition to OFFLINE, but the subsystem shall only do so in
// emergency situations or catastrophic damage, to indicate an uncontrolled shutdown
// Startup, Shutdown, and Restart explain the sequence of
// actions for nominal progression through the technical states.
struct receive_periodic_technical_state_type
{
org::omg::c4i::Domain_Model::Subsystem_Domain::Subsystem_Control::technical_state_type technical_state;
// 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 receive_periodic_technical_state_type subsystem_id
#endif
// struct holding keys for class receive_technical_state_type.
struct receive_technical_state_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;
};
// Interface used by CMS to receive technical state reports from the subsystem which
// were the result of a transition request from the CMS.
// Manage Technical State causes the subsystem to provide or change its technical
// state.
// Special Requirements:
// Initialization: Upon initialization, reset or power-on, the sub-system shall
// transition to a pre-defined state and report the current state to the CMS.
// Additional Information:
// If a critical component of the subsystem becomes NOT AVAILABLE, the technical
// state shall transition to FAILED.
// All states may transition to OFFLINE, but the subsystem shall only do so in
// emergency situations or catastrophic damage, to indicate an uncontrolled shutdown
// Startup, Shutdown, and Restart explain the sequence of
// actions for nominal progression through the technical states.
struct receive_technical_state_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::Subsystem_Control::technical_state_type technical_state;
};
#ifndef DDS_XTYPES
#pragma keylist receive_technical_state_type request_id subsystem_id
#endif
// struct holding keys for class change_technical_state_type.
struct change_technical_state_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;
};
// Interface used by the subsystem to receive requests from the CMS to change its
// technical state.
struct change_technical_state_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::Subsystem_Control::technical_state_type technical_state;
};
#ifndef DDS_XTYPES
#pragma keylist change_technical_state_type request_id subsystem_id
#endif
// struct holding keys for class provide_technical_state_type.
struct provide_technical_state_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;
};
// Interface used by the subsystem to receive requests from the CMS to provide its
// current technical state.
struct provide_technical_state_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 provide_technical_state_type request_id subsystem_id
#endif
};
};
};
};
};
};
};
#endif