SSブログ

OS X用GigE Visionカメラドライバ - その41 [OS X用GigE Vision]

GigEカメラ用ドライバがなかなか進まない自分自身に対して不安が募るというか業を煮やしてしまうというか、正直に言うとこれが今の自分の限界ではないということを証明したいがためにコードを書くことに比べて手間のかかる作業を始めてしまった。こればかりはもう途中でうやむやにしてなかったことにはできない。

まあ僕は、歳をとって記憶力思考力複雑なものを把握する能力がリセッション局面を迎えたことを自覚しないといけない。でないとそれ自身、つまり「いまだに昔の能力を維持しているという幻想」を持ち続けることがすなわち「ボケ」あって、どっちにしても自分の存在意義を否定することにつながる。

景気には回復もあるけど加齢による能力の減退にはありえない。ということで残りをどんどん片付けていこう......若い人はいいなあ......

10.4.7  Integerノード

Integerノードのダイアグラムを図-13に示す。

0414fig13.png
Integerノードは大きな定義になっている。大括弧({)の下はどちらか一方が必ず現れるということを表す。角括弧([)の下はこの順に出現することを表している。

Integerノードの値である整数値は
  • Value
  • pValueを含む集合
  • pIndexを含む集合
のどれか一つが出現する。pValueは0個以上のpValueCopyの後に現れて、その後に0個以上のpValueCopyが続く。pIndexはその後にValueIndexedが0個以上、pValueIndexedが0個以上続き、ValueDefaultかpValueDefaultのどちからかが続く、ということになる。

ところで、こういう構造は意味(セマンティクス)の上で、であってXMLファイルの中ではすべてフラットに並んでいるということに注意すべきである。この部分は複雑なので別途整理することにする。

10.4.8  IntRegノード

IntRegノードのダイアグラムを図-14に示す。抽象クラスとみなせるRegisterElementTemplateのサブクラスになっている。
0414fig14.png
SignエレメントとEndianessエレメントは0個か1個だけど0個の場合はデフォルト値がIntRegノード定義の中で決められている、ということを表している。

10.4.9  MaskedIntRegノード

MaskedIntRegノードのダイアグラムを図-15に示す。このノードはレジスタをアクセスするにもかかわらずRegisterElementTemplateではなくてNodeElementTemplateを含むようになっている。なぜそうなのか、というとRegisterElementTemplateにはLengthエレメントとpLengthエレメントのどちらかがあるように定義されているけど、MaskedIntRegにはpLengthはない。従ってサブクラスの格好にできない、ということらしい。ほとんど間違い探しの様相を呈している。

0414fig15.png
MaskedIntRegはつまるところビットフィールドであって、バイトをまたいだビット位置の指定はバイト幅が固定でないとうまくいかない(バイト幅が違うとエンディアンによって指定位置がずれてしまう)、ということなんだろう。僕はそんなの実装の問題であって、スキーマとしてはどうでもいいと思うんだけどなあ。

GEN<i>CAM規格にはそういったメタなシステムとしての規格とその実装とを混同しているように見えるところがあって、僕はすごく気になってしまう。

またビット位置は
  • Bitエレメント(1ビットだけの場合)
  • LSBエレメントとMSBエレメントの組み(連続する複数ビットの場合)
のどちらかで表されるということになっている。もちろん前に書いたのと同じで、こういう構造は解釈の結果であってXMLファイルの中ではすべてフラットに並んでいる、ということに注意が必要である。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。