2015/03/25

[nfc][mbed]FeliCa LinkのPlugモードでRead w/o Encが通った

昨日で完成させるはずが、ずるずると延びているFeliCa Linkをmbed(NUCLEO F411RE)で動かす件。
先ほどようやく、PlugモードでPaSoRiから1ブロックだけ読み出すことができた。

FeliCa Linkの部分は、自分の実装ミス以外は悩むところがなかった。
なんというか、仕様書通りに作ったら、仕様書通りに動いた、というところ。

動かなかったのは、自分の実装ミスだ。
なんだけど、mbedのI2Cインターフェースも反省すべき点はあると思う、うん。

FeliCa Linkには"Page Write"というのがあり、書込み先のアドレスを指定したら、あとは書込みたい分だけ書く、という使い方だ。
mbedのI2Cインターフェースは書き込みについては2つあって、1つはスレーブアドレスとバッファとサイズを指定して、一気に書込むAPI(API1と呼ぶ)。もう1つは、最後に書いた続きから1byte書込むAPI(API2と呼ぶ)。
私はメモリ確保を端折るため、書込み先アドレス指定をAPI1、書き込むデータをAPI2でぐるぐる回すような実装にしていた。
それはよいのだけど、API1とAPI2で戻り値が異なることに気付いてなかった。
API1は成功すると0、API2はACKが返ってくると1。
・・・想像がついたと思うけど、私はAPI2も成功が0と思って実装し、うまく書き込めてなかったのだ。
でも、API2の戻りはACK受信時に0でもよかったと思うのだ。

 

まあ、そういうこまごましたことはともかく、FeliCa Linkの扱いは思ったよりも楽だということがわかった。
FeliCa PlugだとFeliCa Throughモードしかないのでホスト側でデータを全部考えないといけないけど、FeliCa LinkにはLite-S/FTモードがあるので、既存のメモリを生かしつつ、拡張したいところだけThroughでやる、なんてことも考えられそうだ。

さあ、みんなもFeliCa Linkを使ってみよう!
・・・使ってみようよぅ、みんな。。。。。

やはり、あれか。
R/Wが使える2Vモジュールが出てきて、Android Payとかと絡めないと触手が伸びないのか。
なんとなく、少々のR/Wだと読めそうな気がしないのだが、iPhone6は持ってないからわからんな。

ちょうど、15年くらい使っていた腕時計が動かなくなったので、買い替えたいとは思っている。
思っているんだけど、せめて10年くらいは電池交換とか無しで動いてくれないとなぁ。


どうでもよいことだが、mbedのプロジェクトをZIP形式で落としてくると、.hgフォルダがある。
gitとかじゃなくて、mercurialなんだな。
launchpadにあったnfcpyを落としてきたときがそうだったので気付いた。
生き残っているから、よい点があるのだろうね。

0 件のコメント:

コメントを投稿

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

注: コメントを投稿できるのは、このブログのメンバーだけです。