Next: USB-CAMAC ライブラリ
Up: USB-CAMAC デバイスドライバの動作
Previous: CAMAC ブロック転送(リード)
USB-CAMAC ライブラリから CAMAC 16ビットデータをブロック転送で書き込むために
cdmaw() 関数をコールした後デバイスドライバでどのように処
理が行なわれるかを説明する. 例としてステーション #2 のスイッチレジスタ・モジュールに
データを書き込む場合を取り上げる. CAMAC NAF は (n,a,f) = (2,0,16) とする.
またブロック転送のモードは Q-Stop, Q-Ignore, Q-Repeat, Q-Scan を選択できる.
- アプリケーションから USB-CAMAC ライブラリの cdmaw(mode, naf,
&buf, len,&retlen) をコールする.
- cdmaw() は コマンドに BLOCKW を指定してドライバの ioctl()
関数をコールする.
- ioctl() 関数では内部にある BLOCKW 処理ブロックへとぶ.
- BLOCKW 処理ブロックでは CAMAC NAF の F に依存した処理を行なう.
この場合は f=16 なのでCAMAC データ書き込みブロックへとぶ.
- CAMAC データ書き込みブロックではデータ長を(len 2)バイトに
指定して scsi_write() 関数をコールする.
- scsi_write() では send_cdb() により SCSI CDB を 3929 へ送る.
- send_data() により 3929 へlen で指定した長さのデータを送る.
- 転送を行なったデータ長を cdmaw() の retlen に返す.
Kazuo Nakayoshi
Wed Jun 27 22:15:09 JST 2001