アーキテクチャと使用方法
責務の分離
src/tango_frame/
再利用可能な TANGO 適応フレームワーク
device package/
通常の機器制御クラス
server_tango/
機器固有の TANGO server/client 適応層
再利用可能なフレームワークは、具体的な機器クラスに依存してはならない。
サーバー側
機器固有の TANGO Device クラスは、通常の Python 機器クラスを AutoDispatchDevice に結び付ける。
class TangoDevice(AutoDispatchDevice):
device_class = DeviceClass
tango-frame は公開 API を調べ、TANGO command と attribute を動的に生成する。
リモートコマンドとして公開しないメソッドは、機器固有のサーバークラスで除外できる。
class TangoDevice(AutoDispatchDevice):
device_class = DeviceClass
excluded_commands = {"save"}
クライアント側
機器固有のクライアントは、同じ機器クラスを AutoDispatchClient に結び付ける。
class DeviceClient(AutoDispatchClient):
device_class = DeviceClass
呼び出しは TANGO DeviceProxy を介して転送される。
機器固有のクライアントに明示的に実装したメソッドは、自動リモートディスパッチより優先される。これは、リモートから取得したデータをローカルパスに保存する処理など、クライアント側の計算機に属する操作に使用する。
型変換
対応するスカラー値と同種要素の配列には、TANGO 互換のネイティブ型を使用する。
TANGO command の入力値は1つであるため、複数の異種引数を必要とする Python 呼び出しは、1つの JSON 文字列にエンコードする。直接表現できない複雑な戻り値にも、同じ JSON フォールバックを使用する。
この変換は Python API を TANGO command モデルへ適応させるためのものであり、独立した RPC プロトコルではない。