Next: CAMAC ブロック転送(ライト)
Up: USB-CAMAC デバイスドライバの動作
Previous: CAMAC シングルアクション(ライト)
USB-CAMAC ライブラリから CAMAC 16ビットデータをブロック転送で読み込むために
cdmaw() 関数をコールした後デバイスドライバでどのように処
理が行なわれるかを説明する. 例としてステーション #2 のスイッチレジスタ・モジュールを読
む場合を取り上げる. CAMAC NAF は (n,a,f) = (2,1,0) とする. またブロック
転送のモードは 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=0 なのでCAMAC データ読み込みブロックへとぶ.
- CAMAC データ読み込みブロックではデータ長を(len 2)バイトに
指定して scsi_read() 関数をよぶ.
- scsi_read() では send_cdb() により SCSI CDB を 3929 へ送る.
- 3929 からlen で指定したデータ長に達するまでデータ転送が行なわれ
recv_data() により 3929 からデータを取得する.
- データおよび転送を行なったデータ長を cdmaw() の buf, retlen に返
す.
Kazuo Nakayoshi
Wed Jun 27 22:15:09 JST 2001