[openrtm-commit:01312] r2507 - branches/work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests

openrtm @ openrtm.org openrtm @ openrtm.org
2014年 2月 17日 (月) 00:55:32 JST


Author: win-ei
Date: 2014-02-17 00:55:32 +0900 (Mon, 17 Feb 2014)
New Revision: 2507

Added:
   branches/work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/RTC.ice
Log:
Added ICE file.Eventually, this file is due to be generated by the doil back-end of omniidl..

Added: branches/work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/RTC.ice
===================================================================
--- branches/work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/RTC.ice	                        (rev 0)
+++ branches/work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/RTC.ice	2014-02-16 15:55:32 UTC (rev 2507)
@@ -0,0 +1,2653 @@
+// RTC.idl
+
+#ifndef RTC_IDL
+#define RTC_IDL
+
+#include "SDOPackage.ice"
+
+//#pragma prefix "omg.org"
+
+
+
+module RTC
+{
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ExecutionContextHandle_t
+   *
+   * @section Description
+   *
+   * This data type represents the association between an RTC and an
+   * ExecutionContext in which it participates.
+   * 
+   * @section Semantics
+   *
+   * This is an opaque DataType. It has no attributes or operations.
+   *
+   * @endif
+   */
+  
+
+  
+  //SDOPackage::NVList NVList;
+  
+  /*!
+   * @if jp
+   * @brief ReturnCode_t
+   *
+   * OMG RTC 1.0 仕様中の多くのオペレーションは、クラインとに対して考え
+   * られるエラー状態を報告する必要がある。これは、ReturnCode_t型の所謂
+   * リターンコードにより行われる。
+   *
+   * OMG RTC 1.0 の PIM 内において、ReturnCode_t型の値を返さないオペレーションは
+   * それらの戻り値の型に依存して、次の方法によりエラーを報告するものとする。
+   * -オペレーションが正数値を返す場合 (OMG RTC 1.0 Section 5.2.2.6.4 の
+   *  get_rateのように)、負数値を返すことによりエラーを示すものとする。
+   * - オペレーションがオブジェクトリファレンス(RTObject::get_component_profile
+   *   OMG RTC 1.0 5.4.2.2.1を参照) を通常返す場合、nil参照を返すことにより
+   *   エラーを示すものとする。
+   *
+   * @else
+   * @brief ReturnCode_t
+   *
+   * A number of operations in this specification will need to report
+   * potential error conditions to their clients. This task shall be
+   * accomplished by means of operation "return codes" of type
+   * ReturnCode_t
+   *
+   * Operations in the PIM that do not return a value of type
+   * ReturnCode_t shall report errors in the following ways, depending
+   * on their return type:
+   * - If an operation normally returns a positive numerical value (such as
+   *   get_rate, see [OMG RTC 1.0 Section 5.2.2.6.4]), it shall indicate
+   *   failure by returning a negative value.
+   * - If an operation normally returns an object reference (such as
+   *   RTObject::get_component_profile, see [OMG RTC 1.0 Section 5.4.2.2.1]),
+   *   it shall indicate failure by returning a nil reference.
+   *
+   * @param RTC_OK The operation completed successfully.
+   * @param RTC_ERROR The operation failed with a generic, unspecified error.
+   * @param BAD_PARAMETER The operation failed because an illegal argument was
+   *        passed to it.
+   * @param UNSUPPORTED The operation is unsupported by the implementation
+   *        (e.g., it belongs to a compliance point that is not implemented).
+   * @param OUT_OF_RESOURCES The target of the operation ran out of the
+   *        resources needed to complete the operation.
+   * @param PRECONDITION_NOT_MET A pre-condition for the operation was not met.
+   *
+   * @endif
+   */
+  enum ReturnCode_t
+  {
+    RTC_OK,
+    RTC_ERROR,
+    BAD_PARAMETER,
+    UNSUPPORTED,
+    OUT_OF_RESOURCES,
+    PRECONDITION_NOT_MET
+  };
+
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief LifeCycleState
+   *
+   * @section Description
+   * LifeCycleState is an enumeration of the states in the lifecycle above.
+   *
+   * @endif
+   */
+  enum LifeCycleState
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief CREATED
+     *
+     * @section Description
+     *
+     * The RTC object has been instantiated but not yet fully initialized.
+     * @endif
+     */
+    CREATED_STATE,
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief INACTIVE
+     *
+     * @section Description
+     *
+     * The RTC is Alive but is not being invoked in any execution
+     * context (see Section 5.2.2.5), regardless of whether the context
+     * is Running or not.
+     *
+     * @section Semantics
+     *
+     * An instance of this state exists for each execution context in
+     * which the RTC participates. If the RTC does not participate in
+     * any execution context, a single instance of this state exists.
+     *
+     * @endif
+     */
+    INACTIVE_STATE,
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief ACTIVE
+     *
+     * @section Description
+     *
+     * The RTC is Alive and will be invoked in the execution context
+     * if the context is Running.
+     *
+     * @section Semantics
+     * 
+     * An instance of this state exists for each execution context in
+     * which the RTC participates. If the RTC does not participate in
+     * any execution context, this state shall never be observed.
+     *
+     * @endif
+     */
+    ACTIVE_STATE,
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief ERROR
+     *
+     * @section Description
+     *
+     * The RTC has encountered a problem in a given execution context
+     * and cannot continue functioning in that context without being
+     * reset.
+     *
+     * @endif
+     */
+    ERROR_STATE
+  };
+  
+  interface ExecutionContext;
+    sequence<ExecutionContext> ExecutionContextList;
+
+  /*!
+   * @if jp
+   * @brief
+   * @else
+   * @brief ComponentAction
+   *
+   * @section Description
+   *
+   * The ComponentAction interface provides callbacks corresponding to
+   * the execution of the lifecycle operations of LightweightRTObject
+   * (see Section 5.2.2.2) and ExecutionContext (see Section
+   * 5.2.2.5). An RTC developer may implement these callback
+   * operations in order to execute application-specific logic
+   * pointing response to those transitions.
+   *
+   * @section Semantics
+   *
+   * Clients of an RTC are not expected to invoke these operations
+   * directly; they are provided for the benefit of the RTC middleware
+   * implementation.
+   *
+   * @endif
+   */
+  interface ComponentAction
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_initialize
+     *
+     * @section Description
+     *
+     * The RTC has been initialized and entered the Alive state.
+     *
+     * @section Semantics
+     *
+     * Any RTC-specific initialization logic should be performed here.
+     *
+     * @endif
+     */
+    ReturnCode_t on_initialize();
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_finalize
+     *
+     * @section Description
+     *
+     * The RTC is being destroyed.
+     *
+     * @section Semantics
+     *
+     * Any final RTC-specific tear-down logic should be performed here.
+     *
+     * @endif
+     */
+    ReturnCode_t on_finalize();
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_startup
+     *
+     * @section Description
+     *
+     * The given execution context, in which the RTC is participating,
+     * has transitioned from Stopped to Running.
+     *
+     * @endif
+     */
+    ReturnCode_t on_startup( long exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_shutdown
+     *
+     * @section Description
+     *
+     * The given execution context, in which the RTC is participating,
+     * has transitioned from Running to Stopped.
+     *
+     * @endif
+     */
+    ReturnCode_t on_shutdown( long exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_activated
+     *
+     * @section Description
+     *
+     * The RTC has been activated in the given execution context.
+     *
+     * @endif
+     */
+    ReturnCode_t on_activated( long exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_deactivated
+     *
+     * @section Description
+     *
+     * The RTC has been deactivated in the given execution context.
+     *
+     * @endif
+     */
+    ReturnCode_t on_deactivated( long exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_aborting
+     *
+     * @section Description
+     *
+     * The RTC is transitioning from the Active state to the Error
+     * state in some execution context.
+     *
+     * @section Semantics
+     *
+     * This callback is invoked only a single time for time that the
+     * RTC transitions into the Error state from another state. This
+     * behavior is in contrast to that of on_error.  
+     *
+     * @endif
+     */
+    ReturnCode_t on_aborting( long exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_error
+     *
+     * @section Description
+     *
+     * The RTC remains in the Error state.
+     *
+     * @section Semantics
+     *
+     * If the RTC is in the Error state relative to some execution
+     * context when it would otherwise be invoked from that context
+     * (according to the context’s ExecutionKind), this callback
+     * shall be invoked instead. For example,
+     *
+     * - If the ExecutionKind is PERIODIC, this operation shall be
+     *   invoked in sorted order at the rate of the context instead of
+     *   DataFlowComponentAction::on_execute and on_state_update.
+     *
+     * - If the ExecutionKind is EVENT_DRIVEN, this operation shall be
+     *   invoked whenever FsmParticipantAction::on_action would
+     *   otherwise have been invoked.
+     *
+     * @endif
+     */
+    ReturnCode_t on_error( long exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_reset
+     *
+     * @section Description
+     *
+     * The RTC is in the Error state. An attempt is being made to
+     * recover it such that it can return to the Inactive state.
+     *
+     * @section Semantics
+     *
+     * If the RTC was successfully recovered and can safely return to
+     * the Inactive state, this method shall complete with
+     * ReturnCode_t::OK. Any other result shall indicate that the RTC
+     * should remain in the Error state.
+     *
+     * @endif
+     */
+    ReturnCode_t on_reset( long exec_handle);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief LightweightRTObject
+   * 
+   * @section Description
+   *
+   * This interface is realized by all lightweight RTCs (as required
+   * by the lightweightRTComponent stereotype). It defines the states
+   * and transitions through which all RTCs will pass from the time
+   * they are created until the time they are destroyed.
+   *
+   * @section Semantics
+   * @subsection Initialization
+   *
+   * An RTC begins in the Created state; at this point, it has been
+   * instantiated but not yet fully initialized. Note that this state
+   * is highly implementation-dependent. For example, it may
+   * correspond to the invocation of a constructor in languages that
+   * support that concept, but not all languages do. Furthermore, how
+   * soon this state is entered before initialize is invoked is
+   * implementation-dependent. Therefore, it should be relied on by
+   * RTC implementers only to the minimum extent possible.  An RTC
+   * that has completed its initialization and has not been finalized
+   * is said to be Alive.
+   *
+   * @subsection Execution Context
+   *
+   * An RTC in the Alive state may participate in any number of
+   * execution contexts (see Section 5.2.2.5 ). These contexts shall
+   * be represented to an RTC as distinct instances of the
+   * ExecutionContext class. The ExecutionContext manages the behavior
+   * of each RTC that participates in it. This relationship is defined
+   * by the following state machine, which is embedded within the
+   * ExecutionContext's own lifecycle (see Figure 5.5 ). Each
+   * participating RTC is represented as a separate parallel region.
+   *
+   * Relative to a given execution context, an RTC may either be
+   * Active, Inactive, or in Error. When the RTC is Active in a
+   * Running execution context, the ComponentAction callbacks (see
+   * Section 5.2.2.4) shall be invoked as appropriate for the context’
+   * s ExecutionKind. The callbacks shall not be invoked relative to
+   * that context when either the RTC is Inactive in that context or
+   * the context is Stopped. (Note that starting and stopping an
+   * execution context shall not impact whether its participating RTCs
+   * are Active or Inactive.)  It may be that a given RTC does not
+   * directly participate in any execution contexts. Such an RTC is
+   * referred to as passive.  A passive RTC may provide services to
+   * other components upon request. At any other time, it shall not be
+   * required to perform any ongoing activity of its own; therefore,
+   * instances of such an RTC typically exist only as parts (directly
+   * or indirectly) of a containing active RTC.
+   *
+   * @subsection Error Handling
+   *
+   * If an operation fails while the RTC is Active in a given
+   * execution context, the RTC will transition to the Error state
+   * corresponding to that context. While the RTC is in Error, the
+   * ComponentAction::on_error callback will be invoked in place of
+   * those callbacks that would otherwise have been invoked according
+   * to the context’s ExecutionKind. For example, if the kind is
+   * PERIODIC, on_error shall be invoked instead of the pair of
+   * on_execute, and on_state_update.  When an RTC is in Error, it may
+   * be reset. If resetting is successful, the RTC shall return to the
+   * Inactive state. If resetting is unsuccessful, it shall remain in
+   * the Error state.
+   * 
+   * @endif
+   */
+  interface LightweightRTObject
+    extends  ComponentAction
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief initialize
+     *
+     * @section Description
+     * Initialize the RTC that realizes this interface.
+     *
+     * @section Semantics
+     * The invocation of this operation shall result in the invocation
+     * of the callback ComponentAction::on_initialize.
+     *
+     * @section Constraints
+     *
+     * - An RTC may be initialized only while it is in the Created
+     *   state. Any attempt to invoke this operation while in another
+     *   state shall fail with ReturnCode_t::PRECONDITION_NOT_MET.
+     * - Application developers are not expected to call this operation
+     *   directly; it exists for use by the RTC infrastructure.
+     *
+     * @endif
+     */
+    ReturnCode_t initialize();
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief finalize
+     *
+     * @section Description
+     *
+     * Finalize the RTC that realizes this interface, preparing it for
+     * destruction.
+     *
+     * @section Semantics
+     *
+     * This invocation of this operation shall result in the
+     * invocation of the callback ComponentAction::on_finalize
+     *
+     * @section Constraints
+     *
+     * - An RTC may not be finalized while it is participating in any
+     *   execution context. It must first be removed with
+     *   ExecutionContextOperations::remove_component. Otherwise, this
+     *   operation shall fail with
+     *   ReturnCode_t::PRECONDITION_NOT_MET. See Figure 5.9.
+     *
+     * - An RTC may not be finalized while it is in the Created state. Any
+     *   attempt to invoke this operation while in that state shall fail with
+     *   ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * - Application developers are not expected to call this operation
+     *   directly; it exists for use by the RTC infrastructure.
+     *
+     * @endif
+     */
+    ReturnCode_t finalize();
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief is_alive
+     * 
+     * @section Description
+     *
+     * A component is alive or not regardless of the execution context
+     * from which it is observed. However, whether or not it is
+     * Active, Inactive, or in Error is dependent on the execution
+     * context(s) (see Figure 5.7) in which it is running. That is, it
+     * may be Active in one context but Inactive in
+     * another. Therefore, this operation shall report whether this
+     * RTC is either Active, Inactive, or in Error; which of those
+     * states a component is in with respect to a particular context
+     * may be queried from the context itself.
+     *
+     * @endif
+     *
+     */
+    bool is_alive( ExecutionContext exec_context);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief exit
+     *
+     * @section Description
+     *
+     * Stop the RTC’s execution context(s) and finalize it along with
+     * its contents.
+     *
+     * @section Semantics
+     *
+     * Any execution contexts for which the RTC is the owner shall be
+     * stopped.  If the RTC participates in any execution contexts
+     * belonging to another RTC that contains it, directly or
+     * indirectly (i.e., the containing RTC is the owner of the
+     * ExecutionContext), it shall be deactivated in those contexts.
+     * After the RTC is no longer Active in any Running execution
+     * context, it and any RTCs contained transitively within it shall
+     * be finalized.
+     *
+     * @section Constraints
+     *
+     * An RTC cannot be exited if it has not yet been initialized. Any
+     * attempt to exit an RTC that is in the Created state shall fail
+     * with ReturnCode_t::PRECONDITION_NOT_MET.  
+     *
+     * @endif
+     */
+    ReturnCode_t exit();
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief attach_context
+     *
+     * @section Description
+     *
+     * Inform this RTC that it is participating in the given execution
+     * context. Return a handle that represents the association of
+     * this RTC with the context.
+     *
+     * @section Semantics
+     *
+     * This operation is intended to be invoked by
+     * ExecutionContextOperations::add_component (see Section
+     * 5.2.2.6.6). It is not intended for use by other clients.
+     *
+     * @endif
+     */
+    long attach_context( ExecutionContext exec_context);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief detach_context
+     * @section Description
+     * 
+     * Inform this RTC that it is no longer participating in the given
+     * execution context.
+     *
+     * @section Semantics
+     * 
+     * This operation is intended to be invoked by
+     * ExecutionContextOperations::remove_component (see Section
+     * 5.2.2.6.7). It is not intended for use by other clients.
+     *
+     * @section Constraints
+     *
+     * - This operation may not be invoked if this RTC is not already
+     *   participating in the execution context. Such a call shall fail
+     *   with ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * - This operation may not be invoked if this RTC is Active in
+     *   the indicated execution context. Otherwise, it shall fail with
+     *   ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * @endif
+     */
+    ReturnCode_t detach_context( long exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_context
+     *
+     * @section Description
+     *
+     * Obtain a reference to the execution context represented by the
+     * given handle.
+     *
+     * @section Semantics
+     *
+     * The mapping from handle to context is specific to a particular
+     * RTC instance. The given handle must have been obtained by a
+     * previous call to attach_context on this RTC.
+     *
+     * @endif
+     */
+    ExecutionContext get_context( long exec_handle);
+
+    /*!
+     * @if jp
+     * @brief get_owned_contexts
+     *
+     * @section Description 
+     *
+     * この RTC が所有する ExecutionContext のリストを取得する。
+     * 
+     * @else
+     * @brief get_owned_contexts
+     *
+     * @section Description 
+     *
+     * This operation returns a list of all execution contexts owned
+     * by this RTC.
+     *
+     * @endif
+     */
+    ExecutionContextList get_owned_contexts();
+
+    /*!
+     * @if jp
+     * @brief get_participating_contexts
+     *  
+     * @section Description
+     *
+     * この RTC が参加しているすべての ExecutionContext のリストを取得する。
+     *
+     * @section Semantics
+     *
+     * このリストに含まれる実行コンテキストは、attach_context が呼び出
+     * されるごとに、リストに追加され、detach_context が呼び出されるご
+     * とに、リストから削除される。
+     *
+     * @else
+     * @brief* get_participating_contexts
+     *
+     * @section Description
+     *
+     * This operation returns a list of all execution contexts in
+     * which this RTC participates.
+     *
+     * @section Semantics
+     *
+     * Each call to attach_context causes the provided context to be
+     * added to this list. Each call to detach_context causes the
+     * provided context to be removed from this list.
+     *
+     * @endif
+     */
+    ExecutionContextList get_participating_contexts();
+    
+    /*!
+     * @if jp
+     * ### [誤植] RTC.idl には含まれていないがPIMには含まれている。
+     * ### PIMが正しい。
+     *
+     * @brief 
+     * @else
+     * @brief get_context_handle
+     *
+     * @section Description
+     * 
+     * This operation returns a handle that is associated with the given
+     * execution context.
+     *
+     * @endif
+     */
+    long get_context_handle( ExecutionContext cxt);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ExecutionKind
+   * 
+   * @sectioni Description
+   *
+   * The ExecutionKind enumeration defines the execution semantics
+   * (see Section 5.3) of the RTCs that participate in an execution
+   * context.
+   *
+   * @endif
+   */
+  enum ExecutionKind
+  {
+    /*!
+     * @if jp
+     * @brief 
+     *
+     * @else
+     * @brief PERIODIC
+     *
+     * @section Description
+     *
+     * The participant RTCs are executing according to periodic
+     * sampled data semantics (see Section 5.3.1).
+     * 
+     * @endif
+     */
+    PERIODIC,
+    /*!
+     * @if jp
+     * @brief 
+     *
+     * @else
+     * @brief EVENT_DRIVEN
+     *
+     * @section Description
+     *
+     * The participant RTCs are executing according to stimulus
+     * response semantics (see Section 5.3.2).
+     * 
+     * @endif
+     */
+    EVENT_DRIVEN,
+    /*!
+     * @if jp
+     * @brief 
+     *
+     * @else
+     * @brief OTHER
+     *
+     * @section Description
+     *
+     * The participant RTCs are executing according to some semantics
+     * not defined by this specification.
+     * 
+     * @endif
+     */
+    OTHER
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ExecutionContext
+   *
+   * @section Description
+   *
+   * An ExecutionContext allows the business logic of an RTC to be
+   * decoupled from the thread of control in which it is executed. The
+   * context represents a logical thread of control and is provided to
+   * RTCs at runtime as an argument to various operations, allowing
+   * them to query and modify their own state, and that of other RTCs
+   * executing within the same context, in the lifecycle.  This
+   * separation of concerns is important for two primary reasons:
+   *
+   * - Large number of components may collaborate tightly within a
+   * single node or process. If each component were to run within its
+   * own thread of control, the infrastructure may not be able to
+   * satisfy the timeliness and determinism requirements of real-time
+   * applications due to the large number of threads and the required
+   * synchronization between them.
+   *
+   * - A single application may carry out a number of independent
+   * tasks that require different execution rates. For example, it may
+   * need to sample a sensor periodically at a very high rate and update a
+   * user interface at a much lower rate.
+   *
+   * @section Semantics
+   *
+   * The state machine of an ExecutionContext has two parts. The
+   * behavior of the ExecutionContext itself is defined by the upper
+   * region in the above figure. The behavior of the RTCs that
+   * participate in the context is defined by the lower region. The
+   * contents of that region are displayed in more detail in Figure
+   * 5.5 in Section 5.2.2.2.  Ownership and Participation Each
+   * execution context is owned by a single RTC and may be used to
+   * execute that RTC and the RTCs contained within it, directly or
+   * indirectly. An RTC that owns one or more execution contexts is
+   * known as an autonomous RTC.  An autonomous RTC and some subset of
+   * the RTCs within it (to be defined by the application developer)
+   * shall be executed by the infrastructure according to the context’
+   * s execution kind, which defines when each RTC’s operations will
+   * be invoked when and in which order. These RTCs are said to
+   * participate in the context. The available execution kinds are
+   * described in Section 5.2.2.7.  The relationship between RTCs and
+   * execution contexts may be many-to-many in the general case:
+   * multiple RTCs may be invoked from the same execution context, and
+   * a single RTC may be invoked from multiple contexts. In the case
+   * where multiple RTCs are invoked from the same context, starting
+   * or stopping the context shall result in the corresponding
+   * lifecycle transitions for all of those components.
+   *
+   * @section Logical and Physical Threads
+   *
+   * Although an execution context represents a logical thread of
+   * control, the choice of how it maps to a physical thread shall be
+   * left to the application’s deployment
+   * environment. Implementations may elect to associate contexts with
+   * threads with a one-to-one mapping, to serve multiple contexts
+   * from a single thread, or by any other means. In the case where a
+   * given RTC may be invoked from multiple contexts, concurrency
+   * management is implementation-dependent.
+   *
+   * @endif
+   */
+  interface ExecutionContext
+  {
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief is_running
+     * @section Description
+     *
+     * This operation shall return true if the context is in the
+     * Running state.
+     *
+     * @section Semantics
+     *
+     * While the context is Running, all Active RTCs participating in
+     * the context shall be executed according to the context’s
+     * execution kind.  
+     *
+     * @endif
+     */
+    bool is_running();
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     *
+     * @brief start
+     *
+     * @section Description
+     *
+     * Request that the context enter the Running state. Once the
+     * state transition occurs, the ComponentAction::on_startup
+     * operation (see Section 5.2.2.4.3) will be invoked.  @section *
+     *
+     * @section Semantics
+     *
+     * An execution context may not be started
+     * until the RT components that participate in it have been
+     * initialized. An execution context may be started and stopped
+     * multiple times.
+     *
+     * @section Constraints
+     *
+     * - This operation shall fail with
+     * ReturnCode_t::PRECONDITION_NOT_MET if the context is not in the
+     * Stopped state.
+     *
+     * - This operation shall fail with
+     * ReturnCode_t::PRECONDITION_NOT_MET if any of the participating
+     * components are not in their Alive state.
+     *
+     * @endif
+     */
+    ReturnCode_t start();
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief stop
+     *
+     * @section Description
+     *
+     * Request that the context enter the Stopped state. Once the
+     * transition occurs, the ComponentAction::on_shutdown operation
+     * (see Section 5.2.2.4.4) will be invoked.
+     *
+     * @section Semantics
+     *
+     * An execution context must be stopped before the RT components
+     * that participate in it are finalized.
+     *
+     * An execution context may be started and stopped multiple times.
+     *
+     * @section Constraints
+     *
+     * - This operation shall fail with
+     * ReturnCode_t::PRECONDITION_NOT_MET if the context is not in the
+     * Running state.
+     *
+     * @endif
+     */
+    ReturnCode_t stop();
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_rate
+     *
+     * @section Description
+     *
+     * This operation shall return the rate (in hertz) at which its
+     * Active participating RTCs are being invoked.
+     *
+     * @section Semantics
+     *
+     * An implementation is permitted to perform some periodic or
+     * quasi-periodic processing within an execution context with an
+     * ExecutionKind other than PERIODIC. In such a case, the result
+     * of this operation is implementation-defined. If no periodic
+     * processing of any kind is taking place within the context, this
+     * operation shall fail as described in Section 5.2.1.
+     *
+     * @section Constraints
+     *
+     * - If the context has an ExecutionKind of PERIODIC, this
+     *   operation shall return a rate greater than zero.
+     *
+     * @endif
+     */
+    double get_rate();
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief set_rate
+     *
+     * @section Description
+     *
+     * This operation shall set the rate (in hertz) at which this
+     * context’s Active participating RTCs are being called.
+     *
+     * @section Semantics
+     *
+     * If the execution kind of the context is PERIODIC, a rate change
+     * shall result in the invocation of on_rate_changed on any RTCs
+     * realizing DataFlowComponentAction that are registered with any
+     * RTCs participating in the context.  An implementation is
+     * permitted to perform some periodic or quasi-periodic processing
+     * within an execution context with an ExecutionKind other than
+     * PERIODIC. If such is the case, and the implementation reports a
+     * rate from get_rate, this operation shall set that rate
+     * successfully provided that the given rate is valid. If no
+     * periodic processing of any kind is taking place within the
+     * context, this operation shall fail with
+     * ReturnCode_t::UNSUPPORTED.
+     *
+     * @section Constraints
+     *
+     * - The given rate must be greater than zero. Otherwise, this
+     * operation shall fail with ReturnCode_t::BAD_PARAMETER.
+     *
+     * @endif
+     */
+    ReturnCode_t set_rate( double rate);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief add_component
+     *
+     * @section Description
+     *
+     * The operation causes the given RTC to begin participating in
+     * the execution context.
+     *
+     * @section Semantics
+     *
+     * The newly added RTC will receive a call to
+     * LightweightRTComponent::attach_context (see Section 5.2.2.2.5)
+     * and then enter the Inactive state. 
+     * 
+     * @section Constraints
+     * 
+     * - If the ExecutionKind of this context is PERIODIC, the RTC
+     * must be a data flow component (see Section 5.3.1.1).
+     * Otherwise, this operation shall fail with
+     * ReturnCode_t::PRECONDITION_NOT_MET.
+     * 
+     * - If the ExecutionKind of this context is EVENT_DRIVEN, the RTC
+     * must be an FSM participant (see Section 5.3.2.3).  Otherwise,
+     * this operation shall fail with
+     * ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * @endif
+     */
+    ReturnCode_t add_component( LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief remove_component
+     *
+     * @section Description
+     *
+     * This operation causes a participant RTC to stop participating
+     * in the execution context.
+     *
+     * @section Semantics
+     *
+     * The removed RTC will receive a call to
+     * LightweightRTComponent::detach_context (see Section 5.2.2.2.6).
+     *
+     * @section Constraints
+     *
+     * - If the given RTC is not currently participating in the
+     * execution context, this operation shall fail with
+     * ReturnCode_t::BAD_PARAMETER.
+     * 
+     * - An RTC must be deactivated before it can be removed from an
+     * execution context. If the given RTC is participating in the
+     * execution context but is still in the Active state, this
+     * operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * @endif
+     */
+    ReturnCode_t remove_component( LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief activate_component
+     *
+     * @section Description
+     *
+     * The given participant RTC is Inactive and is therefore not
+     * being invoked according to the execution context’s execution
+     * kind. This operation shall cause the RTC to transition to the
+     * Active state such that it may subsequently be invoked in this
+     * execution context.
+     *
+     * @section Semantics
+     *
+     * The callback on_activate shall be called as a result of calling
+     * this operation. This operation shall not return until the
+     * callback has returned, and shall result in an error if the
+     * callback does.  The following figure is a non-normative example
+     * sequence diagram for activate_component.
+     *
+     * @section Constraints
+     *
+     * - An execution context can only activate its participant
+     *   components. If the given RTC is not participating in the
+     *   execution context, this operation shall fail with
+     *   ReturnCode_t::BAD_PARAMETER.
+     *
+     * - An RTC that is in the Error state cannot be activated until
+     *   after it has been reset. If the given RTC is in the Error
+     *   state, this operation shall fail with
+     *   ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * - This operation shall fail with ReturnCode_t::BAD_PARAMETER if
+     *   the given component is not in its Alive state.
+     *
+     * @endif
+     */
+    ReturnCode_t activate_component( LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief deactivate_component
+     *
+     * @section Description
+     *
+     * The given RTC is Active in the execution context. Cause it to
+     * transition to the Inactive state such that it will not be
+     * subsequently invoked from the context unless and until it is
+     * activated again.
+     *
+     * @section Semantics
+     *
+     * The callback on_deactivate shall be called as a result of
+     * calling this operation. This operation shall not return until
+     * the callback has returned, and shall result in an error if the
+     * callback does.  The following figure is a non-normative example
+     * sequence diagram for deactivate_component.
+     *
+     * @section Constraints
+     *
+     * - An execution context can only deactivate its participant
+     * components. If the given RTC is not participating in the
+     * execution context, this operation shall fail with
+     * ReturnCode_t::BAD_PARAMETER.
+     *
+     * - This operation shall fail with ReturnCode_t::BAD_PARAMETER if
+     * the given component is not in its Alive state.
+     *
+     * @endif
+     */
+    ReturnCode_t deactivate_component( LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief reset_component
+     *
+     * @section Description
+     *
+     * Attempt to recover the RTC when it is in Error.
+     *
+     * @section Semantics
+     *
+     * The ComponentAction::on_reset callback shall be invoked. This
+     * operation shall not return until the callback has returned, and
+     * shall result in an error if the callback does. If possible, the
+     * RTC developer should implement that callback such that the RTC
+     * may be returned to a valid state.  * If this operation fails,
+     * the RTC will remain in Error.
+     *
+     * @section Constraints
+     *
+     * - An RTC may only be reset in an execution context in which it
+     *   is in error. If the RTC is not in Error in the identified
+     *   context, this operation shall fail with
+     *   ReturnCode_t::PRECONDITION_NOT_MET. However, that failure shall
+     *   not cause the RTC to enter the Error state.
+     *
+     * - An RTC may not be reset while in the Created state. Any
+     *   attempt to invoke this operation while the RTC is in that state
+     *   shall fail with ReturnCode_t::PRECONDITION_NOT_MET. However,
+     *   that failure shall not cause the RTC to enter the Error state.
+     *
+     * @endif
+     */
+    ReturnCode_t reset_component( LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_component_state
+     *
+     * @section Description
+     *
+     * This operation shall report the LifeCycleState of the given
+     * participant RTC.
+     *
+     * @section Constraints
+     *
+     * - The given RTC must be Alive.
+     *
+     * - The given RTC must be a participant in the target execution context.
+     *
+     * - The LifeCycleState returned by this operation shall be one of
+     *   LifeCycleState::INACTIVE, ACTIVE, or ERROR.
+     *
+     * @endif
+     */
+    LifeCycleState get_component_state( LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_kind
+     *
+     * @section Description
+     *
+     * This operation shall report the execution kind of the execution
+     * context.
+     *
+     * @endif
+     */
+    ExecutionKind get_kind();
+  };
+  
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief DataFlowComponentAction
+   *
+   * @section Description
+   *
+   * DataFlowComponentAction is a companion to ComponentAction (see
+   * Section 5.2.2.4) that provides additional callbacks for
+   * intercepting the two execution passes defined in Section
+   * 5.3.1.1.2.
+   *
+   * @endif
+   */
+  interface DataFlowComponentAction
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_execute
+     * @section Description
+     *
+     * This operation will be invoked periodically at the rate of the
+     * given execution context as long as the following conditions
+     * hold:
+     *
+     * - The RTC is Active.
+     *
+     * - The given execution context is Running.
+     *
+     * @section Semantics
+     *
+     This callback occurs during the first execution pass.
+     *
+     * @section Constraints
+     *
+     * - The execution context of the given context shall be PERIODIC.
+     *
+     * @endif
+     */
+    ReturnCode_t on_execute( long exec_handle);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_state_update
+     *
+     * @section Description
+     *
+     * This operation will be invoked periodically at the rate of the
+     * given execution context as long as the following conditions hold:
+     *
+     * - The RTC is Active.
+     *
+     * - The given execution context is Running.
+     *
+     * @section Semantics
+     *
+     * This callback occurs during the second execution pass.
+     *
+     * @section Constraints
+     *
+     * - The execution context of the given context shall be PERIODIC.
+     *
+     *
+     * @endif
+     */
+    ReturnCode_t on_state_update( long exec_handle);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_rate_changed
+     *
+     * @section Description
+     *
+     * This operation is a notification that the rate of the indicated
+     * execution context (see Section 5.2.2.6.4) has changed.
+     *
+     * @section Constraints
+     *
+     * - The execution context of the given context shall be PERIODIC.
+     *
+     *
+     * @endif
+     */
+    ReturnCode_t on_rate_changed( long exec_handle);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief dataFlowComponent
+   *
+   * @section Description
+   *
+   * The dataFlowComponent stereotype may be applied to a component
+   * type to indicate that its instances should be executed in sorted
+   * order by a periodic execution context.
+   *
+   * @section Constraints
+   *
+   * - An instance of a component extended by the dataFlowComponent
+   *   stereotype must participate in at least one * execution context
+   *   of kind PERIODIC, which shall also be used for the execution of
+   *   any contained data flow components.
+   *
+   * - A component extended by dataFlowComponent must realize the
+   *   interface DataFlowComponentAction.
+   *
+   *
+   * @endif
+   */
+  interface DataFlowComponent
+    extends LightweightRTObject, DataFlowComponentAction
+  {
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief fsm
+   *
+   * @section Description
+   *
+   * Applying the fsm stereotype to a component implies the ability to
+   * define component-specific states and transitions.
+   *
+   * @section Semantics
+   *
+   * In creating a state machine such as is depicted in Figure 5.22,
+   * the RTC developer is implicitly defining the Active state to be a
+   * submachine state.  * The BehaviorStateMachines package described
+   * in [UML] is considered the normative definition of a state
+   * machine.
+   *
+   * @endif
+   */
+  interface Fsm
+    extends LightweightRTObject
+  {
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief FsmParticipantAction
+   *
+   * @section Description
+   *
+   * FsmParticipantAction is companion to ComponentAction (see Section
+   * 5.2.2.4) that is intended for use with FSM participant RTCs. It
+   * adds a callback for the interception of state transitions, state
+   * entries, and state exits.
+   *
+   * @endif
+   */
+  interface FsmParticipantAction
+  {
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_action
+     *
+     * @section Description
+     *
+     * The indicated FSM participant RTC has been invoked as a result
+     * of a transition, state entry, or state exit in its containing
+     * FSM.
+     *
+     * @section Constraints
+     *
+     * - The given execution context shall be of kind EVENT_DRIVEN.
+        *
+     * @endif
+     */
+    ReturnCode_t on_action( long exec_handle);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief 
+   * @endif
+   */
+  interface FsmParticipant
+    extends LightweightRTObject, FsmParticipantAction
+  {
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief Mode
+   *
+   * @section Description
+   *
+   * Each mode defined by a given RTC shall be represented by an
+   * instance of Mode.
+   *
+   * @endif
+   */
+  interface Mode
+  {
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ModeCapable
+   *
+   * @section Description
+   *
+   * The ModeCapable interface provides access to an object’s modes
+   * and a means to set the current mode.
+   *
+   * @section Semantics
+   *
+   * A given RTC may support multiple modes as well as multiple
+   * execution contexts. In such a case, a request for a mode change
+   * (e.g., from "cruise control on" to "cruise control off") may
+   * come asynchronously with respect to one or more of those
+   * execution contexts. The mode of an RTC may therefore be observed
+   * to be different from one execution context to another.  - A mode
+   * is pending in a given execution context when a mode change has
+   * been requested but the new mode has not yet been observed by that
+   * context.
+   *
+   * - The new mode has been committed in a given execution context
+   *   when the context finally observes the new mode.
+   *
+   * - The new mode has stabilized once it has been committed in all
+   *   execution contexts in which the RTC participates.
+   *
+   * Figure 5.26 depicts a state machine that describes mode
+   * changes. Each parallel region in the composite state Mode Pending
+   * represents an execution context. The trigger "sample" within
+   * that state is considered to have occurred: - …just before the
+   * next call to on_execute (see Section 5.3.1.2.1) in the case where
+   * immediate is false and the execution kind is PERIODIC, …
+   *
+   * - …just before the processing of the next stimulus in the case
+   *   where immediate is false and the execution kind is
+   *   EVENT_DRIVEN, or …- …immediately in all other cases.
+   *
+   * @endif
+   */
+  interface ModeCapable
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_default_mode
+     *
+     * @section Description
+     *
+     * This operation shall return the mode in which the RTC shall be
+     * when no other mode has been set.
+     *
+     * @section Constraints
+     *
+     * - This operation shall not return nil.
+     *
+     * @endif
+     */
+    Mode get_default_mode();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_current_mode
+     *
+     * @section Description
+     *
+     * This operation shall return the last mode to have
+     * stabilized. If no mode has been explicitly set, the current
+     * mode shall be the default mode.
+     *
+     * @section Constraints
+     *
+     * - This operation shall never return nil.
+     *
+     * @endif
+     */
+    Mode get_current_mode();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_current_mode_in_context
+     *
+     * @section Description
+     *
+     * This operation returns the current mode of the component as
+     * seen by the indicated execution context.
+     *
+     * @section Semantics
+     *
+     * The manner in which this property changes is described in Figure 5.26.
+     *
+     * @endif
+     */
+    Mode get_current_mode_in_context( ExecutionContext exec_context);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_pending_mode
+     *
+     * @section Description
+     *
+     * This operation shall return the last mode to have been passed
+     * to set_mode that has not yet stabilized. Once the RTC’s mode
+     * has stabilized, this operation shall return nil.
+     *
+     * @endif
+     */
+    Mode get_pending_mode();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_pending_mode_in_context
+     *
+     * @section Description
+     *
+     * If the last mode to be requested by a call to set_mode is
+     * different than the current mode as seen by the indicated
+     * execution context (see get_current_mode_in_context), this
+     * operation returns the former. If the requested mode has already
+     * been seen in that context, it returns nil.
+     *
+     * @section Semantics
+     *
+     * See Figure 5.26 for a description of how the pending mode
+     * relates to the current mode within a given execution context.
+     *
+     * @endif
+     */
+    Mode get_pending_mode_in_context( ExecutionContext exec_context);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief set_mode
+     *
+     * @section Description
+     *
+     * This operation shall request that the RTC change to the indicated mode.
+     *
+     * @section Semantics
+     *
+     * Usually, the new mode will be pending in each execution context
+     * in which the component executes until the next sample period
+     * (if the execution kind is PERIODIC); at that point it will
+     * become the current mode in that context and there will no
+     * longer be a pending mode. However, in some cases it is
+     * important for a mode change to take place immediately; for
+     * example, a serious fault has occurred and the component must
+     * enter an emergency mode to ensure fail-safe behavior in a
+     * safety-critical system. In such a case, immediate should be
+     * true and the mode change will take place in all contexts
+     * without waiting for the next sample period.
+     *
+     * @endif
+     */
+    ReturnCode_t set_mode( Mode new_mode,
+			   bool immediate);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief MultiModeComponentAction
+   *
+   * MultiModeComponentAction is a companion to ComponentAction that
+   is realized by RTCs that support multiple modes.
+   *
+   * @endif
+   */
+  interface MultiModeComponentAction
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_mode_changed
+     *
+     * @section Description
+     *
+     * This callback is invoked each time the observed mode of a
+     * component has changed with respect to a particular execution
+     * context.
+     *
+     * @section Semantics
+     *
+     * If the context is PERIODIC, this callback shall come before the
+     * next call to on_execute (see Section 5.3.1.2.1) within that
+     * context.  The new mode can be retrieved with
+     * get_current_mode_in_context. If the result is the same as the
+     * result of get_current_mode, the mode has stabilized.
+     *
+     * @endif
+     */
+    ReturnCode_t on_mode_changed( long exec_handle);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief 
+   * @endif
+   */
+  interface MultiModeObject
+    extends LightweightRTObject, ModeCapable, MultiModeComponentAction
+  {
+  };
+  
+  interface RTObject;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief PortInterfacePolarity
+   *
+   * @section Description
+   *
+   * The PortInterfacePolarity enumeration identifies exposed
+   * interface instances as provided or required.  @endif
+   */
+  enum PortInterfacePolarity
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief PROVIDED
+     *
+     * @section Description
+     *
+     * The target interface is provided as an output by the target
+     * port.
+     *
+     * @endif
+     */
+    PROVIDED,
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief REQUIRED
+     *
+     * @section Description
+     *
+     * The target interface is required as an input by the target port.
+     *
+     * @endif
+     */
+    REQUIRED
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief PortInterfaceProfile
+   *
+   * @section Description
+   *
+   * PortInterfaceProfile describes an instance of a particular
+   * interface as it is exposed by a particular port. These objects
+   * are referred to below as the "target interface" and "target
+   * port" respectively.
+   *
+   * @endif
+   */
+  struct PortInterfaceProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief instance_name
+     *
+     * @section Description
+     *
+     * This attribute stores the name of the target interface instance.
+     *
+     * @endif
+     */
+    string instance_name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief type_name
+     *
+     * @section Description
+     *
+     * This attribute stores the name of the target interface type.
+     *
+     * @endif
+     */
+    string type_name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief polarity
+     *
+     * @section Description
+     *
+     * This attribute indicates whether the target interface instance
+     * is provided or required by the RTC.
+     *
+     * @endif
+     */
+    PortInterfacePolarity polarity;
+  };
+  
+    sequence<PortInterfaceProfile> PortInterfaceProfileList;
+  
+  interface PortService;
+    sequence<PortService> PortServiceList;
+    sequence<RTObject> RTCList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ConnectorProfile
+   *
+   * @section Description
+   *
+   * The ConnectorProfile contains information about a connection
+   * between the ports of collaborating RTCs.
+   *
+   * @endif
+   */
+  struct ConnectorProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief name
+     *
+     * @section Description
+     *
+     * This attribute contains the name of this connection.
+     *
+     * @endif
+     */
+    string name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief connector_id
+     *
+     * @section Description
+     *
+     * Each connector has a unique identifier that is assigned when
+     * connection is established. This attribute stores that
+     * identifier.
+     *
+     * @endif
+     */
+    string connector_id;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief ports
+     *
+     * @section Description
+     *
+     * This field stores references to all ports connected by the
+     * target connector.
+     *
+     * @endif
+     */
+    PortServiceList ports;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief properties
+     *
+     * @section Description
+     *
+     * This attribute contains additional properties of the connection.
+     *
+     * @section Semantics
+     *
+     * This attribute provides implementations the opportunity to
+     * describe additional characteristics of a particular connection
+     * that are outside of the scope of this specification.
+     *
+     * @endif
+     */
+    SDOPackage::NVList properties;
+  };
+  
+    sequence<ConnectorProfile> ConnectorProfileList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief PortProfile
+   *
+   * @section Description
+   *
+   * A PortProfile describes a port of an RTC (referred to as the
+   * "target" RTC). This port is referred to as the "target" port.
+   * From this profile, other components and tools can obtain Port’s
+   * name, type, object reference, and so on.
+   *
+   * @endif
+   */
+  struct PortProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief name
+     *
+     * @section Description
+     *
+     * This attribute contains the name of the target port.
+     *
+     * @section Semantics
+     *
+     * Ports owned by an RTC are distinguished by their
+     * names. Therefore, this name should be unique within the target
+     * RTC.
+     *
+     * @endif
+     */
+    string name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief interfaces
+     *
+     * @section Description
+     *
+     * This attribute contains the name and polarity of each interface
+     * exposed by the target port.
+     *
+     * @endif
+     */
+    PortInterfaceProfileList interfaces;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief port_ref
+     *
+     * @section Description
+     *
+     * This attributes contains a reference to the target port.
+     *
+     * @endif
+     */
+    PortService port_ref;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief connector_profiles
+     *
+     * @section Description
+     *
+     * This attribute contains a collection of profiles describing the
+     * connections to the target port.
+     *
+     * @endif
+     */
+    ConnectorProfileList connector_profiles;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief owner
+     *
+     * @section Description
+     *
+     * This attribute contains a reference to the target RTC.
+     *
+     * @endif
+     */
+    RTObject owner;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief properties
+     *
+     * @section Description
+     *
+     * This attribute contains additional properties of the port.
+     *
+     * @section Semantics
+     *
+     * This attribute provides implementations the opportunity to
+     * describe additional characteristics of a particular port that
+     * are otherwise outside of the scope of this specification.
+     *
+     * @endif
+     */
+    SDOPackage::NVList properties;
+  };
+  
+    sequence<PortProfile> PortProfileList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief 
+   * @endif
+   */
+  struct ExecutionContextProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief kind
+     *
+     * @section Description
+     *
+     * This attribute stores the context’s ExecutionKind.
+     *
+     * @endif
+     */
+    ExecutionKind kind;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief rate
+     *
+     * @section Description
+     *
+     * This attribute stores execution rate.
+     *
+     * @section Semantics
+     *
+     * If the execution kind is not PERIODIC, the value here may not
+     * be valid (and should be negative in that case). See
+     * ExecutionContext::get_rate (see Section 5.2.2.6.4) and set_rate
+     * (see Section 5.2.2.6.5) for more information.
+     *
+     * @endif
+     */
+    double rate;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief owner
+     *
+     * @section Description
+     *
+     * This attribute stores a reference to the RTC that owns the context.
+     *
+     * @endif
+     */
+    RTObject owner;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief participants
+     *
+     * @section Description
+     *
+     * This attribute stores references to the context’s participant RTCs.
+     *
+     * @endif
+     */
+    RTCList participants;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief properties
+     *
+     * @section Description
+     *
+     * This attribute contains additional properties of the execution
+     * context.
+     *
+     * @section Semantics
+     *
+     * This attribute provides implementations the opportunity to
+     * describe additional characteristics of a particular execution
+     * context that are outside the scope of this specification.
+     *
+     * @endif
+     */
+    SDOPackage::NVList properties;
+  };
+  
+    sequence<ExecutionContextProfile>
+  ExecutionContextProfileList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief FsmObject
+   *
+   * @section Description
+   *
+   * The FsmObject interface allows programs to send stimuli to a
+   * finite state machine, possibly causing it to change states.
+   *
+   * @endif
+   */
+  interface FsmObject
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief send_stimulus
+     *
+     * @section Description
+     *
+     * Send a stimulus to an FSM that realizes this interface.
+     *
+     * @section Semantics
+     *
+     * If the stimulus corresponds to any outgoing transition of the
+     * current state, that transition shall be taken and the state
+     * shall change. Any FSM participants associated with the exit of
+     * the current state, the transition to the new state, or the
+     * entry to the new state shall be invoked. If the stimulus does
+     * not correspond to any such transition, this operation shall
+     * succeed but have no effect.  
+     *
+     * If the given execution context is a non-nil reference to a
+     * context in which this FSM participates, the transition shall be
+     * executed in that context. If the argument is nil, the FSM shall
+     * choose an EVENT_DRIVEN context in which to execute the
+     * transition. If the argument is non-nil, but this FSM does not
+     * participate in the given context, this operation shall fail
+     * with * ReturnCode_t::BAD_PARAMETER.
+     *
+     * @section Constraints
+     *
+     * - The given execution context shall be of kind EVENT_DRIVEN.
+     *
+     * @endif
+     */
+    ReturnCode_t send_stimulus( string message,
+			        long exec_handle);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief FsmBehaviorProfile
+   *
+   * @section Description
+   *
+   * FsmBehaviorProfile represents the association of an FSM
+   * participant with a transition, state entry, or state exit in an
+   * FSM.
+   *
+   * @section Semantics
+   *
+   * The assignment of identifiers to particular transitions, state
+   * entries, or state exits is implementation-dependent.
+   *
+   * @endif
+   */
+  struct FsmBehaviorProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief action_component
+     *
+     * @section Description
+     *
+     * This attribute stores a reference to the FSM participant that
+     * is invoked when the containing Fsm receives a message
+     * distinguished by id.
+     *
+     * @endif
+     */
+    FsmParticipantAction action_component;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief id
+     *
+     * @section Description
+     *
+     * This attribute stores the message identifier.
+     *
+     * @endif
+     */
+    string id;
+  };
+  
+    sequence<FsmBehaviorProfile> FsmBehaviorProfileList;
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief FsmProfile
+   *
+   * @section Description
+   *
+   * The FsmProfile describes the correspondence between an FSM and
+   * its contained FSM participants. This Profile is necessary for
+   * Stimulus Response Processing.
+   *
+   * @endif
+   */
+  struct FsmProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief behavior_profiles
+     *
+     * @section Description
+     *
+     * This attribute lists the correspondences between an FSM and its
+     * contained FSM participants.
+     *
+     * @endif
+     */
+    FsmBehaviorProfileList behavior_profiles;
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief FsmService
+   *
+   * @section Description
+   *
+   * The FsmService interface defines operations necessary for
+   * Stimulus Response Processing as an SDO service.
+   *
+   * @endif
+   */
+  interface FsmService
+    extends SDOPackage::SDOService
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_fsm_profile
+     *
+     * @section Description
+     *
+     * Get the current state of the FSM.
+     *
+     * @section Semantics
+     *
+     * Modifications to the object returned by this operation will not
+     * be reflected in the FSM until and unless set_fsm_profile is
+     * called.
+     *
+     * @endif
+     */
+    FsmProfile get_fsm_profile();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief set_fsm_profile
+     *
+     * @section Description
+     *
+     * This operation will be used to modify the behavior of an FSM as
+     * described in Stimulus Response Processing.
+     *
+     * @endif
+     */
+    ReturnCode_t set_fsm_profile( FsmProfile fsm_profile);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ComponentProfile
+   *
+   * @section Description
+   *
+   * ComponentProfile represents the static state of an RTC that is
+   * referred to here as the "target" RTC.
+   *
+   * @endif
+   */
+  struct ComponentProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief instance_name
+     *
+     * @section Description
+     *
+     * This attribute shall contain the name of the target RTC instance.
+     *
+     * @section Semantics
+     *
+     * The instance_name should be unique among RTC instances
+     * contained within the same containing component.
+     *
+     * @endif
+     */
+    string instance_name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief type_name
+     *
+     * @section Description
+     *
+     * This attribute shall contain the name of the target RTC class.
+     *
+     * @section Semantics
+     *
+     * Each RTC class must have a name that is unique within an
+     * application.
+     *
+     * @endif
+     */
+    string type_name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief description
+     *
+     * @section Description
+     *
+     * This attribute shall briefly describe the target RTC for the
+     * benefit of a human operator.
+     *
+     * @endif
+     */
+    string description;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief version
+     *
+     * @section Description
+     *
+     * This attribute shall contain the version number of the target
+     * RTC class.
+     *
+     * @section Semantics
+     *
+     * The format of the version number is outside of the scope of
+     * this specification.
+     *
+     * @endif
+     */
+    string version;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief vendor
+     *
+     * @section Description
+     *
+     * The name of the individual or organization that produced the
+     * target RTC class.
+     *
+     * @endif
+     */
+    string vendor;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief category
+     *
+     * @section Description
+     *
+     * This attribute contains the name of a "category" or group to
+     * which the target RTC belongs.
+     *
+     *
+     * @endif
+     */
+    string category;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief port_profiles
+     *
+     * @section Description
+     *
+     * This attribute contains a list of PortProfiles that describe
+     * the ports of the target RTC.
+     *
+     * @section Semantics
+     *
+     * There shall be a one-to-one correspondence between the members
+     * of this list and the ports of the target RTC.
+     *
+     *
+     * @endif
+     */
+    PortProfileList port_profiles;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief parent
+     *
+     * @section Description
+     *
+     * This attribute contains a reference to the RTC that contains
+     * the target RTC instance. If the target RTC instance is not
+     * owned by any other RTC, this field stores a nil reference.
+     *
+     * @endif
+     */
+    RTObject parent;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief properties
+     *
+     * @section Description
+     *
+     * This attribute contains additional properties of the target RTC.
+     *
+     * @section Semantics
+     *
+     * This attribute provides implementations the opportunity to
+     * describe additional characteristics of a particular RTC that
+     * are otherwise outside of the scope of this specification.
+     *
+     * @endif
+     */
+    SDOPackage::NVList properties;
+  };
+  
+    sequence<ComponentProfile> ComponentProfileList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief PortService
+   *
+   * @section Description
+   *
+   * An instance of the PortService interface represents a port (i.e.,
+   * UML::Composite Structures::Ports::Port) of an RTC. It provides
+   * operations that allow it to be connected to and disconnected from
+   * other ports.
+   *
+   * @section Semantics
+   *
+   * A port service can support unidirectional or bidirectional
+   * communication.  A port service may allow for a service-oriented
+   * connection, in which other connected ports, invoke methods on
+   * it. It may also allow for a data-centric connection, in which
+   * data values are streamed in or out. In either case, the
+   * connection is described by an instance of
+   * ConnectorProfile. However, the behavioral contracts of such
+   * connections are dependent on the interfaces exposed by the ports
+   * and are not described normatively by this specification.
+   *
+   * @endif
+   */
+  interface PortService
+    extends SDOPackage::SDOService
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_port_profile
+     *
+     * @section Description
+     *
+     * This operation returns the PortProfile of the PortService.
+     *
+     * @endif
+     */
+    PortProfile get_port_profile();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_connector_profiles
+     *
+     * @section Description
+     *
+     * This operation returns a list of the ConnectorProfiles of the
+     * PortService.
+     *
+     * @endif
+     */ 
+    ConnectorProfileList get_connector_profiles();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_connector_profiles
+     *
+     * @section Description
+     *
+     * This operation returns a list of the ConnectorProfiles of the
+     * PortService.
+     *
+     * @endif
+     */
+    ConnectorProfile get_connector_profile( string connector_id);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief connect
+     *
+     * @section Description
+     *
+     * This operation establishes connection between this port and the
+     * peer ports according to given ConnectionProfile.
+     *
+     * @section Semantics
+     *
+     * A ConnectorProfile has a sequence of port references. This port
+     * invokes the notify_connect operation of one of the ports
+     * included in the sequence. It follows that the notification of
+     * connection is propagated by the notify_connect operation with
+     * ConnectorProfile. This operation returns ConnectorProfile
+     * return value and returns ReturnCode_t as return codes.
+     *
+     * @endif
+     */
+    ReturnCode_t connect( ConnectorProfile connector_profile);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief disconnect
+     *
+     * @section Description
+     *
+     * This operation destroys the connection between this port and
+     * its peer ports using the ID that was given when the connection
+     * was established.
+     *
+     * @section Semantics
+     *
+     * This port invokes the notify_disconnect operation of one of the
+     * ports included in the sequence of the ConnectorProfile stored
+     * when the connection was established. The notification of
+     * disconnection is propagated by the notify_disconnect operation.
+     *
+     * @endif
+     */
+    ReturnCode_t disconnect( string connector_id);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief disconnect_all
+     *
+     * @section Description
+     *
+     * This operation destroys all connection channels owned by the
+     * PortService.
+     *
+     * @endif
+     */
+    ReturnCode_t disconnect_all();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief notify_connect
+     *
+     * @section Description
+     *
+     * This operation notifies this PortService of the connection
+     * between its corresponding port and the other ports and
+     * propagates the given ConnectionProfile.
+     *
+     * @section Semantics
+     *
+     * A ConnectorProfile has a sequence of port references. This
+     * PortService stores the ConnectorProfile and invokes the
+     * notify_connect operation of the next PortService in the
+     * sequence. As ports are added to the connector, PortService
+     * references are added to the ConnectorProfile and provided to
+     * the caller. In this way, notification of connection is
+     * propagated with the ConnectorProfile.
+     *
+     * @endif
+     */
+    ReturnCode_t notify_connect( ConnectorProfile connector_profile);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief notify_disconnect
+     *
+     * @section Description
+     *
+     * This operation notifies a PortService of a disconnection
+     * between its corresponding port and the other ports. The
+     * disconnected connector is identified by the given ID, which was
+     * given when the connection was established.
+     *
+     * @section Semantics
+     *
+     * This port invokes the notify_disconnect operation of the next
+     * PortService in the sequence of the ConnectorProfile that was
+     * stored when the connection was established. As ports are
+     * disconnected, PortService references are removed from the
+     * ConnectorProfile. In this way, the notification of
+     * disconnection is propagated by the notify_disconnect operation.
+     *
+     * @endif
+     */
+    ReturnCode_t notify_disconnect( string connector_id);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ExecutionContextService
+   *
+   * @section Description
+   *
+   * An ExecutionContextService exposes an ExecutionContext as an SDO
+   * service such that the context may be controlled remotely.
+   *
+   * @section Semantics
+   *
+   * Depending on the implementation, this interface may itself be an
+   * execution context (that is, it may be passed to the operations of
+   * ComponentAction) or it may represent a remote execution context
+   * that is not of type ExecutionContextService.  @endif
+   */
+  interface ExecutionContextService
+    extends ExecutionContext, SDOPackage::SDOService
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_profile
+     *
+     * @section Description
+     *
+     * This operation provides a profile "descriptor" for the
+     * execution context.
+     *
+     * @endif
+     */
+    ExecutionContextProfile get_profile();
+  };
+  
+    sequence<ExecutionContextService>
+  ExecutionContextServiceList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief RTObject
+   *
+   * @section Description
+   *
+   * The RTObject interface defines the operations that all SDO-based
+   * RTCs must provide. It is required by the rtComponent stereotype.
+   *
+   * @endif
+   */
+  interface RTObject
+    extends  LightweightRTObject, SDOPackage::SDO
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_component_profile
+     *
+     * @section Description
+     *
+     * This operation returns the ComponentProfile of the RTC.
+     *
+     * @endif
+     */
+    ComponentProfile get_component_profile();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_ports
+     *
+     * @section Description
+     *
+     * This operation returns a list of the RTCs ports.
+     *
+     * @endif
+     */
+    PortServiceList get_ports();
+  };
+};
+
+#endif // RTC_IDL



More information about the openrtm-commit mailing list