• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

debian/H07-May-2022-494378

spec/H06-May-2012-432349

src/H06-May-2012-2,2851,810

tests/H06-May-2012-865731

COPYINGH A D11-Aug-201117.6 KiB341281

ChangeLogH A D06-May-20124.9 KiB157104

INSTALLH A D11-Aug-201111.1 KiB292219

Makefile.amH A D06-May-2012166 64

Makefile.inH A D06-May-201223.1 KiB749657

READMEH A D06-May-201214.4 KiB528324

aclocal.m4H A D06-May-2012342.9 KiB9,7738,791

config.guessH A D13-Aug-201143.5 KiB1,5181,306

config.h.inH A D06-May-20123.2 KiB12483

config.subH A D13-Aug-201134.4 KiB1,7611,609

configureH A D06-May-2012435.3 KiB15,09912,623

configure.inH A D06-May-20121.3 KiB5240

depcompH A D11-Aug-201118.2 KiB631407

install-shH A D11-Aug-201113.3 KiB520344

ltmain.shH A D06-May-2012277 KiB9,6627,310

missingH A D11-Aug-201111.2 KiB377281

mkinstalldirsH A D11-Aug-20113.5 KiB163112

README

1・ このライブラリは libpasori (http://libpasori.sourceforge.jp/) を再構
2   成し、若干の機能追加などを行なったものです。
3
4・ NFC Reader/Writer Linux Driver ( http://core.dumped.cc/devel/nfc/index.ja.html )
5   および
6   libnfc ( http://www.libnfc.org/ )
7   のソースコードも参考にしています。
8
9・ Sony の PaSoRi RC-S320 および RC-S330 に対応しています。
10
11・ 動作確認などは不十分な状態なので、各自の責任でご利用ください。
12
13
14●コンパイルとインストール
15
16$ ./configure
17$ make
18# make install
19
20
21●Debian パッケージの作成
22$ dpkg-buildpackage -rfakeroot
23
24
25●udev の設定
26
27Debian GNU/Linux wheezy での設定例です。ディストリビューションやバージョ
28ンにより設定が異なる可能性がありますので適宜読み替えて設定を行なってく
29ださい。
30
311. 下記の内容を /lib/udev/rules.d/60-libpafe.rules として保存する。
32
33ACTION!="add", GOTO="pasori_rules_end"
34SUBSYSTEM=="usb_device", GOTO="pasori_rules_start"
35SUBSYSTEM!="usb", GOTO="pasori_rules_end"
36LABEL="pasori_rules_start"
37
38ATTRS{idVendor}=="054c", ATTRS{idProduct}=="006c", MODE="0664", GROUP="plugdev"
39ATTRS{idVendor}=="054c", ATTRS{idProduct}=="01bb", MODE="0664", GROUP="plugdev"
40ATTRS{idVendor}=="054c", ATTRS{idProduct}=="02e1", MODE="0664", GROUP="plugdev"
41
42LABEL="pasori_rules_end"
43
44
45ファイル名は適宜変更してください。
46
472. udevadm control --reload-rules を実行。
48
49
50以上で plugdev グループに属しているユーザは pasori を利用できるようにな
51るはずです。
52
53
54
55●関数リファレンス
56
57pasori *pasori_open(void);
58
59概要
60  デバイスファイルをオープンする。
61
62返り値
63  成功した場合 psori 型のポインタを返す。失敗すると NULL が返される。
64
65
66
67int pasori_init(pasori *p)
68
69概要
70  PaSoRi の初期化を行なう。
71
72引数
73  p  pasori_open で取得した psori 型のポインタ。
74
75返り値
76  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
77
78
79
80void pasori_close(pasori *p);
81
82概要
83  pasori_reset() を実行した後、デバイスファイルをクローズする。
84
85引数
86  p  pasori_open で取得した psori 型のポインタ。
87
88
89
90int pasori_send(pasori *p, uint8 *data, int *size);
91
92概要
93  PaSoRi にデータを送出する。
94
95引数
96  p    pasori_open で取得した psori 型のポインタ。
97  data 送出するデータへのポインタ。
98  size 送出するデータのサイズ。
99
100返り値
101  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
102
103
104int pasori_recv(pasori *p, uint8 *data, int *size);
105
106概要
107  PaSoRi からデータを受け取る。
108
109引数
110  p    pasori_open で取得した psori 型のポインタ。
111  data データを格納するバッファへのポインタ。
112  size バッファのサイズへのポインタ。
113
114返り値
115  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
116  size が参照している場所に格納したデータの長さが保存される。
117
118
119
120int pasori_packet_write(pasori *p, uint8 *data, int *size)
121
122概要
123  PaSoRi にコマンドを送出する。内部で pasori_send を呼び出している。
124
125引数
126  p    pasori_open で取得した psori 型のポインタ。
127  data 送出するデータへのポインタ。
128  size 送出するデータのサイズへのポインタ。
129
130返り値
131  成功した場合 0 を返す。size が参照している場所に送出したデータの長さ
132  が保存される。失敗すると 0 以外の数値が返される。
133
134
135
136int pasori_packet_read(pasori * p, uint8 * data, int *size);
137
138概要
139  PaSoRi に送出したコマンドへの応答を取得する。内部で pasori_recv を呼
140  び出している。
141
142引数
143  p    pasori_open で取得した psori 型のポインタ。
144  data データを格納するバッファへのポインタ。
145  size バッファのサイズへのポインタ。
146
147返り値
148  成功した場合 0 を返す。size が参照している場所に取得したデータの長さ
149  が保存される。失敗すると 0 以外の数値が返される。
150
151
152int pasori_write(pasori *p, uint8 *data, int *size);
153
154概要
155  FeliCa にデータを送信する。内部で pasori_packet_write を呼び出してい
156  る。
157  RC-S320 では PaSoRi2 コマンド 0x5C に対応する。
158
159引数
160  p    pasori_open で取得した psori 型のポインタ。
161  data データを格納するバッファへのポインタ。
162  size バッファのサイズへのポインタ。
163
164返り値
165  成功した場合 0 を返す。size が参照している場所に送信したデータの長さ
166  が保存される。失敗すると 0 以外の数値が返される。
167
168
169int pasori_read(pasori *p, uint8 *data, int *size);
170
171概要
172  FeliCa からの応答を受信する。内部で pasori_packet_read を呼び出してい
173  る。
174
175引数
176  p    pasori_open で取得した psori 型のポインタ。
177  data データを格納するバッファへのポインタ。
178  size バッファのサイズへのポインタ。
179
180返り値
181  成功した場合 0 を返す。size が参照している場所に格納したデータの長さ
182  が保存される。失敗すると 0 以外の数値が返される。
183
184
185int pasori_reset(pasori * p);
186
187概要
188  RC-S320 では Pasori にリセットコマンドを送出する。(PaSoRi2 コマンド 0x54)
189  RC-S330 では RF Off などの処理を行う。
190
191引数
192  p    pasori_open で取得した psori 型のポインタ。
193
194返り値
195  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
196
197
198
199int pasori_version(pasori *p, int *v1, int *v2);
200
201概要
202  Pasori のファームウェアバージョンを取得する。
203
204引数
205  p  pasori_open で取得した psori 型のポインタ。
206  v1 バージョンの上位番号を格納するためのポインタ。
207  v2 バージョンの下位番号を格納するためのポインタ。
208
209返り値
210  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
211
212バグ
213  RC-S330 で正しい値が得られているかどうかは未確認。
214
215
216
217int pasori_type(pasori *p);
218
219概要
220  Pasori のタイプを取得する。
221
222引数
223  p  pasori_open で取得した psori 型のポインタ。
224
225返り値
226  PASORI_TYPE_S310
227  PASORI_TYPE_S320
228  PASORI_TYPE_S330
229
230  失敗すると -1 が返される。
231
232
233
234int pasori_test(pasori *p, int code, uint8 *data, int *size, uint8 *rdata, int *rsize);
235
236概要
237  RC-S320 のみ有効。
238  Pasori の自己診断を行なう。(PaSoRi2 コマンド 0x52)
239
240引数
241  p     pasori_open で取得した psori 型のポインタ。
242  code  テストコード
243  data  テストデータを格納するバッファへのポインタ。
244  size  テストデータバッファのサイズへのポインタ。
245  rdata 応答データを格納するバッファへのポインタ。
246  rsize 応答データバッファのサイズへのポインタ。
247
248
249返り値
250  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
251
252
253
254int pasori_test_echo(pasori *p, uint8 *data, int *size);
255
256概要
257  RC-S320 のみ有効。
258  Pasori のエコーバックテストを行なう。(テストコード 0x00)
259
260引数
261  p    pasori_open で取得した psori 型のポインタ。
262  data テストデータを格納するバッファへのポインタ。
263  size テストデータバッファのサイズへのポインタ。
264
265返り値
266  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
267
268
269
270int pasori_test_eprom(pasori *p);
271
272概要
273  RC-S320 のみ有効。
274  Pasori の EPROM テストを行なう。(テストコード 0x01)
275
276引数
277  p    pasori_open で取得した psori 型のポインタ。
278
279返り値
280  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
281
282
283
284int pasori_test_ram(pasori *p);
285
286概要
287  RC-S320 のみ有効。
288  Pasori の RAM テストを行なう。(テストコード 0x02)
289
290引数
291  p    pasori_open で取得した psori 型のポインタ。
292
293返り値
294  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
295
296
297
298int pasori_test_cpu(pasori *p);
299
300概要
301  RC-S320 のみ有効。
302  Pasori の CPU テストを行なう。(テストコード 0x03)
303
304引数
305  p    pasori_open で取得した psori 型のポインタ。
306
307返り値
308  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
309
310
311
312int pasori_test_polling(pasori *p);
313
314概要
315  RC-S320 のみ有効。
316  Pasori のポーリングテストを行なう。(テストコード 0x10)
317
318引数
319  p pasori_open で取得した psori 型のポインタ。
320
321返り値
322  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
323
324
325
326void pasori_set_timeout(pasori *p, int timeout);
327
328概要
329  タイムアウトを設定する。
330
331引数
332  p pasori_open で取得した psori 型のポインタ。
333  timeout timeout の値 (usb_control_msg() で使用される)。
334
335
336
337felica *felica_polling(pasori *p, uint16 systemcode, uint8 RFU, uint8 timeslot);
338
339概要
340  REQC (リクエストコマンド C 型) を送信し、以降の通信で必要なデータを取
341  得する。
342
343引数
344  p pasori_open で取得した psori 型のポインタ。
345  systemcode システムコード
346              FELICA_POLLING_ANY   全てのシステムが反応する
347              FELICA_POLLING_SUICA Suica
348              FELICA_POLLING_EDY   Edy
349  RFU 予備 (通常は 0 を指定)
350  timeslot タイムスロットの最大値を指定する。詳細は JIS X 6319-4 を参照のこと。
351
352返り値
353  成功した場合 felica 型のポインタを返す。返された felica 型のポインタ
354  は不要になったときに free(3) で開放する必要がある。 失敗すると NULL
355  が返される。
356
357
358
359int felica_get_idm(felica *f, uint8 *idm);
360
361概要
362  IDm (製造識別子) を取得する。
363
364引数
365  f   felica_polling で取得した felica 型のポインタ。
366  idm IDm を格納するためのポインタ。
367
368返り値
369  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
370
371
372
373int felica_get_pmm(felica *f, uint8 *pmm);
374
375概要
376  PMm (製造パラメタ) を取得する。
377
378引数
379  f   felica_polling で取得した felica 型のポインタ。
380  pmm PMm を格納するためのポインタ。
381
382返り値
383  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
384
385
386
387int felica_read(felica * f, int *n, felica_block_info *info, uint8 *data);
388
389概要
390  Read コマンドを送信する。
391
392引数
393  f    felica_polling で取得した felica 型のポインタ。
394  n    ブロック数へのポインタ。
395  info サービスコードリスト。
396  data 応答データを格納するバッファへのポインタ。
397
398返り値
399  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
400
401バグ
402  RC-S330 では動作未確認。
403
404
405int felica_read_single(felica * f, int servicecode, int mode, uint8 block, uint8 *data);
406
407概要
408  Read コマンドを送信する。ブロック数は 1 に固定。
409
410引数
411  f     felica_polling で取得した felica 型のポインタ。
412  mode  アクセスモード
413        0  直接アクセス
414           循環順編成アクセス
415           減算アクセス
416        1  戻入れアクセス
417  block ブロック番号
418  data  応答データを格納するバッファへのポインタ。
419
420返り値
421  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
422
423
424
425int felica_write(felica *f, int servicecode, int mode, uint8 addr, uint8 *data);
426
427未実装
428
429
430
431int felica_request_service(felica *f, int *n, uint16 *list, uint16 *data);
432
433概要
434  Request Service コマンドを送信する。
435
436引数
437  f    felica_polling で取得した felica 型のポインタ。
438  n    ブロック数へのポインタ。
439  list サービスコードリストまたはエリアコードリスト。
440  data 応答データを格納するバッファへのポインタ。
441
442返り値
443  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
444
445バグ
446  RC-S330 では動作未確認。
447
448
449int felica_request_response(felica *f, uint8 *mode);
450
451概要
452  Request Response コマンドを送信する。現在のモードを調べる。
453
454引数
455  f    felica_polling で取得した felica 型のポインタ。
456  mode モードを格納するためのポインタ。
457
458返り値
459  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
460
461バグ
462  RC-S330 では動作未確認。
463
464
465int felica_search_service(felica *f);
466
467概要
468  0xffffがサービスコードとして返却されるまで Search Service Code コマン
469  ドを送信する。
470  取得されたサービスコードまたはエリアコードの数は
471
472  f->area_num, f->service_num
473
474  に設定されます。  それぞれのサービスコードまたはエリアコードは
475
476  f->area[n].code, f->area[n].attr, f->area[n].bin
477  f->service[n].code, f->service[n].attr, f->service[n].bin
478
479  で参照できます。code はサービス番号またはサービスファイルの最小ファイ
480  ル識別子、attr はアクセス制御処理区分、 bin はファイル識別子全体を表
481  します。
482
483引数
484  f    felica_polling で取得した felica 型のポインタ。
485
486返り値
487  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
488
489
490
491int felica_request_system(felica *f, int *n, uint16 *data);
492
493概要
494  Request System Code コマンドを送信する。FeliCa のもつシステムコードの
495  リストを得る。
496
497引数
498  f    felica_polling で取得した felica 型のポインタ。
499  data 応答データを格納するバッファへのポインタ。
500
501返り値
502  成功した場合 0 を返す。失敗すると 0 以外の数値が返される。
503
504
505
506定数
507
508FELICA_IDM_LENGTH      IDm のサイズ
509FELICA_PMM_LENGTH      PMm のサイズ
510FELICA_BLOCK_LENGTH    ブロックのサイズ
511
512
513
514戻り値
515
516PASORI_ERR_PARM    引数に誤りがある。
517PASORI_ERR_MEM     メモリの確保に失敗した。
518PASORI_ERR_COM     通信エラー。
519PASORI_ERR_DATA    データに異常がある。
520PASORI_ERR_CHKSUM  チェックサムに失敗した。
521PASORI_ERR_FORMAT  コマンドの形式が異常。
522PASORI_ERR_TYPE    未対応のハードウェア。
523
524
525●連絡先
526
527ZXB01226@nifty.com (オリジナルソースコード)
528rfujita@redhat.com (RPM化及びバージョン0.0.7をベースにしたgit化)