インライン関数

以下は dc_aux.h の後半で定義されている関数で、 割り込みハンドラから使用する事を目的に提供されています。 "dc_int.c" の中で #include する 必要は有りません。

int camacCinitialize ()
CC/7x00 を初期化します。 割り込みハンドラの中で使う必要は先ず無いでしょう。 戻り値は 0 (ONLINE) または -1 (ONLINE) です。

int camacCz ()
CAMAC バスに初期化信号 (Z) を送出します。 割り込みハンドラで使われる事は少ないでしょう。 戻り値は 0 (success) または -1 (time out) です。

int camacCc ()
CAMAC バスにクリア信号 (C) を送出します。 全てのモジュールを一度にクリアする際に便利ですが、 スケーラ等を使用していると一緒にクリアされてしまうので、 注意が必要です。 戻り値は 0 (success) または -1 (time out) です。

int camacCi (int onoff)
CAMAC バスのインヒビット信号 (I) を ON (onoff≠0) または OFF (onoff=0) します。 割り込みハンドラで使われる事は少ないでしょう。 戻り値は 0 のみです。

long camacClamp ()
全モジュールの LAM 状況をビットパターンで返します。 ビット 0 はステーションナンバー 1 のモジュールに対応します。

int camacClam ()
LAM が立っているモジュールの中、 ステーションナンバーの最も小さいものの値を返します。 LAM の立っているモジュールが無い時は 0 を返します。

int camacCcycle (int N, int A, int F, long *data, int *state)
または
int camacCcycle24 (int N, int A, int F, long *data, int *state)
N, A, F に対する 24-bit の CAMAC ファンクションを実行します。 戻り値は 0 (success) または -1 (failure) です。 state には NO-Q (bit 0) および NO-X (bit 1) が返されます。

int camacCcycle2 (int N, int A, int F, short *data, int *state)
または
int camacCcycle16 (int N, int A, int F, short *data, int *state)
N, A, F に対する 16-bit の CAMAC ファンクションを実行します。 戻り値は 0 (success) または -1 (failure) です。 state には NO-Q (bit 0) および NO-X (bit 1) が返されます。

int camacCblkrd (int N, int A, int F, long *data, int size)
または
int camacCblkrd24 (int N, int A, int F, long *data, int size)
N, A, F に対する 24-bit のブロック読み出しを実行します。 読み出しは size 回数または NO-Q が発生するまで N, A, F を固定したまま繰り返されます。 戻り値は読み出されたデータの個数です。

int camacCblkrd2 (int N, int A, int F, short *data, int size)
または
int camacCblkrd16 (int N, int A, int F, short *data, int size)
N, A, F に対する 16-bit のブロック読み出しを実行します。 読み出しは size 回数または NO-Q が発生するまで N, A, F を固定したまま繰り返されます。 戻り値は読み出されたデータの個数です。
これらの関数の内部を覗くと、 随分間怠っこい記述の仕方をしているとの印象を受けるかも知れません。 マクロで書けば劇的に速度向上できるようにも感じられるのですが、 実際は CC/7x00 側の動作終了を待っている時間が大部分なので、 計測可能な改善は得られません。

camacCcycle() 等の返り値の論理が、 旧版とは逆になっている事に注意してください (Q, X → NO-Q, NO-X)。 他のプログラムやライブラリと揃えたという所ですが、 こちらの方が使い易いのは明らかと思います。

戻る