// 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