capa | メディアの最大容量 |
drive | 拡張ソケットの番号 |
*work | ワークバッファ |
func | 初期化終了コールバック関数 |
BUD_ERR_OK | 正常終了 |
BUD_ERR_INVALID_PARAM | パラメータ異常 |
メディアの最大容量を示す引数 capa には次の値が指定可能です。
BUD_CAPACITY_128KB
BUD_CAPACITY_256KB
BUD_CAPACITY_512KB
BUD_CAPACITY_1MB
対象拡張ソケットを示す引数 drive には次の値を指定します。
BUD_USE_DRIVE_ALL | すべての拡張ソケット |
BUD_USE_DRIVE_A1 | ポートAの拡張ソケット1 |
BUD_USE_DRIVE_A2 | ポートAの拡張ソケット2 |
BUD_USE_DRIVE_B1 | ポートBの拡張ソケット1 |
BUD_USE_DRIVE_B2 | ポートBの拡張ソケット2 |
BUD_USE_DRIVE_C1 | ポートCの拡張ソケット1 |
BUD_USE_DRIVE_C2 | ポートCの拡張ソケット2 |
BUD_USE_DRIVE_D1 | ポートDの拡張ソケット1 |
BUD_USE_DRIVE_D2 | ポートDの拡張ソケット2 |
ワークバッファを示す引数 workにNULLを指定した場合、引数 capaの設定は無視されメモリーカード用の バッファを動的に管理することができます。 初期化に成功したら指定の関数をコールバックします。
コールバック関数はこの関数からリターンする前に呼び出されます。 その場合、BUD_OP_CONNECTコールバックを検知した後、 挿入されているメモリーカードのサイズに見合ったバッファをアプリケーション側で確保し、 buMountDisk()関数でマウント処理を行います。その後は通常の使い方と同様な使い方ができます。
このような使い方をすることで、予め大きいバッファサイズを確保すること無く、 大容量のメモリーカードにも対応することが可能になります。
/* 128KBまでのメモリーカード 2個分のバッファを確保 */ Uint32 work[BUM_WORK_SIZE(BUD_CAPACITY_128KB, 2) / sizeof(Uint32)]; void init_callback(void) { : } /* ポートAの拡張ソケット1、2に対応する */ buInit(BUD_CAPACITY_128KB, BUD_USE_DRIVE_A1 | BUD_USE_DRIVE_A2, work, init_callback);
最大容量 | 1ソケットあたりのワーク容量 | 8スロットでのワーク容量 |
128KB | 8KB | 64KB |
256KB | 14KB | 112KB |
512KB | 28KB | 220KB |
1MB | 55KB | 440KB |
使用する拡張ソケットの指定にはBUD_USE_DRIVE_XXXを必ず指定してください。 BUD_DRIVE_XXXを誤って指定することのないようにしてください。