00001 #!/usr/bin/env python 00002 # -*- coding: euc-jp -*- 00003 00004 00005 ## 00006 # @file RTCUtil.py 00007 # @brief RTComponent utils 00008 # @date $Date: 2007/09/11 $ 00009 # @author Noriaki Ando <n-ando@aist.go.jp> and Shinji Kurihara 00010 # 00011 # Copyright (C) 2007-2008 00012 # Task-intelligence Research Group, 00013 # Intelligent Systems Research Institute, 00014 # National Institute of 00015 # Advanced Industrial Science and Technology (AIST), Japan 00016 # All rights reserved. 00017 00018 from omniORB import CORBA 00019 00020 import RTC 00021 import OpenRTM 00022 00023 ## 00024 # @if jp 00025 # 00026 # @brief DataFlowComponent であるか判定する 00027 # 00028 # 指定されたRTコンポーネントが DataFlowComponent であるか判定する。 00029 # DataFlowComponent、 ExecutionContext の Semantics が 00030 # Periodic Sampled Data Processing の場合に利用されるRTコンポーネントの型 00031 # である。 00032 # 00033 # @param obj 判定対象の CORBA オブジェクト 00034 # 00035 # @return DataFlowComponent 判定結果 00036 # 00037 # @since 0.4.0 00038 # 00039 # @else 00040 # 00041 # @endif 00042 def isDataFlowComponent(obj): 00043 dfp = obj._narrow(OpenRTM.DataFlowComponent) 00044 return not CORBA.is_nil(dfp) 00045 00046 00047 ## 00048 # @if jp 00049 # 00050 # @brief FsmParticipant であるか判定する 00051 # 00052 # 指定されたRTコンポーネントが FsmParticipant であるか判定する。 00053 # FsmParticipant は、 ExecutionContext の Semantics が 00054 # Stimulus Response Processing の場合に、状態内のアクションを定義するために 00055 # 利用されるRTコンポーネントの型である。 00056 # 00057 # @param obj 判定対象の CORBA オブジェクト 00058 # 00059 # @return FsmParticipant 判定結果 00060 # 00061 # @since 0.4.0 00062 # 00063 # @else 00064 # 00065 # @endif 00066 def isFsmParticipant(obj): 00067 fsmp = obj._narrow(RTC.FsmParticipant) 00068 return not CORBA.is_nil(fsmp) 00069 00070 00071 ## 00072 # @if jp 00073 # 00074 # @brief Fsm であるか判定する 00075 # 00076 # 指定されたRTコンポーネントが Fsm であるか判定する。 00077 # Fsm は、 ExecutionContext の Semantics が Stimulus Response Processing の 00078 # 場合に、状態遷移を定義するために利用されるRTコンポーネントの型である。 00079 # 00080 # @param obj 判定対象の CORBA オブジェクト 00081 # 00082 # @return Fsm 判定結果 00083 # 00084 # @since 0.4.0 00085 # 00086 # @else 00087 # 00088 # @endif 00089 def isFsmObject(obj): 00090 fsm = obj._narrow(RTC.FsmObject) 00091 return not CORBA.is_nil(fsm) 00092 00093 00094 ## 00095 # @if jp 00096 # 00097 # @brief multiModeComponent であるか判定する 00098 # 00099 # 指定されたRTコンポーネントが multiModeComponent であるか判定する。 00100 # multiModeComponent は、 ExecutionContext の Semantics が Modes of Operatin 00101 # の場合に、 Mode を定義するために利用されるRTコンポーネントの型である。 00102 # 00103 # @param obj 判定対象の CORBA オブジェクト 00104 # 00105 # @return multiModeComponent 判定結果 00106 # 00107 # @since 0.4.0 00108 # 00109 # @else 00110 # 00111 # @endif 00112 def isMultiModeObject(obj): 00113 mmc = obj._narrow(RTC.MultiModeObject) 00114 return not CORBA.is_nil(mmc)