X5211とも解釈が違うように思う。なにがなんだか、わからなくなってきた。nfc[nfc]副作用いい情報をいただいた。PaSoRiはFeliCa以外の規格に対応したための副作用がごにょごにょあって、電気的にターゲットになりにくいらしい。確かに私は、昨日ターゲットでPaSoRiを動かそうとしていたのだ。以前「ターゲットになれないようだ」と書いていたけど動いたので、今日は訂正文を書こうかと思ったくらいだ。動かないわけでもなかったから、不安定ということかな。動作させる環境の不安定要素がわかったのは大きい。nfc2011/03/04[nfc]うまく動かないときは、動かないよくわからん。DEP関係のコマンドが、うまく動くときと動かないときがある。理由がさっぱりわからない。そもそも、コマンドがRC-956でどう動くのかわかっていないのが一番の問題なのだが。PN533マニュアルでは、さすがに限界がある。いって、正式なマニュアルは入手できない。ここらへんが、個人で(遊びではあるが)開発するのに不便なところだ。nfc2011/03/03[nfc]RC-S620/Sの終わらせ方DEPを中断させると、それ以降RC-S620/Sへアクセスできなくなった。アプリエラーが返ってくる。電源を落とせば大丈夫なのだが、それはめんどくさい。わからないリセットコマンドを使ってみると、なんかよさそうな気がする。すると、RFを停止させたのがよかったのかもしれんが、確認してない。Ctrl+Cでだめになるのは、しかたがない。シリアルはつなぎっぱなしだろうし、電源も供給されたままなので、RC-S620/SはCtrl+Cされたことすら知らないだろう。ステージが初期化されないといかんだろう。「もう使い終わりましたよー」を通知しないと行かんと思うのだが、そのあたりがよくわからん。リセットコマンドでよいような気がするけど、アプリエラーが返ってきてるような。その手前に投げているコマンドがよくないのか。冷静な判断と情報がほしいところである。あ、冷静な判断は私がやらんといかんところだな。nfc2011/03/02[nfc][dep]どう非同期にしたものかDEP関係のコマンドは、相手が何かしないとレスポンスが返ってこない。いずれは、タイムアウトやユーザからのキャンセルにも対応せねば。考えると、今のうちに非同期APIにしておいたほうが無難だ。どんなプラットフォームでも使えるライブラリがいいんだろうけど、そんな労力を裂くのは嫌だ。できるだけ簡単に非同期化したい。思いつくのは、POSIXなどのスレッドで使われることを前提にしてしまうコールバックで返してやるまあ、コールバックにしておくのがいいんだろうけど、じゃあ受信はどうやってさせるんだ?ということになってしまう。ポーリングするAPIを用意して定期的に呼んでもらうくらいしかないなぁ。Androidでやるなら、バックグラウンドでサービスを回しっぱなしにして、そこで定期的に呼んでもらうという手がある。携帯電話向けの実装なら、割り込みにするなどして消費電力を抑えないといかんけど、RC-S620/Sだからそこまで考えなくていいだろう。搬送波だって、みっともないけど出しっぱなしだ。Sって、確か画面が点いている間は搬送波出しっぱなしだし、FeliCaロックみたいな形の止め方がないような気もするし、電池の減りが早そうだなぁ。)まあ、それはそれとして。受信側をポーリングにすると、全体的に非同期にしなくてはやりづらい。いって、なんもかんも非同期にすると、アプリがめんどくさくなりそうな。通常のコマンドくらいなら、同期でも十分間に合うと思うのだよ。なると、同期APIの場合は、ユーザからのコンテキストで待たせておいて、サービスからのコンテキストで受信結果が返るまで待たせる、ということになる。そんな実装くらいしか思いつかない。してしまうと・・・cygwinで簡単に実装して動かす、というわけにはいかなくなる。pthreadかなんかで動かす部分も一緒に作らなくてはならない。nfc2011/03/01[nfc]ライブラリをgithubに置いてみた置いた、と断言せず、置いてみた、と言葉を弱くするのは、いかん癖だな。永遠のβ版、みたいな雰囲気をかもし出してしまう。githubにこそこそと作っていたNFCのライブラリを置いた。大半は、PN533から。SONYさんのライブラリとJISから。そんな情報を寄せ集めて作っているので、完全には動かない物もありそうだ。パラメータについてはPN533を信用しきっている。違ってたら、ごめん・・・。基本的に、FeliCaカードへアクセスするAPIは少ない。いうと、私にとって使い道がないからだ。Liteなんかも買ったりして、遊べるようになったらがんばるかも。それまでは、NFC-DEPの学習用になっている。doxygen対応しているつもりなので、あればどうぞ。使い方は、test/とtestp/を見ていただきたい。あ、使うためには環境設定が必要。READMEにも書いているが、NFCPCD_DEVを直接書き換えねばならない。Makefileでやりたかったのだけど、うまくできなかったのだ。ダブルクォーテーションが消されてしまうみたいでね。\"とかすればいいのかもしれんが、まあいいや。libpafeを使えば、PaSoRiからもいけるつもり。うちのRC-S370は動いている。ここに感謝の意を示したい。ありがとうございます。FeliCaさんに「消して!」といわれたら、消すつもり。今回公開したのは、規約が整理されたため。これもまた、感謝である。このライブラリを作ることができたのは、そもそもSONYさんのライブラリがあって動作確認ができたからだ。それがないと、何もできなかっただろう。必要となるコマンドはだいたいわかったとはいえ、下地となっているのはSONYさんのライブラリだ。大半は書き換えたつもりではあるが、見る人が見ればわかるのかも。ソースの解説などは、しません。そんなに難しいことはしていないし。あるとすれば「このコマンドは何?」がほとんどだろうから、それは調べていただきたい。PN533のドキュメントにたいがい載ってるし、JISにも載ってるのは多い。ああ、一週間分の仕事をした気持ちだが、まだ月曜日が終わったばかりなんだよな。2月の作業が終わった、ということで。3月はNFC-DEPをがんばろう。