2012/03/18

[felica]FeliCa Liteのデータを読む

Linuxの復旧をしている間は暇なので、FeliCa Liteのデータを読む話でも書くとしよう。


FeliCa LiteとアクセスするRFパケットは、FeliCa Liteのユーザーズマニュアルに構成が載っている。

image

もし私がFeliCa Liteのチップを直接制御してRFパケットを送信したり、R/Wのチップを直接制御してRFパケットを送信するなら、このパケットを作ってチップに渡さないといけないだろう。

しかし、仕事でそういうチップを制御するのならばともかく、ライブラリやドライバを介してアクセスするのであれば、ここまでパケットを作る必要はない。
だいたいこんなもんだろう。

image

パソリを使うときは、パソリに対してのパケットフォーマットがある。
また、「パソリからFeliCa Liteカードに対してこれを送信してくれ」というTHRU系コマンドを使ってやらないといけない。

SDK for NFC Starter Kitなんかは、そこまでラップしてくれる。
なので、作るのはLENから始まるデータだけでよい。


それを踏まえて、読み込むコマンドを見ていこう。
名前は「Read Without Encryption」である。
NFC Forumの名称でいえば「Check」になる。

細かい説明は省こう。
1ブロックだけ読み込むなら、こんな感じだ。

image

カードのIDmは、ポーリングで取ってきた値そのまま。
サービスは、最初の01がサービス数、次の2byteがリトルエンディアンでRead Onlyブロックを意味する(Read/Writeブロックも読める)。
ブロックは、最初の01がブロック数、次の2byteが2バイトブロックリストだ(説明が面倒なので、詳細はユーザーズマニュアル参照)。

 

受信は、こういうデータになる。
LENは手計算なのでちょっと心配だが、とにかくこのデータ全体だ。

image

失敗すると、Statusのところまででデータが終わる(ブロック数まで入ってたかどうかは、覚えてない)。
とにかく、必ず返ってくるわけではないことに注意して実装しなくてはならん。


と書いてきたが、まだLinuxの復旧が終わらない。
64bit版のところに間違えて32bit版を上書きしたのが非常に痛い。。。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。