XTEND(8)

名称
xtend - X-10 デーモン

書式
/usr/libexec/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 送信を行うプログラムを作成する場合に便利でしょう。

オプション
なし。

関連項目
xten(1), tw(4)

関連ファイル
/dev/tw0
    TW523 特殊ファイル
/var/run/tw523
    クライアント接続用ソケット
/var/run/xtend.pid
    pid ファイル
/var/spool/xten/Log
    ログファイル
/var/spool/xten/Status
    デバイス状態ファイル (バイナリ)
/var/spool/xten/status.out
    デバイス情報の ASCII ダンプ

バグ
現状では、クライアントのソケット接続にタイムアウトはありません。そのため、 ハングしたクライアントプログラムがあると、他のクライアントはデーモンに アクセスする事ができなくなります。

xtend はできる限りデバイスの状態を追跡しますが、デバイスが手動で操作された ことを知る方法はありません。これは、ほとんどの X-10 デバイスが状態の 問い合わせに対して応答する事ができないからです。

作者
Eugene W. Stark <stark@cs.sunysb.edu>