English
PROGRAMMER'S GUIDECD通信I/F(CDパート)
戻る進む
CD通信インタフェースユーザーズマニュアル(CDパート)

関数詳細-1


8.2.1 CDブロック共通




Title

関数仕様

Function

現在のCDステータス情報の取得

Function Name[SR]

CDC_GetCurStat

No

1.1

 書 式
Sint32 CDC_GetCurStat(CdcStat *stat)
 入 力
なし
 出 力
stat:CDステータス情報
 関数値
エラーコードを返します。
 機 能
CDブロックに対してCDステータス情報の取得コマンドを発行し、現在のCDステータス情報(ステータスとCDレポート)を取得します。



Title

関数仕様

Function

直前のCDステータス情報の取得

Function Name[--]

CDC_GetLastStat

No

1.2

 書 式
Sint32 CDC_GetLastStat(CdcStat *stat)
 入 力
なし
 出 力
stat:CDステータス情報
 関数値
エラーコードを返します。
 機 能
直前のCDブロックコマンドに対するCDステータス情報を取得します。
 備 考
CD通信インタフェースはCDブロックコマンドを発行すると、そのレスポンスであるステータスと CDレポートを保持しています。当関数は、その保持している値を返します。



Title

関数仕様

Function

定期のCDステータス情報の取得

Function Name[--]

CDC_GetPeriStat

No

1.3

 書 式
Sint32 CDC_GetPeriStat(CdcStat *stat)
 入 力
なし
 出 力
stat:CDステータス情報
 関数値
エラーコードを返します。
 機 能
定期レスポンスによるCDステータス情報を取得します。
 備 考
CDブロックに対しコマンドを発行しないため負荷が小さく、ポーリング処理も可能です。 ただし、コマンド/レスポンスの直後は定期レスポンスを取得できず、CDC_ERR_PERIエラーを返 します。正しい値を取得するには、CDC_ERR_OKを返すまで関数を呼び続けてください。



Title

関数仕様

Function

ハードウェア情報の取得

Function Name[S-]

CDC_GetHwInfo

No

1.4

 書 式
Sint32 CDC_GetHwInfo(CdcHw *hw)
 入 力
なし
 出 力
hw:ハードウェア情報
 関数値
エラーコードを返します。
 機 能
CDブロックのハードウェア情報を取得します。



Title

関数仕様

Function

TOC情報の取得

Function Name[S-]

CDC_TgetToc

No

1.5

 書 式
Sint32 CDC_TgetToc(Uint32 *toc)
 入 力
なし
 出 力
toc:TOC情報(204ワード)……データ仕様(TOC/SES)を参照
 関数値
エラーコードを返します。
 機 能
全てのTOC情報(102個分, 408バイト)を取得します。
TOCリード中はWAITを返します。
〈OPEN〉, 〈NODISC〉状態では得られる情報はすべてFFFFFFFFHになります。
  例 
Sint32 ret;
Uint32 toc[102];         /* TOC情報格納領域の確保 */
ret = CDC_TgetToc(toc);  /* TOC情報の取得     */



Title

関数仕様

Function

セッション情報の取得

Function Name[S-]

CDC_GetSes

No

1.6

 書 式
Sint32 CDC_GetSes(Sint32 sesno, Uint32 *ses)
 入 力
sesno:セッション番号(0〜99)
 出 力
ses:セッション情報(2ワード)……データ仕様(TOC/SES)を参照
 関数値
エラーコードを返します。
 機 能
指定したセッションのセッション情報(4バイト)を取得します。
TOCリード中はWAITを返します。
〈OPEN〉, 〈NODISC〉状態では、得られる情報はすべてFFFFFFFFHになります。



Title

関数仕様

Function

CDブロックの初期化

Function Name[SR]

CDC_CdInit

No

1.7

 書 式
Sint32 CDC_CdInit(Sint32 iflag, Sint32 stnby, Sint32 ecc, Sint32 retry)
 入 力
iflag:初期化フラグ(下位8ビットが有効)
stnby:スタンバイタイム(下位16ビットが有効)
ecc:ECC回数(下位8ビットが有効)
retry:リトライ回数 (下位8ビットが有効)
 出 力
なし
 関数値
エラーコードを返します。
終了フラグ ESELフラグ(ソフトリセット時のみ有効で、0クリアだけしている)
 機 能
CDブロックを初期設定し、現在位置でCDドライブをポーズさせます。

 (1)初期化フラグ
bit [7][-][5--4][3][2][1][0]
     |     |  |  |  |  |  |
     |     |  |  |  |  |  +---- 1:CDブロックのソフトリセットをする  0:しない
     |     |  |  |  |  +------- 1:サブコードRWのデコードをする    0:しない
     |     |  |  |  +---------- 1:Mode2サブヘッダを認識する    0:しない
     |     |  |  +------------- 1:Form2リードリトライをする    0:しない
     |     +--+---------------- CD−ROMデータリード速度(標準速度は指定不可)
     |                          0(00B):最高速(現在は2倍速)
     |                          2(01B):2倍速
     |
     +------------------------- 1:設定を変更しない           0:しない

  1. Mode2サブヘッダの認識は、CD-ROMデコード時の訂正処理のために使われます。セレクタは常にMode2サブヘッダを認識します。(絞りやセクタ長の条件判断など)

  2. Form2リードリトライをしない場合は、エラーがあってもデータを出力します。

  3. CD-ROMデータリード速度は、〈PAUSE〉状態になると切り替わります。CD-DA領域の再生時には自動的に標準速となります。CD-ROM領域に入ると元の速度に戻ります。

 (2)ソフトリセット…「5.5 CDブロックの初期化」を参照してください

  1. ソフトリセットする場合、本関数内で3ms程度待ってから、CMOKフラグを無視してコマンドを発行しています。(通常の通信手順によらず、強制的に発行可能)

  2. ソフトリセット中は、全てのコマンド発行を禁止します。ソフトリセットの終了は、割り込み要因レジスタのESELフラグが1になることで判定してください。

  3. 他の入力パラメータ(iflagのbit1〜6,stnbyなど)は無視され、初期値になります。

  4. 〈OPEN〉,〈NODISC〉状態でも実行できますが、CDドライブ状態は遷移しません。

 (3)スタンバイタイム
 〈PAUSE〉から〈STANDBY〉状態に遷移するまでの時間を指定します。
 〈PAUSE〉状態のままスタンバイタイムが経過すると〈STANDBY〉状態に遷移します。

設定値
説 明
0000H
180秒(3分)……初期値
003CH〜0384H
(60〜900)
遷移時間(秒単位)……60〜900秒(1〜15分)まで指定可能
(最小値:CDC_STNBY_MIN,最大値:CDC_STNBY_MAX)
FFFFH
設定を変更しない(CDC_PARA_NOCHG)

 (4)ECC回数
 CD-ROMデコードの時の、ECC処理(PQ訂正各1回)の繰り返し回数を指定します。

設定値
説 明
00H
ECCをリアルタイムに最大1回だけ処理する……初期値
01H〜05H
ECC処理後にエラーがある時の、繰り返し最大数(合計で2〜6回)
80H
ECC処理を一切しない
FFH
設定を変更しない

  1. Mode1あるいはForm1のセクタに適用されます。

  2. 初期化フラグのbit2=1(Mode2サブヘッダを認識しない)のときはMode2のECC処理は行いません。

 (5)リトライ回数
 CD-ROMデコード時にエラーが発生した場合の、同一セクタのリードリトライ回数を指定します。

設定値
説 明
00H
リトライせず、データ出力停止(〈ERROR〉になる)……初期値
01H〜0FH 
指定回数リトライし、エラーならデータ出力停止(〈ERROR〉になる)
40H
リトライせず、データ出力する。
41H〜4FH 
指定回数リトライし、エラーでもデータ出力する
80H
無限回リトライする
FFH
設定を変更しない(CDC_PARA_NOCHG)
回数は下位4ビットで指定する。

bit [7][6][-][-][3  2  1  0]
     |  |        指定回数(0〜15回) 
     |  |
     |  +-------------------- 1:データ出力する  0:〈ERROR〉になり停止
     +----------------------- 1:無限回リトライ  0:指定回数リトライ

  1. Mode1あるいはForm1のセクタに適用されます。

  2. 初期化フラグのbit3=1(Form2リードリトライをする)のときはForm2にも適用されます。

  3. 初期化フラグのbit2=1(Mode2サブヘッダを認識しない)のときはMode2にも適用されます。

 (6)トレイの開閉とドライブコマンド
 ソフトリセットしないときは、ドライブコマンドとして以下のトレイ開閉動作を行います。(CD再生、再生位置のシーク、スキャン再生の場合も同様)

  1. 〈OPEN〉状態の場合はトレイを閉めます。
    ・自動式(フロントローディング)の場合:CDブロックが自動的にトレイを閉める。
    ・手動式(トップローディング)の場合:手動で閉めるまで〈BUSY〉状態となる。

  2. 〈NODISC〉状態の場合はトレイを開けます。(詳細はCDC_CdOpen関数を参照)




Title

関数仕様

Function

トレイのオープン

Function Name[SR]

CDC_CdOpen

No

1.8

 書 式
Sint32 CDC_CdOpen(void)
 入 力
なし
 出 力
なし
 関数値
エラーコードを返します。
 機 能
CDドライブを停止し、トレイを開けます。
・自動式(フロントローディング)の場合:CDブロックが自動的にトレイを開ける。
・手動式(トップローディング)の場合:手動で開けるまで〈BUSY〉状態となる。
 備 考
トレイのオープンを実行すると、TOC/セッション情報とファイル情報が初期化され、割り込み要因レジスタのDCHGとEFLSフラグが1になります。(手動で開けられた場合も同様)詳細は「5.5ブロックの初期化」を参照してください。



Title

関数仕様

Function

データ転送の準備待ち

Function Name[--]

CDC_DataReady

No

1.9

 書 式
Sint32 CDC_DataReady(Sint32 dtype)
 入 力
dtype:転送準備待ちタイプ
 出 力
なし
 関数値
エラーコードを返します。
 機 能
データ転送の準備ができるまで待ちます。準備完了後、データ転送できます。
データを転送したら、データ転送の終了(CDC_DataEnd)を実行する必要があります。

 (1)転送準備待ちタイプ
定数名
説 明
CDC_DRDY_GET
データを取り出す場合に指定する。(CDブロック→ホスト)
CDC_DRDY_PUT
データを書き込む場合に指定する。(ホスト→CDブロック)

 (2)転送準備待ちの処理内容
 割り込み要因レジスタのDRDYフラグが1になるまで待ち、1になったら0クリアします。
 書き込みの場合は空きセクタが確保できないと、割り込み要因レジスタのEHSTフラグが1になります。その場合、CDC_ERR_PUTエラーを返します。

 備 考
準備待ちでエラーとなった場合、データ転送の終了を実行する必要はありません。本関数内部で自動的に実行します。




Title

関数仕様

Function

データ転送の終了

Function Name[S-]

CDC_DataEnd

No

1.10

 書 式
Sint32 CDC_DataEnd(Sint32 *cdwnum)
 入 力
なし
 出 力
cdwnum:CDブロックの転送ワード数
 関数値
エラーコードを返します。
 機 能
CDブロックに対して、データ転送の終了を指示します。データ転送を途中で中止することも可能です。

 (1)CDブロックの転送ワード数
 CDブロックが転送した有効なデータのワード数を返します。正規ワード数(転送すべき全ワード数)を越えることはありません。
 エラー等の場合、転送ワード数は以下の値になります。

定数名
説 明
CDC_DEND_ERR
データ転送でエラーが発生した。
データ転送時ではないのにデータ転送の終了を実行した。

 (2)転送ワード数の関係
 ホストの転送ワード数(データ転送の終了を実行するまでに、ホストが転送したワード数)と、CDブロックの転送ワード数を比較することで、データ転送の状況をチェックできます。

転送状況
ホストの転送ワード数
(ホストワード数)
CDブロックの転送ワード数(cdwnum)
取り出し時(CD→ホスト)
書き込み時(ホスト→CD)
転送中断
ホストワード数<正規ワード数
cdwnum>ホストワード数
cdwnum=ホストワード数
全転送
ホストワード数=正規ワード数
cdwnum=正規ワード数=ホストワード数
超過転送
ホストワード数>正規ワード数
cdwnum=正規ワード数<ホストワード数

 備 考
コマンド発行後、関数内部でDRDYフラグをクリアしています。


戻る進む
PROGRAMMER'S GUIDECD通信I/F(CDパート)
Copyright SEGA ENTERPRISES, LTD., 1997