com.nttdocomo.device.felica
クラス OfflineFelica

Object
  拡張com.nttdocomo.device.felica.OfflineFelica
直系の既知のサブクラス:
ThruRWOfflineFelica

public class OfflineFelica
extends Object
 [iアプリオプションAPI]

オフライン処理(有線カード機能)によって、 内部カードにアクセスする手段を提供するクラスです。 ただし、フリーエリアへのアクセスは除きます。

このクラスのインスタンスの各メソッドは、 Felica.getOfflineFelica(int, int) の引数で指定されたアクセス先に対して、それぞれの操作を行います。 インスタンス生成後に、アクセス先を変更する手段は用意されていません。 複数のアクセス先に交互にアクセスする必要がある場合には、 アクセス先ごとに、Felica.getOfflineFelica(int, int) にて、 対応するインスタンスを取得してください。 ただし、同じカードの 異なるシステムにアクセスを行った時点で、 そのカード内のPINの解除情報がクリアされます。

このオブジェクトが生成された直後では、タイムアウト値としては 500[ms] が、 リトライ数としては 0 が、 それぞれ設定されています。 タイムアウト値は setTimeout(int) にて変更可能ですが、リトライ数を変更することはできません。

[DoJa-4.1 (902iS) まで]
なお、オンライン処理中や 外部 R/W からのアクセス待ち状態下においては、オフライン処理を行うことはできません。 すなわち、OnlineFelica.start(String) を呼び出してから OnlineFelica.stop() を呼び出すまでの間や、 Felica.activate() を呼び出してから Felica.inactivate()Felica.close() を呼び出すまでの間には、 このクラスに用意されているメソッドを呼び出すことはできません。
[DoJa-5.0 (903i) 以降]
なお、オンライン処理中においては、オフライン処理を行うことはできません。 すなわち、OnlineFelica.start(String) を呼び出してから OnlineFelica.stop() を呼び出すまでの間に、 このクラスに用意されているメソッドを呼び出すことはできません。

セキュリティ上の制約について
iアプリが起動してから終了するまでの間に、下記の条件を満たした場合には、 その時点でアプリケーションは強制終了されます。
[DoJa-4.1 (902iS) まで] 尚、下記に記されている失敗回数は、 このクラスの全インスタンスによる失敗回数の合計です。

[DoJa-5.0 (903i) 以降] 尚、下記に記されている失敗回数は、このクラスのインスタンス毎にカウントされます。 このクラスのインスタンスのいずれか 1 つが下記の条件を満たした時点で強制終了されます。

パケット種別について ([DoJa-5.0 (903i) 以降])
FeliCa カードで管理されるノードコードが従来の 2 バイト長から 4 バイト長に拡張されました。 これに伴い FeliCa カードに発行するコマンドパケット(ノードコードを含むコマンドに限る)について、 従来構成の「2 バイトノードコード指定パケット」に加えて、 拡張構成の「4 バイトノードコード指定パケット」にて発行することが可能です。 ノードコードを含むコマンドパケットを発行するメソッドは以下の通りです。

これらのメソッドは、このオブジェクトに設定されているパケット種別 (getNodeCodeLength() が返す値) に従ってコマンドパケットを発行します。 このオブジェクトが生成された直後では、 パケット種別には「2 バイトノードコード指定パケット」が設定されています。 このオブジェクトに設定されているパケット種別を変更するには setNodeCodeLength(int) を呼び出して下さい。

また、FeliCa カードに発行するコマンドパケットの種別と、 そのカードに設定されている属性(パケット種別)は一致している必要があることに注意して下さい。 FeliCa カードに対して属性設定を行なうには setParameter(long) を呼び出して下さい。 なお、FeliCa カードが起動された直後では、カードに設定されている属性(パケット種別)は 「2 バイトノードコード指定パケット」となっています。

導入されたバージョン:
DoJa-3.0 (506iC)、DoJa-3.5 (900iC)
関連項目:
Felica.getOfflineFelica(int, int)

フィールドの概要
static int CARD_EXTERNAL
          外部カードを表します(=1)。
static int CARD_INTERNAL
          内部カードを表します(=0)。
static long PARAM_NODE_CODE_LEN_2
          2 バイトノードコード指定パケットを表します(=0x0000000000000000)。
static long PARAM_NODE_CODE_LEN_4
          4 バイトノードコード指定パケットを表します(=0x0000000000010000)。
 
メソッドの概要
 PINAttributeData[] checkPIN(CheckPINParameters param)
          PIN の属性参照を行います。
 void executePIN(PINParameters param)
           PINを変更、有効/無効化、或いは照合を行います。
 int getCard()
          このオブジェクトの処理対象カードを取得します。
 byte[] getCardVersion()
          このオブジェクトがアクセス先として保持しているカードのバージョンを返します。
 byte[] getContainerIssueInfo()
          コンテナ発行情報を取得します。
 byte[] getIDm()
          このオブジェクトがアクセス先として保持しているIDmを返します。
 byte[] getKeyVersion(int serviceCode)
           キーバージョンを取得します。
 int getNodeCodeLength()
          このオブジェクトのカード処理におけるパケット種別を取得します。
 byte[] getResponseTimeInfo()
          このオブジェクトがアクセス先として保持しているカードの、 コマンド処理時間に関するデータを返します。
 int getSystemCode()
          このオブジェクトがアクセス先として保持している システムコードを取得します。
 int getTimeout()
          このオブジェクトのカード処理におけるタイムアウト値を取得します。
 FelicaData[] read(InputPINParameters pinParam, ReadParameters readParam)
          PIN照合、ブロック読み込み、リセットを連続して行います。
 FelicaData[] read(ReadParameters param)
           ブロックを読み込みます。
 void setNodeCodeLength(int nodeCodeLen)
          このオブジェクトのカード処理におけるパケット種別を設定します。
 void setParameter(long param)
          コマンドパケットで使用する属性を(処理対象カードに)設定します。
 void setTimeout(int timeout)
           このオブジェクトの カード処理におけるタイムアウト値を設定します。
 void write(InputPINParameters pinParam, WriteParameters writeParam)
          PIN照合、ブロック書き込み、リセットを連続して行います。
 void write(WriteParameters param)
           ブロックを書き込みます。
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

CARD_INTERNAL

public static final int CARD_INTERNAL
内部カードを表します(=0)。

関連項目:
Felica.getOfflineFelica(int, int), getCard(), 定数フィールド値

CARD_EXTERNAL

public static final int CARD_EXTERNAL
外部カードを表します(=1)。

関連項目:
Felica.getOfflineFelica(int, int), getCard(), 定数フィールド値

PARAM_NODE_CODE_LEN_2

public static final long PARAM_NODE_CODE_LEN_2
2 バイトノードコード指定パケットを表します(=0x0000000000000000)。

導入されたバージョン:
DoJa-5.0 (903i)
関連項目:
setParameter(long), 定数フィールド値

PARAM_NODE_CODE_LEN_4

public static final long PARAM_NODE_CODE_LEN_4
4 バイトノードコード指定パケットを表します(=0x0000000000010000)。

導入されたバージョン:
DoJa-5.0 (903i)
関連項目:
setParameter(long), 定数フィールド値
メソッドの詳細

checkPIN

public PINAttributeData[] checkPIN(CheckPINParameters param)
                            throws FelicaException,
                                   java.io.IOException
PIN の属性参照を行います。

このメソッドによる PIN 属性参照処理は同時性が確保されます。 従って、CheckPINParameters に登録されているパラメータのうち1つでも PIN 属性参照に失敗した場合は、 全てのパラメータの PIN 属性参照は行われません。

CheckPINParameters に登録されているパラメータ数が 対象カードの同時読み込み上限数を超えていた場合、 全てのパラメータの PIN 属性参照は行われません。

このオブジェクトに設定されているパケット種別 (getNodeCodeLength() が返す値) に従ってコマンドパケットを発行します。 ただし、このオブジェクトに設定されているパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 CheckPINParameters に登録されているパラメータに 2 バイト長では表せないサービスコードが含まれていた場合は例外が発生します。

パラメータ:
param - PIN属性参照パラメータを指定します。
戻り値:
PIN属性データリストを返します。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
NullPointerException - 引数 param に null が指定された場合に発生します。
IllegalArgumentException - 引数 param に登録パラメータ数 (OfflineParameters.getSize() が返す値) が0個の読み込みパラメータが指定された場合に発生します。
IllegalArgumentException - このオブジェクトに設定されているコマンドパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 引数 param に登録されているパラメータに 2 バイト長では表せないサービスコード(負の値、または 216 以上の値) が含まれていた場合に発生します。
FelicaException - レスポンスタイムアウトにより、 PIN 属性参照に失敗した場合に発生します (ID_CHECKPIN_ERROR, TYPE_TIMEOUT_ERROR)。
FelicaException - レスポンスデータのフォーマットが正しくないことにより、 PIN 属性参照に失敗した場合に発生します (ID_CHECKPIN_ERROR, TYPE_FORMAT_ERROR)。
FelicaException - 引数 param に含まれているパラメータの数が、 対象カードの同時読み込み上限数を超えていた場合に発生します (ID_CHECKPIN_ERROR, TYPE_BLOCK_COUNT_OVER_ERROR)。
FelicaException - 指定されたサービスが存在しないことにより、 PIN 属性参照に失敗した場合に発生します (ID_CHECKPIN_ERROR, TYPE_SERVICE_CODE_ERROR)。
FelicaException - PIN 属性参照に失敗した場合に発生します (ID_CHECKPIN_ERROR, TYPE_UNDEFINED_ERROR)。 親エリアの PIN 未照合により、PIN 属性参照に失敗した場合にも発生します。
java.io.InterruptedIOException - FeliCaカードアクセス中に、 サスペンド状態への遷移によりカードアクセス処理が失敗した場合に発生します。
PortBusyException - ポートビジーエラーが発生した場合に発生します。
java.io.IOException - 入出力エラーが発生した場合に発生します。
導入されたバージョン:
DoJa-5.0 (903i)

executePIN

public void executePIN(PINParameters param)
                throws FelicaException,
                       java.io.IOException

PINを変更、有効/無効化、或いは照合を行います。

引数 param に複数のパラメータが登録されおり、かつ、 それらのパラメータのうち1つでもPIN処理に失敗した場合は、 param の実行時の型により以下のよう振る舞います。

InputPINParameters の場合:
[DoJa-4.1 (902iS) まで]
最初のパラメータから順にPIN処理が行われ、 途中のパラメータのPIN処理に失敗した場合でも、 それ以前のパラメータで成功しているPIN処理は有効となります。
[DoJa-5.0 (903i) 以降]
登録されているパラメータのうち1つでもPIN処理に失敗した場合は、 全てのパラメータのPIN処理は行われません。
ChangePINParametersや、EnablePINParameters の場合:
登録されているパラメータのうち1つでもPIN処理に失敗した場合は、 全てのパラメータのPIN処理は行われません。

なお、 PINParametersに登録されているパラメータ数が 対象カードの同時 書き込み 上限数を超えていた場合においては、 引数 param の実行時の型にかかわらず、 全てのパラメータのPIN処理は行われません。

[DoJa-5.0 (903i) 以降]
このオブジェクトに設定されているパケット種別 (getNodeCodeLength() が返す値) に従ってコマンドパケットを発行します。 ただし、このオブジェクトに設定されているパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 PINParameters に登録されているパラメータに 2 バイト長では表せないサービスコードが含まれていた場合は例外が発生します。

パラメータ:
param - PINパラメータ。PINParametesのいずれかのサブクラスです。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-4.1 (902iS) まで] オンライン処理が既に開始されている場合や、 外部 R/W からのアクセス待ち状態下の場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-5.0 (903i) 以降] オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
NullPointerException - 引数 param に null が指定された場合に発生します。
IllegalArgumentException - 引数 param に登録パラメータ数 (OfflineParameters.getSize() が返す値) が 0 個の PIN パラメータが指定された場合に発生します。
IllegalArgumentException - [DoJa-5.0 (903i) 以降] このオブジェクトに設定されているコマンドパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 引数 param に登録されているパラメータに 2 バイト長では表せないサービスコード(負の値、または 216 以上の値) が含まれていた場合に発生します。
IllegalArgumentException - コマンドデータの長さが上限を超える場合に発生します。
FelicaException - レスポンスタイムアウトにより、 PIN照合、変更、有効/無効化に失敗した場合に発生します (ID_EXECUTEPIN_ERROR, TYPE_TIMEOUT_ERROR)。
FelicaException - レスポンスデータのフォーマットが正しくないことにより、 PIN照合、変更、有効/無効化に失敗した場合に発生します (ID_EXECUTEPIN_ERROR, TYPE_FORMAT_ERROR)。
FelicaException - 引数 param に含まれているパラメータの数が、 対象カードの同時書き込み上限数を超えていた場合に発生します (ID_EXECUTEPIN_ERROR, TYPE_BLOCK_COUNT_OVER_ERROR)。
FelicaException - 指定されたサービスが存在しないことにより、 PIN照合、変更、有効/無効化に失敗した場合に発生します (ID_EXECUTEPIN_ERROR, TYPE_SERVICE_CODE_ERROR)。
FelicaException - 親エリアのPIN未照合により、PIN照合、変更、有効/無効化に失敗した場合に発生します (ID_EXECUTEPIN_ERROR, TYPE_PIN_REQUIRED_ERROR)。
FelicaException - PINの同時解除数が上限を超えたことにより、 PIN照合に失敗した場合に発生します (ID_EXECUTEPIN_ERROR, TYPE_PIN_COUNT_OVER_ERROR)。
FelicaException - PINの照合試行回数が上限に達していることにより、PIN照合、変更、 有効/無効化に失敗した場合に発生します。 (ID_EXECUTEPIN_ERROR, TYPE_PIN_LOCK_OUT_ERROR)。
FelicaException - PINの照合失敗により、 PIN照合、変更、有効/無効化に失敗した場合に発生します (ID_EXECUTEPIN_ERROR, TYPE_SETPIN_ERROR)。
FelicaException - PINの有効/無効の切り替え不可により、 有効/無効化に失敗した場合に発生します (ID_EXECUTEPIN_ERROR, TYPE_SETATTRIBUTE_ERROR)。
FelicaException - PIN照合、変更、有効/無効化に失敗した場合に発生します (ID_EXECUTEPIN_ERROR, TYPE_UNDEFINED_ERROR)。
java.io.InterruptedIOException - FeliCaカードアクセス中に、 サスペンド状態への遷移によりカードアクセス処理が失敗した場合に発生します。
PortBusyException - [DoJa-5.0 (903i) 以降] ポートビジーエラーが発生した場合に発生します。
java.io.IOException - 入出力エラーが発生した場合に発生します。

read

public FelicaData[] read(ReadParameters param)
                  throws FelicaException,
                         java.io.IOException

ブロックを読み込みます。

このメソッドによる読み込み処理は同時性が確保されます。 従って、ReadParametersに登録されているパラメータのうち1つでも読み込みに失敗した場合は、 全てのパラメータの読み込みは行われません。

ReadParametersに登録されているパラメータ数が 対象カードの同時読み込み上限数を超えていた場合、 全てのパラメータの読み込みは行われません。

[DoJa-5.0 (903i) 以降]
このオブジェクトに設定されているパケット種別 (getNodeCodeLength() が返す値) に従ってコマンドパケットを発行します。 ただし、このオブジェクトに設定されているパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 ReadParameters に登録されているパラメータに 2 バイト長では表せないサービスコードが含まれていた場合は例外が発生します。

パラメータ:
param - 読み込みパラメータ。
戻り値:
ブロックデータリスト。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-4.1 (902iS) まで] オンライン処理が既に開始されている場合や、 外部 R/W からのアクセス待ち状態下の場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-5.0 (903i) 以降] オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
NullPointerException - 引数 param に null が指定された場合に発生します。
IllegalArgumentException - 引数 param に登録パラメータ数 (OfflineParameters.getSize() が返す値) が0個の読み込みパラメータが指定された場合に発生します。
IllegalArgumentException - [DoJa-5.0 (903i) 以降] このオブジェクトに設定されているコマンドパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 引数 param に登録されているパラメータに 2 バイト長では表せないサービスコード(負の値、または 216 以上の値) が含まれていた場合に発生します。
FelicaException - レスポンスタイムアウトにより、 読み出しに失敗した場合に発生します (ID_READ_ERROR, TYPE_TIMEOUT_ERROR)。
FelicaException - レスポンスデータのフォーマットが正しくないことにより、 読み出しに失敗した場合に発生します (ID_READ_ERROR, TYPE_FORMAT_ERROR)。
FelicaException - 引数 param に含まれているパラメータの数が、 対象カードの同時読み込み上限数を超えていた場合に発生します (ID_READ_ERROR, TYPE_BLOCK_COUNT_OVER_ERROR)。
FelicaException - 指定されたサービスが存在しないことにより、 読み出しに失敗した場合に発生します (ID_READ_ERROR, TYPE_SERVICE_CODE_ERROR)。
FelicaException - ブロックナンバーの指定不正により、読み出しに失敗した場合に発生します (ID_READ_ERROR, TYPE_BLOCK_NO_ERROR)。
FelicaException - PIN未照合により、読み出しに失敗した場合に発生します (ID_READ_ERROR, TYPE_PIN_REQUIRED_ERROR)。
FelicaException - 読み出しに失敗した場合に発生します (ID_READ_ERROR, TYPE_UNDEFINED_ERROR)。
java.io.InterruptedIOException - FeliCaカードアクセス中に、 サスペンド状態への遷移によりカードアクセス処理が失敗した場合に発生します。
PortBusyException - [DoJa-5.0 (903i) 以降] ポートビジーエラーが発生した場合に発生します。
java.io.IOException - 入出力エラーが発生した場合に発生します。

read

public FelicaData[] read(InputPINParameters pinParam,
                         ReadParameters readParam)
                  throws FelicaException,
                         java.io.IOException
PIN照合、ブロック読み込み、リセットを連続して行います。 リセットは PIN 解除情報をクリアするために行います。

このメソッドは以下の順に処理を行います。 途中で処理が失敗した場合は、その時点で処理を中断し例外をスローします。

  1. 引数 pinParam のチェック ( executePIN(pinParam) と同等の引数チェックを行う)
  2. 引数 readParam のチェック ( read(readParam) と同等の引数チェックを行う)
  3. PIN照合 ( executePIN(pinParam) と同等の処理を行う)
  4. ブロック読み込み ( read(readParam) と同等の処理を行う)
  5. リセット ( Felica.reset() と同等の処理を行う)

このオブジェクトに設定されているパケット種別 (getNodeCodeLength() が返す値) に従ってコマンドパケットを発行します。 ただし、このオブジェクトに設定されているパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 InputPINParameters および ReadParameters に登録されているパラメータに 2 バイト長では表せないサービスコードが含まれていた場合は例外が発生します。

パラメータ:
pinParam - PIN 照合パラメータを指定します。
readParam - 読み込みパラメータを指定します。
戻り値:
ブロックデータリストを返します。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
NullPointerException - 引数 pinParam または readParam に null が指定された場合に発生します。
IllegalArgumentException - 引数 pinParam について、 executePIN(pinParam) と同等の引数チェックにより IllegalArgumentException が発生する場合に、 そのままスローされます。
IllegalArgumentException - 引数 readParam について、 read(readParam) と同等の引数チェックにより IllegalArgumentException が発生する場合に、 そのままスローされます。
FelicaException - executePIN(pinParam) と同等の処理により FelicaException が発生する場合に、 そのままスローされます (ID_EXECUTEPIN_ERROR)。 エラー内容(TYPE)はそのまま素通しされます。
FelicaException - read(readParam) と同等の処理により FelicaException が発生する場合に、 そのままスローされます (ID_READ_ERROR)。 エラー内容(TYPE)はそのまま素通しされます。
FelicaException - Felica.reset() と同等の処理により FelicaException が発生する場合に、 そのままスローされます (ID_RESET_ERROR)。 エラー内容(TYPE)はそのまま素通しされます。
java.io.InterruptedIOException - FeliCaカードアクセス中に、 サスペンド状態への遷移によりカードアクセス処理が失敗した場合に発生します。
PortBusyException - ポートビジーエラーが発生した場合に発生します。
java.io.IOException - 入出力エラーが発生した場合に発生します。
導入されたバージョン:
DoJa-5.0 (903i)

write

public void write(WriteParameters param)
           throws FelicaException,
                  java.io.IOException

ブロックを書き込みます。

このメソッドによる書き込み処理は同時性が確保されます。 従って、WriteParametersに登録されているパラメータのうち1つでも書き込みに失敗した場合は、 全てのパラメータの書き込みは行われません。

WriteParametersに登録されているパラメータ数が 対象カードの同時書き込み上限数を超えていた場合、 全てのパラメータの書き込みは行われません。

[DoJa-5.0 (903i) 以降]
このオブジェクトに設定されているパケット種別 (getNodeCodeLength() が返す値) に従ってコマンドパケットを発行します。 ただし、このオブジェクトに設定されているパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 WriteParameters に登録されているパラメータに 2 バイト長では表せないサービスコードが含まれていた場合は例外が発生します。

パラメータ:
param - 書き込みパラメータ。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-4.1 (902iS) まで] オンライン処理が既に開始されている場合や、 外部 R/W からのアクセス待ち状態下の場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-5.0 (903i) 以降] オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
NullPointerException - 引数 param に null が指定された場合に発生します。
IllegalArgumentException - 引数 param に登録パラメータ数 (OfflineParameters.getSize() が返す値) が 0 個の書き込みパラメータが指定された場合に発生します。
IllegalArgumentException - [DoJa-5.0 (903i) 以降] このオブジェクトに設定されているコマンドパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 引数 param に登録されているパラメータに 2 バイト長では表せないサービスコード(負の値、または 216 以上の値) が含まれていた場合に発生します。
IllegalArgumentException - コマンドデータの長さが上限を超える場合に発生します。
FelicaException - レスポンスタイムアウトにより、 書き込みに失敗した場合に発生します (ID_WRITE_ERROR, TYPE_TIMEOUT_ERROR)。
FelicaException - レスポンスデータのフォーマットが正しくないことにより、 書き込みに失敗した場合に発生します (ID_WRITE_ERROR, TYPE_FORMAT_ERROR)。
FelicaException - 引数 param に含まれているパラメータの数が、 対象カードの同時書き込み上限数を超えていた場合に発生します (ID_WRITE_ERROR, TYPE_BLOCK_COUNT_OVER_ERROR)。
FelicaException - 指定されたサービスが存在しないことにより、 書き込みに失敗した場合に発生します (ID_WRITE_ERROR, TYPE_SERVICE_CODE_ERROR)。
FelicaException - ブロックナンバーの指定不正により、書き込みに失敗した場合に発生します (ID_WRITE_ERROR, TYPE_BLOCK_NO_ERROR)。
FelicaException - PIN未照合により、書き込みに失敗した場合に発生します (ID_WRITE_ERROR, TYPE_PIN_REQUIRED_ERROR)。
FelicaException - デクリメントでのパースバリュー不足、 あるいはキャッシュバックでのパースバリューのオーバーフローにより、 書き込みに失敗した場合に発生します (ID_WRITE_ERROR, TYPE_PURSE_ERROR)。
FelicaException - キャッシュバック値が直前のデクリメント値より大きいことにより、 書き込みに失敗した場合に発生します (ID_WRITE_ERROR, TYPE_CASHBACK_ERROR)。
FelicaException - サイクリック連続書き込みブロック数過大により、 書き込みに失敗した場合に発生します (ID_WRITE_ERROR, TYPE_CYCLIC_ERROR)。
FelicaException - 書き込みに失敗した場合に発生します (ID_WRITE_ERROR, TYPE_UNDEFINED_ERROR)。
java.io.InterruptedIOException - FeliCaカードアクセス中に、 サスペンド状態への遷移によりカードアクセス処理が失敗した場合に発生します。
PortBusyException - [DoJa-5.0 (903i) 以降] ポートビジーエラーが発生した場合に発生します。
java.io.IOException - 入出力エラーが発生した場合に発生します。

write

public void write(InputPINParameters pinParam,
                  WriteParameters writeParam)
           throws FelicaException,
                  java.io.IOException
PIN照合、ブロック書き込み、リセットを連続して行います。 リセットは PIN 解除情報をクリアするために行います。

このメソッドは以下の順に処理を行います。 途中で処理が失敗した場合は、その時点で処理を中断し例外をスローします。

  1. 引数 pinParam のチェック ( executePIN(pinParam) と同等の引数チェックを行う)
  2. 引数 writeParam のチェック ( write(writeParam) と同等の引数チェックを行う)
  3. PIN照合 ( executePIN(pinParam) と同等の処理を行う)
  4. ブロック書き込み ( write(writeParam) と同等の処理を行う)
  5. リセット ( Felica.reset() と同等の処理を行う)

このオブジェクトに設定されているパケット種別 (getNodeCodeLength() が返す値) に従ってコマンドパケットを発行します。 ただし、このオブジェクトに設定されているパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 InputPINParameters および WriteParameters に登録されているパラメータに 2 バイト長では表せないサービスコードが含まれていた場合は例外が発生します。

パラメータ:
pinParam - PIN 照合パラメータを指定します。
writeParam - 書き込みパラメータを指定します。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
NullPointerException - 引数 pinParam または writeParam に null が指定された場合に発生します。
IllegalArgumentException - 引数 pinParam について、 executePIN(pinParam) と同等の引数チェックにより IllegalArgumentException が発生する場合に、 そのままスローされます。
IllegalArgumentException - 引数 writeParam について、 write(writeParam) と同等の引数チェックにより IllegalArgumentException が発生する場合に、 そのままスローされます。
FelicaException - executePIN(pinParam) と同等の処理により FelicaException が発生する場合に、 そのままスローされます (ID_EXECUTEPIN_ERROR)。 エラー内容(TYPE)はそのまま素通しされます。
FelicaException - write(writeParam) と同等の処理により FelicaException が発生する場合に、 そのままスローされます (ID_WRITE_ERROR)。 エラー内容(TYPE)はそのまま素通しされます。
FelicaException - Felica.reset() と同等の処理により FelicaException が発生する場合に、 そのままスローされます (ID_RESET_ERROR)。 エラー内容(TYPE)はそのまま素通しされます。
java.io.InterruptedIOException - FeliCaカードアクセス中に、 サスペンド状態への遷移によりカードアクセス処理が失敗した場合に発生します。
PortBusyException - ポートビジーエラーが発生した場合に発生します。
java.io.IOException - 入出力エラーが発生した場合に発生します。
導入されたバージョン:
DoJa-5.0 (903i)

getKeyVersion

public byte[] getKeyVersion(int serviceCode)
                     throws FelicaException,
                            java.io.IOException

キーバージョンを取得します。

このメソッドの引数に 0xffff または 0xffffffff を指定した場合、 このオブジェクトがアクセス先として保持しているシステムのキーバージョンが返ります。

[DoJa-5.0 (903i) 以降]
このオブジェクトに設定されているパケット種別 (getNodeCodeLength() が返す値) に従ってコマンドパケットを発行します。 ただし、このオブジェクトに設定されているパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 引数 serviceCode に 2 バイト長では表せないサービスコードが指定された場合は例外が発生します。

パラメータ:
serviceCode - サービスコード。
[DoJa-4.1 (902iS) まで] 0 以上 216 - 1 以下の値が指定できます。 0xffff を除いて、 属性部分には、エリアを表す属性値またはサービスを表す属性値が指定できます。
[DoJa-5.0 (903i) 以降] 全ての範囲の値が指定できます。0xffff または 0xffffffff を除いて、 属性部分には、エリアを表す属性値またはサービスを表す属性値が指定できます。
戻り値:
キーバージョン(2バイト)を返します。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-4.1 (902iS) まで] オンライン処理が既に開始されている場合や、 外部 R/W からのアクセス待ち状態下の場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-5.0 (903i) 以降] オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
IllegalArgumentException - [DoJa-4.1 (902iS) まで] 引数 serviceCode に負の値、 または 216 以上の値が指定された場合に発生します。
IllegalArgumentException - 引数 serviceCode の属性部分の値が、エリアを表す属性値、 サービスを表す属性値のいずれでもない場合に発生します。
IllegalArgumentException - [DoJa-5.0 (903i) 以降] このオブジェクトに設定されているコマンドパケット種別が 「2 バイトノードコード指定パケット」であるにも関わらず、 引数 serviceCode に 2 バイト長では表せないサービスコード(負の値、または 216 以上の値) が指定された場合に発生します。
FelicaException - レスポンスタイムアウトにより、 取得に失敗した場合に発生します (ID_GETKEYVERSION_ERROR, TYPE_TIMEOUT_ERROR)。
FelicaException - レスポンスデータのフォーマットが正しくないことにより、 取得に失敗した場合に発生します (ID_GETKEYVERSION_ERROR, TYPE_FORMAT_ERROR)。
FelicaException - 指定されたサービスが存在しないことにより、 取得に失敗した場合に発生します (ID_GETKEYVERSION_ERROR, TYPE_SERVICE_CODE_ERROR)。
FelicaException - 取得に失敗した場合に発生します (ID_GETKEYVERSION_ERROR, TYPE_UNDEFINED_ERROR)。
java.io.InterruptedIOException - FeliCaカードアクセス中に、 サスペンド状態への遷移によりカードアクセス処理が失敗した場合に発生します。
PortBusyException - [DoJa-5.0 (903i) 以降] ポートビジーエラーが発生した場合に発生します。
java.io.IOException - 入出力エラーが発生した場合に発生します。

getContainerIssueInfo

public byte[] getContainerIssueInfo()
                             throws FelicaException,
                                    java.io.IOException
コンテナ発行情報を取得します。

戻り値:
コンテナ発行情報(16byte)を返します。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
FelicaException - レスポンスタイムアウトにより、 取得に失敗した場合に発生します (ID_GETISSUEINFO_ERROR, TYPE_TIMEOUT_ERROR)。
FelicaException - レスポンスデータのフォーマットが正しくないことにより、 取得に失敗した場合に発生します (ID_GETISSUEINFO_ERROR, TYPE_FORMAT_ERROR)。
FelicaException - 取得に失敗した場合に発生します (ID_GETISSUEINFO_ERROR, TYPE_UNDEFINED_ERROR)。
java.io.InterruptedIOException - FeliCaカードアクセス中に、 サスペンド状態への遷移によりカードアクセス処理が失敗した場合に発生します。
PortBusyException - ポートビジーエラーが発生した場合に発生します。
java.io.IOException - 入出力エラーが発生した場合に発生します。
導入されたバージョン:
DoJa-5.0 (903i)

setParameter

public void setParameter(long param)
                  throws FelicaException,
                         java.io.IOException
コマンドパケットで使用する属性を(処理対象カードに)設定します。

指定できる属性は以下のものです。
・パケット種別 (2バイトノードコード指定パケット、または 4バイトノードコード指定パケット)

なお、このメソッドで設定した属性値は以下の条件で初期化されます。
FeliCa IC チップをリセットする
・FeliCa IC チップの電源を再投入する

また、このメソッドで設定した属性値は、 以下のメソッドを呼び出すことで変更される可能性があることに注意して下さい。 これは、このメソッドにて発行される属性設定コマンドの効果が、 内部カード全体(内部カードの全システム)に有効であるためです。

このメソッドは、処理対象カードに対して設定を行なうものであり、 このオブジェクトに対して設定を行なうものではありません。 このオブジェクトに対してパケット種別の設定を行なうには、 setNodeCodeLength(int) を呼び出して下さい。

パラメータ:
param - 属性値を指定します。 PARAM_NODE_CODE_LEN_2、または PARAM_NODE_CODE_LEN_4 を指定可能です。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
IllegalArgumentException - 引数 param に不正な属性値が指定された場合に発生します。
FelicaException - レスポンスタイムアウトにより、 属性指定に失敗した場合に発生します (ID_SETPARAMETER_ERROR, TYPE_TIMEOUT_ERROR)。
FelicaException - レスポンスデータのフォーマットが正しくないことにより、 属性指定に失敗した場合に発生します (ID_SETPARAMETER_ERROR, TYPE_FORMAT_ERROR)。
FelicaException - 属性指定に失敗した場合に発生します (ID_SETPARAMETER_ERROR, TYPE_UNDEFINED_ERROR)。
java.io.InterruptedIOException - FeliCaカードアクセス中に、 サスペンド状態への遷移によりカードアクセス処理が失敗した場合に発生します。
PortBusyException - ポートビジーエラーが発生した場合に発生します。
java.io.IOException - 入出力エラーが発生した場合に発生します。
導入されたバージョン:
DoJa-5.0 (903i)

getIDm

public byte[] getIDm()
このオブジェクトがアクセス先として保持しているIDmを返します。

戻り値:
IDmを返します。(8byte)
[DoJa-5.0 (903i) 以降] 返される配列は、 このオブジェクトが内部で保持している配列のコピーです。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-4.1 (902iS) まで] オンライン処理が既に開始されている場合や、 外部 R/W からのアクセス待ち状態下の場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-5.0 (903i) 以降] オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。

getCardVersion

public byte[] getCardVersion()
このオブジェクトがアクセス先として保持しているカードのバージョンを返します。

具体的には、製造パラメータ(PMm)の前半 2 バイトを返します。

戻り値:
カードバージョンを返します。(2byte)
[DoJa-5.0 (903i) 以降] 返される配列は、 このオブジェクトが内部で保持している配列のコピーです。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-4.1 (902iS) まで] オンライン処理が既に開始されている場合や、 外部 R/W からのアクセス待ち状態下の場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-5.0 (903i) 以降] オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。

getResponseTimeInfo

public byte[] getResponseTimeInfo()
このオブジェクトがアクセス先として保持しているカードの、 コマンド処理時間に関するデータを返します。

具体的には、製造パラメータ(PMm)の後半 6 バイトを返します。

戻り値:
カードのコマンド処理時間に関するデータを返します。(6byte)
返される配列は、 このオブジェクトが内部で保持している配列のコピーです。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
導入されたバージョン:
DoJa-5.0 (903i)

getSystemCode

public int getSystemCode()
このオブジェクトがアクセス先として保持している システムコードを取得します。

戻り値:
システムコードを返します。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-4.1 (902iS) まで] オンライン処理が既に開始されている場合や、 外部 R/W からのアクセス待ち状態下の場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-5.0 (903i) 以降] オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。

getCard

public int getCard()
このオブジェクトの処理対象カードを取得します。

戻り値:
処理対象カードを返します。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-4.1 (902iS) まで] オンライン処理が既に開始されている場合や、 外部 R/W からのアクセス待ち状態下の場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-5.0 (903i) 以降] オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。

getTimeout

public int getTimeout()
このオブジェクトのカード処理におけるタイムアウト値を取得します。

戻り値:
タイムアウト値[ms]を返します。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-4.1 (902iS) まで] オンライン処理が既に開始されている場合や、 外部 R/W からのアクセス待ち状態下の場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-5.0 (903i) 以降] オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。

setTimeout

public void setTimeout(int timeout)

このオブジェクトの カード処理におけるタイムアウト値を設定します。 ここで設定されたタイムアウト値は、 このオブジェクトに対してだけ有効です。

パラメータ:
timeout - タイムアウト値[ms]。 0 以上 60000 以下の値が指定できます
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-4.1 (902iS) まで] オンライン処理が既に開始されている場合や、 外部 R/W からのアクセス待ち状態下の場合に発生します(ILLEGAL_STATE)。
DeviceException - [DoJa-5.0 (903i) 以降] オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
IllegalArgumentException - 引数 timeout に負の値、 または 60000 より大きい値が指定された場合に発生します。

getNodeCodeLength

public int getNodeCodeLength()
このオブジェクトのカード処理におけるパケット種別を取得します。

このメソッドの戻り値の意味は以下の通りです。

戻り値意味
22 バイトノードコード指定パケット
44 バイトノードコード指定パケット

このオブジェクトが生成された直後では、デフォルト値として 2 を返します。

戻り値:
パケット種別を返します。2 または 4 を返します。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
導入されたバージョン:
DoJa-5.0 (903i)

setNodeCodeLength

public void setNodeCodeLength(int nodeCodeLen)
このオブジェクトのカード処理におけるパケット種別を設定します。 ここで設定されたパケット種別は、 このオブジェクトに対してだけ有効です。

このメソッドの引数には 2 または 4 のいずれかの数値を指定します。 引数に 2 を指定した場合、 このオブジェクトのカード処理におけるパケット種別として 「2 バイトノードコード指定パケット」が、 4 を指定した場合は「4 バイトノードコード指定パケット」が設定されます。

パラメータ:
nodeCodeLen - パケット種別を指定します。 2 または 4 を指定します。
例外:
DeviceException - FeliCaがオープンされていない場合に発生します(ILLEGAL_STATE)。
DeviceException - オンライン処理が既に開始されている場合に発生します(ILLEGAL_STATE)。
IllegalArgumentException - 引数 nodeCodeLen に 不正な値が指定された場合に発生します。
導入されたバージョン:
DoJa-5.0 (903i)