User manual - NFCライブラリマニュアルver.1.06(2012年3月29日)
54
Tag-it に Lock Block コマンドを送信する
1. TargetID 配列を 0 クリア等で初期化します。
2. iCount=0 をセットします。
3. iCount<定数 N の場合、次の処理に進みます。定数 N はループ回数の上限を表しており、回数制限
を設けることにより、無限ループを回避します。
4. NFCPollingCard関数により、通信範囲内の IC カードを検索します。
5. IC カードの起動に成功した場合は、NFCGetCardResponse関数により IC カードの UID を取得しま
す。
6. TargetID が初期状態の場合は取得した UID をセットします。
7. TargetID[6]をチェックします。TargetID[6]が 0x07 の場合、Tag-it シリーズの IC カードであるため、
次の処理に進みます。
8. NFCExchangeData関数により Read コマンドを送信します。(このとき、ISO15693 コマンドの Flag に
0x60 を指定し、対象ブロックの Lock 状態を確認します)
9. NFCExchangeData関数の戻り値が NFC_OKとなった場合は、応答を格納している ReceiveData配列
をチェックします。ReceiveData[1]=0x00 の場合、対象ブロックは Lock されていないので、次の処理
に進みます。
10. NFCExchangeData関数により Lock Block コマンドを送信します。(このとき、ISO15693 コマンドの
Flag
に 0x60 を指定し、対象ブロックの Lock 状態を確認します)
11. NFCExchangeData関数の戻り値が NFC_OKの場合は、アプリケーションにおいて「Lockに成功した」
旨を表示し、処理を終了します。(正常終了)
12. NFCExchangeData関数の戻り値が NFC_ERROR_TIMEOUT、NFC_NOT_ACTIVATION、
NFC_ERROR_SUSPEND、NFC_ERROR_AUTOOFFの場合は、Lockに失敗しているときと、Lockに成
功しているが Lock 後のチェックに失敗しているときがあります。確実に Lock を完了するためには、ア
プリケーションにおいて「Lock に失敗/再度同じカードをかざす」旨を表示し、3.に戻って Lock Block
処理のリトライを行います。
13. NFCExchangeData関数の戻り値が上記以外の場合は、Write データと TargetID を保存し、本体リセ
ット後に 1.に戻り、再度 Lock Blockの処理フローを実行します。このとき、1.において、TargetID配列
は初期化せずに、保存した TargetID をセットします。