ConfigAdmin.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 # -*- coding: euc-jp -*- 
00003 
00004 ##
00005 # @file ConfigAdmin.py
00006 # @brief Configuration Administration classes
00007 # @date $Date: 2007/09/04$
00008 # @author Noriaki Ando <n-ando@aist.go.jp> and Shinji Kurihara
00009 # 
00010 # Copyright (C) 2007-2008
00011 #     Task-intelligence Research Group,
00012 #     Intelligent Systems Research Institute,
00013 #     National Institute of
00014 #         Advanced Industrial Science and Technology (AIST), Japan
00015 #     All rights reserved.
00016 
00017 
00018 
00019 import copy
00020 import OpenRTM_aist
00021 
00022 
00023 class OnUpdateCallback:
00024   def __init__(self):
00025     pass
00026 
00027 
00028   def __call__(self, config_set):
00029     pass
00030 
00031 
00032 
00033 class OnUpdateParamCallback:
00034   def __init__(self):
00035     pass
00036 
00037 
00038   def __call__(self, config_set, config_param):
00039     pass
00040 
00041 
00042 
00043 class OnSetConfigurationSetCallback:
00044   def __init__(self):
00045     pass
00046 
00047 
00048   def __call__(self, config_set):
00049     pass
00050 
00051 
00052 
00053 class OnAddConfigurationAddCallback:
00054   def __init__(self):
00055     pass
00056 
00057 
00058   def __call__(self, config_set):
00059     pass
00060 
00061 
00062 
00063 class OnRemoveConfigurationSetCallback:
00064   def __init__(self):
00065     pass
00066 
00067 
00068   def __call__(self, config_set):
00069     pass
00070 
00071 
00072 
00073 class OnActivateSetCallback:
00074   def __init__(self):
00075     pass
00076 
00077 
00078   def __call__(self, config_id):
00079     pass
00080 
00081 
00082 
00083 ##
00084 # @if jp
00085 # @class Config
00086 # @brief Config クラス
00087 # 
00088 # コンフィギュレーションパラメータの情報を保持するクラス。
00089 #
00090 # @since 0.4.0
00091 #
00092 # @else
00093 # @class Config
00094 # @brief Config class
00095 # 
00096 # Class to hold the configuration parameter information.
00097 #
00098 # @since 0.4.0
00099 #
00100 # @endif
00101 class Config:
00102   """
00103   """
00104 
00105   ##
00106   # @if jp
00107   # 
00108   # @brief コンストラクタ
00109   # 
00110   # コンストラクタ
00111   # 
00112   # @param self 
00113   # @param name コンフィギュレーションパラメータ名
00114   # @param var コンフィギュレーションパラメータ格納用変数
00115   # @param def_val 文字列形式のデフォルト値
00116   # @param trans 文字列形式変換関数(デフォルト値:None)
00117   # 
00118   # @else
00119   #
00120   # @brief Constructor
00121   # 
00122   # Constructor
00123   #
00124   # @param self 
00125   # @param name Configuration parameter name
00126   # @param var Configuration parameter variable
00127   # @param def_val Default value in string format
00128   # @param trans Function to transform into string format
00129   #
00130   # @endif
00131   def __init__(self, name, var, def_val, trans=None):
00132     self.name = name
00133     self.default_value = def_val
00134     self._var = var
00135     if trans:
00136       self._trans = trans
00137     else:
00138       self._trans = OpenRTM_aist.stringTo
00139 
00140 
00141   ##
00142   # @if jp
00143   # 
00144   # @brief バインドパラメータ値を更新
00145   # 
00146   # コンフィギュレーション設定値でコンフィギュレーションパラメータを更新する
00147   # 
00148   # @param self 
00149   # @param val パラメータ値の文字列表現
00150   # 
00151   # @return 更新処理結果(更新成功:true,更新失敗:false)
00152   # 
00153   # @else
00154   # 
00155   # @brief Update a bind parameter value
00156   # 
00157   # Update configuration paramater by the configuration value.
00158   #
00159   # @param self 
00160   # @param val The parameter values converted into character string format
00161   #
00162   # @return Update result (Successful:true, Failed:false)
00163   # 
00164   # @endif
00165   # virtual bool update(const char* val)
00166   def update(self, val):
00167     if self._trans(self._var, val):
00168       return True
00169     self._trans(self._var, self._default_value)
00170     return False
00171 
00172 
00173 
00174 ##
00175 # @if jp
00176 # @class ConfigAdmin
00177 # @brief ConfigAdmin クラス
00178 # 
00179 # 各種コンフィギュレーション情報を管理するクラス。
00180 # 用語を以下のように定義する。
00181 #
00182 # - コンフィギュレーション: コンポーネントの設定情報。
00183 #
00184 # - (コンフィギュレーション)パラメータ: key-value からなる設定情報。
00185 #   coil::Properties 変数として扱われ、key、value 共に文字列として保
00186 #   持される。key をコンフィギュレーションパラメータ名、value をコン
00187 #   フィギュレーションパラメータ値と呼ぶ。
00188 #
00189 # - コンフィギュレーションセット: コンフィギュレーションパラメータ
00190 #   のリストで、名前 (ID) によって区別される。IDをコンフィギュレーショ
00191 #   ンセットIDと呼ぶ。
00192 #
00193 # - (コンフィギュレーション)パラメータ変数:コンフィギュレーションパ
00194 #   ラメータをRTCのアクティビティ内で実際に利用する際に参照される変
00195 #   数。パラメータごとに固有の型を持つ。
00196 #
00197 # - アクティブ(コンフィギュレーション)セット:現在有効なコンフィギュ
00198 #   レーションセットのことであり、唯一つ存在する。原則として、アクティ
00199 #   ブコンフィギュレーションセットのパラメータがコンフィギュレーショ
00200 #   ンパラメータ変数に反映される。
00201 #
00202 # このクラスでは、コンフィギュレーションのための以下の2つの情報を保
00203 # 持している。
00204 #
00205 # -# コンフィギュレーションセットのリスト
00206 # -# パラメータ変数のリスト
00207 #
00208 # 基本的には、(1) のコンフィギュレーションセットのリストのうち一つを、
00209 # (2) のパラメータ変数へ反映させる、のが本クラスの目的である。通常、
00210 # パラメータ変数の変更操作は、コンフィギュレーションセットの変更とパ
00211 # ラメータ変数への反映の2段階で行われる。
00212 #
00213 # コンフィギュレーションセットのリストの操作には、以下の関数を用いる。
00214 #
00215 # - getConfigurationSets()
00216 # - getConfigurationSet()
00217 # - setConfigurationSetValues()
00218 # - getActiveConfigurationSet()
00219 # - addConfigurationSet()
00220 # - removeConfigurationSet()
00221 # - activateConfigurationSet()
00222 #
00223 # これらの関数により、コンフィギュレーションセットの変更、追加、削除、
00224 # 取得、アクティブ化を行う。これらの操作により変更されたコンフィギュ
00225 # レーションセットを、RTCのアクティビティから使用するパラメータ変数
00226 # に反映させるには、以下の update() 関数を用いる。
00227 #
00228 # - update(void)
00229 # - update(const char* config_set)
00230 # - update(const char* config_set, const char* config_param)
00231 #
00232 # コンフィギュレーション操作をフックするためにコールバックファンクタ
00233 # を与えることができる。フックできる操作は以下の通り。
00234 #
00235 # - ON_UPDATE                   : update() コール時
00236 # - ON_UPDATE_PARAM             : update(param) コール時
00237 # - ON_SET_CONFIGURATIONSET     : setConfigurationSet() コール時
00238 # - ON_ADD_CONFIGURATIONSET     : addConfigurationSet() コール時
00239 # - ON_REMOVE_CONFIGURATIONSET  : removeConfigurationSet() コール時
00240 # - ON_ACTIVATE_CONFIGURATIONSET: activateConfigurationSet() コール時
00241 #
00242 # @since 0.4.0
00243 #
00244 # @else
00245 # @class ConfigAdmin
00246 # @brief ConfigAdmin class
00247 # 
00248 # Class to manage various configuration information.
00249 # Now terms for this class are defined as follows.
00250 #
00251 # - Configurations: The configuration information for the RTCs.
00252 #
00253 # - (Configuration) parameters: Configuration information that
00254 #   consists of a key-value pair. The "key" and the "value" are
00255 #   both stored as character string values in a coil::Properties
00256 #   variable in this class. The "key" is called the "configuration
00257 #   parameter name", and the "value" is called the "configuration
00258 #   parameter value".
00259 #
00260 # - Configuration-sets: This is a list of configuration parameters,
00261 #   and it is distinguished by name (ID). The ID is called
00262 #   configuration-set ID.
00263 #
00264 # - (Configuration) parameter variables: The variables to be
00265 #   referred when configuration parameters are actually used within
00266 #   the activity of an RTC. Each variable has each type.
00267 #
00268 # - Active (configuration) set: This is the only configuration-set
00269 #   that is currently active. The parameter values of the active
00270 #    configuration-set are substituted into configuration variables
00271 #   in principle.
00272 #
00273 # The following two configuration informations are stored in this class.
00274 #
00275 # -# A list of configuration-set
00276 # -# A list of configuration parameter variables
00277 #
00278 # Basically, the purpose of this class is to set one of the
00279 # configuration-set in the list of (1) into parameter variables of
00280 # (2). Usually, configuration parameter variables manipulation is
00281 # performed with two-phases of configuration-set setting and
00282 # parameter variables setting.
00283 #
00284 # The configuration-set manipulations are performed by the
00285 # following functions.
00286 #
00287 # - getConfigurationSets()
00288 # - getConfigurationSet()
00289 # - setConfigurationSetValues()
00290 # - getActiveConfigurationSet()
00291 # - addConfigurationSet()
00292 # - removeConfigurationSet()
00293 # - activateConfigurationSet()
00294 #
00295 # Modification, addition, deletion, acquisition and activation of
00296 # configuration-set are performed by these functions. In order to
00297 # reflect configuration-set, which is manipulated by these
00298 # functions, on parameter variables that are used from RTC
00299 # activities, the following update() functions are used .
00300 #
00301 # - update(void)
00302 # - update(const char* config_set)
00303 # - update(const char* config_set, const char* config_param)
00304 #
00305 # Callback functors can be given to hook configuration
00306 # operation. Operations to be hooked are as follows.
00307 #
00308 # - ON_UPDATE                   : when update() is called
00309 # - ON_UPDATE_PARAM             : when update(param) is called
00310 # - ON_SET_CONFIGURATIONSET     : when setConfigurationSet() is called
00311 # - ON_ADD_CONFIGURATIONSET     : when addConfigurationSet() is called
00312 # - ON_REMOVE_CONFIGURATIONSET  : when removeConfigurationSet() is called
00313 # - ON_ACTIVATE_CONFIGURATIONSET: when activateConfigurationSet() is called
00314 #
00315 # @since 0.4.0
00316 #
00317 # @endif
00318 class ConfigAdmin:
00319   """
00320   """
00321 
00322   ##
00323   # @if jp
00324   # 
00325   # @brief コンストラクタ
00326   # 
00327   # コンストラクタ
00328   # 
00329   # @param self 
00330   # @param configsets 設定対象プロパティ名
00331   # 
00332   # @else
00333   # 
00334   # Constructor
00335   #
00336   # @param self 
00337   # @param prop The target property name for setup
00338   # 
00339   # @endif
00340   # ConfigAdmin(coil::Properties& prop);
00341   def __init__(self, configsets):
00342     self._configsets = configsets
00343     self._activeId   = "default"
00344     self._active     = True
00345     self._changed    = False
00346     self._params     = []
00347     self._emptyconf  = OpenRTM_aist.Properties()
00348     self._newConfig  = []
00349     self._listeners  = OpenRTM_aist.ConfigurationListeners()
00350 
00351   ##
00352   # @if jp
00353   # 
00354   # @brief デストラクタ
00355   # 
00356   # デストラクタ。
00357   # 設定されているパラメータを削除する。
00358   # 
00359   # @param self 
00360   # 
00361   # @else
00362   # 
00363   # @brief Destructor
00364   # 
00365   # @param self 
00366   # 
00367   # @endif
00368   def __del__(self):
00369     del self._params
00370 
00371 
00372   ##
00373   # @if jp
00374   # 
00375   # @brief コンフィギュレーションパラメータの設定
00376   # 
00377   # コンフィギュレーションパラメータと変数をバインドする
00378   # 指定した名称のコンフィギュレーションパラメータが既に存在する場合は
00379   # falseを返す。
00380   # 
00381   # @param self 
00382   # @param param_name コンフィギュレーションパラメータ名
00383   # @param var コンフィギュレーションパラメータ格納用変数
00384   # @param def_val コンフィギュレーションパラメータデフォルト値
00385   # @param trans コンフィギュレーションパラメータ文字列変換用関数
00386   #             (デフォルト値:None)
00387   # 
00388   # @return 設定結果(設定成功:true,設定失敗:false)
00389   # 
00390   # @else
00391   # 
00392   # @brief Setup for configuration parameters
00393   # 
00394   # Bind configuration parameter to its variable.
00395   # Return false, if configuration parameter of specified name has already 
00396   # existed.
00397   #
00398   # @param self 
00399   # @param param_name Configuration parameter name
00400   # @param var Configuration parameter variable
00401   # @param def_val Default value of configuration parameter
00402   # @param trans Function to transform configuration parameter type into 
00403   #        string format
00404   #
00405   # @return Setup result (Successful:true, Failed:false)
00406   #
00407   # 
00408   # @endif
00409   #template <typename VarType>
00410   # bool bindParameter(const char* param_name, VarType& var,
00411   #                    const char* def_val,
00412   #                    bool (*trans)(VarType&, const char*) = coil::stringTo)
00413   def bindParameter(self, param_name, var, def_val, trans=None):
00414     if trans is None:
00415       trans = OpenRTM_aist.stringTo
00416     
00417     if self.isExist(param_name):
00418       return False
00419 
00420     if not trans(var, def_val):
00421       return False
00422     
00423     self._params.append(Config(param_name, var, def_val, trans))
00424     return True
00425 
00426 
00427   ##
00428   # void update(void);
00429   #
00430   # @if jp
00431   #
00432   # @brief コンフィギュレーションパラメータの更新
00433   #        (アクティブコンフィギュレーションセット)
00434   # 
00435   # コンフィギュレーションセットが更新されている場合に、現在アクティ
00436   # ブになっているコンフィギュレーションに設定した値で、コンフィギュ
00437   # レーションパラメータの値を更新する。この処理での更新は、アクティ
00438   # ブとなっているコンフィギュレーションセットが存在している場合、前
00439   # 回の更新からコンフィギュレーションセットの内容が更新されている場
00440   # 合のみ実行される。
00441   #
00442   # @else
00443   #
00444   # @brief Update the values of configuration parameters
00445   #        (Active configuration set)
00446   # 
00447   # When configuration set is updated, update the configuration
00448   # parameter value to the value that is set to the current active
00449   # configuration.  This update will be executed, only when an
00450   # active configuration set exists and the content of the
00451   # configuration set has been updated from the last update.
00452   #
00453   # @endif
00454   #
00455   # void update(const char* config_set);
00456   #
00457   # @if jp
00458   #
00459   # @brief コンフィギュレーションパラメータの更新(ID指定)
00460   # 
00461   # コンフィギュレーション変数の値を、指定したIDを持つコンフィギュレー
00462   # ションセットの値で更新する。これにより、アクティブなコンフィギュ
00463   # レーションセットは変更されない。したがって、アクティブコンフィギュ
00464   # レーションセットとパラメータ変数の間に矛盾が発生する可能性がある
00465   # ので注意が必要である。
00466   #
00467   # 指定したIDのコンフィギュレーションセットが存在しない場合は、何も
00468   # せずに終了する。
00469   #
00470   # @param config_set 設定対象のコンフィギュレーションセットID
00471   # 
00472   # @else
00473   #
00474   # @brief Update configuration parameter (By ID)
00475   # 
00476   # This operation updates configuration variables by the
00477   # configuration-set with specified ID. This operation does not
00478   # change current active configuration-set. Since this operation
00479   # causes inconsistency between current active configuration set
00480   # and actual values of configuration variables, user should
00481   # carefully use it.
00482   #
00483   # This operation ends without doing anything, if the
00484   # configuration-set does not exist.
00485   #
00486   # @param config_set The target configuration set's ID to setup
00487   #
00488   # @endif
00489   #
00490   # void update(const char* config_set, const char* config_param);
00491   #
00492   # @if jp
00493   #
00494   # @brief コンフィギュレーションパラメータの更新(名称指定)
00495   # 
00496   # 特定のコンフィギュレーション変数の値を、指定したIDを持つコンフィ
00497   # ギュレーションセットの値で更新する。これにより、アクティブなコン
00498   # フィギュレーションセットは変更されない。したがって、アクティブコ
00499   # ンフィギュレーションセットとパラメータ変数の間に矛盾が発生する可
00500   # 能性があるので注意が必要である。
00501   #
00502   # 指定したIDのコンフィギュレーションセットや、指定した名称のパラメー
00503   # タが存在しない場合は、何もせずに終了する。
00504   #
00505   # @param config_set コンフィギュレーションID
00506   # @param config_param コンフィギュレーションパラメータ名
00507   # 
00508   # @else
00509   #
00510   # @brief Update the values of configuration parameters (By name)
00511   # 
00512   # This operation updates a configuration variable by the
00513   # specified configuration parameter in the
00514   # configuration-set. This operation does not change current
00515   # active configuration-set. Since this operation causes
00516   # inconsistency between current active configuration set and
00517   # actual values of configuration variables, user should carefully
00518   # use it.
00519   #
00520   # This operation ends without doing anything, if the
00521   # configuration-set or the configuration parameter do not exist.
00522   #
00523   # @param config_set configuration-set ID.
00524   # @param config_param configuration parameter name.
00525   #
00526   # @endif
00527   #
00528   def update(self, config_set=None, config_param=None):
00529     # update(const char* config_set)
00530     if config_set and config_param is None:
00531       if self._configsets.hasKey(config_set) is None:
00532         return
00533       prop = self._configsets.getNode(config_set)
00534       for i in range(len(self._params)):
00535         if prop.hasKey(self._params[i].name):
00536           self._params[i].update(prop.getProperty(self._params[i].name))
00537           self.onUpdate(config_set)
00538 
00539     # update(const char* config_set, const char* config_param)
00540     if config_set and config_param:
00541       key = config_set
00542       key = key+"."+config_param
00543       for conf in self._params:
00544         if conf.name == config_param:
00545           conf.update(self._configsets.getProperty(key))
00546           self.onUpdateParam(config_set, config_param)
00547           return
00548 
00549     # update()
00550     if config_set is None and config_param is None:
00551       if self._changed and self._active:
00552         self.update(self._activeId)
00553         self._changed = False
00554       return
00555 
00556 
00557   ##
00558   # @if jp
00559   # 
00560   # @brief コンフィギュレーションパラメータの存在確認
00561   # 
00562   # 指定した名称を持つコンフィギュレーションパラメータが存在するか確認する。
00563   # 
00564   # @param self 
00565   # @param param_name コンフィギュレーションパラメータ名称。
00566   # 
00567   # @return 存在確認結果(パラメータあり:true,パラメータなし:false)
00568   # 
00569   # @else
00570   # 
00571   # @brief Check the existence of configuration parameters
00572   # 
00573   # Check the existence of configuration parameters of specified name.
00574   #
00575   # @param self 
00576   # @param name Configuration parameter name
00577   #
00578   # @return Result of existance confirmation 
00579   #         (Parameters exist:true, else:false)
00580   # 
00581   # @endif
00582   # bool isExist(const char* name);
00583   def isExist(self, param_name):
00584     if not self._params:
00585       return False
00586     
00587     for conf in self._params:
00588       if conf.name == param_name:
00589         return True
00590 
00591     return False
00592 
00593 
00594   ##
00595   # @if jp
00596   # 
00597   # @brief コンフィギュレーションパラメータの変更確認
00598   # 
00599   # コンフィギュレーションパラメータが変更されたか確認する。
00600   # 
00601   # @param self 
00602   # 
00603   # @return 変更確認結果(変更あり:true、変更なし:false)
00604   # 
00605   # @else
00606   # 
00607   # @brief Confirm to change configuration parameters
00608   # 
00609   # Confirm that configuration parameters have changed.
00610   #
00611   # @param self 
00612   #
00613   # @return Result of change confirmation
00614   #         (There is a change:true、No change:false)
00615   # 
00616   # @endif
00617   # bool isChanged(void) {return m_changed;}
00618   def isChanged(self):
00619     return self._changed
00620 
00621 
00622   ##
00623   # @if jp
00624   # 
00625   # @brief アクティブ・コンフィギュレーションセットIDの取得
00626   # 
00627   # 現在アクティブなコンフィギュレーションセットのIDを取得する。
00628   # 
00629   # @param self 
00630   # 
00631   # @return アクティブ・コンフィギュレーションセットID
00632   # 
00633   # @else
00634   # 
00635   # @brief Get ID of active configuration set
00636   # 
00637   # Get ID of the current active configuration set.
00638   #
00639   # @param self 
00640   #
00641   # @return The active configuration set ID
00642   # 
00643   # @endif
00644   # const char* getActiveId(void);
00645   def getActiveId(self):
00646     return self._activeId
00647 
00648 
00649   ##
00650   # @if jp
00651   # 
00652   # @brief コンフィギュレーションセットの存在確認
00653   # 
00654   # 指定したコンフィギュレーションセットが存在するか確認する。
00655   # 
00656   # @param self 
00657   # @param config_id 確認対象コンフィギュレーションセットID
00658   # 
00659   # @return 存在確認結果(指定したConfigSetあり:true、なし:false)
00660   # 
00661   # @else
00662   # 
00663   # @brief Check the existence of configuration set
00664   # 
00665   # Check the existence of specified configuration set.
00666   #
00667   # @param self 
00668   # @param config_id ID of target configuration set for confirmation
00669   # @return Result of existence confirmation 
00670   #         (Specified ConfigSet exists:true, else:false)
00671   # @endif
00672   # bool haveConfig(const char* config_id);
00673   def haveConfig(self, config_id):
00674     if self._configsets.hasKey(config_id) is None:
00675       return False
00676     else:
00677       return True
00678 
00679 
00680   ##
00681   # @if jp
00682   # 
00683   # @brief コンフィギュレーションセットのアクティブ化確認
00684   # 
00685   # コンフィギュレーションセットがアクティブ化されているか確認する。
00686   # 
00687   # @param self 
00688   # 
00689   # @return 状態確認結果(アクティブ状態:true、非アクティブ状態:false)
00690   # 
00691   # @else
00692   # 
00693   # @brief Confirm to activate configuration set
00694   # 
00695   # Confirm that configuration set has been activated.
00696   #
00697   # @param self 
00698   #
00699   # @return Result of state confirmation
00700   #         (Active state:true, Inactive state:false)
00701   # 
00702   # @endif
00703   # bool isActive(void);
00704   def isActive(self):
00705     return self._active
00706 
00707 
00708   ##
00709   # @if jp
00710   # 
00711   # @brief 全コンフィギュレーションセットの取得
00712   # 
00713   # 設定されている全コンフィギュレーションセットを取得する。
00714   # 
00715   # @param self 
00716   # 
00717   # @return 全コンフィギュレーションセット
00718   # 
00719   # @else
00720   # 
00721   # @brief Get all configuration sets
00722   # 
00723   # Get all specified configuration sets
00724   #
00725   # @param self 
00726   #
00727   # @return All configuration sets
00728   # 
00729   # @endif
00730   # const std::vector<coil::Properties*>& getConfigurationSets(void);
00731   def getConfigurationSets(self):
00732     return self._configsets.getLeaf()
00733 
00734 
00735   ##
00736   # @if jp
00737   # 
00738   # @brief 指定したIDのコンフィギュレーションセットの取得
00739   # 
00740   # IDで指定したコンフィギュレーションセットを取得する。
00741   # 指定したコンフィギュレーションセットが存在しない場合は、
00742   # 空のコンフィギュレーションセットを返す。
00743   # 
00744   # @param self 
00745   # @param config_id 取得対象コンフィギュレーションセットのID
00746   # 
00747   # @return コンフィギュレーションセット
00748   # 
00749   # @else
00750   # 
00751   # @brief Get a configuration set by specified ID
00752   # 
00753   # Get a configuration set that was specified by ID
00754   # Return empty configuration set, if a configuration set of
00755   # specified ID doesn't exist.
00756   #
00757   # @param self 
00758   # @param config_id ID of the target configuration set for getting
00759   #
00760   # @return The configuration set
00761   # 
00762   # @endif
00763   # const coil::Properties& getConfigurationSet(const char* config_id);
00764   def getConfigurationSet(self, config_id):
00765     prop = self._configsets.getNode(config_id)
00766     if prop is None:
00767       return self._emptyconf
00768     return prop
00769 
00770 
00771   ##
00772   # @if jp
00773   # 
00774   # @brief 指定したプロパティのコンフィギュレーションセットへの追加
00775   # 
00776   # 指定したプロパティをコンフィギュレーションセットへ追加する。
00777   # 
00778   # @param self 
00779   # @param config_set 追加するプロパティ
00780   # 
00781   # @return 追加処理実行結果(追加成功:true、追加失敗:false)
00782   # 
00783   # @else
00784   # 
00785   # @brief Add to configuration set from specified property
00786   # 
00787   # Add specified property to configuration set.
00788   #
00789   # @param self 
00790   # @param configuration_set Property to add
00791   #
00792   # @return Add result (Successful:true, Failed:false)
00793   # 
00794   # @endif
00795   # bool setConfigurationSetValues(const coil::Properties& config_set)
00796   def setConfigurationSetValues(self, config_set):
00797     if config_set.getName() == "" or config_set.getName() is None:
00798       return False
00799 
00800     if not self._configsets.hasKey(config_set.getName()):
00801       return False
00802 
00803     p = self._configsets.getNode(config_set.getName())
00804     if p is None:
00805       return False
00806 
00807     p.mergeProperties(config_set)
00808     self._changed = True
00809     self._active  = False
00810     self.onSetConfigurationSet(config_set)
00811     return True
00812 
00813 
00814   ##
00815   # @if jp
00816   # 
00817   # @brief アクティブ・コンフィギュレーションセットを取得
00818   # 
00819   # 現在アクティブとなっているコンフィギュレーションセットを取得する。
00820   # アクティブとなっているコンフィギュレーションセットが存在しない場合は、
00821   # 空のコンフィギュレーションセット を返す。
00822   # 
00823   # @param self 
00824   # 
00825   # @return アクティブ・コンフィギュレーションセット
00826   # 
00827   # @else
00828   # 
00829   # @brief Get the active configuration set
00830   # 
00831   # Get the current active configuration set.
00832   # Return empty configuration set, if an active configuration set 
00833   # doesn't exist.
00834   #
00835   # @param self 
00836   # @return The active configuration set
00837   # 
00838   # @endif
00839   # const coil::Properties& getActiveConfigurationSet(void);
00840   def getActiveConfigurationSet(self):
00841     p = self._configsets.getNode(self._activeId)
00842     if p is None:
00843       return self._emptyconf
00844 
00845     return p
00846 
00847 
00848   ##
00849   # @if jp
00850   # 
00851   # @brief コンフィギュレーションセットに設定値を追加
00852   # 
00853   # コンフィギュレーションセットに設定値を追加する。
00854   # 
00855   # @param self 
00856   # @param configset 追加するプロパティ
00857   # 
00858   # @return 追加処理結果(追加成功:true、追加失敗:false)
00859   # 
00860   # @else
00861   # 
00862   # @brief Add the configuration value to configuration set
00863   # 
00864   # Add the configuration value to configuration set
00865   #
00866   # @param self 
00867   # @param configuration_set Property to add
00868   #
00869   # @return Add Result (Successful:true, Failed:false)
00870   # 
00871   # @endif
00872   # bool addConfigurationSet(const coil::Properties& configuration_set);
00873   def addConfigurationSet(self, configset):
00874     if self._configsets.hasKey(configset.getName()):
00875       return False
00876     node = configset.getName()
00877 
00878     # Create node
00879     self._configsets.createNode(node)
00880 
00881     p = self._configsets.getNode(node)
00882     if p is None:
00883       return False
00884 
00885     p.mergeProperties(configset)
00886     self._newConfig.append(node)
00887 
00888     self._changed = True
00889     self._active  = False
00890     self.onAddConfigurationSet(configset)
00891     return True
00892 
00893 
00894   ##
00895   # @if jp
00896   #
00897   # @brief コンフィギュレーションセットの削除
00898   # 
00899   # 指定したIDのコンフィギュレーションセットを削除する。
00900   #
00901   # 指定したIDのコンフィギュレーションセットが存在しない場合は、
00902   # falseを返す。削除可能なコンフィギュレーションセットは、
00903   # addConfigruationSet() によって追加したコンフィギュレーションセッ
00904   # トのみであり、デフォルトコンフィギュレーションセット、コンポーネ
00905   # ント起動時にファイルから読み込まれるコンフィギュレーションセット
00906   # は削除することができない。
00907   #
00908   # また、指定したコンフィギュレーションセットが現在アクティブである
00909   # 場合には、いかなるコンフィギュレーションセットでも削除できない。
00910   #
00911   # この関数により実際にコンフィギュレーションセットが削除された場合、
00912   # setOnRemoveConfigurationSet() でセットされたコールバック関数が呼
00913   # び出される。
00914   #
00915   # @param self 
00916   # @param config_id 削除対象コンフィギュレーションセットのID
00917   #
00918   # @return 削除処理結果(削除成功:true、削除失敗:false)
00919   #
00920   # @else
00921   #
00922   # @brief Remove the configuration set
00923   # 
00924   # Remove the configuration set of specified ID Return empty
00925   # configuration set, if a configuration set of specified ID
00926   # doesn't exist.
00927   #
00928   # The configuration-sets that can be removed by this function are
00929   # only configuration-sets newly added by the
00930   # addConfigurationSet() function. The configuration that can be
00931   # removed by this function is only newly added configuration-set
00932   # by addConfigurationSet() function.  The "default"
00933   # configuration-set and configurationi-sets that is loaded from
00934   # configuration file cannot be removed.
00935   #
00936   # If the specified configuration is active currently, any
00937   # configurations are not deleted.
00938   #
00939   # Callback functions that are set by
00940   # addOnRemovedConfigurationSet() will be called if a
00941   # configuration-set is deleted actually by this function.
00942   #
00943   # @param self 
00944   # @param config_id ID of the target configuration set for remove
00945   #
00946   # @return Remove result (Successful:true, Failed:false)
00947   #
00948   # @endif
00949   #
00950   # bool removeConfigurationSet(const char* config_id);
00951   def removeConfigurationSet(self, config_id):
00952     if config_id == "default":
00953       return False
00954     if self._activeId == config_id:
00955       return False
00956 
00957     find_flg = False
00958     # removeable config-set is only config-sets newly added
00959     for (idx,conf) in enumerate(self._newConfig):
00960       if conf == config_id:
00961         find_flg = True
00962         break
00963 
00964 
00965     if not find_flg:
00966       return False
00967 
00968     p = self._configsets.getNode(config_id)
00969     if p:
00970       p.getRoot().removeNode(config_id)
00971       del p
00972 
00973     del self._newConfig[idx]
00974 
00975     self._changed = True
00976     self._active  = False
00977     self.onRemoveConfigurationSet(config_id)
00978     return True
00979 
00980 
00981   ##
00982   # @if jp
00983   # 
00984   # @brief コンフィギュレーションセットのアクティブ化
00985   # 
00986   # 指定したIDのコンフィギュレーションセットをアクティブ化する。
00987   # 指定したIDのコンフィギュレーションセットが存在しない場合は、
00988   # falseを返す。
00989   # 
00990   # @param self 
00991   # @param config_id 削除対象コンフィギュレーションセットのID
00992   # 
00993   # @return アクティブ処理結果(成功:true、失敗:false)
00994   # 
00995   # @else
00996   # 
00997   # @brief Activate the configuration set
00998   # 
00999   # Activate the configuration set of specified ID
01000   # Return empty configuration set, if a configuration set of
01001   # specified ID doesn't exist.
01002   #
01003   # @param self 
01004   # @param config_id ID of the target configuration set for remove
01005   #
01006   # @return Activate result (Remove success:true、Remove failure:false)
01007   # 
01008   # @endif
01009   # bool activateConfigurationSet(const char* config_id);
01010   def activateConfigurationSet(self, config_id):
01011     if config_id is None:
01012       return False
01013 
01014     # '_<conf_name>' is special configuration set name
01015     if config_id[0] == '_':
01016       return False
01017 
01018     if not self._configsets.hasKey(config_id):
01019       return False
01020     self._activeId = config_id
01021     self._active   = True
01022     self._changed  = True
01023     self.onActivateSet(config_id)
01024     return True
01025 
01026 
01027   #------------------------------------------------------------
01028   # obsolete functions
01029   #
01030 
01031   ##
01032   # @if jp
01033   #
01034   # @brief OnUpdate のコールバックの設定
01035   #
01036   # OnUpdate で呼ばれるコールバックのオブジェクトを設定する。
01037   # 
01038   # @param self 
01039   # @param cb OnUpdateCallback型のオブジェクト
01040   #
01041   # @else
01042   #
01043   # @brief Set callback that is called by OnUpdate. 
01044   # 
01045   # @param self 
01046   # @param cb OnUpdateCallback type object
01047   #
01048   # @endif
01049   #
01050   # void setOnUpdate(OnUpdateCallback* cb);
01051   def setOnUpdate(self, cb):
01052     print "setOnUpdate function is obsolete."
01053     print "Use addConfigurationSetNameListener instead."
01054     self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_UPDATE_CONFIG_SET].addListener(cb, False)
01055     return
01056 
01057 
01058   ##
01059   # @if jp
01060   #
01061   # @brief OnUpdateParam のコールバックの設定
01062   #
01063   # OnUpdateParam で呼ばれるコールバックのオブジェクトを設定する。
01064   # 
01065   # @param self 
01066   # @param cb OnUpdateParamCallback型のオブジェクト
01067   #
01068   # @else
01069   #
01070   # @brief Set callback that is called by OnUpdateParam. 
01071   # 
01072   # @param self 
01073   # @param cb OnUpdateParamCallback type object
01074   #
01075   # @endif
01076   #
01077   # void setOnUpdateParam(OnUpdateParamCallback* cb);
01078   def setOnUpdateParam(self, cb):
01079     print "setOnUpdateParam function is obsolete."
01080     print "Use addConfigurationParamListener instead."
01081     self._listeners.configparam_[OpenRTM_aist.ConfigurationParamListenerType.ON_UPDATE_CONFIG_PARAM].addListener(cb, False)
01082     return
01083 
01084 
01085   ##
01086   # @if jp
01087   #
01088   # @brief OnSetConfigurationSet のコールバックの設定
01089   #
01090   # OnSetConfigurationSet で呼ばれるコールバックのオブジェクトを設定する。
01091   # 
01092   # @param self 
01093   # @param cb OnSetConfigurationSetCallback型のオブジェクト
01094   #
01095   # @else
01096   #
01097   # @brief Set callback that is called by OnSetConfiguration. 
01098   # 
01099   # @param self 
01100   # @param cb OnSetConfigurationSetCallback type object
01101   #
01102   # @endif
01103   #
01104   # void setOnSetConfigurationSet(OnSetConfigurationSetCallback* cb);
01105   def setOnSetConfigurationSet(self, cb):
01106     print "setOnSetConfigurationSet function is obsolete."
01107     print "Use addConfigurationSetListener instead."
01108     self._listeners.configset_[OpenRTM_aist.ConfigurationSetListenerType.ON_SET_CONFIG_SET].addListener(cb, False)
01109     return
01110 
01111 
01112   ##
01113   # @if jp
01114   #
01115   # @brief OnAddConfigurationSet のコールバックの設定
01116   #
01117   # OnAddConfigurationSet で呼ばれるコールバックのオブジェクトを設定する。
01118   # 
01119   # @param self 
01120   # @param cb OnAddConfigurationAddCallback型のオブジェクト
01121   #
01122   # @else
01123   #
01124   # @brief Set callback that is called by OnSetConfiguration. 
01125   # 
01126   # @param self 
01127   # @param cb OnSetConfigurationSetCallback type object
01128   #
01129   # @endif
01130   #
01131   # void setOnAddConfigurationSet(OnAddConfigurationAddCallback* cb);
01132   def setOnAddConfigurationSet(self, cb):
01133     print "setOnAddConfigurationSet function is obsolete."
01134     print "Use addConfigurationSetListener instead."
01135     self._listeners.configset_[OpenRTM_aist.ConfigurationSetListenerType.ON_ADD_CONFIG_SET].addListener(cb, False)
01136     return
01137 
01138 
01139   ##
01140   # @if jp
01141   #
01142   # @brief OnRemoveConfigurationSet のコールバックの設定
01143   #
01144   # OnRemoveConfiguration で呼ばれるコールバックのオブジェクトを設定する。
01145   # 
01146   # @param self 
01147   # @param cb OnRemoveConfigurationSetCallback型のオブジェクト
01148   #
01149   # @else
01150   #
01151   # @brief Set callback that is called by OnRemoveConfigurationSet. 
01152   # 
01153   # @param self 
01154   # @param cb OnRemoveConfigurationSetCallback type object
01155   #
01156   # @endif
01157   #
01158   # void setOnRemoveConfigurationSet(OnRemoveConfigurationSetCallback* cb);
01159   def setOnRemoveConfigurationSet(self, cb):
01160     print "setOnRemoveConfigurationSet function is obsolete."
01161     print "Use addConfigurationSetNameListener instead."
01162     self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_REMOVE_CONFIG_SET].addListener(cb, False)
01163     return
01164 
01165 
01166   ##
01167   # @if jp
01168   #
01169   # @brief OnActivateSet のコールバックの設定
01170   #
01171   # OnActivateSet で呼ばれるコールバックのオブジェクトを設定する。
01172   # 
01173   # @param self 
01174   # @param cb OnActivateSetCallback型のオブジェクト
01175   #
01176   # @else
01177   #
01178   # @brief Set callback that is called by OnActivateSet. 
01179   # 
01180   # @param self 
01181   # @param cb OnActivateSetCallback type object
01182   #
01183   # @endif
01184   #
01185   # void setOnActivateSet(OnActivateSetCallback* cb);
01186   def setOnActivateSet(self, cb):
01187     print "setOnActivateSet function is obsolete."
01188     print "Use addConfigurationSetNameListener instead."
01189     self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_ACTIVATE_CONFIG_SET].addListener(cb, False)
01190     return
01191 
01192   #
01193   # end of obsolete functions
01194   #------------------------------------------------------------
01195 
01196   ##
01197   # @if jp
01198   #
01199   # @brief ConfigurationParamListener を追加する
01200   #
01201   # update(const char* config_set, const char* config_param) が呼ばれた際に
01202   # コールされるリスナ ConfigurationParamListener を追加する。
01203   # type には現在のところ ON_UPDATE_CONFIG_PARAM のみが入る。
01204   #
01205   # @param type ConfigurationParamListenerType型の値。
01206   #             ON_UPDATE_CONFIG_PARAM がある。
01207   #
01208   # @param listener ConfigurationParamListener 型のリスナオブジェクト。
01209   # @param autoclean リスナオブジェクトを自動で削除するかどうかのフラグ
01210   # 
01211   # @else
01212   #
01213   # @brief Adding ConfigurationParamListener 
01214   # 
01215   # This function adds a listener object which is called when
01216   # update(const char* config_set, const char* config_param) is
01217   # called. In the type argument, currently only
01218   # ON_UPDATE_CONFIG_PARAM is allowed.
01219   #
01220   # @param type ConfigurationParamListenerType value
01221   #             ON_UPDATE_CONFIG_PARAM is only allowed.
01222   #
01223   # @param listener ConfigurationParamListener listener object.
01224   # @param autoclean a flag whether if the listener object autocleaned.
01225   #
01226   # @endif
01227   #
01228   # void addConfigurationParamListener(ConfigurationParamListenerType type,
01229   #                                    ConfigurationParamListener* listener,
01230   #                                    bool autoclean = true);
01231   def addConfigurationParamListener(self, type, listener, autoclean = True):
01232     self._listeners.configparam_[type].addListener(listener, autoclean)
01233     return
01234 
01235 
01236   ##
01237   # @if jp
01238   #
01239   # @brief ConfigurationParamListener を削除する
01240   #
01241   # addConfigurationParamListener で追加されたリスナオブジェクトを削除する。
01242   #
01243   # @param type ConfigurationParamListenerType型の値。
01244   #             ON_UPDATE_CONFIG_PARAM がある。
01245   # @param listener 与えたリスナオブジェクトへのポインタ
01246   # 
01247   # @else
01248   #
01249   # @brief Removing ConfigurationParamListener 
01250   # 
01251   # This function removes a listener object which is added by
01252   # addConfigurationParamListener() function.
01253   #
01254   # @param type ConfigurationParamListenerType value
01255   #             ON_UPDATE_CONFIG_PARAM is only allowed.
01256   # @param listener a pointer to ConfigurationParamListener listener object.
01257   #
01258   # @endif
01259   #
01260   # void removeConfigurationParamListener(ConfigurationParamListenerType type,
01261   #                                       ConfigurationParamListener* listener);
01262   def removeConfigurationParamListener(self, type, listener):
01263     self._listeners.configparam_[type].removeListener(listener)
01264     return
01265     
01266 
01267   ##
01268   # @if jp
01269   #
01270   # @brief ConfigurationSetListener を追加する
01271   #
01272   # ConfigurationSet が更新されたときなどに呼ばれるリスナ
01273   # ConfigurationSetListener を追加する。設定可能なイベントは以下の
01274   # 2種類がある。
01275   #
01276   # - ON_SET_CONFIG_SET: setConfigurationSetValues() で
01277   #                      ConfigurationSet に値が設定された場合。
01278   # - ON_ADD_CONFIG_SET: addConfigurationSet() で新しい
01279   #                      ConfigurationSet が追加された場合。
01280   #
01281   # @param type ConfigurationSetListenerType型の値。
01282   # @param listener ConfigurationSetListener 型のリスナオブジェクト。
01283   # @param autoclean リスナオブジェクトを自動で削除するかどうかのフラグ
01284   # 
01285   # @else
01286   #
01287   # @brief Adding ConfigurationSetListener 
01288   # 
01289   # This function add a listener object which is called when
01290   # ConfigurationSet is updated. Available events are the followings.
01291   #
01292   # @param type ConfigurationSetListenerType value
01293   # @param listener ConfigurationSetListener listener object.
01294   # @param autoclean a flag whether if the listener object autocleaned.
01295   #
01296   # @endif
01297   #
01298   # void addConfigurationSetListener(ConfigurationSetListenerType type,
01299   #                                  ConfigurationSetListener* listener,
01300   #                                  bool autoclean = true);
01301   def addConfigurationSetListener(self, type, listener, autoclean = True):
01302     self._listeners.configset_[type].addListener(listener, autoclean)
01303     return
01304 
01305 
01306   ##
01307   # @if jp
01308   #
01309   # @brief ConfigurationSetListener を削除する
01310   #
01311   # addConfigurationSetListener で追加されたリスナオブジェクトを削除する。
01312   #
01313   # @param type ConfigurationSetListenerType型の値。
01314   # @param listener 与えたリスナオブジェクトへのポインタ
01315   # 
01316   # @else
01317   #
01318   # @brief Removing ConfigurationSetListener 
01319   # 
01320   # This function removes a listener object which is added by
01321   # addConfigurationSetListener() function.
01322   #
01323   # @param type ConfigurationSetListenerType value
01324   # @param listener a pointer to ConfigurationSetListener listener object.
01325   #
01326   # @endif
01327   # void removeConfigurationSetListener(ConfigurationSetListenerType type,
01328   #                                     ConfigurationSetListener* listener);
01329   def removeConfigurationSetListener(self, type, listener):
01330     self._listeners.configset_[type].removeListener(listener)
01331     return
01332     
01333 
01334   ##
01335   # @if jp
01336   #
01337   # @brief ConfigurationSetNameListener を追加する
01338   #
01339   # ConfigurationSetName が更新されたときなどに呼ばれるリスナ
01340   # ConfigurationSetNameListener を追加する。設定可能なイベントは以下の
01341   # 3種類がある。
01342   #
01343   # - ON_UPDATE_CONFIG_SET: ある ConfigurationSet がアップデートされた
01344   # - ON_REMOVE_CONFIG_SET: ある ConfigurationSet が削除された
01345   # - ON_ACTIVATE_CONFIG_SET: ある ConfigurationSet がアクティブ化された
01346   #
01347   # @param type ConfigurationSetNameListenerType型の値。
01348   # @param listener ConfigurationSetNameListener 型のリスナオブジェクト。
01349   # @param autoclean リスナオブジェクトを自動で削除するかどうかのフラグ
01350   # 
01351   # @else
01352   #
01353   # @brief Adding ConfigurationSetNameListener 
01354   # 
01355   # This function add a listener object which is called when
01356   # ConfigurationSetName is updated. Available events are the followings.
01357   #
01358   # - ON_UPDATE_CONFIG_SET: A ConfigurationSet has been updated.
01359   # - ON_REMOVE_CONFIG_SET: A ConfigurationSet has been deleted.
01360   # - ON_ACTIVATE_CONFIG_SET: A ConfigurationSet has been activated.
01361   #
01362   # @param type ConfigurationSetNameListenerType value
01363   # @param listener ConfigurationSetNameListener listener object.
01364   # @param autoclean a flag whether if the listener object autocleaned.
01365   #
01366   # @endif
01367   # void 
01368   # addConfigurationSetNameListener(ConfigurationSetNameListenerType type,
01369   #                                 ConfigurationSetNameListener* listener,
01370   #                                 bool autoclean = true);
01371   def addConfigurationSetNameListener(self, type, listener, autoclean = True):
01372     self._listeners.configsetname_[type].addListener(listener, autoclean)
01373     return
01374 
01375 
01376   ##
01377   # @if jp
01378   #
01379   # @brief ConfigurationSetNameListener を削除する
01380   #
01381   # addConfigurationSetNameListener で追加されたリスナオブジェクトを
01382   # 削除する。
01383   #
01384   # @param type ConfigurationSetNameListenerType型の値。
01385   #             ON_UPDATE_CONFIG_PARAM がある。
01386   # @param listener 与えたリスナオブジェクトへのポインタ
01387   # 
01388   # @else
01389   #
01390   # @brief Removing ConfigurationSetNameListener 
01391   # 
01392   # This function removes a listener object which is added by
01393   # addConfigurationSetNameListener() function.
01394   #
01395   # @param type ConfigurationSetNameListenerType value
01396   #             ON_UPDATE_CONFIG_PARAM is only allowed.
01397   # @param listener a pointer to ConfigurationSetNameListener
01398   #             listener object.
01399   #
01400   # @endif
01401   # void
01402   # removeConfigurationSetNameListener(ConfigurationSetNameListenerType type,
01403   #                                    ConfigurationSetNameListener* listener);
01404   def removeConfigurationSetNameListener(self, type, listener):
01405     self._listeners.configsetname_[type].removeListener(listener)
01406     return
01407     
01408 
01409   ##
01410   # @if jp
01411   #
01412   # @brief コンフィギュレーションパラメータの更新(ID指定)時にコールされる
01413   #
01414   # 設定されてるコールバックオブジェクトを呼び出す。
01415   #
01416   # @param self 
01417   # @param config_set 設定対象のコンフィギュレーションセットID
01418   #
01419   # @else
01420   #
01421   # @brief When the configuration parameter is updated, it is called. 
01422   #
01423   # Call the set callback object.
01424   # 
01425   # @param self 
01426   # @param config_set The target configuration set's ID to setup
01427   #
01428   # @endif
01429   #
01430   # void onUpdate(const char* config_set);
01431   def onUpdate(self, config_set):
01432     self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_UPDATE_CONFIG_SET].notify(config_set)
01433     return
01434 
01435 
01436   ##
01437   # @if jp
01438   #
01439   # @brief コンフィギュレーションパラメータの更新(名称指定)時にコールされる
01440   #
01441   # 設定されてるコールバックオブジェクトを呼び出す。
01442   #
01443   # @param self 
01444   # @param config_set コンフィギュレーションID
01445   # @param config_param コンフィギュレーションパラメータ名
01446   #
01447   # @else
01448   #
01449   # @brief When the configuration parameter is updated, it is called. 
01450   #
01451   # Call the set callback object.
01452   # 
01453   # @param self 
01454   # @param config_set configuration-set ID.
01455   # @param config_param configuration parameter name.
01456   #
01457   # @endif
01458   #
01459   # void onUpdateParam(const char* config_set, const char* config_param);
01460   def onUpdateParam(self, config_set, config_param):
01461     self._listeners.configparam_[OpenRTM_aist.ConfigurationParamListenerType.ON_UPDATE_CONFIG_PARAM].notify(config_set,
01462                                                                                                             config_param)
01463     return
01464 
01465 
01466   ##
01467   # @if jp
01468   #
01469   # @brief コンフィギュレーションセットへの追加時にコールされる
01470   #
01471   # 設定されてるコールバックオブジェクトを呼び出す。
01472   #
01473   # @param self 
01474   # @param configuration_set プロパティ
01475   #
01476   # @else
01477   #
01478   # @brief Called when the property is added to the configuration set
01479   #
01480   # Call the set callback object.
01481   # 
01482   # @param self 
01483   # @param configuration_set property
01484   #
01485   # @endif
01486   #
01487   # void onSetConfigurationSet(const coil::Properties& config_set);
01488   def onSetConfigurationSet(self, config_set):
01489     self._listeners.configset_[OpenRTM_aist.ConfigurationSetListenerType.ON_SET_CONFIG_SET].notify(config_set)
01490     return
01491 
01492 
01493   ##
01494   # @if jp
01495   #
01496   # @brief 設定値が追加されたときにコールされる。
01497   #
01498   # 設定されてるコールバックオブジェクトを呼び出す。
01499   #
01500   # @param self 
01501   # @param configuration_set プロパティ
01502   #
01503   # @else
01504   #
01505   # @brief Called when a set value is added to the configuration set
01506   #
01507   # Call the set callback object.
01508   # 
01509   # @param self 
01510   # @param configuration_set property
01511   #
01512   # @endif
01513   #
01514   # void onAddConfigurationSet(const coil::Properties& config_set);
01515   def onAddConfigurationSet(self, config_set):
01516     self._listeners.configset_[OpenRTM_aist.ConfigurationSetListenerType.ON_ADD_CONFIG_SET].notify(config_set)
01517     return
01518 
01519 
01520   ##
01521   # @if jp
01522   #
01523   # @brief セットが削除されてるときにコールされる。
01524   #
01525   # 設定されてるコールバックオブジェクトを呼び出す。
01526   #
01527   # @param self 
01528   # @param config_id プロパティ
01529   #
01530   # @else
01531   #
01532   # @brief Called when the configuration set has been deleted
01533   #
01534   # Call the set callback object.
01535   # 
01536   # @param self 
01537   # @param config_id property
01538   #
01539   # @endif
01540   #
01541   # void onRemoveConfigurationSet(const char* config_id);
01542   def onRemoveConfigurationSet(self, config_id):
01543     self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_REMOVE_CONFIG_SET].notify(config_id)
01544     return
01545 
01546 
01547   ##
01548   # @if jp
01549   #
01550   # @brief セットがアクティブ化されたときにコールされる。
01551   #
01552   # 設定されてるコールバックオブジェクトを呼び出す。
01553   #
01554   # @param self 
01555   # @param config_id プロパティ
01556   #
01557   # @else
01558   #
01559   # @brief Called when the configuration set is made active
01560   #
01561   # Call the set callback object.
01562   # 
01563   # @param self 
01564   # @param config_id property
01565   #
01566   # @endif
01567   #
01568   # void onActivateSet(const char* config_id);
01569   def onActivateSet(self, config_id):
01570     self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_ACTIVATE_CONFIG_SET].notify(config_id)
01571     return
01572 
01573 
01574   class find_conf:
01575     def __init__(self, name):
01576       self._name = name
01577       return
01578 
01579     def __call__(self, conf):
01580       if conf is None or conf is 0:
01581         return False
01582 
01583       return self._name == conf.name


openrtm_aist_python
Author(s): Shinji Kurihara
autogenerated on Thu Aug 27 2015 14:17:28