スポンサーリンク

TW(4) FreeBSD/i386 カーネルインタフェースマニュアル TW(4)

名称

tw − TW-523 X-10 デバイスドライバ

解説

tw は、X-10 Inc. の家庭用コントロール製品と共に使用する、 TW-523 電源ライ ンインタフェースのドライバです。 X-10 プロトコルは、Radio Shack の ‘‘Plug ’n Power(tm)’’ やスタンレーの ‘‘Lightmaker(tm)’’ を含む、多くの家庭用コン トロールシステムと互換性があります。

このドライバは read() write() select() のシステムコールをサポートします。 ドライバは複数のプロセスに読み書きができるように動作しますが、実際には複 数の読み取りプロセスがいたり複数の書き込みプロセスがいる場合には意味が無 いかもしれません。また現状では、実際にふたつのプロセスが同時に送信をしよ うとすると、競合状態になる可能性があります (tw_sc のなかの sc_pkt 構造体 の非同期のアクセス構造によるものです)。

送信は write() を呼び出し、3 バイトのデータパケットを送信することによって なされます。最初のバイトは 4 ビットのハウスコード (0=A から 15=P まで)、2 バイト目は 5 ビットの unit/key コード (0= ユニット 1 から 15= ユニット 16 まで、 16= 全ユニットオフ、31= ステータスリクエスト) です。 3 バイト目 は、連続して間を空けずに送信されるパケットの数を指定します。通常は X-10 Inc. の文書にしたがってこの値は 2 ですが、他の値をとることもできます。 write() の呼び出しはそれぞれが任意のデータ長 (バイト数) を指定できます が、どの呼び出しでも最大ひとつのパケットしか処理されません。不完全なパ ケットは続いて起きる write() 呼び出しが完全にデータを提供するまでバッファ されます。連続する write() の呼び出しに対しては、X-10 Inc. の文書にした がって、3 サイクルの間隔がとられます。ドライバは 1 サイクルに 3 回ビット を送るように定めている X-10 Inc. の文書と異なり、半サイクルに 1 ビットず つしか送りません。これは TW523 が電源ラインがゼロ点を通る時の同期しか提供 していないためです。したがって 3 相交流の商用電源サービスではドライバがう まく動作しない可能性があります。ほとんどの住宅ではこのドライバが作動する 2 線の電源を使用しています。

受信は read() で行います。ドライバは、3 文字から成るパケットを生成しま す。それぞれのパケットで、最初の文字はフラグから成り、2 番目の文字は 4 ビットのハウスコード (0-15)、3 番目の文字は 5 ビットの key/function コー ド (0-31) です。フラグは以下の通りです。

#define TW_RCV_LOCAL

1 /* ローカルな転送中にパケットが到着しました */

#define TW_RCV_ERROR

2 /* 不正/壊れたパケットが到着しました */

select() システムコールは、通常通り、読み取ることのできるデータが存在して いるかどうかを確かめるため、使用可能です。

関連項目

xten(1), xtend(8)

X-10 Inc. による TW-523 に関する文書

関連ファイル

       /dev/tw?

TW523 デバイス型特殊ファイル

作者

Eugene W. Stark ⟨stark@cs.sunysb.edu⟩

FreeBSD Oct 30, 1993 FreeBSD

スポンサーリンク