NFP ライブラリのステートは、以下のように遷移します。
注意:
図には書かれていませんが、各ステートで nn::nfp::Finalize()
を呼び出すと NONE
に遷移します。また、NONE
と INIT
を除くステートに遷移している状態で無線オフモードまたはスリープモードに入るとステートが INIT
に遷移します。
注意:
CTR 向けの NFC リーダー/ライター 使用時に、NONE, INIT 以外のステートで NFC リーダー/ライター との接続が切断されると、INIT に遷移します。
ステートは nn::nfp::NfpState
で定義されており、nn::nfp::GetNfpState()
で現在のステートを取得することができます。
各ステートは以下のような状態を示しています。
ステート | 状態の説明 |
---|---|
NONE
|
NFP ライブラリを初期化する前の状態です。 |
INIT
|
NFP ライブラリの初期化は完了しているが、まだタグの探索を行っていない状態です。 |
RW_SEARCH
|
タグの探索を行っている状態です。 |
RW_ACTIVE
|
タグを検知した状態です。 |
RW_DEACTIVE
|
検知していたタグが通信可能範囲から離れた状態です。 |
RW_MOUNT
|
検知していたタグをマウントした状態です。検知していたタグが NFP タグでなければマウントできません。 |
RW_MOUNT_ROM
|
検知していたタグをマウントした状態です。RW_MOUNT との違いは、アクセス可能な情報が制限されていることです。 |
ステート | 使用可能な関数(名前空間 nn::nfp は省略しています) |
---|---|
NONE
|
Initialize()
|
INIT
|
SetActivateEvent(), SetDeactivateEvent(), StartDetection()
|
RW_SEARCH
|
StopDetection()
|
RW_ACTIVE
|
GetTagInfo(), Mount(), MountRom(), Restore(), StopDetection()
|
RW_DEACTIVE
|
StartDetection(), StopDetection()
|
RW_MOUNT
|
CreateApplicationArea(),
Flush(), GetNfpCommonInfo(), GetNfpRegisterInfo(), GetNfpRomInfo(), GetTagInfo(),
OpenApplicationArea(), ReadApplicationArea(), StopDetection(), Unmount(), WriteApplicationArea()
|
RW_MOUNT_ROM
|
GetNfpRomInfo(), GetTagInfo(),
StopDetection(), Unmount()
|
NONE 以外 |
Finalize(), GetConnectionStatus(), InitializeCreateInfo()
|
すべて |
GetNfpState()
|
NFP ライブラリを使用することで、 SNAKE の消費電力が変動し、バッテリ持続時間に影響を与えます。 NFP ライブラリのステートと、消費電力の関係(バッテリ持続時間への影響)は以下の通りです。
ステート | SNAKE のバッテリ持続時間 |
---|---|
NONE | 変化なし |
INIT, RW_SEARCH, RW_DEACTIVE | 1 % 未満の減少 |
RW_ACTIVE, RW_MOUNT, RW_MOUNT_ROM | 約 8 % の減少 |
NFC リーダー/ライターのバッテリ持続時間についての情報は、以下の通りです。CTR 側のバッテリ持続時間は、赤外線通信使用時と同じになります。
ステート | NFC リーダー/ライター との 接続状態 |
NFC リーダー/ライター の バッテリ持続時間 |
---|---|---|
NONE, INIT | 切断 | 変化なし |
INIT, RW_DEACTIVE | 接続 | 約 40% の減少 |
RW_SEARCH | 接続 | 約 94% の減少 |
RW_ACTIVE, RW_MOUNT, RW_MOUNT_ROM | 接続 | 約 65 % の減少 |
可能な範囲で、消費電力を抑えられるステートに遷移することを推奨します。ただし、 nn::nfp::Initialize()
は処理に 1 秒程度の時間を要するため、過剰な頻度で nn::nfp::Finalize()
を呼ぶ必要はありません。