最近、NFCの基礎勉強をしていないので、Interface 2012年4月号を読んでいる。
今朝はなんとなく、8章を読んでいた。
「FeliCaリーダを使った電子マネー表示システムの制作」というものだ。
RX62NというRenesasのチップを搭載した付属ボードが昨年の付録にあったのだが、それにRC-S620/Sを載せて動かすという企画である。
最初に書いておくが、通信もののデータはビッグエンディアンが多い。
NBO(Network Byte Order)という書き方をしている場合もあるが、ビットの並びもバイトの並びもビッグエンディアンになっているものが多いように思う。
NFCもだいたいそうなのだが、FeliCaパケットの中にはときどきリトルエンディアンを含んだものがある(ブロックリストくらいか?)。
8章ではいくつかパケットの説明が書かれているのだが、システムコードはビッグエンディアンなので注意してほしい。
共通領域のシステムコードは0xfe00だし、サイバネは0x0003だ。
システムコードは、ISO/IEC 18092にはブロードキャスト(FFFF)しかないのでわからないけど・・・そういうものなのだ。
出所の資料くらいすぐ見つかるだろうと読んでいたのだが、なかなか出てこないのでびっくりした。
NFC ForumのType 3 Tagドキュメントに「リトルエンディアン」と出てくるのが、一番はっきりした記載のように思う。
そういう些末なことよりも、InCommunicateThruがさらっと出てきているところに驚きがあった。
CommunicateThruEXでよさそうなところに、あえてInCommunicateThruを持ってくるとは。
渋いな。
これがOKなら、InDataExchangeもいいかもな(なにが?)。
私が交通系ICカード残額対応顔文字表示システムを作るとき、こちら(Interface 2012年4月号電子マネー表示システムの制作)のソースコードを参考にさせていただきましたが、Arduino用に移植する段階でそっとCommunicateThruEXに置き換えてあげました。
返信削除これに限らず昔からあるようなライブラリ・プログラムを読んでると懐かしいかほりがするものが多い印象ですね(と言っても私がNFCに本腰入れ始めたのは半年前ですが……。
CommunicateThruEXはNXPのチップでは使えないので、共通化したくてInCommunicateThruを使ったのかもしれませんね。
返信削除