libnfc用にnfc-toolsというものがある。
この中にlibnfc-llcpという名前があるので、これはきっとLLCPを実現してくれるのだろう。
ビルドしてみた。
環境は、Ubuntu 11.10 (64bit)だ。
$ ./configure
特に何もない。
$ make
libtool: Version mismatch error. This is libtool 2.4 Debian-2.4-2ubuntu1, but the
libtool: definition of this LT_INIT comes from libtool 2.2.6b.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4 Debian-2.4-2ubuntu1
libtool: and run autoconf again.
インストールされているlibtoolは2.4-2ubuntu1だけど、定義が2.2.6bのものだ。
だからaclocal.m4を2.4-2ubuntu1のマクロで作り直してautoconfしなおせ、ということか。
さて・・・aclocal.m4を作り直す、というのは何すりゃいいんだろう?
http://www.fireproject.jp/feature/automake/basic/autotools.html
aclocal.m4は、configure.inを入力としてaclocalコマンドで生成されるようだ。
では、
$ aclocal
$ autoconf
$ ./configure
$ make
なんかできたみたい。
$ sudo make install
とりあえずインストールしておこう。
以下がコピーされたようだ。
libnfc-llcp.la
libnfc-llcp.so.0.0.0
libnfc-llcp.lai
libnfc-llcp.a
さて・・・何ができたのだろうか。
examples/nexus-get-tag/nexus-get-tag
tools/llcp-pdu-explain/llcp-pdu-explain
tools/llcp-test-client/llcp-test-client
tools/llcp-test-server/llcp-test-server
たぶん、こんなところだろう。
それっぽい名前の、nexus-get-tagを実行。
$ ./nexus-get/tag -o xxx
lt-nexus-get-tag: No NFC device found
ソースを見ると、libnfcを使ったデバイス検出に失敗しているようだ。
いまさら、libnfcはWindowsでしか試していなかったことに気づく。
libnfcをビルド。
ドライバは、pn53x_usbのみにしておこう。
$ ./configure --with-drivers='pn53x_usb'
$ make
$ sudo make install
$ cd examples
$ cd ./nfc-poll
libnfc-1.5.1/examples/.libs/lt-nfc-poll uses libnfc 1.5.1 (r1175)
No NFC device found.
すでにだめだったんだ。
そういえば、LinuxでUSBを使うときにはrulesファイルが必要だったと思う。
pn53x.rulesというファイルがあるから、これを使うと良さそうだ。
$ sudo cp pn53x.rules /etc/udev/rules.d/60-pn53x.rules
$ sudo service udev restart
パソリを挿し直して
$ ./nfc-poll
libnfc-1.5.1/examples/.libs/lt-nfc-poll uses libnfc 1.5.1 (r1175)
Connected to NFC reader: Sony / RC-S370/P - PN533 v1.48 (0x07)
NFC device will poll during 30000 ms (20 pollings of 300 ms for 5 modulations)
ISO/IEC 14443A (106 kbps) target:
ATQA (SENS_RES): 00 04
UID (NFCID1): 3d c5 73 b0
SAK (SEL_RES): 08
やれやれ。
ちなみにこのときは、パソリの上にMifare 1Kのカードを置いている。
では、改めて。
$ ./nexus-get-tag -o xxxx
lt-nexus-get-tag: Cannot activate MAC link
相手がいないってことですかね。
では、待ち受けるサーバだったらいいだろう。
$ ./llcp-test-server
待ち状態になった。
P906iを近づけると・・・
REASON: Timeout
lt-llcp-test-server: Cannot activate link
と出て、搬送波が出っぱなしになりながらもアプリ終了。。。
もう一度実行すると、固まってkillせんといかんかった。
パソリを挿しなおさないと、もう復活できなかった。
まあ、何か動いてるってことはわかったので、いいや。
ここらへんで、NexusSとやりとりできてるってこともわかった。
http://www.libnfc.org/community/topic/444/solved-nfcdepinitiator-against-a-nexus-s/
試すことはできんが、うまくやればAndroid Beamができるんじゃなかろうか。
問題は「試すことはできん」というところなんだけどね・・・。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。