C++ではsturuct構造体 と classクラスはデフォルトでのメンバへのアクセス制限(publicかprivate)が違うだけで同じものらしい。
/* typedef struct { // HostController EndPoint Descriptor __IO uint32_t Control; // +0 Endpoint descriptor control HCTD* TailTd; // +4 Physical address of tail in Transfer descriptor list __IO HCTD* HeadTd; // +8 Physcial address of head in Transfer descriptor list uint32_t Next; // +12 Physical address of next Endpoint descriptor } HCED; */ struct HCED { // HostController EndPoint Descriptor __IO uint32_t Control; // +0 Endpoint descriptor control HCTD* TailTd; // +4 Physical address of tail in Transfer descriptor list __IO HCTD* HeadTd; // +8 Physcial address of head in Transfer descriptor list uint32_t Next; // +12 Physical address of next Endpoint descriptor };
試しにBaseUsbHost.hヘダーファイルでのHCEDの定義を書き換えてみたが動いた。
typedef していたのはCのUsbHostLiteからの残骸なのでしょう。
もちろん、classクラスと同等なのだからメンバ関数を持つことができる。
Controlへのアクセス、コンディションコード取得関数をHCED側に持つようにするとか,
メンバ変数からreinterpret_castで強引にキャストしていたのをインライン関数内でキャストするようにすれば
わかりやすいコードになると思う。
(2013/1/7)
---
0 件のコメント:
コメントを投稿