-
このライブラリは libpasori (http://libpasori.sourceforge.jp/) を再構成し、若干の機能追加などを行なったものです。
-
NFC Reader/Writer Linux Driver ( http://core.dumped.cc/devel/nfc/index.ja.html ) および libnfc ( http://www.libnfc.org/ )のソースコードも参考にしています。
-
Sony の PaSoRi RC-S320 および RC-S330 に対応しています。
-
動作確認などは不十分な状態なので、各自の責任でご利用ください。
$ ./configure
$ make
$ make install
$ dpkg-buildpackage -rfakeroot
Debian GNU/Linux wheezy での設定例です。ディストリビューションやバージョンにより設定が異なる可能性がありますので適宜読み替えて設定を行なってください。
- 下記の内容を /lib/udev/rules.d/60-libpafe.rules として保存する。
ACTION!="add", GOTO="pasori_rules_end"
SUBSYSTEM=="usb_device", GOTO="pasori_rules_start"
SUBSYSTEM!="usb", GOTO="pasori_rules_end"
LABEL="pasori_rules_start"
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="006c", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="01bb", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="02e1", MODE="0664", GROUP="plugdev"
LABEL="pasori_rules_end"
ファイル名は適宜変更してください。
- 次を実行。
udevadm control --reload-rules
以上で plugdev グループに属しているユーザは pasori を利用できるようになるはずです。
概要
- デバイスファイルをオープンする。
返り値
- 成功した場合 psori 型のポインタを返す。失敗すると NULL が返される。
概要
- 複数台のPaSoRiのデバイスファイルをオープンする。
返り値
- pasori_devices 型のポインタを返す。失敗すると pasori_devices->error_code にエラーコードが設定された状態で返される。
概要
- PaSoRi の初期化を行なう。
引数
- p pasori_open で取得した psori 型のポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- pasori_reset() を実行した後、デバイスファイルをクローズする。
引数
- p pasori_open で取得した psori 型のポインタ。
概要
- PaSoRi にデータを送出する。
引数
- p pasori_open で取得した psori 型のポインタ。
- data 送出するデータへのポインタ。
- size 送出するデータのサイズ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- PaSoRi からデータを受け取る。
引数
- p pasori_open で取得した psori 型のポインタ。
- data データを格納するバッファへのポインタ。
- size バッファのサイズへのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
- size が参照している場所に格納したデータの長さが保存される。
概要
- PaSoRi にコマンドを送出する。内部で pasori_send を呼び出している。
引数
- p pasori_open で取得した psori 型のポインタ。
- data 送出するデータへのポインタ。
- size 送出するデータのサイズへのポインタ。
返り値
- 成功した場合 0 を返す。size が参照している場所に送出したデータの長さが保存される。失敗すると 0 以外の数値が返される。
概要
- PaSoRi に送出したコマンドへの応答を取得する。内部で pasori_recv を呼び出している。
引数
- p pasori_open で取得した psori 型のポインタ。
- data データを格納するバッファへのポインタ。
- size バッファのサイズへのポインタ。
返り値
- 成功した場合 0 を返す。size が参照している場所に取得したデータの長さが保存される。失敗すると 0 以外の数値が返される。
概要
- FeliCa にデータを送信する。内部で pasori_packet_write を呼び出している。
- RC-S320 では PaSoRi2 コマンド 0x5C に対応する。
引数
- p pasori_open で取得した psori 型のポインタ。
- data データを格納するバッファへのポインタ。
- size バッファのサイズへのポインタ。
返り値
- 成功した場合 0 を返す。size が参照している場所に送信したデータの長さが保存される。失敗すると 0 以外の数値が返される。
概要
- FeliCa からの応答を受信する。内部で pasori_packet_read を呼び出している。
引数
- p pasori_open で取得した psori 型のポインタ。
- data データを格納するバッファへのポインタ。
- size バッファのサイズへのポインタ。
返り値
- 成功した場合 0 を返す。size が参照している場所に格納したデータの長さが保存される。失敗すると 0 以外の数値が返される。
概要
- RC-S320 では Pasori にリセットコマンドを送出する。(PaSoRi2 コマンド 0x54)
- RC-S330 では RF Off などの処理を行う。
引数
- p pasori_open で取得した psori 型のポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- Pasori のファームウェアバージョンを取得する。
引数
- p pasori_open で取得した psori 型のポインタ。
- v1 バージョンの上位番号を格納するためのポインタ。
- v2 バージョンの下位番号を格納するためのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
バグ
- RC-S330 で正しい値が得られているかどうかは未確認。
概要
- Pasori のタイプを取得する。
引数
- p pasori_open で取得した psori 型のポインタ。
返り値
- PASORI_TYPE_S310
- PASORI_TYPE_S320
- PASORI_TYPE_S330
失敗すると -1 が返される。
概要
- RC-S320 のみ有効。
- Pasori の自己診断を行なう。(PaSoRi2 コマンド 0x52)
引数
- p pasori_open で取得した psori 型のポインタ。
- code テストコード
- data テストデータを格納するバッファへのポインタ。
- size テストデータバッファのサイズへのポインタ。
- rdata 応答データを格納するバッファへのポインタ。
- rsize 応答データバッファのサイズへのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- RC-S320 のみ有効。
- Pasori のエコーバックテストを行なう。(テストコード 0x00)
引数
- p pasori_open で取得した psori 型のポインタ。
- data テストデータを格納するバッファへのポインタ。
- size テストデータバッファのサイズへのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- RC-S320 のみ有効。
- Pasori の EPROM テストを行なう。(テストコード 0x01)
引数
- p pasori_open で取得した psori 型のポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- RC-S320 のみ有効。
- Pasori の RAM テストを行なう。(テストコード 0x02)
引数
- p pasori_open で取得した psori 型のポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- RC-S320 のみ有効。
- Pasori の CPU テストを行なう。(テストコード 0x03)
引数
- p pasori_open で取得した psori 型のポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- RC-S320 のみ有効。
- Pasori のポーリングテストを行なう。(テストコード 0x10)
引数
- p pasori_open で取得した psori 型のポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- タイムアウトを設定する。
引数
- p pasori_open で取得した psori 型のポインタ。
- timeout timeout の値 (usb_control_msg() で使用される)。
概要
- REQC (リクエストコマンド C 型) を送信し、以降の通信で必要なデータを取得する。
引数
- p pasori_open で取得した psori 型のポインタ。
- systemcode システムコード ** FELICA_POLLING_ANY 全てのシステムが反応する ** FELICA_POLLING_SUICA Suica ** FELICA_POLLING_EDY Edy
- RFU 予備 (通常は 0 を指定)
- timeslot タイムスロットの最大値を指定する。詳細は JIS X 6319-4 を参照のこと。
返り値
- 成功した場合 felica 型のポインタを返す。返された felica 型のポインタは不要になったときに free(3) で開放する必要がある。 失敗すると NULLが返される。
概要
- IDm (製造識別子) を取得する。
引数
- f felica_polling で取得した felica 型のポインタ。
- idm IDm を格納するためのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- PMm (製造パラメタ) を取得する。
引数
- f felica_polling で取得した felica 型のポインタ。
- pmm PMm を格納するためのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- Read コマンドを送信する。
引数
- f felica_polling で取得した felica 型のポインタ。
- n ブロック数へのポインタ。
- info サービスコードリスト。
- data 応答データを格納するバッファへのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
バグ
- RC-S330 では動作未確認。
概要
- Read コマンドを送信する。ブロック数は 1 に固定。
引数
- f felica_polling で取得した felica 型のポインタ。
- mode アクセスモード ** 0 直接アクセス/循環順編成アクセス/減算アクセス ** 1 戻入れアクセス
- block ブロック番号
- data 応答データを格納するバッファへのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- Write コマンドを送信する。ブロック数は 1 に固定。
引数
- f felica_polling で取得した felica 型のポインタ。
- mode アクセスモード ** 0 直接アクセス/循環順編成アクセス/減算アクセス ** 1 戻入れアクセス
- block ブロック番号
- data 書き込みデータを格納するバッファへのポインタ兼応答データを格納するバッファへのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- Request Service コマンドを送信する。
引数
- f felica_polling で取得した felica 型のポインタ。
- n ブロック数へのポインタ。
- list サービスコードリストまたはエリアコードリスト。
- data 応答データを格納するバッファへのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
バグ
- RC-S330 では動作未確認。
概要
- Request Response コマンドを送信する。現在のモードを調べる。
引数
- f felica_polling で取得した felica 型のポインタ。
- mode モードを格納するためのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
バグ
- RC-S330 では動作未確認。
概要
- 0xffffがサービスコードとして返却されるまで Search Service Code コマンドを送信する。取得されたサービスコードまたはエリアコードの数は
f->area_num, f->service_num
に設定されます。
- それぞれのサービスコードまたはエリアコードは
f->area[n].code, f->area[n].attr, f->area[n].bin f->service[n].code, f->service[n].attr, f->service[n].bin
で参照できます。
- code はサービス番号またはサービスファイルの最小ファイル識別子、attr はアクセス制御処理区分、 bin はファイル識別子全体を表します。
引数
- f felica_polling で取得した felica 型のポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
概要
- Request System Code コマンドを送信する。FeliCa のもつシステムコードのリストを得る。
引数
- f felica_polling で取得した felica 型のポインタ。
- data 応答データを格納するバッファへのポインタ。
返り値
- 成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
- FELICA_IDM_LENGTH IDm のサイズ
- FELICA_PMM_LENGTH PMm のサイズ
- FELICA_BLOCK_LENGTH ブロックのサイズ
- PASORI_ERR_PARM 引数に誤りがある。
- PASORI_ERR_MEM メモリの確保に失敗した。
- PASORI_ERR_COM 通信エラー。
- PASORI_ERR_DATA データに異常がある。
- PASORI_ERR_CHKSUM チェックサムに失敗した。
- PASORI_ERR_FORMAT コマンドの形式が異常。
- PASORI_ERR_TYPE 未対応のハードウェア。
- [email protected] (オリジナルソースコード)
- [email protected] (RPM化及びバージョン0.0.7をベースにしたgit化)
- [email protected] (複数台のPaSoRiへの対応)