xtend(8)
|
FreeBSD 一般コマンドマニュアル
|
xtend
xtend
解説
xtend は、ユーザレベルのプログラムと TW523 X-10 コントローラとのインタ
フェースを行います。TW523 から受信した全てのパケットを記録し、全ての X-10
デバイスの状態を可能な限り追跡し、X-10 デバイスの操作を必要とするユーザレ
ベルのクライアントプログラムからのソケット接続を受け付けます。
xtend を起動すると、自分自身をフォークし、制御端末を切り離し、以降発生す
る全ての X-10 の活動状況と診断メッセージを記録するログファイルを開きま
す。その後、TW523 から受信したパケットの処理を開始し、X-10 のコマンドを発
行するクライアントの接続を 1 度にひとつだけ受け付けます。 xtend は、
/etc/rc.conf スクリプトにて有効に設定された場合、 /etc/rc.i386 起動スクリ
プトから実行されます。
xtend に SIGHUP を送ると、ログファイルを一旦閉じ、再び開きます。これは、
ログファイルの肥大化を避けるために、シェルスクリプトによりログファイルを
変更する場合に便利でしょう。 xtend が SIGTERM を受け取ると、素直にシャッ
トダウンし、終了します。 SIGPIPE を送ると、 xtend は現在のクライアント接
続を強制的に切り離します。
xtend は、クライアントのプロセスと、単純なプロトコルを用いて通信を行いま
す。このプロトコルは、クライアントから送られる 1 行のコマンドに対して、デ
ーモンが 1 行の応答を行うような単純な物です。
xtend には、4 種類のコマンドがあります:
status H U xtend は指定されたデバイスの状態を 1 行で返答します。ここ
で、 H はハウスコードを示す 1 文字で、 U は数字のユニットコ
ードです。
send H U N xtend は指定された X-10 の送信を行います。ここで、 H はハウ
スコードを示す 1 文字で、 U は数字のユニットコードまたはリス
トに対する機能コード ( xtend/packet.c ソースファイル参照)、
N はギャップなしに送信されるパケットの数 (通常は 2) です。送
信が成功すると、 OK と応答し、それ以外の場合は、 ERROR と応
答します。
dump xtend はスプールディレクトリの ASCII ファイルに全てのデバイ
スの現在の状態をダンプします。状態のダンプに成功したかどうか
に関わらず、 OK と応答します。
monitor H U xtend は指定された X-10 デバイスに関する活動状況を報告するク
ライアントのリストに、現在のクライアントのソケット接続を加え
ます。リスト中のクライアント数の最大値 (現状では 5) を超えな
ければ、 OK を返答し、それ以外は ERROR を返答します。その
後、 xtend クライアントからの接続を受け付ける通常モードに戻
ります。しかし、それ以降に指定されたデバイスの状態が変化する
と、 xtend は ( status コマンドにより得られる場合と同じ形式
で) デバイスの状態を保存したソケットに送ります。この機能は、
動作検出機等、デバイスの活動状況をモニタする必要があり、
X-10 送信を行うプログラムを作成する場合に便利でしょう。
バグ
現状では、クライアントのソケット接続にタイムアウトはありません。そのた
め、ハングしたクライアントプログラムがあると、他のクライアントはデーモン
にアクセスする事ができなくなります。
xtend はできる限りデバイスの状態を追跡しますが、デバイスが手動で操作され
たことを知る方法はありません。これは、ほとんどの X-10 デバイスが状態の問
い合わせに対して応答する事ができないからです。
作者
Eugene W. Stark <stark@cs.sunysb.edu>
FreeBSD 4.4 October 30, 1993 FreeBSD 4.4