Type Bの検出と読み取り

Type Bカードが検出された場合、Type Bコマンド定義ファイル(最大4つ)に従いコマンドを実行し、その結果を取得することができる。

事前にWeb設定ページからコマンド定義ファイルと暗号化の設定を行っておく必要がある。

Type Bの処理は、検出フェーズ→コマンド実行フェーズ→消失検出フェーズ の順に行われる。

検出フェーズ

PUPIの取得後、Activationを行う。成功したらType Bの検出とみなしコマンド実行フェーズに移行する。 失敗した場合は何もしない。

コマンド実行フェーズ

一連のType Bコマンド定義ファイルに従ってコマンドを実行する。 一つのコマンド定義ファイルに記述されている全コマンド(最大8個)を順に実行する。 すべてのコマンドに成功応答があった場合、onEventがeventCode=1で呼ばれ、最後のコマンドの実行結果がresponseObjectのdataとして渡される。 その後消失検出フェーズに移行する。

onEvent(1, {
    category: 3, // 3:TYPEB
    paramResult: 1, // 1:成功
    idm: "00112233", // PUPI
    auth: "007649d95a10a51006c3bab68def3eb9", // 実行に成功したコマンド定義ファイルのMD5   
    data: "aabbccdd" // 最後のコマンド実行結果
})

いずれかのコマンドに成功以外の応答があった場合、そのコマンド定義ファイルの処理を中止し、次のコマンド定義ファイルの処理に移る。

ファイル中の全コマンドに成功したコマンド定義ファイルが無かった場合は、onEventがeventCode=1でエラーを通知する。エラー時のresponseObjectのparamResultは-1。

onEvent(1, {
    category: 3, // 3:TYPEB
    paramResult: -1 // -1:失敗
})

また、途中でカードとの通信が途絶えた場合も、次のコマンド定義ファイルの処理へは移らず、エラーを通知する。

onEvent(1, {
    category: 3, // 3:TYPEB
    paramResult: -1 // -1:失敗
})

消失検出フェーズ

同じカードを繰り返し検出することを避けるためのフェーズである。 異なるType Bのカードの応答を受信するか応答が無くなった場合に消失とみなす。

消失時、onEventがeventCode=0で呼ばれる。 通知されるPUPIは、(「異なるType Bのカードの応答を受信」した場合でも) 元々検出したカードのものである。

onEvent(0, {
    idm: "00112233" // PUPI
})