next up previous contents
Next: USB-CAMAC ライブラリ Up: USB-CAMAC デバイスドライバの動作 Previous: CAMAC ブロック転送(リード)

CAMAC ブロック転送(ライト)

USB-CAMAC ライブラリから CAMAC 16ビットデータをブロック転送で書き込むために cdmaw() 関数をコールした後デバイスドライバでどのように処 理が行なわれるかを説明する. 例としてステーション #2 のスイッチレジスタ・モジュールに データを書き込む場合を取り上げる. CAMAC NAF は (n,a,f) = (2,0,16) とする. またブロック転送のモードは Q-Stop, Q-Ignore, Q-Repeat, Q-Scan を選択できる.

  1. アプリケーションから USB-CAMAC ライブラリの cdmaw(mode, naf, &buf, len,&retlen) をコールする.
  2. cdmaw() は コマンドに BLOCKW を指定してドライバの ioctl() 関数をコールする.
  3. ioctl() 関数では内部にある BLOCKW 処理ブロックへとぶ.
  4. BLOCKW 処理ブロックでは CAMAC NAF の F に依存した処理を行なう. この場合は f=16 なのでCAMAC データ書き込みブロックへとぶ.
  5. CAMAC データ書き込みブロックではデータ長を(len 2)バイトに 指定して scsi_write() 関数をコールする.
  6. scsi_write() では send_cdb() により SCSI CDB を 3929 へ送る.
  7. send_data() により 3929 へlen で指定した長さのデータを送る.
  8. 転送を行なったデータ長を cdmaw() の retlen に返す.


Kazuo Nakayoshi
Wed Jun 27 22:15:09 JST 2001