osPfsIsPlug.htm 2.97 KB
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="mitu">
</HEAD>

<BODY>

<P>
<B><FONT FACE="Arial">osPfsIsPlug(3P)<BR>
</FONT></B>
<P>
<B>関数名<BR>
</B>
<P>
osPfsIsPlug   
<P>
→ コントローラに差し込まれているコントローラパックを検出<BR>

<P>
<B>構文<BR>
</B>
<P>
#include &lt;ultra64.h&gt;<BR>

<P>
<B>s32 osPfsIsPlug(OSMesgQueue *mq,  u8 *bitpattern);<BR></B>

<P>
<B>説明<BR>
</B>
<P>
関数osPfsIsPlugは、どのコントローラにコントローラパックが挿されているのかを検出し、その結果をビットパターンとしてbitpatternに返します。bitpatternのビット0、1、2、3が、それぞれ、コントローラ0、1、2、3に対応しています。
<BR>
<P>
mqはOS_EVENT_SIイベントに関連付けられた初期化済みのメッセージ待ち行列でなければなりません。この関連付けの作成方法については<A HREF="osSetEventMesg.htm">osSetEventMesg</A>,(3P)を参照してください。
<BR>
<P>
関数osPfsIsPlugの内部では、mqでメッセージ待ちを行うので、このmqを共有してはいけません。また、OSの低レベルでの同期の初期化のため、osPfsIsPlugの呼び出しを行う前に、先に<A HREF="osContInit.htm">osContInit</A>,(3P)を呼び出しておく必要があります。
<BR>
<P>
呼び出しが成功すれば0値が返され、そうでなければ-1が返されます。
<BR>
<PRE WIDTH=132>
<FONT SIZE=6>
</FONT><FONT SIZE=4 FACE="MS ゴシック">
main()
{
  OSMesgQueue   intMesgQueue;
  OSMesg        intMesgBuf[1];
  OSContStatus  sdata[MAXCONTROLLERS];
  u8            cont_pattern;
  u8            pak_pattern;

  osCreateMesgQueue(&intMesgQueue, intMesgBuf, 1);
  osSetEventMesg(OS_EVENT_SI, &intMesgQueue, dummyMessage);
  osContInit(&intMesgQueue, &cont_pattern, &sdata[0]);
  osPfsIsPlug(&intMesgQueue, &pak_pattern);
}
</FONT></PRE>
<P>
<B>参考<BR>
</B>
<P>
osPfsIsPlugでは、コントローラ&コントローラパックの状態を調べるリクエストコマンドを発行し、すべてのコントローラポートを調べ、その結果をビットパターンに変換して返します。
<P>
それに対して、osPfsInitPakの方は、一つのコントローラについてのみ処理をします。そして、処理の内容は、osPfsIsPlugで行っているコントローラ&コントローラパックの状態を調査すること以外にも、OSPfs構造体の初期化や、コントローラパックのID領域の取得やラベル領域の取得、osPfsCheckerの呼び出しといったことを行っています。そのため、コントローラパックが挿し込まれているかどうかを判断するのに、osPfsInitPakを使用すると、非常に時間がかかります。
<P>
単に状態を調べる場合、一番速いのは、osContStartQuery&osContGetQueryです。これらの関数はosPfsIsPlug()と行っている処理は同じで、エラーチェック等が簡素になっているためです。
<P>
<B>参照<BR>
</B>
<A HREF="osPfsInitPak.htm">osPfsInitPak</A>(3P),
<A HREF="osPfsAllocateFile.htm">osPfsAllocateFile</A>(3P),
<A HREF="osPfsChecker.htm">osPfsChecker</A>(3P),
<A HREF="osPfsFileState.htm">osPfsFileState</A>(3P),
<A HREF="osPfsFreeBlocks.htm">osPfsFreeBlocks</A>(3P),
<A HREF="osPfsInitPak.htm">osPfsInitPak</A>(3P),
<A HREF="osPfsReSizeFile.htm">osPfsReSizeFile</A>(3P),
<A HREF="osPfsReadWriteFile.htm">osPfsReadWriteFile</A>(3P),
<A HREF="osPfsSetLabel.htm">osPfsSetLabel</A>(3P),
</BODY>

</HTML>