[openrtm-commit:01760] r661 - trunk/OpenRTM-aist-Python/OpenRTM_aist
openrtm @ openrtm.org
openrtm @ openrtm.org
2016年 2月 26日 (金) 00:25:26 JST
Author: miyamoto
Date: 2016-02-26 00:25:26 +0900 (Fri, 26 Feb 2016)
New Revision: 661
Modified:
trunk/OpenRTM-aist-Python/OpenRTM_aist/CORBA_RTCUtil.py
Log:
[incompat,new_func,->RELENG_1_2] add disconnect_all_by_name() and disconnect_by_portname_connector_name(), disconnect_by_portname_connector_id(). refs #3400
Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/CORBA_RTCUtil.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/CORBA_RTCUtil.py 2016-02-25 14:22:46 UTC (rev 660)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/CORBA_RTCUtil.py 2016-02-25 15:25:26 UTC (rev 661)
@@ -1022,7 +1022,7 @@
#
#
# @param port_ref 対象のポート
-# @param name コネクタ名
+# @param conn_name コネクタ名
# @return portがnilの場合はBAD_PARAMETERを返す
# nilではない場合はdisconnect関数の戻り値を返す。RTC_OKの場合は切断が成功
#
@@ -1030,16 +1030,16 @@
#
# @brief
# @param port_ref
-# @param name
+# @param conn_name
# @return
#
# @endif
-def disconnect_by_portref_connector_name(port_ref, name):
+def disconnect_by_portref_connector_name(port_ref, conn_name):
if CORBA.is_nil(port_ref):
return RTC.BAD_PARAMETER
conprof = port_ref.get_connector_profiles()
for c in conprof:
- if c.name == name:
+ if c.name == conn_name:
return disconnect(c)
return RTC.BAD_PARAMETER
@@ -1052,7 +1052,7 @@
#
#
# @param port_name 対象のポート名
-# @param name コネクタ名
+# @param conn_name コネクタ名
# @return portが存在しない場合はBAD_PARAMETERを返す
# nilではない場合はdisconnect関数の戻り値を返す。RTC_OKの場合は切断が成功
#
@@ -1062,8 +1062,16 @@
# @param
#
# @endif
-def disconnect_by_portname_connector_name(port_name, name):
+def disconnect_by_portname_connector_name(port_name, conn_name):
+ port_ref = get_Port_by_rtcloc(port_name)
+ if port_ref == RTC.PortService._nil:
+ return RTC.BAD_PARAMETER
+ conprof = port_ref.get_connector_profiles()
+ for c in conprof:
+ if c.name == conn_name:
+ return disconnect(c)
+
return RTC.BAD_PARAMETER
@@ -1084,10 +1092,10 @@
# @param
#
# @endif
-def disconnect_by_portref_connector_id(port_ref, id):
+def disconnect_by_portref_connector_id(port_ref, conn_id):
if CORBA.is_nil(port_ref):
return RTC.BAD_PARAMETER
- return port_ref.disconnect(id)
+ return port_ref.disconnect(conn_id)
##
@@ -1109,9 +1117,12 @@
# @return
#
# @endif
-def disconnect_by_portname_connector_id(port_name, id):
+def disconnect_by_portname_connector_id(port_name, conn_id):
+ port_ref = get_Port_by_rtcloc(port_name)
+ if port_ref == RTC.PortService._nil:
+ return RTC.BAD_PARAMETER
- return RTC.BAD_PARAMETER
+ return port_ref.disconnect(conn_id)
##
@@ -1135,8 +1146,62 @@
if CORBA.is_nil(port_ref):
return RTC.BAD_PARAMETER
return port_ref.disconnect_all()
+
+
+##
+# @if jp
+#
+# @brief 指定ポート名のポートのコネクタを全て切断
+#
+#
+# @param port_name ポート名
+# @return portが存在しない場合はBAD_PARAMETERを返す
+# 切断できた場合はRTC_OKを返す
+#
+# @else
+#
+# @brief
+# @param port
+# @return
+#
+# @endif
+def disconnect_all_by_name(port_name):
+ port_ref = get_Port_by_rtcloc(port_name)
+ if port_ref == RTC.PortService._nil:
+ return RTC.BAD_PARAMETER
+ return port_ref.disconnect_all()
+
+
+##
+# @if jp
+#
+# @brief 指定した名前のポートを取得
+#
+#
+# @param port_name ポート名
+# @return ポートのオブジェクトリファレンス
+# portが存在しない場合はnilを返す
+#
+# @else
+#
+# @brief
+# @param port_name
+# @return
+#
+# @endif
+def get_Port_by_rtcloc(port_name):
+ mgr = OpenRTM_aist.Manager.instance()
+ nm = mgr._namingManager
+ p = port_name.split(".")
+ if len(p) < 2:
+ return RTC.PortService._nil
+ rtcs = nm.string_to_component(p[0])
+ if len(rtcs) < 1:
+ return RTC.PortService._nil
+ pn = port_name.split("/")
+ return get_port_by_name(rtcs[0],pn[-1])
##
# @if jp
More information about the openrtm-commit
mailing list