(57)【特許請求の範囲】
【請求項１】
不揮発性半導体記憶装置と、
前記不揮発性半導体記憶装置を制御する制御部と、
前記制御部に接続された作業エリアとしてのメモリと、
無線通信機能を有する無線通信機能部と、
前記メモリに設けられ、拡張機能を定義可能な複数のページで構成された拡張レジスタと、を具備し、
前記制御部は、外部からのコマンドを受け、前記拡張レジスタをページ単位でリードする第１のコマンドと、前記拡張レジスタをページ単位でライトする第２のコマンドとを処理し、
前記拡張レジスタは、特定のページに前記無線通信機能の種別及び制御可能なドライバを特定するための情報と、前記無線通信機能が割り当てられる拡張レジスタ上の領域を示すアドレス情報とが記録され、前記特定のページ以外のページに前記無線通信機能の情報が記録され、
前記拡張レジスタは、
前記無線通信機能をサポートすることを示す第１のレジスタと、
無線通信を実行する第３のコマンドを書き込むための第２のレジスタと、
前記第３のコマンドの実行状況を読み出すための第３のレジスタと、
前記第３のコマンドの実行結果を読み出すための第４のレジスタと
を備えることを特徴とするメモリシステム。
【請求項２】
前記第３のコマンドは、１つ以上のコマンドから構成され、
前記制御部は、
前記第２のレジスタに書き込まれたコマンドが連続して実行される間に、前記第３のレジスタにコマンドの実行状況を書き込み、
処理が完了したコマンドに対応するレスポンスを前記第４のレジスタに書き込むことを特徴とする請求項１記載のメモリシステム。
【請求項３】
前記第３のコマンドは、前記無線通信機能を制御し、
前記制御部は、
前記不揮発性半導体記憶装置に格納されたファイル、又は前記第２のレジスタに格納されたデータをサーバーに転送し、
前記サーバーから供給されたレスポンスを、前記不揮発性半導体記憶装置に格納されたファイル、又は前記第４のレジスタに書き込むことを特徴とする請求項２記載のメモリシステム。
【請求項４】
前記拡張レジスタは、前記無線通信機能用のコマンドと引数とを書き込むためのデータポートを有することを特徴とする請求項１記載のメモリシステム。
【請求項５】
前記拡張レジスタは、前記無線通信機能用のステータス情報を記録することを特徴とする請求項１記載のメモリシステム。
【請求項６】
前記拡張レジスタは、前記無線通信機能用のコマンドの実行状況を示す情報を記録することを特徴とする請求項１記載のメモリシステム。
【請求項７】
前記拡張レジスタは、前記無線通信機能用のコマンドの実行結果としてのレスポンスを取得するためのデータポートを有することを特徴とする請求項１記載のメモリシステム。
【請求項８】
前記システムは、ＳＤカード仕様の少なくとも１つに準拠することを特徴とする請求項１記載のメモリシステム。
【請求項９】
前記システムは、無線通信機能を持たないデジタルスチルカメラに搭載可能であることを特徴とする請求項８記載のメモリシステム。
【請求項１０】
前記無線通信機能部は、無線通信規格であるＩＥＥＥ８０２．１１ｂ、１１ｇ、及び１１ｎの少なくとも１つに準拠することを特徴とする請求項９記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、無線通信機能を有するメモリシステムに関する。
【背景技術】
【０００２】
無線通信機能を備えたＳＤカードが開発されている。これらのカードは、ＳＤカードの中に独自の無線機能を収容し、独自に追加した機能のみに対応した制御が行えれば良かった。しかし、無線通信機能は多岐に亘るため、全ての無線通信機能を制御するための定義を規定すると、コマンドのアドレス空間が不足してしまう。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３２９１８０号公報
【特許文献２】特開２００９−１２４３０２号公報
【非特許文献】
【０００４】
【非特許文献１】Part 1 Physical Layer Simplified Specification Ver3.01  May 18, 2010 (URL: http://www.sdcard.org/home/)
【非特許文献２】Part E1 SDIO Simplified Specification Ver2.00 Feb. 8, 2007 (URL: http://www.sdcard.org/home/）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、種々の無線通信機能を制御することが可能なメモリシステムを提供しようとするものである。
【課題を解決するための手段】
【０００６】
本実施形態によれば、メモリシステムは、不揮発性半導体記憶装置と、前記不揮発性半導体記憶装置を制御する制御部と、前記制御部に接続された作業エリアとしてのメモリと、無線通信機能を有する無線通信機能部と、前記メモリに設けられ、拡張機能を定義可能な複数のページで構成された拡張レジスタとを具備する。前記制御部は、外部からのコマンドを受け、前記拡張レジスタをページ単位でリードする第１のコマンドと、前記拡張レジスタをページ単位でライトする第２のコマンドとを処理する。前記拡張レジスタは、特定のページに前記無線通信機能の種別及び制御可能なドライバを特定するための情報と、前記無線通信機能が割り当てられる拡張レジスタ上の領域を示すアドレス情報とが記録され、前記特定のページ以外のページに前記無線通信機能の情報が記録される。前記拡張レジスタは、前記無線通信機能をサポートすることを示す第１のレジスタと、無線通信を実行する第３のコマンドを書き込むための第２のレジスタと、前記第３のコマンドの実行状況を読み出すための第３のレジスタと、前記第３のコマンドの実行結果を読み出すための第４のレジスタとを備える。
【図面の簡単な説明】
【０００７】
【図１】実施形態に適用されるメモリシステムを概略的に示す構成図。
【図２】図１に示すメモリシステムのファームウェの一例を示す構成図。
【図３】拡張レジスタのリードコマンドの一例を示す構成図。
【図４】リードコマンドによる拡張レジスタのリード動作を示すタイミング図。
【図５】リードコマンドによるデータポートのリード動作を示すタイミング図。
【図６】拡張レジスタのライトコマンドの一例を示す構成図。
【図７】図７（ａ）（ｂ）（ｃ）はマスクレジスタの動作を示す図。
【図８】ライトコマンドによる拡張レジスタのライト動作を示すタイミング図。
【図９】ライトコマンドによるデータポートのライト動作を示すタイミング図。
【図１０】拡張レジスタの先頭ページに設定される情報フィールドの一例を示す図。
【図１１】無線ＬＡＮ（Local Area Network）を有したＳＤカードの使用例を示す構成図。
【図１２】メモリデバイスが有するインターフェース機能を示す図。
【図１３】Ｗｉ−Ｆｉ  ＳＤカードとホストデバイスの構成例を示す図。
【図１４】ＳＤカードとホストデバイスの別の構成例を示す。
【図１５】リードコマンド（ＣＭＤ４８）とライトコマンド（ＣＭＤ４９）でアクセスする拡張レジスタの例を示す図。
【図１６】拡張レジスタをＷｉ−Ｆｉ  ＳＤカードに用いた場合の例を示す図。
【図１７】Ｗｉ−Ｆｉ  ＳＤレジスタが拡張レジスタのページに割り当てられた場合において、５１２バイトを超えるデータを読み書きするときの例を示す図。
【図１８】拡張レジスタをＷｉ−Ｆｉ  ＳＤカードに用いた場合における他の例を示す図。
【図１９】拡張レジスタをＷｉ−Ｆｉ  ＳＤカードに用いた場合における他の例を示す図。
【図２０】拡張レジスタをＷｉ−Ｆｉ  ＳＤカードに用いた場合における他の例を示す図。
【図２１】拡張レジスタがＷｉ−Ｆｉ  ＳＤカード用に用いられる場合における拡張レジスタを示す図。
【図２２】Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタの構成例を示す図。
【図２３】Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに書き込むコマンドの一覧を示す図。
【図２４】Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに書き込むコマンドの一覧を示す図。
【図２５】Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに書き込むコマンドの一覧を示す図。
【図２６】Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの構成例を示す図。
【図２７】Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの構成例を示す図。
【図２８】Ｗｉ−Ｆｉ  ＳＤカード・コマンド・レスポンス・ステータス・レジスタの構成例を示す図。
【図２９】Ｗｉ−Ｆｉ  ＳＤカード・コマンド・レスポンス・ステータス・レジスタの構成例を示す図。
【図３０】Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタの構成例を示す図。
【図３１】Ｗｉ−Ｆｉ  ＳＤカードIDリスト・レジスタの構成例を示す図。
【図３２】Ｗｉ−Ｆｉ  ＳＤカードSSIDヒストリ・レジスタの構成例を示す図。
【図３３】Ｗｉ−Ｆｉ  ＳＤカードコンフィグレーション情報（Configuration Information）の構成例を示す図。
【図３４】ライトコマンド（ＣＭＤ４９）を用いてＷｉ−Ｆｉ  ＳＤカードのコマンドを発行する場合を示すタイミングチャート。
【図３５】複数のライトコマンド（ＣＭＤ４９）により、Ｗｉ−Ｆｉ  ＳＤカード・コマンドを発行する場合を示すタイミングチャート。
【図３６】１つのライトコマンド（ＣＭＤ４９）により発行されたデータに、複数のＷｉ−Ｆｉ  ＳＤカード・コマンドが含まれる場合を示すタイミングチャート。
【図３７】リードコマンド（ＣＭＤ４８）を用いて、Ｗｉ−Ｆｉ  ＳＤカード１１からデータを取得する場合を示すタイミングチャート。
【図３８】複数のリードコマンド（ＣＭＤ４８）により、Ｗｉ−Ｆｉ  ＳＤカードのデータを取得する場合を示すタイミングチャート。
【図３９】Ｗｉ−Ｆｉ  ＳＤカードがサポートするアプリケーションの一例を示す図。
【図４０】ホストデバイスの起動時の動作を示すフローチャート。
【図４１】各アプリケーションの状態遷移を示す図。
【図４２】無線ＬＡＮの状態遷移を示す図。
【図４３】Ｗｉ−Ｆｉ  ＳＤカード内のディレクトリ構成を示す図。
【図４４】Ｗｉ−Ｆｉ  ＳＤカードのコマンド処理の流れを示す図。
【図４５】Ｗｉ−Ｆｉ  ＳＤカードの設定の流れを示す図。
【図４６】P2Pアプリケーションの流れを示す図。
【図４７】サーバーアップロード（Server Upload）アプリケーションの流れを示す図。
【図４８】P2Pアプリケーションにおいて、送信側ホストのファイルリスト（File List）生成処理とファイル送信処理を示すフローチャート。
【図４９】P2Pアプリケーションにおいて受信側ホストのファイル選択処理とファイル取得処理を示すフローチャート。
【発明を実施するための形態】
【０００８】
近年、各種電子機器（特に携帯型ディジタル機器）間で、無線通信によるデータ通信が可能とされている。各種電子機器としては、パーソナルコンピュータや、例えばＰＤＡ（Personal Digital Assistant）と呼ばれる携帯情報端末、携帯電話、携帯型オーディオ機器、デジタルビデオカメラ、あるいはデジタルスチルカメラなどが含まれる。以下の説明では、デジタルビデオカメラ及びデジタルスチルカメラを総称してデジタルカメラと記載する場合がある。
【０００９】
これら電子機器間で、無線通信によりデータ通信が可能であれば、ケーブルによる接続が不要となるため利便性を向上できる。特に、無線ＬＡＮ（Local Area Network）システムの普及に伴い、パーソナルコンピュータや、組み込み機器応用のみならず、デジタルカメラなどでメモリとして使用されるＳＤカードにおいても無線ＬＡＮシステムが導入されるようになってきている。
【００１０】
無線ＬＡＮ通信機能を備えていないデジタルカメラなどの電子機器でこのような機能を実現するため、ＳＤカードは、フラッシュメモリの他、ホストと物理的に接続するためのインターフェース、アンテナ、高周波処理部（無線信号の送受信を行う処理部）、ベースバンド処理部（ベースバンド信号を処理する処理部）などの構成要素を実装する必要がある。
【００１１】
このような無線ＬＡＮ機能を備えたＳＤカードにおいて、無線ＬＡＮ機能を制御するための手順は、ＳＤカードベンダーの実装に依存しているため、一意に定まっていない。さらに、制御手順をどのように実装するかが課題となっている。
【００１２】
また、無線通信機能を備えたＳＤカードには、ＳＤカードベンダーによって異なる方式の通信機能が備えられることも考えられる。この場合、ホストは、ＳＤカードにどのような機能が備えられているかを知る手段がなければ、ＳＤカードの機能を用いることが出来ない。
【００１３】
そこで、本実施形態は、例えばデジタルカメラなどにおいて広くメモリとして用いられているＳＤカードに関して、本来のメモリ以外の拡張機能を把握するための手段を提示する。さらに、本来のメモリ以外の機能に対する制御手順を提示する。特に、ＳＤメモリカードのコマンド体系において、無線ＬＡＮなどを制御することを可能とする。これによって、デジタルカメラなどの電子機器と親和性の高い無線通信機能を搭載したＳＤカードを提供する。
【００１４】
このため、本実施形態は、ＳＤカード内に、複数ページにより構成される拡張レジスタ（Extension Register）を設け、この拡張レジスタをＳＤカードのコマンド仕様の１つであるコマンドＣＭＤ４８、ＣＭＤ４９を用いて、リード又はライト可能とする。ＣＭＤ４８は、対象とするレジスタからデータをブロック単位で読み出すためのコマンドであり、ＣＭＤ４９は、対象とするレジスタにデータをブロック単位で書き込むコマンドである。拡張レジスタは、例えばＳＤカードが有する機能を示すためのページと、ＳＤカードが有する通信機能を制御するためのページと、通信対象のデータの受け渡しに用いるページとを有している。
【００１５】
（実施形態）
以下、実施の形態について、図面を参照して説明する。
【００１６】
図１は、本実施形態に係るメモリシステムを概略的に示している。
【００１７】
メモリシステムは、例えばＳＤカードのようなメモリデバイス１１と、ホスト２０により構成される。メモリデバイス１１はＳＤカードとも言う。また、ホスト２０はホストデバイスとも言う。尚、メモリデバイス１１は必ずしもカード形状を備えている必要はなく、ホストデバイスに対して挿抜不可能な態様で実装されていても良い。
【００１８】
メモリデバイス１１は、ホスト２０に接続されたときに電源供給を受けて動作し、ホスト２０からのアクセスに応じた処理を行う。このメモリデバイス１１は、カードコントローラ１１ａを有している。
【００１９】
カードコントローラ１１ａは、例えばホストインターフェース（Ｉ／Ｆ）１２、ＣＰＵ１３、ＲＯＭ（Read only Memory）１４、ＲＡＭ（Random Access Memory）１５、バッファ１６、無線通信インターフェース（Ｉ／Ｆ）１７ａ、メモリインターフェース（Ｉ／Ｆ）１７ｂにより構成されている。これらは、バスにより接続されている。メモリインターフェース１７ｂには、例えばＮＡＮＤフラッシュメモリ１８が接続されている。無線通信インターフェース１７ａには、拡張機能部としての無線ＬＡＮ信号処理部１９ａが接続されている。この無線ＬＡＮ信号処理部１９ａには、高周波信号を送受信するアンテナＡＴａが接続されている。
【００２０】
尚、拡張機能部は、無線ＬＡＮ信号処理部１９ａに限らず、その他の無線通信信号処理部１９ｂ、及びこの無線通信信号処理部１９ｂに接続されたアンテナＡＴｂなどを増設し、マルチファンクションのＳＤカードを構成することが可能である。無線ＬＡＮ信号処理部１９ａは、例えばＷｉ−Ｆｉ（登録商標）接続認定されたＩＥＥＥ８０２．１１ｂ/ｇ/ｎによる無線通信機能を制御し、無線通信信号処理部１９ｂは、例えばＴｒａｎｓｆｅｒＪｅｔ（登録商標）による近接無線通信機能、Ｂｌｕｅｔｏｏｔｈ（登録商標）による近接無線通信機能などを制御する。
【００２１】
ホストインターフェース（Ｉ／Ｆ）１２は、カードコントローラ１１ａとホスト２０との間のインターフェース処理を行う。
【００２２】
一方、無線通信インターフェース１７ａは、無線ＬＡＮ信号処理部１９ａや無線通信信号処理部１９ｂとの間のインターフェース処理を行う。メモリインターフェース１７ｂは、カードコントローラ１１ａとＮＡＮＤフラッシュメモリ１８との間のインターフェース処理を行う。
【００２３】
ＣＰＵ１３は、メモリデバイス１１全体の動作を司るものである。このＣＰＵ１３を制御するプログラムは、ＲＯＭ１４の中に格納されているファームウェア（制御プログラム等）を用いるか、あるいは、ＲＡＭ１１５上にロードして所定の処理が実行される。すなわち、ＣＰＵ１３は、各種のテーブルや後述する拡張レジスタをＲＡＭ１８上に作成したり、ホスト２０からライト（書き込み）コマンド、リード（読み出し）コマンド、イレース（消去）コマンドを受けてＮＡＮＤフラッシュメモリ１８上の領域をアクセスしたり、バッファ１６を介してデータ転送処理を制御したりする。
【００２４】
ＲＯＭ１４は、ＣＰＵ１３により使用される制御プログラムなどのファームウェアを格納する。ＲＡＭ１５は、ＣＰＵ１３の作業エリアとして使用され、制御プログラムや各種のテーブルや後述する拡張レジスタを記憶する。
【００２５】
バッファ１６は、ホスト２０から送られてくるデータを、例えばＮＡＮＤフラッシュメモリ１８へ書き込む際、一定量のデータ（例えば１ページ分）を一時的に記憶したり、ＮＡＮＤフラッシュメモリ１８から読み出されたデータをホスト２０へ送り出す際、一定量のデータを一時的に記憶したりする。またバッファ１６を介することにより、ＳＤバスインターフェースとバックエンドを非同期に制御することができる。
【００２６】
ＮＡＮＤフラッシュメモリ１８は、例えば積層ゲート構造のメモリセル、又はＭＯＮＯＳ構造のメモリセルにより構成されている。
【００２７】
無線ＬＡＮ信号処理部１９ａでは、無線ＬＡＮの信号処理が行われる。無線ＬＡＮ信号処理部１９ａは、無線通信Ｉ／Ｆ１７ａを介して制御される。
【００２８】
ホスト２０は、例えばデジタルカメラや携帯電話、パーソナルコンピュータなどが適用可能である。ホスト２０は、ホストコントローラ２１、ＣＰＵ２２、ＲＯＭ２３、ＲＡＭ２４、例えばハードディスク２５(ＳＳＤを含む)により構成されている。これらはバスにより接続されている。ホスト２０が無線ＬＡＮ通信機能を備えていない場合、本実施形態に係るメモリデバイス１１を接続することで、他の電子機器との無線ＬＡＮ通信が可能となる。
【００２９】
ＣＰＵ２２は、ホスト２０全体を制御する。ＲＯＭ２３は、ＣＰＵ２２の動作に必要なファームウェアを記憶している。ＲＡＭ２４は、例えばＣＰＵ２２の作業領域として使用されるが、ＣＰＵ２２が実行可能なプログラムもここにロードされ実行される。ハードディスク２５は、各種データを保持する。ホストコントローラ２１は、メモリデバイス１１が接続された状態において、メモリデバイス１１とのインターフェース処理を行う。さらに、ＣＰＵ２２の指示に従って、後述する各種コマンドを発行する。
【００３０】
（ファームウェアの構成）
図２は、メモリデバイス１１のＲＯＭ１４に記憶されたファームウェアの機能構成の一例を示している。これらの機能はコントローラ１１ａを構成するＣＰＵ１３等の各ハードウェアとの組み合わせにより実現されるものである。ファームウェアは、例えばコマンド処理部１４ａ、フラッシュメモリ制御部１４ｂ、拡張レジスタ処理部１４ｃ、機能処理プログラム１４ｄにより構成されている。拡張レジスタ処理部１４ｃは、メモリデバイス１１が起動された際、ＲＡＭ１５内に拡張レジスタ３１を生成する。この拡張レジスタ３１は、仮想レジスタであり、拡張機能を定義可能とされている。
【００３１】
（拡張レジスタの構成）
図２に示すように、拡張レジスタ３１は、例えば８ページにより構成されている、１ページは、５１２バイトにより構成されている。５１２バイトの拡張レジスタをバイト単位にアクセスするため、最低９ビットのアドレスが必要となり、８ページアクセスするために、最低３ビットのアドレスが必要となる。合計１２ビットのアドレスにより、拡張レジスタの全空間がアクセス可能となる。
【００３２】
５１２バイト単位とする理由は、多数のＳＤメモリカードホストコントローラが、１ブロック＝５１２バイトを単位としてリード／ライト転送を行う構成になっているためである。ＳＤＩＯカード対応のホストコントローラであれば、１バイト単位のリード／ライトが可能であるが、全てのホストコントローラがこれをサポートしているわけではない。大多数のホストコントローラで拡張機能を制御できるようにするためには、５１２バイト単位のアクセスが行えると都合が良い。
【００３３】
８ページ（ページ０〜ページ７）の内、ページ０は、拡張機能のプラグ・アンド・プレイを行うために情報フィールドを記録しておくための領域である。ページ１〜ページ７は、拡張機能の情報が記録される。すなわち、例えばページ１には、通信機能を制御するための情報が記録され、ページ２には、通信対象のデータの受け渡しのための情報が記録される。ホスト２０は、メモリデバイス１１が有する機能を示すためのページ０に記載された情報から、メモリデバイス１１が有する通信機能を制御するためのページ、通信対象のデータの受け渡しに用いるページ、がどのページであるのかを把握することができる。情報フィールドの詳細については後述する。
【００３４】
拡張レジスタのリード／ライトは、以下に定義される専用のリード／ライトコマンドが用いられる。これらのコマンドは、拡張レジスタをリード／ライトする第１の動作モードと、データポートを構成する第２の動作モードを有している。また、これらのコマンドは、ＳＤカードのコマンド仕様として定義される。
【００３５】
（拡張レジスタのリードコマンド（ＣＭＤ４８））
図３は、拡張レジスタのリードコマンド（ＣＭＤ４８）のフィールド構成の一例を示している。“Ｓ”は、コマンドのスタートビットを示し、“Ｔ”は転送方向を示すビットであり、“ｉｎｄｅｘ”は、コマンド番号を示している。“ＲＳ”（レジスタ・セレクト）は拡張レジスタ３１内のページを示し、“ＯＦＳ”は選択されたページ内におけるデータの位置（ページの先頭からのオフセット）を示している。３ビットの“ＲＳ”と、９ビットの“ＯＦＳ”で、５１２バイトの拡張レジスタ８ページ分の空間をバイト単位に指定することができる。具体的には、選択された拡張レジスタ内のリード開始位置が“ＲＳ”と“ＯＦＳ”により指定される。
【００３６】
“ＬＥＮ”はデータ長を示している。９ビットのＬＥＮフィールドにより、５１２バイトの拡張レジスタ内の読み出しに必要な有効なデータ長が指定される。
【００３７】
“ＣＲＣ７”は、巡回冗長検査（cyclic redundancy check）コードを示し、“Ｅ”は、コマンドのエンドビットを示している。“ｒｓｖ”は、予備のビットを示している。
【００３８】
（拡張レジスタのリードコマンド、第１の動作モード）
図４は、第１の動作モードによる拡張レジスタのリード動作の例を示している。
【００３９】
図４に示すように、メモリデバイス１１は、ホスト２０からコマンド（ＣＭＤ４８）を受け取ると、レスポンス（Ｒ１）をホスト２０に返し、その後、拡張レジスタ３１から５１２バイトのデータブロックを読み出す。
【００４０】
具他的には、コマンド（ＣＭＤ４８）の引数で、拡張レジスタのページと、ページ内の読み出すべきデータの位置が、“ＲＳ”と“ＯＦＳ”で指定され、データ長が“ＬＥＮ”で指定される。このようにして指定された拡張レジスタ内のデータが、５１２バイトのデータブロックの先頭にセットされ、読み出される。５１２バイトのデータブロックのうち、“ＬＥＮ”で指定されたデータ長を超えるデータは、無効データとなる。データブロックの最後にはＣＲＣコードが付加され、正しくデータが受け取れたかをチェックすることが可能とされている(無効データを含めてチェックを行う)。有効データが先頭から配置されているため、ホスト２０は、有効データを探すために、データシフトなどの操作を行う必要がない。
【００４１】
（拡張レジスタのリードコマンド、第２の動作モード）
図５は、第２の動作モードによるデータポートリードの動作の例を示している。
【００４２】
メモリデバイス１１は、このコマンド(ＣＭＤ４８)を受け取ると、レスポンス（Ｒ１）を返し、その後に５１２バイトのデータブロックを返す。
【００４３】
コマンドの引数“ＲＳ”，“ＯＦＳ”により、拡張レジスタの選択されたページ内の位置が指定される。データポートは、複数バイト割り当てることは可能であるが、１バイトで十分であるので、図５では“ＬＥＮ＝０”(レングスが１)の場合のデータポートの例が示されている。すなわち、データポートは、拡張レジスタマップ上において、１バイトのアドレスを占有するだけで良い。このデータポートに割り当てられたデバイスから１ブロック（５１２バイト単位）のデータをリードすることができる。すなわち、１回当たり、１ブロック（５１２バイト単位）のデータをリードすることができる。この読み出されたデータは、例えばバッファ１６に保持され、ホスト２０によって読み出される。
【００４４】
続いて同じデータポートをリードすると、続きの５１２バイトのデータを読み出すことができる。データポートから読み出すデータを何処から取ってくるかは、拡張機能の仕様によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジスタを定義して制御することができる。５１２バイトのデータブロックの最後にＣＲＣコードが付加され、正しくデータが受け取れたか否かがチェック可能とされている。
【００４５】
（拡張レジスタのライトコマンド（ＣＭＤ４９））
図６は、拡張レジスタのライトコマンドの一例を示している。ライトコマンド（ＣＭＤ４９）において、リードコマンド（ＣＭＤ４８）と同一部分には同一符号を付している。ライトコマンドとリードコマンドは、“ｉｎｄｅｘ”により区別される。３ビットの“ＲＳ”と、９ビットの“ＯＦＳ”により、拡張レジスタのページと選択されたページ内のデータの位置が指定される。９ビットの“ＬＥＮ”フィールドにより、５１２バイトの拡張レジスタに書き込むデータ長が指定される。したがって、５１２バイト内の任意のデータ長(バイト単位)のデータを拡張レジスタの任意のページと場所に書き込むことが可能である。
【００４６】
ライトコマンド（ＣＭＤ４９）は、コマンドの引数の中にマスクレジスタが設けられている。すなわち、“Ｍａｓｋ”は、８ビット長のマスクレジスタを示している。このマスクレジスタにより、１バイトのデータのライトにおいて、ビット単位のオペレーションが可能となり、特定のビットにのみデータを書き込むことが可能となる。このため、１バイト内のビットオペレーションであれば、リード・モディファイ・ライトを行う必要がない。マスクレジスタは、データ長が１バイトのとき、すなわち、“ＬＥＮ＝０”(レングス１)のとき有効となる。マスクレジスタ“Ｍａｓｋ”のデータが“１”のビットは、データが書き込まれ、マスクレジスタ“Ｍａｓｋ”のデータが“０”のビットは、既にセットされた値が保存される。
【００４７】
すなわち、図７（ａ）に示すようなデータを保持している拡張レジスタを仮定した場合において、マスクレジスタのデータが、図７（ｂ）に示すようである場合、ライトコマンドが実行されることにより、図７（c）に示すように、マスクレジスタのデータが“１”のビットはデータが書き込まれ、データが“０”のビットは、元のデータが保持される。このため、リード・モディファイ・ライトを行うことなく、所要のビットのみデータを書き換えることが可能となる。“ｘ”で示す部分が、新しいデータが書き込まれたビットを示す。
【００４８】
また、より長いマスクデータが別な手段によって供給できれば、ＬＥＮ＞１でもマスクライトが可能であるが、図６の例では、コマンド引数にマスクデータを割り当てているため、８ビットとしている。
【００４９】
（拡張レジスタのライトコマンド、第１の動作モード）
図８は、第１の動作モードによる拡張レジスタのライト動作の例を示している。
【００５０】
メモリデバイス１１は、このコマンド（ＣＭＤ４９）を受け取ると、レスポンス（Ｒ１）を返し、その後、５１２バイトのデータブロックを受け取る。
【００５１】
メモリデバイス１１は、データブロックが正しく受け取れたかどうかを示すＣＲＣコードをホスト２０に返す。その後、このコマンドの処理が終了するまでビジーを返し、ホスト２０が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ１６に保持されている。
【００５２】
コマンド処理において、コマンドの引数“ＲＳ”、“ＯＦＳ”により、拡張レジスタ内のページと位置が指定され、“ＬＥＮ”によりデータ長が指定される。バッファ１６に保持されたデータブロックのうち、先頭から“ＬＥＮ”で指定して長さのデータが拡張レジスタに書き込まれる。“ＬＥＮ”で指定されたデータ長を超えるデータブロック中のデータは無効データとして破棄される。
【００５３】
有効データをデータブロックの先頭から配置することにより、ホストシステムは有効データをデータブロックの途中に配置する操作が不要となる。
【００５４】
（拡張レジスタのライトコマンド、第２の動作モード）
図９は、第２の動作モードによるライトデータポートの動作の例を示している。
【００５５】
メモリデバイス１１は、このコマンド（ＣＭＤ４９）を受け取ると、レスポンス（Ｒ１）を返し、その後、５１２バイトのデータブロックを受け取る。
【００５６】
メモリデバイス１１は、データブロックが正しく受け取れたかどうかを示すＣＲＣコードをホストに返す。その後、このコマンド処理が終わるまでビジーを返し、ホスト２０が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ１６に保持されている。
【００５７】
コマンド処理において、コマンドの引数“ＲＳ”、“ＯＦＳ”により、拡張レジスタ内のページと位置が指定され、“ＬＥＮ”により１バイト（ＬＥＮ＝０）のデータポートが指定される。データポートは、複数バイト割り当てることは可能であるが、１バイトで十分であるので、図９では“ＬＥＮ＝０”(レングス１)の場合のデータポート例が示されている。データポートは、拡張レジスタマップ上において、１バイトのアドレスを占有するだけでよい。このデータポートに、バッファ１６に保持された１ブロック（５１２バイト単位）のデータをある割り当てたデバイスにライトすることができる。すなわち、１回当たり、１ブロックのデータをライトすることができる。
【００５８】
続いて同じデータポートをライトすると、続く５１２バイトのデータを割り当てたデバイスに書き込むことができる。データポートのデータを何処に渡すかは、拡張機能の仕様によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジスタを定義して制御することができる。
【００５９】
（ページ０の情報フィールドの使用例）
図１０は、拡張レジスタ３１のページ０に示された情報フィールドの例を示している。この情報フィールドにより、ホスト２０が拡張機能を制御するドライバを特定できるようにすることにより、拡張機能を追加した場合において、ホストシステムが容易に拡張機能を使えることができ、プラグ・アンド・プレイを実現することができる。
【００６０】
（ストラクチャレビジョン）
ストラクチャレビジョンは、拡張レジスタ３１のページ０のフォーマットを定義するレビジョンである。デバイス情報フィールドに新しい情報を追加した場合、ストラクチャレビジョンを更新することにより、どのバージョンの情報フィールドを保持しているかを示す。以前のバージョンのホストドライバは、新しいフィールドを無視する。
【００６１】
（データ長）
データ長は、ページ０に記録されている有効データ長を示している。
【００６２】
（拡張機能数（＝Ｎ））
拡張機能数は、デバイスが何個の拡張機能をサポートしているかを示している。ホストドライバは、起動時に、サポートしている機能数だけ繰り返し、各拡張機能用のドライバがインストールされているかどうかを調べる。
【００６３】
（デバイスの情報領域）
デバイスの情報領域には、Ｎ個のデバイス（デバイス１〜デバイスＮ）の情報を記録することができる。各デバイスの情報を次に示す。
【００６４】
（デバイス１機能識別コード）
デバイス１機能識別コードにおいて、このコードが設定してある場合、標準ドライバ用を用いることができることを示す。ホストシステムのＯＳが標準ドライバをサポートしている場合、専用ドイバをインストールすることなく、このデバイスが使用できる。専用ドライバがインストールされている場合は、そちらの使用を優先する。非標準の機能は“０”を設定する。この場合は、専用ドライバによってのみこの機能は制御される。
【００６５】
（デバイス１製造者識別情報、デバイス１機能識別情報）
デバイス１製造者識別情報、デバイス１機能識別情報は、専用ドライバを特定するための情報である。ホストドライバは、これらの情報をもとにデバイス１の専用ドライバがインストールされているかどうかを探す。識別し易いように、例えばＡＳＣＩＩ文字列で記載される。機能識別情報は、デバイスの型番、レビジョンなどが記載される。
【００６６】
（次デバイスの先頭アドレス）
次デバイスの先頭アドレスは、次のデバイス情報が記載されているページ０内のアドレスを示している。ホストシステムがこのデバイスをサポートしていない場合、このデバイスは使用できないため、次のデバイスがチェックされる。これ以降のフィールドは可変長のため、この位置に定義している。
【００６７】
（デバイス１アドレスポインタ１〜Ｘ、レングスフィールド１〜Ｘ）
デバイス１アドレスポインタ１〜Ｘ、レングスフィールド１〜Ｘは、ひとつの機能に複数の拡張レジスタ領域を定義できることを示している。それぞれのアドレスとレングスを下記に列挙する。
【００６８】
（デバイス１アドレスポインタ１（開始アドレス）、レングス１）
デバイス１が使用する拡張レジスタの第１領域。拡張レジスタのページ１〜７の空間内の先頭アドレスと、使用する拡張レジスタ領域の大きさを示している。
【００６９】
すなわち、１つのデバイスに、１つ又は複数の拡張レジスタ領域を割り付けることができ、アドレスポインタは、ページ０以外の任意の拡張領域の場所（開始アドレス）を示している。レングスは、ポインタを先頭アドレスとした拡張レジスタを占有する大きさを示している。
【００７０】
（デバイス１アドレスポインタ２（開始アドレス）、レングス２）
デバイス１に割り当てられた拡張レジスタ内の第２領域の位置と領域の大きさを示している。これにより、例えば標準ドライバは、第１領域のみで制御するが、専用ドライバは、第１領域と第２領域を用いて効率良く制御することを可能にするなどの応用が可能となる。
【００７１】
（デバイス１アドレスポインタＸ（開始アドレス）、レングスＸ）
デバイス１に割り当てられた第Ｘ領域の位置と領域の大きさを示している。
【００７２】
このように、拡張レジスタ内に複数の領域を定義できる。各領域はオーバーラップしないように配置される。レングス情報によりオーバーラップがあるかどうかをチェックすることができる。
【００７３】
追加フィールドが必要になった場合、これ以降に追加定義していく。新しいフィールドが認識できないホストは、認識可能なフィールドまで読み出し、追加フィールドは無視する。上記の（次デバイスの先頭アドレス）フィールドによりスキップすることができる。
【００７４】
（無線ＬＡＮ対応ＳＤカード）
図１１は、無線通信機能を有したメモリデバイス（ＳＤカード）１１の使用例を示している。ＳＤカード１１は、ホストとしての例えばデジタルカメラ５１、５２や、サーバー５３、パーソナルコンピュータ５４、携帯電話５５に装着される。
【００７５】
無線通信機能を有したＳＤカード１１は、デジタルカメラ５１とともに使用することにより、写真データを無線通信ネットワーク上で他のカメラ５２に送信したり、他のカメラ５２から受信したりすることが可能である。また、無線通信ネットワークを介して例えば外部のサーバー５３に接続し、写真データをデジタルカメラ５１からサーバー５３に転送することも可能である。さらに、無線通信ネットワークを介して例えばパーソナルコンピュータ５４や携帯電話５５などの機器に接続し、写真データをデジタルカメラ５１からこれらパーソナルコンピュータ５４や携帯電話５５に転送することができる。
【００７６】
図１２は、ＳＤカード１１が有するインターフェース機能を示している。
【００７７】
無線通信機能を有したＳＤカード１１は、メモリデバイス１１を制御するホストデバイスとしての例えばデジタルカメラ５１とのインターフェースとなるインターフェース機能と、デジタルカメラ５１と他の電子機器、例えばカメラ５２や、サーバー５３、パーソナルコンピュータ５４、テレビ５６、プリンタ５７などと無線ＬＡＮ接続を行うネットワークインターフェースの機能を有している。
【００７８】
前述したホストインターフェース（カードインターフェース）１２は、ＳＤＡ(SD Association)で規格化された“SD Specifications Part 1”と“SD Specifications Part 2”に従って、ＳＤカード１１内のデータにＦＡＴ３２経由でアクセス（読み書き）する機能を有するとともに、ＳＤカード１１内の拡張レジスタ３１にアクセスする機能を有している。以下、無線通信機能を有するＳＤカードにおいて拡張レジスタを利用する場合について説明する。また、無線通信規格としてＩＥＥＥ８０２．１１ｂ／ｇ／ｎに準拠する場合を想定して、この様な拡張レジスタをＷｉ−Ｆｉ  ＳＤレジスタと記載する場合がある。
【００７９】
ここでＷｉ−Ｆｉ  ＳＤレジスタのアクセスには、前述したリードコマンド（ＣＭＤ４８）とライトコマンド（ＣＭＤ４９）が用いられる。リードコマンド（ＣＭＤ４８）は、前述したように、対象となる拡張レジスタからデータをブロック単位で読み出すコマンドであり、ライトコマンド（ＣＭＤ４９）は対象となる拡張レジスタにデータをブロック単位で書き込むコマンドである。
【００８０】
本実施形態において、例えばホスト２０がＳＤカード１１に対して、無線通信機能を有するＳＤカード特有のコマンドを発行する。具体的には、無線通信機能を有するＳＤカード特有の拡張レジスタにデータを書き込むために専用のライトコマンド（ＣＭＤ４９）を用いることを特徴とする。または、無線通信機能を有するＳＤカード特有の拡張レジスタからデータを読み出すために専用のリードコマンド（ＣＭＤ４８）を用いることを特徴とする。
【００８１】
無線通信インターフェース１７ａは、物理層にＩＥＥＥ８０２．１１ｂ／ｇ／ｎを、ネットワーク層にＩＰｖ４やＩＰｖ６を、トランスポート層にＴＣＰを、プレゼンテーション層にＳＳＬ／ＴＬＳを、アプリケーション層にＨＴＴＰやＦＴＰをサポートすることを想定している。さらに、家庭内機器との通信のためＤＬＮＡ（Digital Living Network Alliance）の機能を有する場合もある。
【００８２】
メモリデバイス１１が２つのインターフェースを持つことにより、デジタルカメラで作成した写真データ（ＪＰＥＧやＲＡＷフォーマット）や動画データ（ＭＰＥＧ−２  ＴＳやＭＰ４フォーマット）を、ＨＴＴＰプロトコルをサポートするサーバーや機器に対して送信、又は受信することが可能になる。さらに、ＤＬＮＡをサポートするサーバーや機器により、写真や動画の再生が可能となるとともに、印刷を行うことも可能となる。また、写真データや動画データだけでなく、ホストデバイスが作成するデータ（ＸＭＬデータやテキストデータ）を追加して送ることにより、ホストデバイスはサーバーや周辺機器と認証作業を行ったり、メタデータの送受信を行ったりすることが可能となる。
【００８３】
図１３は、無線通信機能を有するＳＤカードとホストデバイスの構成例を示している。これ以降、無線通信規格としてＩＥＥＥ８０２．１１ｂ／ｇ／ｎに準拠し、Ｗｉ−Ｆｉ接続認定されたＳＤカード（以下、Ｗｉ−Ｆｉ  ＳＤカード１１と記載する場合がある）を例に挙げて説明する。
【００８４】
前述したように、ホスト２０は、Ｗｉ−Ｆｉ  ＳＤカード１１を制御するためのホストコントローラ２１を有し、前記カードインターフェースに従って、ＳＤＡで規格化された“SD Specifications Part 1”のコマンドと、Ｗｉ−Ｆｉ  ＳＤカード特有の制御を行うためのＣＭＤ４８とＣＭＤ４９のコマンドを発行することが可能である。
【００８５】
Ｗｉ−Ｆｉ  ＳＤカード１１は、カードコントローラ１１ａ、ＮＡＮＤメモリモジュール（ＮＡＮＤフラッシュメモリ）１８、Ｗｉ−Ｆｉネットワークモジュール（無線ＬＡＮ信号処理部１９ａ）１９ｃを有し、ホストコントローラ２１から発行されたコマンドに従い動作する。無線通信機能を有していない一般的なＳＤカードにおいて、カードコントローラ１１ａは、ＮＡＮＤメモリモジュール１８にアクセスし、データの読み出し、書き込みを行うことが可能である。
【００８６】
本実施形態におけるＷｉ−Ｆｉ  ＳＤカードは、ＮＡＮＤメモリモジュール１８へのアクセス（読み書き）と、Ｗｉ−Ｆｉネットワークモジュール１９ｃへのアクセス、さらに、ＮＡＮＤメモリモジュール１８に記録されたデータをＷｉ−Ｆｉネットワークモジュール１９ｃへ内部転送を行う。もしくはＷｉ−Ｆｉネットワークモジュール１９ｃのデータをＮＡＮＤメモリモジュール１８に内部転送を行うことが可能である。これにより、例えばＮＡＮＤメモリモジュール１８に記録された写真データをホスト２０の介在なしにＷｉ−Ｆｉネットワークモジュール１９ｃが外部に送信することができる。つまり、ホスト２０はＷｉ−Ｆｉネットワークモジュール１９ｃの複雑な制御を行う必要がない。
【００８７】
さらに、写真データがカードインターフェースを経由せず内部転送されるため、転送速度を上げることができる。例えば、写真データの内部転送をカードコントローラ１１ａ内部のＤＭＡ（Direct Memory Access）レジスタで制御すれば、ホスト２０とＷｉ−Ｆｉ  ＳＤカード１１とは独立して動作することが可能である。
【００８８】
また、Ｗｉ−Ｆｉネットワークモジュール１９ｃのステータス情報や、外部ネットワークのサーバーからダウンロードしたデータなどを、ホスト２０が逐次管理することなく、自動的にＮＡＮＤメモリモジュール１８に直接記録することが可能である。
【００８９】
図１４は、Ｗｉ−Ｆｉ  ＳＤカードとホストデバイスの別の構成例を示す。
【００９０】
図１４は、図１３と異なり、Ｗｉ−Ｆｉ  ＳＤカード１１自身は無線通信機能を有さず、カードコントローラ１１ｂとＮＡＮＤメモリモジュール１８で構成されている。また、ホスト２０は、無線通信機能を有している。すなわち、ホスト２０は、ホストコントローラ２１と、Ｗｉ−Ｆｉネットワークモジュール１９ｃと、リードコマンド（ＣＭＤ４８）とライトコマンド（ＣＭＤ４９）を分離するためのカードコントローラ（セレクタ）２５とを有している。
【００９１】
この構成は、デジタルカメラなどのホストデバイス自身が無線通信機能を有する場合において、図１３と同じ制御方法でＷｉ−Ｆｉネットワークモジュール１９ｃの制御が可能である。
【００９２】
図１５は、リードコマンド（ＣＭＤ４８）とライトコマンド（ＣＭＤ４９）でアクセスする拡張レジスタの例を示している。前述したように、拡張レジスタのページ０は、ページ１以降のページのインデックスとなっており、ホスト２０は、ページ０を読むことにより、カードがどのような拡張機能を有しているか、そのサポートされている拡張機能の規格のバージョン情報やプロファイル情報（オプショナル機能のうちどの機能がサポートされているか）、その拡張機能を制御するためのドライバ情報（どのメーカーから提供されているドライバか、ドライバのバージョンが何であるか）などを知ることができる。例えば、あるカードがＷｉ−Ｆｉ機能とともに、Ｂｌｕｅｔｏｏｔｈ機能を有しているのであれば、Ｗｉ−Ｆｉ機能にアクセスするためのレジスタをページ１に割り当て、Ｂｌｕｅｔｏｏｔｈ機能にアクセスするためのレジスタを例えばページ２に割り当てる。ホスト２０は必要に応じてページ１、２にアクセスし、それぞれの機能を同時に用いることが可能である。これにより、Ｗｉ−Ｆｉ機能を用いて外部のサーバーからデータをダウンロードしてカードに一旦記録し、Ｂｌｕｅｔｏｏｔｈ機能を用いて周辺機器に転送して再生や表示するといった動作を実現することができる。
【００９３】
図１６は拡張レジスタをＷｉ−Ｆｉ  ＳＤカードに用いた場合の例を示す。
【００９４】
Ｗｉ−Ｆｉ  ＳＤレジスタは、その用途に応じて５種類の拡張レジスタで構成されている。Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタは、書き込み専用のレジスタでありホスト２０からＷｉ−Ｆｉ  ＳＤカード１１に対してコマンドを発行するときにアクセスされる。Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタは、読み込み専用のレジスタであり、ホスト２０がＷｉ−Ｆｉ  ＳＤカード１１のステータス情報を取得するときにアクセスされる。Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタは、読み込み専用のレジスタであり、ホスト２０が外部サーバーからＷｉ−Ｆｉ  ＳＤカード１１にダウンロードしたデータ（ＨＴＴＰレスポンス・データ）を取得するときにアクセスされる。Ｗｉ−Ｆｉ  ＳＤ  カードＩＤ・リスト・レジスタは、読み込み専用のレジスタであり、そのＷｉ−Ｆｉ  ＳＤカード１１に接続している（若しくは接続をリクエストしている）他のデバイスのＩＤのリストをホスト２０が取得するときにアクセスされる。Ｗｉ−Ｆｉ  ＳＤカードＳＳＩＤ・ヒストリ・レジスタは、読み込み専用のレジスタであり、Ｗｉ−Ｆｉ  ＳＤカード１１が過去に接続したＳＳＩＤ（若しくは接続しなかったが接続するようにリクエストされたＳＳＩＤ）のリストをホスト２０が取得するときにアクセスされる。
【００９５】
また、図示しないが、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・レスポンス・レジスタは、読み込み専用のレジスタであり、ホスト２０が発行したコマンドに対し、Ｗｉ−Ｆｉ  ＳＤカード１１がそれを受け取ることができたかどうかを、ホスト２０が確認するときにアクセスされる。更に、図示しないが、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・プロセス・レジスタは、読み込み専用のレジスタであり、ホスト２０が発行したコマンドに対し、Ｗｉ−Ｆｉ  ＳＤカードがそれに対する処理の進捗（処理前か、処理中か、処理後成功したか、処理後失敗したか）を、ホスト２０が確認するときにアクセスされる。
【００９６】
本実施形態は、これらのＷｉ−Ｆｉ  ＳＤレジスタを拡張レジスタのページにそれぞれ割り当てるケースを説明する。先ず、ホスト２０は、リードコマンド（ＣＭＤ４８）を用いて拡張レジスタのページ０を読み、Ｗｉ−Ｆｉ機能がＳＤカードに実装されているか、それぞれの機能を用いるために何ページをアクセスすればよいかを確認する。ここでは、ページ番号（ｉ、ｊ、ｋ、ｌ、ｍ）とＷｉ−Ｆｉ  ＳＤレジスタの略称（ＷＩＦＩＳＤＣＲ、ＷＩＦＩＳＤＳＲ、ＷＩＦＩＳＤＲＤ、ＷＩＦＩＳＤＩＬ、ＷＩＦＩＳＤＳＨ）のペアがページ０に記録されている。
【００９７】
ホスト２０がＷｉ−Ｆｉ  ＳＤカード１１に対してコマンドを発行する場合、コマンド発行用のレジスタであるＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに対してライトコマンド（ＣＭＤ４９）にて書き込みを行う。このとき、ページ０の情報から当該レジスタはページｉにあることが分かっているため、ＣＭＤ４９の引数としてページｉが指定される。同様にホスト２０がＷｉ−Ｆｉ  ＳＤカードからステータス情報等を取得する場合、データ取得のためのレジスタであるＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタ、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタ、Ｗｉ−Ｆｉ  ＳＤ  カードＩＤヒストリ・レジスタ、Ｗｉ−Ｆｉ  ＳＤカードＳＳＩＤ・ヒストリ・レジスタのいずれかより、リードコマンド（ＣＭＤ４８）にてデータを読み出す。このとき、ＣＭＤ４８の引数としては、それぞれのレジスタに対応するページ番号であるｊ、ｋ、ｌ、ｍが指定される。
【００９８】
ここで、本実施形態において、書き込み用レジスタと読み込み用レジスタを別のページに割り当てているが、それぞれのレジスタは書き込み専用と読み込み専用となっているため、同じページに割り当てることも可能である。
【００９９】
図１７は、Ｗｉ−Ｆｉ  ＳＤレジスタが拡張レジスタのページに割り当てられた場合において、５１２バイト（拡張レジスタのページ当たりの最大サイズ）を超えるデータを読み書きするときの例を示している。
【０１００】
拡張レジスタのページ当たりの最大サイズは５１２バイトと限られている。しかし、ホスト２０がリードコマンド（ＣＭＤ４８）、又はライトコマンド（ＣＭＤ４９）を連続して発行することにより、５１２バイトを超えるデータの読み込み、又は書き込みが可能である。例えばＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに５１２バイトを超えるデータを書き込む場合、ホスト２０はＣＭＤ４９によって最初の５１２バイトのデータをレジスタに書き込む。
【０１０１】
具体的には、コマンドＣＭＤ４９のレジスタ・セレクト“ＲＳ”でページを指定し、オフセット“ＯＦＳ”は“０”とし、データ長“ＬＥＮ”で５１２バイトを指定する。つまり、先ず、“ＲＳ”を“１”、“ＯＦＳ”を“０”、“ＬＥＮ”を５１２バイトとして、５１２バイトのデータをＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに書き込む。次に、“ＲＳ”を“２”、“ＯＦＳ”を“０”、“ＬＥＮ”を５１２バイトとして、５１２バイトのデータをＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに書き込む。このような動作が順次繰り返される。
【０１０２】
ここで、最初の５１２バイトのデータにはＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに書き込むデータのデータサイズ（Ｎｗ）が記録されている。このため、Ｗｉ−Ｆｉ  ＳＤカード１１は、このデータを読み込むことにより、ホスト２０がライトコマンド（ＣＭＤ４９）をｃｅｉｌ（Ｎｗ／５１２）回発行することが分かる。尚、ｃｅｉｌ（）は小数点以下切り上げを示す。つまり、例えばデータ長が５１３バイトであれば、コマンドを２回発行することを意味する。
【０１０３】
一方、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタから５１２バイトを超のデータを読み込む場合、ホスト２０はリードコマンド（ＣＭＤ４８）によって最初の５１２バイトのデータをレジスタから繰り返し読み込む。ＣＭＤ４８の引数の設定方法は、ＣＭＤ４９と同様である。
【０１０４】
ここで、最初の５１２バイトのデータにはＷｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタから読み込むデータのデータサイズ（Ｎｒ）が記録されている。このため、ホスト２０は、このデータを読み込むことにより、ホスト２０がリードコマンド（ＣＭＤ４８）をｃｅｉｌ（Ｎｒ／５１２）回発行すべきことが分かる。
【０１０５】
例えばホスト２０が読み込み、又は書き込みを途中で、不具合が生じた場合、処理を中止する。この場合、ホスト２０が、処理を中止するためのＡｂｏｒｔ（）コマンドを発行したり、Ｗｉ−Ｆｉ  ＳＤカード１１に設定されているタイムアウト時間によって、タイムアウト処理が行われるのを待ったりすることにより、処理の中止を行うことができる。
【０１０６】
図１８は、拡張レジスタをＷｉ−Ｆｉ  ＳＤレジスタに用いたときの別の例を示している。例えば無線通信のステータスをホスト２０から拡張レジスタに転送したり、拡張レジスタのデータをＳＤレジスタに転送したりする場合、５１２バイトのデータ全てを転送する必要がなく、特定の短いデータ長のデータを転送すればよいことがある。図１８は、このような場合におけるデータ転送の例を示すものである。
【０１０７】
具体的には、例えばリードコマンド（ＣＭＤ４８）、ライトコマンド（ＣＭＤ４９）の引数“ＲＳ”により拡張レジスタのページを指定し、さらに“ＯＦＳ”により指定されたページのオフセットアドレスが指定される。
【０１０８】
この例において、５種類のＷｉ−Ｆｉ  ＳＤレジスタは、拡張レジスタのある１ページ（ｈ）において、それぞれ１バイト分のアドレス（ｉ、ｊ、ｋ、ｌ、ｍ）に割り当てられる。
【０１０９】
先ず、ホスト２０は、リードコマンド（ＣＭＤ４８）を用いて拡張レジスタのページ０を読み、Ｗｉ−Ｆｉ  ＳＤ機能がカードに実装されているか、それぞれの機能を用いるために何ページをアクセスすればよいかを確認する。ここでは、ページ番号（ｈ）＋オフセットアドレス（ｉ、ｊ、ｋ、ｌ、ｍ）とＷｉ−Ｆｉ  ＳＤレジスタの略称（ＷＩＦＩＳＤＣＲ、ＷＩＦＩＳＤＳＲ、ＷＩＦＩＳＤＲＤ、  ＷＩＦＩＳＤＩＬ、ＷＩＦＩＳＤＳＨ）のペアがページ０に記録されている。
【０１１０】
ホスト２０がＷｉ−Ｆｉ  ＳＤカード１１に対してコマンドを発行する場合、コマンド発行用のレジスタであるＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに対して、ライトコマンド（ＣＭＤ４９）にて書き込みを行う。このとき、ページ０の情報から当該レジスタはページ“ｈ”のオフセットアドレス“ｉ”にあることが分かるため、ＣＭＤ４９の引数として“ＲＳ”＝“ｈ”、“ＯＦＳ”＝“ｉ”が指定される。
【０１１１】
一方、ホスト２０がＷｉ−Ｆｉ  ＳＤカード１１からステータス情報等を取得する場合、リードコマンド（ＣＭＤ４８）により、データ取得のためのレジスタであるＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタ、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタ、Ｗｉ−Ｆｉ  ＳＤカードＩＤ・リスト・レジスタ、Ｗｉ−Ｆｉ  ＳＤカードＳＳＩＤ・ヒストリ・レジスタのいずれかからデータが読み込まれる。このとき、リードコマンド（ＣＭＤ４８）の引数としては、それぞれのレジスタに対応するページ番号とオフセットアドレスである（ｈ、ｊ）、（ｈ、ｋ）、（ｈ、ｌ）、（ｈ、ｍ）が指定される。すなわち、“ＲＳ”が“ｈ”で、“ＯＦＳ”が“ｊ、ｋ、ｌ、ｍ”の何れかに設定される。
【０１１２】
図１８に示す実施形態は、拡張レジスタの構成とＷｉ−Ｆｉ  ＳＤレジスタの構成が対応しないが、拡張レジスタの消費量が少ないという利点がある。
【０１１３】
また、図１８において、書き込み用レジスタ（Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタ）と読み込み用レジスタ（Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタ、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタ、Ｗｉ−Ｆｉ  ＳＤカードＩＤ・リスト・レジスタ、Ｗｉ−Ｆｉ  ＳＤカードＳＳＩＤ・ヒストリ・レジスタ）を別のオフセットアドレスに割り当てているが、それぞれのレジスタは書き込み専用と読み込み専用であるため、同じオフセットアドレスに割り当てることも可能である。
【０１１４】
図１９は、Ｗｉ−Ｆｉ  ＳＤレジスタがあるページのアドレスにそれぞれ割り当てられた場合において、５１２バイトを超えるデータ、つまり、拡張レジスタのページ当たりの最大サイズを超えるデータを読み書きするときの例を示している。
【０１１５】
図１７に示す例と同様に、拡張レジスタに転送できるデータは５１２バイトと限られているが、ホスト２０が、ＣＭＤ４８又はＣＭＤ４９を連続して発行することにより、５１２バイトを超えるデータの読み込み、又は書き込みが可能である。この場合、拡張レジスタのページｈ内に記録されたデータは、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタや、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタ内に記録された５１２バイト毎のデータの、例えばインデックスとしての機能を有している。
【０１１６】
このため、ライトコマンド（ＣＭＤ４９）の引数により、拡張レジスタのページ“ｈ”、オフセット“ＯＦＳ”は“ｉ”を“ＬＥＮ”を５１２バイトとして指定することにより、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに５１２バイトのデータを書き込むことができ、このライトコマンド（ＣＭＤ４９）を連続的に発行することにより、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに５１２バイトのデータを連続的に書き込むことができる。
【０１１７】
また、リードコマンド（ＣＭＤ４８）の引数により、拡張レジスタのページ“ｈ”、オフセット“ＯＦＳ”は“ｊ”を“ＬＥＮ”を５１２バイトとして指定することにより、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタ内の５１２バイトのデータを読み出すことができ、このリードコマンド（ＣＭＤ４８）を連続的に発行することにより、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタから５１２バイトのデータを連続的に読み出すことができる。
【０１１８】
ここで、最初の５１２バイトのデータにはＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに書き込むデータのデータサイズ（Ｎｗ）が記録されている。このため、ＳＤカードは、このデータを読み込むことにより、ホスト２０がライトコマンド（ＣＭＤ４９）をｃｅｉｌ（Ｎｗ／５１２）回発行することが分かる。尚、ｃｅｉｌ（）は小数点以下切り上げを示す。つまり、例えばデータ長が５１３バイトであれば、コマンドを２回発行することを意味する。
【０１１９】
一方、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタから５１２バイトを超のデータを読み込む場合、ホスト２０はリードコマンド（ＣＭＤ４８）によって最初の５１２バイトのデータをレジスタから繰り返し読み込む。ＣＭＤ４８の引数の設定方法は、ＣＭＤ４９と同様である。
【０１２０】
ここで、最初の５１２バイトのデータにはＷｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタから読み込むデータのデータサイズ（Ｎｒ）が記録されている。このため、ホスト２０は、このデータを読み込むことにより、ホストデ２０がリードコマンド（ＣＭＤ４８）をｃｅｉｌ（Ｎｒ／５１２）回発行すべきことが分かる。
【０１２１】
例えばホスト２０が読み込み、又は書き込みを行っている途中で、不具合が生じた場合、処理を中止する。この場合、ホスト２０が、処理を中止するためのＡｂｏｒｔ（）コマンドを発行したり、Ｗｉ−Ｆｉ  ＳＤカード１１に設定されているタイムアウト時間によって、タイムアウト処理が行われるのを待ったりすることにより、処理の中止を行うことができる。
【０１２２】
図２０は、拡張レジスタをＷｉ−Ｆｉ  ＳＤレジスタに用いた場合におけるさらに他の例を示す図である。
【０１２３】
図２０は、１つのライトコマンド（ＣＭＤ４９）により、発行されたデータに無線通信を制御するための複数のＷｉ−Ｆｉ  ＳＤカード・コマンドが含まれる場合や、１つのリードコマンド（ＣＭＤ４８）により発行されたデータに複数のステータスが含まれる場合を示している。複数のＷｉ−Ｆｉ  ＳＤカード・コマンドの発行は、例えば複数のファイルの転送を連続的に行うときなどに用いられる。
【０１２４】
Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタは、例えばコマンド・レジスタ部と、アーギュメント・レジスタ部（引数レジスタ部）とから構成され、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタは、例えばレスポンス・レジスタ部と、レスポンス・データ・レジスタ部とから構成されている。
【０１２５】
Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタにおいて、コマンド・レジスタ部には、コマンド毎にコマンド発行用のレジスタが割り当てられており、書き込まれたコマンドのＩＤに応じて、対応するレジスタに値が書き込まれる。アーギュメント・レジスタ部には、引数毎に引数データ書き込み用レジスタが割り当てられており、書き込まれたコマンドのＩＤの内容に応じて、引数データが対応するレジスタに書き込まれる。
【０１２６】
例えば、ホストデバイス２０からＣＭＤ４９（ｉ、ｘ）が発行された場合、“ｉ”は、拡張レジスタのページ番号、“ｘ”はコマンドＩＤを示し、コマンドＩＤ＝ｘと、それに対応する引数の数（ｍ）の引数データが拡張レジスタに書き込まれ、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタ内の対応するコマンド・レジスタとアーギュメント・レジスタに値が書き込まれる。
【０１２７】
尚、“ｘ”は対応するコマンドＩＤのレジスタのオフセットアドレスと定義してもよい。
【０１２８】
一方、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタにおいて、レスポンス・ステータス・レジスタ部には、コマンドに毎にステータス情報用のレジスタが割り当てられており、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに書き込まれたコマンドのＩＤに応じて、対応するステータス情報用のレジスタから値が読み込まれる。レスポンス・データ・レジスタ部には、コマンドＩＤ毎にレスポンス・データ用のレジスタが割り当てられ、書き込まれたコマンドのＩＤの内容に応じて、レスポンス・データが対応するレジスタから読み込まれる。
【０１２９】
ホスト２０から例えばＣＭＤ４８（ｊ、ｙ）が発行された場合、“ｊ”はページ番号、“ｙ”はコマンドＩＤを示し、コマンドＩＤ＝“ｙ”に対応するステータス情報と、レスポンス・データが、Ｗｉ−Ｆｉ  ＳＤカード・データ・レジスタのレスポンス・ステータス・レジスタとレスポンス・データ・レジスタから、拡張レジスタを経由して、ホスト２０により読み込出される。
【０１３０】
尚、“ｙ”は対応するコマンドＩＤのレジスタのオフセットアドレスと定義してもよい。
【０１３１】
上記図２０に示す実施形態は、Ｗｉ−Ｆｉ  ＳＤレジスタの値が対応する機能や処理に一対一に割り当てられている。このため、レジスタの内容を解釈する処理を経ずに効率的な処理を行うことが可能である。
【０１３２】
以降、図１８と図１９を用いて説明したＷｉ−Ｆｉ  ＳＤレジスタがあるページのアドレスにそれぞれ割り当てられたケースを前提として、Ｗｉ−Ｆｉ  ＳＤレジスタの詳細を説明するが、他の実施形態にも適用可能である。
【０１３３】
図２０に示す実施形態によれば、１つのコマンド（ＣＭＤ４９又はＣＭＤ４８）により、複数のＷｉ−Ｆｉ  ＳＤカード・コマンドなどのデータを転送することができるため、複数データを転送するために、複数回コマンド（ＣＭＤ４９又はＣＭＤ４８）を発行する必要がない。このため、効率良くデータを転送でき、高速な処理が可能である。
【０１３４】
図２１は、拡張レジスタがＷｉ−Ｆｉ  ＳＤカード用に用いられる場合における拡張レジスタを示している。
【０１３５】
図２１において、“Wi-Fi SD Card Identifier”は、拡張レジスタがＷｉ−Ｆｉ  ＳＤカードに用いられることを示す情報であり、文字列“WIFISD00”が記録されている。
【０１３６】
“Wi-Fi SD Card Specification Version”は、このＷｉ−Ｆｉ  ＳＤカードがサポートする  Ｗｉ−Ｆｉ  ＳＤカード規格のバージョンであり、例えばVer. 1.0 をサポートするのであれば１６進数“0x0100”が記録されている。
【０１３７】
“Wi-Fi SD Card Profile Indicator”は、このＷｉ−Ｆｉ  ＳＤカードがサポートする機能を示すための情報である。例えば、図３９に示すＷｉ−Ｆｉ  ＳＤカード機能のうち、このＷｉ−Ｆｉカードがどのアプリケーションを使うことができるかを示す。ホストは最初にこの情報を取得した後、カードがサポートする機能のみを実行する必要がある。
【０１３８】
“Vendor Unique ID”は、このカードを作成したベンダーのＩＤの文字列が記録される。ホストはこのＩＤを参照することにより、カードベンダーを知ることができ、カードベンダー独自の追加機能が実装されているので、ホストがその機能を使うことができることを知ることができる。
【０１３９】
“Vendor Unique Field”は、カードベンダーが独自の情報を記録することができ、カードベンダー独自の追加機能のうちいずれの機能が実装されているか等の情報を記録することができる。
【０１４０】
“Command Write Register Port”は、ホストデバイスからカードに対してコマンドを発行するためのＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタにアクセスするためのデータポートである。
【０１４１】
“Status Register Port”は、ホストデバイスがカードのステータス情報を取得するためのＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタにアクセスするためのデータポートである。
【０１４２】
“Response Data Register Port”は、ホストデバイスがカードからの外部サーバーからダウンロードしたデータ（ＨＴＴＰレスポンス・データ）を取得するためのＷｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタにアクセスするためのデータポートである。
【０１４３】
“ID List Register Port”は、そのカードに接続している（若しくは接続をリクエストしている）他のデバイスのＩＤのリストをホストデバイスが取得するためのＷｉ−Ｆｉ  ＳＤ  カードＩＤ・リスト・レジスタにアクセスするためのデータポートである。
【０１４４】
“SSID History Register Port”は、カードが過去に接続したＳＳＩＤ（若しくは接続しなかったが接続するようにリクエストされたＳＳＩＤ）のリストをホストデバイスが取得するためＷｉ−Ｆｉ  ＳＤカードＳＳＩＤ・ヒストリ・レジスタにアクセスするためのデータポートである。
【０１４５】
図２２は、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタの構成例を示している。
【０１４６】
“Wi-Fi SD Card Register Identifier”は、このレジスタがＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタであることを示す情報であり、文字列“WIFISDCR”が記録されている。
【０１４７】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、カードはこの情報を参照して、ライトコマンド（ＣＭＤ４９）が何回発行されて、どれだけのサイズのデータを受信すべきかが分かる。
【０１４８】
“Number of Wi-Fi SD Command Information”は、１回のＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタへの書き込みにより、何個のＷｉ-Ｆｉ  ＳＤコマンドが発行されるかを示す情報である。ホストが指定された個数分だけコマンドをリスト化することにより、カードは列挙されたコマンドの順次処理を行う。更にカードはコマンドの種類に応じて、最も効率の良い順序に並べ替えたり、並列実行が可能なものに関しては並列処理を行ったりすることも可能である。例えば、複数のサーバーにデータをアップロードする際には、負荷がかかっていないサーバーに対する処理を優先したり、カードの転送速度が転送先のサーバーのネットワーク転送速度よりも十分大きい場合は、複数のサーバーへの転送を同時に実行したりすることなどが可能になる。
【０１４９】
“Wi-Fi SD Command Information”は、それぞれ“Wi-Fi SD command id”、“Wi-Fi SD command sequence id”、“Total Number of Arguments”、“Length of Argument”、“Argument”により構成されている。
【０１５０】
“Wi-Fi SD command id”は、発行するＷｉ-Ｆｉ  ＳＤコマンドの種類を表し、図２３乃至図２５のＷｉ-Ｆｉ  ＳＤコマンドのうちの一つが記録される。
【０１５１】
“Wi-Fi SD command sequence id”は、発行されるＷｉ−Ｆｉ  ＳＤコマンドを一つ一つ識別・区別するためにホストが割り振る値であり、ホストは発行した一つ一つのコマンドの状況をＷｉ-Ｆｉ  ＳＤカード・ステータス・レジスタにより知ることができる。
【０１５２】
“Number of Arguments”は、発行するコマンドの引数の個数であり、“Length of Argument”は引数のデータの大きさを示し、“Argument”は引数のデータを示す。
【０１５３】
図２３乃至図２５は、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに書き込むコマンドの一覧を示している。
【０１５４】
“ScanWiFi”コマンドは、引数なしのコマンドで構成される。コマンドを実行すると、ホストがカードに対し、接続可能な無線ＬＡＮをスキャンするようにリクエストし、その結果は、図４３に示す“SSIDLIST”ファイルに保存することができる。
【０１５５】
“SetSSID”コマンドは、SSID名を示す“ssid”、パスフレーズを示す“passphrase”、認証方法を示す“authentication”の３つの引数により構成される。ホストは、“Server Upload Application”と“P2P Application”のために、接続する無線ＬＡＮのSSID名とパスフレーズを設定するか、もしくは“P2P Restricted Server Application”と“P2P Server Application”のために、構築する無線ＬＡＮのSSID名とパスフレーズと認証方法を設定することができる。なお、この設定は“StartApplication”コマンドを実行して無線ＬＡＮに接続、または無線ＬＡＮを構成するときに用いられる。なお、認証方式とは、ネットワークの認証方式とデータ暗号方式を示し、“Open System and no encryption”、“Open System and WEP”、“Shared Key and WEP”、“WPA and TKIP”、“WPA and AES”、“WPA-PSK and TKIP”、“WPA-PSK and AES”、“WPA2 and TKIP”、“WPA2 and AES”、“WPA2-PSK and TKIP”、“WPA2-PSK and AES”のいずれかがホストから選択される。
【０１５６】
“SetCurrentTime”コマンドは、現在の日付を示す“currentDate”、現在の時刻を示す“currentTime”の２つの引数から構成される。コマンドを実行すると、ホストが指定した現在日付と現在時刻がカードに設定することができる。カードに電力が常時供給されていない場合、カードには日付・時刻情報を常時保持することが難しい。このとき、ホストからカードに日付・時刻設定を行うことにより、カードは日付・時刻情報を保持することができ、カードが作成するファイルなどの日付・時刻情報が必要なデータに対し、現在の日付・時刻を設定することができる。
【０１５７】
“StartApplication”コマンドは、起動するアプリケーションを示す“application”、現在日付を示す“currentDate”、現在時刻を示す“currentTime”の３つの引数から構成される。コマンドを実行すると、無線ＬＡＮネットワークの設定に従い無線ＬＡＮへの接続を行う、または無線ＬＡＮの構築を行うことができる。次に、指定されたアプリケーション(図３５に示された“Server Upload Application”、“P2P Server Application”、“P2P Restricted Server Application”、“P2P Client Application”、“DLNA Server Application”、“DLNA Controller Application”)の起動を行うことができる。もし、“SetWPS”コマンドによってWPS(Wi-Fi Protected Setup)の起動設定が行われていた場合、アプリケーション起動前の無線ＬＡＮへの接続、または構成をWPSにより行う。もし、“SetSSID”コマンドによってSSIDが設定されている場合は、その設定を用いて無線ＬＡＮへの接続または構成を行う。もし、“SetSSID”コマンドによってSSIDが設定されていない場合は、図３２に示すカード中の“SSID History”に記録されている一つのSSIDを用いて無線ＬＡＮへの接続または構成を行う。
【０１５８】
“SetWPS”コマンドは、WPS方式を示す“mode”、ピンコードを示す“pin”の２つの引数から構成される。コマンドを実行すると、カードは無線ＬＡＮ接続や構成を行う際にWPSを用いることができる。ここでWPS方式が“WPS with PIN”の場合、設定されたピンコードを用いたピンコード認証を行い、“WPS with PBC”の場合、プッシュボタン認証を行う。
【０１５９】
“Abort”コマンドは、図２２に記載された“Wi-Fi SD Command Sequence ID”を示す“sequenceID”の１つの引数から構成される。コマンドを実行すると、既に実行されたコマンドのうち指定された“Wi-Fi SD Command Sequence ID”をもつコマンドの処理を中断することができる。例えば、ユーザーがファイルをネットワーク内の機器やWebサーバーに対してアップロードやダウンロードを行っている際に、ユーザーが電源を切る等の理由で処理を中止する必要がある場合に用いることができる。
【０１６０】
“Reset”コマンドは、ステータス情報を示す“status”の1つの引数から構成される。ここで、ステータス情報とは、図２６に記載された“Media Change”、“SSID List Update”、“File List Update”、“ID List Update”、“Response Data Update”等の情報のうちのいずれか１つを示している。コマンドが実行されると指定されたステータス情報をリセットして初期値に戻すことができる。例えば、“Media Change”は、カード中のファイルシステム情報が更新されたことを示すステータス情報であるが、ホストはホストデバイス内にキャッシュされたファイルシステム情報を更新可能な場合、この“Media Change”情報を参照し、カードのファイルシステムが更新されていれば、カードのファイルシステム情報をホストデバイスのファイルシステム情報に反映する。このとき、再度“Media Change”情報を参照することができるよう“Reset”コマンドを実行して“Media Change”情報を初期値に戻し、再度カードのファイルシステム情報が更新されることを知ることができる。
【０１６１】
“Remove”コマンドは、SSID名を示す“ssid”の１つの引数から構成される。コマンドが実行されると指定されたSSIDをカード内に記録されている“SSID History”レジスタから削除することができる。例えば、“SSID History”レジスタに記録されているSSIDのうち、既に使用しなくなったようなSSIDが残っている場合、カードがこのSSIDに接続を行ってしまうため、無駄な接続処理が発生する。同様に“SSID History”レジスタに記録されているSSIDのうち、ユーザーが接続することを意図しないSSIDが存在する場合、カードがこのSSIDに接続を行ってしまうため、他のSSIDに接続を行うことができない。以上の場合、“Remove”コマンドを実行することにより、意図しないSSIDに接続することを避けることができる。
【０１６２】
“EndApplication”コマンドは引数なしで構成されるコマンドである。コマンドが実行されると現在実行しているアプリケーションを終了し、カードは初期状態に戻ることができる。
【０１６３】
“SendHttpMessage”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージが記録されているファイルのファイルパスとファイル名を示す“messageFileName”の２つの引数により構成される。コマンドを実行する前に、HTTPリクエスト・ライン、HTTPメッセージ・ヘッダ、HTTPメッセージ・ボディから構成されるHTTPリクエスト・メッセージをファイルに記録する。ホストがコマンドを実行すると、カードは指定された送信先のサーバーに対し、前記ファイルをHTTPリクエスト・メッセージとして送信する。送信先のサーバーはカードからのHTTPリクエスト・メッセージに対し、HTTPレスポンス・メッセージを返信する。カードは、HTTPレスポンス・ライン、HTTPメッセージ・ヘッダ、HTTPメッセージ・ボディから構成される前記HTTPレスポンス・メッセージを受信し、ファイルとしてカードに記録する。このとき、ファイルは、図４３におけるRESPONSEディレクトリの下に“Wi-Fi SD command sequence id”をファイル名として記録される。“Wi-Fi SD command sequence id”は、ホストが任意にコマンドごとに異なるように指定可能な値であり、たとえ他の“SendHttpMessage”を同時に実行してもHTTPレスポンス・メッセージのファイルを区別して受信することができる。更に、HTTPレスポンス・メッセージに添付ファイルが含まれる場合は、カードはメッセージ内に記載されているMIMEタイプによる添付ファイルの種別を識別し、図４３に示すMIMEタイプに応じたディレクトリの下にファイルとして記録する。このときHTTPレスポンス・メッセージ内にファイル名の情報が含まれていれば、この情報をもとにファイルを記録する。以下に、HTTPリクエスト・メッセージを構成するファイルの内容の例を示す。
【０１６４】
――――――――――――――――――――――――――――――――――――――
POST /hoge/ HTTP/1.1
Content-Type: text/plain
User-Agent: XXXXXXXX
Host: hogehoge.com
ContentLength=25
THIS IS AN EXAMPLE.
――――――――――――――――――――――――――――――――――――――
“SendHttpFile”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージが記録されているファイルのファイルパスとファイル名を示す“messageFileName”、送信するHTTPリクエスト・メッセージに添付するファイルのファイルパスとファイル名を示す“appendFileName”の３つの引数から構成される。基本的な構成は“SendHttpMessage”コマンドと同様であるが、違いとしてHTTPリクエスト・メッセージ内の特定の文字列(例えば“<!--WIFISDFILE-->”とする)を、カードがHTTPリクエスト・メッセージの送信時に、添付するファイルの内容に置き換えることができる。このコマンドにより、カード内に既に記録されているファイルを加工することなしにHTTPリクエスト・メッセージとして送信することができる。例えば、カード内の写真データをWebサーバーにアップロードする場合に用いることができる。以下に、HTTPリクエスト・メッセージを構成するファイルの内容の例を示す。
【０１６５】
――――――――――――――――――――――――――――――――――――――
POST /hoge/ HTTP/1.1
Content-Type: text/plain
User-Agent: XXXXXXXX
Host: hogehoge.com
ContentLength=1234567
<!--WIFISDFILE-->
――――――――――――――――――――――――――――――――――――――
上記のHTTPリクエスト・メッセージに対し、カードは<!--WIFISDFILE-->を指定されたファイルに置き換えて下記のとおり送信する。
【０１６６】
――――――――――――――――――――――――――――――――――――――
POST /hoge/ HTTP/1.1
Content-Type: image/jpeg
User-Agent: XXXXXXXX
Host: hogehoge.com
ContentLength=1234567
<Binary data is inserted here by a Card from a specified file>
――――――――――――――――――――――――――――――――――――――
“SendHttpSSLMessage”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージが記録されているファイルのファイルパスとファイル名を示す“messageFileName”の２つの引数から構成される。基本的な構成は“SendHttpMessage”コマンドと同様であるが、違いとしてはこのコマンドにより、HTTPリクエスト・メッセージの送信とHTTPレスポンス・メッセージの受信をSSL（Secure Socket Layer）やTLS（Transport Layer Security）で暗号化して行うことができる。
【０１６７】
“SendHttpSSLFile”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージが記録されているファイルのファイルパスとファイル名を示す“messageFileName”、送信するHTTPリクエスト・メッセージに添付するファイルのファイルパスとファイル名を示す“appendFileName”の３つの引数から構成される。基本的な構成は“SendHttpFile”コマンドと同様であるが、違いとしてはこのコマンドにより、HTTPリクエスト・メッセージの送信とHTTPレスポンス・メッセージの受信をSSL（Secure Socket Layer）やTLS（Transport Layer Security）で暗号化して行うことができる。
【０１６８】
“SendHttpMessageByRegister”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージを示す“message”の２つの引数から構成される。“SendHttpMessage”コマンドとは異なり、HTTPメッセージをカード内のファイルに書き込むのではなく、ホストがＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタに対して直接HTTPメッセージを書き込むことができる。例えばパスワードなどの情報を送信先のサーバーに送る際に、ファイルに書き込むことによってパスワードが外部に流出することを防ぐことができる。ホストがコマンドを実行すると、カードは指定された送信先のサーバーに対し、入力されたHTTPリクエスト・メッセージ（HTTPリクエスト・ライン、HTTPメッセージ・ヘッダ、HTTPメッセージ・ボディから構成される）を送信する。送信先のサーバーはカードからのHTTPリクエスト・メッセージに対し、HTTPレスポンス・メッセージを返信する。カードは、HTTPレスポンス・ライン、HTTPメッセージ・ヘッダ、HTTPメッセージ・ボディから構成される前記HTTPレスポンス・メッセージを受信し、図３０に示す“Response Data”としてＷｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタに書き込む。ホストはリードコマンド（ＣＭＤ４８）により、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタを読み込むことにより、実行した“SendHttpMessageByRegister”に対するHTTPレスポンス・メッセージを読み込むことができる。
【０１６９】
“SendHttpFileByRegister”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージに添付するファイルのファイルパスとファイル名を示す“appendFileName”、送信するHTTPリクエスト・メッセージを示す“message”の３つの引数から構成される。基本的な構成は“SendHttpMessageByRegister”コマンドと同様であるが、違いとしてHTTPリクエスト・メッセージ内の特定の文字列(例えば“<!--WIFISDFILE-->”とする)を、カードがHTTPリクエスト・メッセージの送信時に、添付するファイルの内容に置き換えることができる。
【０１７０】
“SendHttpSSLMessageByRegister”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージを示す“message”の２つの引数により構成される。基本的な構成は“SendHttpMessageByRegister”コマンドと同様であるが、違いとしてはこのコマンドにより、HTTPリクエスト・メッセージの送信とHTTPレスポンス・メッセージの受信をSSL（Secure Socket Layer）やTLS（Transport Layer Security）で暗号化して行うことができる。
【０１７１】
“SendHttpSSLFile”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージに添付するファイルのファイルパスとファイル名を示す“appendFileName”、送信するHTTPリクエスト・メッセージを示す“message”の３つの引数から構成される。基本的な構成は“SendHttpFileByRegister”コマンドと同様であるが、違いとしてはこのコマンドにより、HTTPリクエスト・メッセージの送信とHTTPレスポンス・メッセージの受信をSSL（Secure Socket Layer）やTLS（Transport Layer Security）で暗号化して行うことができる。
【０１７２】
“GetFile”コマンドは、受信するファイルのファイルパスとファイル名を示す“requestFileName”、受信したファイルの記録先のファイルパスとファイル名を示す“Savefilename”の２つの引数により構成される。このコマンドはP2P Clientアプリケーションにおいて実行され、受信者が、送信者から取得した“FILELIST”ファイル(図４３に示す)に記載された取得可能なファイルのファイルパスとファイル名をもとに、送信者から所望のファイルを取得して指定したファイルに記録することができる。
【０１７３】
“SelectID”コマンドは、アクセスを許可する受信者のIDを示す“id”の１つの引数から構成される。このコマンドは、P2P Restricted Serverアプリケーションにおいて実行される。P2P Restricted Serverアプリケーションは、受信者に対して、アクセスを許可するか拒否するかを決めるため受信者に対してIDの送信を要求する。受信者はアクセスの許可を取得するために受信者のIDを送信者に送り、送信者はアクセスを許可する受信者に対してのみ、このコマンドを実行する。このコマンドが実行されない受信者のIDは、送信者に対してアクセスを行うことができない。
【０１７４】
“CancelID”コマンドは、アクセスを取り消す受信者のIDを示すidの１つの引数から構成される。このコマンドはP2P Restricted Serverアプリケーションにおいて実行される。P2P Restricted Serverアプリケーションにおいて、このコマンドを実行することにより、すでにアクセスが許可された受信者に対して、アクセスを取り消すことができる。
【０１７５】
“SetMailAccount”コマンドは、アカウント名を示す“accountName”、そのパスワードを示す“password”の２つの引数から構成される。このコマンドを実行することにより、メール・サーバーに対して、メール・アカウントの設定を行い、メールの送信と受信を行うことができる。
【０１７６】
“SendSmtpMessage”は、送信先のアドレスを示す“address”、送信するメールの本文が記録されているファイルのファイルパスとファイル名を示す“messageFileName”の２つの引数から構成される。このコマンドを実行することにより、カードは送信先のアドレスに対して、指定されたファイルをメールの本文として送信する。
【０１７７】
“SendSmtpFile”は、送信先のアドレスを示す“address”、送信するメールの本文が記録されているファイルのファイルパスとファイル名を示す“messageFileName”、添付するファイルのファイルパスとファイル名を示す“appendFileName”の３つの引数により構成される。このコマンドを実行することにより、カードは送信先のアドレスに対して、指定されたファイルをメールの本文とし、指定された添付ファイルに対しbase64変換を施し、バイナリーデータからテキストデータに変換してメールの本文の末尾に添付し、メールの送信を行う。
【０１７８】
“SendSmtpMessageByRegister”は、送信先のアドレスを示す“address”、送信するメールの本文を示す“message”の２つの引数から構成される。このコマンドを実行することにより、カードは送信先のアドレスに対して、コマンドの引数として入力されたデータをメールの本文として送信する。
【０１７９】
“SendSmtpFileByRegister”は、送信先のアドレスを示す“address”、添付するファイルのファイルパスとファイル名を示す“appendFileName”、送信するメールの本文を示す“message”の３つの引数により構成される。このコマンドを実行することにより、カードは送信先のアドレスに対して、コマンドの引数として入力されたデータをメールの本文とし、指定された添付ファイルに対しbase64変換を施し、バイナリーデータからテキストデータに変換してメールの本文の末尾に添付し、メールの送信を行う。
【０１８０】
“ShowDeviceList”は、ネットワーク内のデバイスリストを取得するためのコマンドである。
【０１８１】
“PrintImageByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定した画像を転送、印刷するためのコマンドである。
【０１８２】
“DisplayImageByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定した画像を転送、表示するためのコマンドである。
【０１８３】
“PlayVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、再生するためのコマンドである。
【０１８４】
“StopVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、再生停止するためのコマンドである。
【０１８５】
“PauseOnVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、再生一時停止するためのコマンドである。
【０１８６】
“PauseOffPlayVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、再生一時停止解除するためのコマンドである。
【０１８７】
“SeekVideoByDLNA(time, address, file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送したい箇所(ファイルのアドレス、もしくはビデオの再生開始時間)から再生するためのコマンドである。
【０１８８】
“FastForwardVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、早送り再生するためのコマンドである。
【０１８９】
“SlowForwardVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、スロー再生するためのコマンドである。
【０１９０】
“FastBackwardVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、巻き戻し再生するためのコマンドである。
【０１９１】
“SlowBackwardVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、逆スロー再生するためのコマンドである。
【０１９２】
“StreamingDownloadVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、再生しながら記録するためのコマンドである。
【０１９３】
“SendFileByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したファイルを転送するためのコマンドである。
【０１９４】
“SelectFileByDLNA(file)”は、ネットワーク内のデバイスに対して指定したファイルを公開するためのコマンドである。
【０１９５】
“CancelFileByDLNA(file)”は、ネットワーク内のデバイスに対して指定したファイルを非公開するためのコマンドである。すでに公開しているファイルの公開を取り消すことができる。
【０１９６】
図２６乃至図２７は、Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの構成例を示している。
【０１９７】
“Wi-Fi SD Card Register Identifier”は、このレジスタがＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタであることを示すためのものであり、文字列“WIFISDSR”が記録されている。
【０１９８】
“Size of Wi-Fi SD Card Register”は、このレジスタのサイズを示しており、もしこの値が５１２より大きい場合は、ホストは一回のリードコマンド（ＣＭＤ４８）の実行ではレジスタの値を全て読み出すことができず、リードコマンド（ＣＭＤ４８）をｃｅｉｌ（レジスタサイズ／５１２）回実行する必要がある。
【０１９９】
“WLAN”は、無線ＬＡＮの状態を示す情報であり、図４２に示す“Initial”、“Scan”、“Association”、“STA”、“AP”のいずれかの状態を示す。
【０２００】
“Application”は、現在実行されているアプリケーションを示す情報であり、図４１に示す“Initial Application”、“Server Upload Application”、“P2P Server Application”、“P2P Restricted Server Application”、“P2P Client Application”、“DLNA Server Application”、“DLNA Controller Application”のいずれかの状態を示す。
【０２０１】
“SSID”は、現在接続している、もしくは構成している無線ＬＡＮのSSID名を示す。無線ＬＡＮに非接続状態の場合は、接続もしくは構成するときに用いる予定のSSID名を示している。
【０２０２】
“Network Authentication”は、現在無線ＬＡＮに接続している、または無線ＬＡＮを構成しているネットワークの認証方式とデータの暗号化方式を示し、“Open System and no encryption”、“Open System and WEP”、“Shared Key and WEP”、“WPA and TKIP”、“WPA and AES”、“WPA-PSK and TKIP”、“WPA-PSK and AES”、“WPA2 and TKIP”、“WPA2 and AES”、“WPA2-PSK and TKIP”、“WPA2-PSK and AES”のいずれかが選択される。
【０２０３】
“HTTP Processing”は、カードがHTTPメッセージを送受信しているか、送受信していないかを示す。
【０２０４】
“HTTP Progress”は、HTTPメッセージの送受信の進捗度を百分率で示す。カードは送受信中のHTTPメッセージのヘッダーからメッセージのトータルサイズを知ることができ、現在、送受信済みのHTTPメッセージのサイズから進捗度を計算する。
【０２０５】
“Date”は現在の日付を示す。
【０２０６】
“Time”は現在の時刻を示す。
【０２０７】
“Media Change”は、カード内のNAND Memory ModuleのFAT(File Allocation Table)情報が更新されているかどうかを示す情報である。もし更新されている場合において、ホストはホスト内にキャッシュしているFAT情報があるのであれば、カードのFAT情報をキャッシュし直す必要がある。なお、この情報はアプリケーションを終了する“EndApplication”コマンドか、ステータス情報を初期化する“Reset”コマンドを実行することにより初期値にすることが可能である。
【０２０８】
“SSID List Update”は、“SSID List”が更新されているかどうかを示す情報である。カードは“ScanWiFi”コマンドが実行されると無線ＬＡＮのスキャンを行い、”SSIDLIST”ファイルを作成し、“SSID List Update”情報を設定する。ホストはこの情報を参照することにより、カードのスキャン作業が終了したかどうかを知ることができる。なお、この情報は“ScanWiFi”コマンドを再度実行するか、ステータス情報を初期化する“Reset”コマンドを実行することにより初期値にすることが可能である。
【０２０９】
“File List Update”は、“File List”が更新されているかどうかを示す情報である。カードはP2P Client Applicationにおいて、受信側のアクセスが許可されれば、送信側から“File List”を受信したものを“FILELIST”ファイルとして記録し、“File List Update”情報を設定する。ホストはこの情報を参照することにより、カードが“File List”を取得したかどうかを知ることができる。この情報はアプリケーションを終了する“EndApplication”コマンドか、ステータス情報を初期化する“Reset”コマンドを実行することにより初期値にすることが可能である。
【０２１０】
“Response Data Update”は、“Response Data”が更新されているかどうかを示す情報である。ホストが“SendHttpMessageByRegister”コマンド等のＷｉ−Ｆｉ  ＳＤカードレジスタ経由でのHTTPメッセージの送受信を実行し、カードがHTTPレスポンス・メッセージを受信し、“Response Data”情報を設定する。ホストはこの情報を参照することにより、カードがHTTPレスポンス・メッセージを受信し、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタによって参照できるようになったことを知ることができる。この情報はアプリケーションを終了する“EndApplication”コマンドか、ステータス情報を初期化する“Reset”コマンドを実行することにより初期値にすることが可能である。この情報は、ホストがリードコマンド（ＣＭＤ４８）により、全ての“Response Data”が読み込みが完了したときか、ステータス情報を初期化する“Reset”コマンドを実行することにより初期値にすることが可能である。
【０２１１】
“Signal Strength”は、現在の信号強度を示す情報である。信号なし、レベル１、レベル２、レベル３、レベル４、レベル５のいずれかが設定される。
【０２１２】
“MAC Address”は、Ｗｉ−Ｆｉ  ＳＤカードのＭＡＣアドレスを示す情報である。
【０２１３】
“ID s”は、Ｗｉ−Ｆｉ  ＳＤカードのIDを示す情報である。この値は図３３に示すユーザーが設定可能な“Card Configuration Information”のID情報に設定した値が反映される。
【０２１４】
“DHCP Enabled”は、“DHCP”を有効にしているかどうかを示す情報である。この値は図３３に示すユーザーが設定可能な“Card Configuration Information”の“DHCP”情報に設定した値が反映される。
【０２１５】
“IP Address”は、現在設定されているIPアドレスを示す情報である。
【０２１６】
“Subnet Mask”は、現在設定されているサブネット・マスクを示す情報である。
【０２１７】
“Default Gateway”は、現在設定されているデフォルト・ゲートウェイを示す情報である。
【０２１８】
“Preferred DNS Server”は、現在設定されている優先DNSサーバーを示す情報である。
【０２１９】
“Alternate DNS Server”は、現在設定されている代替DNSサーバーを示す情報である。
【０２２０】
“Time Out”は、カードがタイムアウト処理を行うまでの待ち時間を示す情報である。この値は図３３に示すユーザーが設定可能な“Card Configuration Information”の“Time Out”情報に設定した値が反映される。
【０２２１】
“Power Save mode”は、カードが省電力モードで動作しているかどうかを示す情報である。これは図３３に示すユーザーが設定可能な“Card Configuration Information”の“Power Save mode”情報に設定した値が反映されるが、省電力モードをサポートしないカードは常に通常モードに設定される。
【０２２２】
“WPS mode”は“WPS”で無線ＬＡＮの接続や構成を行う際のWPS方式を示す情報である。この情報は“SetWPS”コマンドにより設定可能であり、設定されたピンコードを用いたピンコード認証を行う“WPS with PIN”、もしくはプッシュボタン認証を行う“WPS with PBC”のいずれかが設定される。なお、“SetWPS”コマンドを実行しない場合は、“WPS”を使用しないモードに設定され、WPSを使わずに無線ＬＡＮ接続や構成を行う。
【０２２３】
“Selected Number of Proxy Server”は、図３３に示すユーザー設定可能な“Card Configuration Information”に記録されている“Proxy Server Name”のうち、どのプロキシ・サーバーを使っているかを示す情報である。これは“Card Configuration Information”の“Selected Proxy Server”情報に設定した値が反映される。
【０２２４】
“Current Mail Account Name”は現在のメール・アカウント名を示す情報である。この情報は“SetMailAccount”コマンドにより設定された値が反映される。
【０２２５】
図２８は、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・レスポンス・ステータス・レジスタの構成例を示している。
【０２２６】
“Wi-Fi SD Card Register Identifier”は、このレジスタがＷｉ−Ｆｉ  ＳＤカード・コマンド・レスポンス・ステータス・レジスタであることを示す情報であり、文字列 “WIFISDRS” が記録されている。
【０２２７】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、ホストはこの情報を参照して、リードコマンド（ＣＭＤ４８）を何回発行して、どれだけのサイズのデータを読み込むべきかが分かる
“Number of Wi-Fi SD Command Response Status”は、１回のＷｉ−Ｆｉ  ＳＤカード・コマンド・レスポンス・ステータス・レジスタの読み込みにより、何個の“Wi-Fi SD Command Response Status”が取得できるかを示す情報である。
【０２２８】
“Wi-Fi SD Command Response Status”は、それぞれ“Wi-Fi SD command id”、“Wi-Fi SD command sequence id”、“Command Response Status”、“Reserved for Vendors for Error Status”から構成されている。
【０２２９】
“Wi-Fi SD command id”は、ホストがＷｉ−Ｆｉ  ＳＤ・カード・コマンド・ライト・レジスタ経由で発行したＷｉ-Ｆｉ  ＳＤコマンドの種類を表し、図２３、図２４、図２５のＷｉ-Ｆｉ  ＳＤコマンドのうちの一つが記録される。
【０２３０】
“Wi-Fi SD command sequence id”は、ホストがコマンドを発行する際に、それぞれのコマンドを識別するためにホストが割り振った値であり、それと同じ値が設定される。
【０２３１】
“Command Response Status”は、ホストが発行したコマンドの状態を示す情報であり、発行したコマンドをカードが問題なく受信できたか、何らかの問題があり受信できなかったか、という状態を示すものである。例えば、発行したコマンドの設定に問題があった場合、またはカード側が他のコマンド処理を行っている最中なので新しいコマンドを受け付けることができない場合などに、コマンドの受信できないことがありうる。
【０２３２】
“Reserved for Vendors for Error Status”は、エラーが発生した場合に、どのような理由でエラーが発生しているのかを示す情報である。
【０２３３】
図２９は、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・プロセス・ステータス・レジスタの構成例を示している。
【０２３４】
“Wi-Fi SD Card Register Identifier”は、このレジスタがＷｉ−Ｆｉ  ＳＤカード・コマンド・プロセス・ステータス・レジスタであることを示す情報であり、文字列 “WIFISDPS” が記録されている。
【０２３５】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、ホストはこの情報を参照して、リードコマンド（ＣＭＤ４８）を何回発行して、どれだけのサイズのデータを読み込むべきかが分かる
“Number of Wi-Fi SD Command Process Status”は、１回のＷｉ−Ｆｉ  ＳＤカード・コマンド・プロセス・ステータス・レジスタの読み込みにより、何個の“Command Process Status”が取得できるかを示す情報である。
【０２３６】
“Wi-Fi SD Command Process Status”は、それぞれ“Wi-Fi SD command id”、“Wi-Fi SD command sequence id”、“Command Proecss Status”、“Reserved for Vendors for Error Status”により構成されている。
【０２３７】
“Wi-Fi SD command id”は、ホストがＷｉ−Ｆｉ  ＳＤカード・カード・コマンド・レジスタ経由で発行したＷｉ-Ｆｉ ＳＤコマンドの種類を表し、図２３、図２４、図２５のＷｉ-Ｆｉ ＳＤコマンドのうちの一つが記録される。
【０２３８】
“Wi-Fi SD command sequence id”は、ホストがコマンドを発行する際に、それぞれのコマンドを識別するためにホストが割り振った値であり、それと同じ値が設定される。
【０２３９】
“Command Process Status”は、ホストが発行したコマンドの状態を示す情報であり、コマンド処理前、コマンド処理中、コマンド処理成功、コマンド処理失敗のいずれかの状態を示すものである。
【０２４０】
“Reserved for Vendors for Error Status”は、エラーが発生した場合に、どのような理由でエラーが発生しているのかを示す情報である。
【０２４１】
図３０は、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタの構成例を示している。
【０２４２】
“Wi-Fi SD Card Identifier”は、このレジスタがＷｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタであることを示す情報であり、文字列 “WIFISDRD” が記録されている。
【０２４３】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、ホストはこの情報を参照して、リードコマンド（ＣＭＤ４８）を何回発行して、どれだけのサイズのデータを読み込むべきかが分かる
“Number of Wi-Fi SD Response Data”は、１回のＷｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタの読み込みにより、何個の“Response Data”が取得できるかを示す情報である。
【０２４４】
“Wi-Fi SD command id”は、ホストがＷｉ−Ｆｉ  ＳＤカード・カード・コマンド・レジスタ経由で発行したＷｉ-Ｆｉ ＳＤコマンドの種類を表し、図２３、図２４、図２５のＷｉ-Ｆｉ ＳＤコマンドのうちの一つが記録される。
【０２４５】
“Wi-Fi SD command sequence id”は、ホストがコマンドを発行する際に、それぞれのコマンドを識別するためにホストが割り振った値であり、それと同じ値が設定される。
【０２４６】
“Size of Response Data”は、“Response data”のサイズを示す情報であり、”Response Data”は、“SendMessageByRegister”コマンドなどのＷｉ−Ｆｉ  ＳＤコマンド・ライト・レジスタ経由でHTTPリクエスト・メッセージを送信し、Ｗｉ−Ｆｉ  ＳＤレスポンス・データ・レジスタ経由でHTTPレスポンス・メッセージを受信するようなコマンドを発行した際に、受信したデータが記録される。
【０２４７】
図３１は、Ｗｉ−Ｆｉ  ＳＤカードIDリスト・レジスタの構成例を示している。
【０２４８】
“Wi-Fi SD Card Register Identifier”は、このレジスタがＷｉ−Ｆｉ  ＳＤカードIDリスト・レジスタであることを示す情報であり、文字列 “WIFISDIL” が記録されている。
【０２４９】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、ホストはこの情報を参照して、リードコマンド（ＣＭＤ４８）を何回発行して、どれだけのサイズのデータを読み込むべきかが分かる
“Number of Receiver IDs”は、リスト中に幾つの受信者IDが含まれているかを示す。つまり、“P2P Restricted Server Application”を実行している送信者に対して、幾つの“P2P Client Application”を実行している受信者がアクセスをリクエストしているかを示す。
【０２５０】
“Receiver ID”は、送信者に対してアクセスをリクエストしている受信者のIDである。受信者のIDは受信者の“Card Configuration Information”により設定される。
【０２５１】
“Receiver MAC Address”は、送信者に対してアクセスをリクエストしている受信者のMACアドレスである。
【０２５２】
“Receiver Permission”は、送信者に対してアクセスをリクエストしている受信者が、送信者からアクセスを許可されているかどうかを示す情報である。つまり、送信者が各受信者に対して、“SelectID”コマンドによりアクセスを許可したかどうかを示す情報である。
【０２５３】
図３２は、Ｗｉ−Ｆｉ  ＳＤカードSSIDヒストリ・レジスタの構成例を示している。
【０２５４】
“Wi-Fi SD Card Register Identifier”は、このレジスタがＷｉ−Ｆｉ  ＳＤカードSSIDヒストリ・レジスタであることを示す情報であり、文字列“WIFISDSH”が記録されている。
【０２５５】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、ホストはこの情報を参照して、リードコマンド（ＣＭＤ４８）を何回発行して、どれだけのサイズのデータを読み込むべきかが分かる
“SSID”は、カードがこれまで無線ＬＡＮに接続または構築した際のSSIDの履歴リストにあるSSIDの名前が記録される。
【０２５６】
“MAC Address”は、カードがこれまで無線ＬＡＮに接続または構築した際のSSIDの履歴リストにあるSSIDに対応したAP（アクセス・ポイント）のMACアドレスが記録される。
【０２５７】
なお、レジスタには記録されないが、カードには各SSIDに対するパスフレーズやチャンネル等の情報が保持されており、ホストから無線ＬＡＮに接続または構築する際に、特定のSSIDが指定されなかった場合に、カードはこれらの情報を用いて接続または構築可能なSSIDの検索を行う。
【０２５８】
図３３は、Ｗｉ−Ｆｉ  ＳＤカード“Configuration Information”の構成例を示している。
【０２５９】
“Wi-Fi SD Card Identifier”は、この情報がＷｉ−Ｆｉ  ＳＤカード“Configuration Information”であることを示す情報であり、文字列“WIFISDCI”が記録されている。
【０２６０】
“Size of Configuration Information”は、Ｗｉ−Ｆｉ  ＳＤカード“Configuration Information”のサイズを表す情報である。
【０２６１】
“ID”は、このカードのIDを設定する情報であり、“P2P Client Application”の実行時に受信者のIDとして、このIDを送信者に送る際に用いられる。
【０２６２】
“DHCP Enabled”は、IP アドレス等の設定にDHCPを用いるかどうかを設定する情報である。
【０２６３】
“IP Address”は、IPアドレスを手動で設定する際に用いる情報である。
【０２６４】
“Subnet Mask”は、“Subnet Mask”を手動で設定する際に用いる情報である。
【０２６５】
“Default Gateway”は、“Default Gateway”を手動で設定する際に用いる情報である。
【０２６６】
“Preferred DNS Server”は、優先DNSサーバーを手動で設定する際に用いる情報である。
【０２６７】
“Alternate DNS Server”は、代替DNSサーバーを手動で設定する際に用いる情報である。
【０２６８】
“Time Out”は、カードがタイムアウト処理を行うまでの待ち時間を設定する情報である。この値は図２７に示すＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの“Time Out”情報に反映され、ホストが参照することができる。
【０２６９】
“Power Save mode”は、カードが省電力モードで動作させるかどうかを設定する情報である。省電力モードをサポートしないカードにおいては、この設定は無視される。
【０２７０】
“Number of Proxy Servers”は、このカードに設定するプロキシ・サーバーの数である。
【０２７１】
“Selected Proxy Server”は、このカードに設定するプロキシ・サーバーのうち、現在はどのプロキシ・サーバーを使うかを示す情報である。(例えばリストの番号が示される)
“Length of Proxy Server Name”は、設定するプロキシ・サーバー名の文字数である。
【０２７２】
“Proxy Server Name”は、設定するプロキシ・サーバー名である。
【０２７３】
“Port Number”は、設定するプロキシ・サーバーのポート番号である。
【０２７４】
“Mail Address”は、メールの送受信を行うユーザーのメール・アドレスを設定する。
【０２７５】
また、図示しないが、カードが接続可能なWebサービスのホスト名、そのWebサービスに接続に必要な情報(例えば、ユーザーアカウント名、パスワード、トークンデータ)なども記録することができる。
【０２７６】
なお、一部を除き、これらの設定は図２６、図２７に示すＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの各情報に対応しており、実際にどの値で動作しているかは、リードコマンド（ＣＭＤ４８）を発行してＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタを参照することができる。
【０２７７】
図３４は、ライトコマンド（ＣＭＤ４９）を用いてＷｉ−Ｆｉ  ＳＤカードのコマンドを発行するとき、つまり、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタにアクセスしたときのタイミングチャートを示している。ここで、図中のＣＭＤとＤＡＴはカードインターフェース上のコマンドバスとデータバスを示し、カード動作はそのときのカードの動作状態を示している。
【０２７８】
ホスト２０からライトコマンド（ＣＭＤ４９）が発行されると、ＳＤカード１１はレスポンス（Ｒ１）をホスト２０に返す。
【０２７９】
次に、ホスト２０は、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタのデータ（Ｗｉ−Ｆｉ  ＳＤカード・コマンド）をＣＲＣとともにＳＤカード１１に送る。この送られたデータは、ＳＤカード１１の指定された拡張レジスタに記録される。ＳＤカード１１は、送られたデータの解析を行うため、データバスがビジー状態となる。このため、ホスト２０から追加のコマンドを発行できない。
【０２８０】
ＳＤカード１１は、データの解析を行った後、コマンドを受け取ることができれば“０ｘ０１”を、受け取ることができなければ“０ｘ０２”をＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタ上のコマンド・ステータスに設定する。もし、コマンドを受け取ることができれば、ＳＤカード１１はコマンドの実行処理に移る。コマンドの実行状況は、図２４乃至図２８に示すＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタ上のプロセス・ステータスによって参照することができる。コマンドの実行処理が完了すると、プロセス・ステータスからコマンドの実行状況が消去され、代わりに実行結果がＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタにおいて、別のステータス情報に反映される。
【０２８１】
図３５は、図１７に対応するものであり、複数のライトコマンド（ＣＭＤ４９）により、Ｗｉ−Ｆｉ  ＳＤカード・コマンドを発行したとき、つまり、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタのサイズが５１２バイトを超える場合のタイミングチャートを示している。
【０２８２】
ホスト２０からライトコマンド（ＣＭＤ４９）が発行されると、ＳＤカード１１は、レスポンス（Ｒ１）をホスト２０に返す。
【０２８３】
次に、ホスト２０は、先ず、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタのデータ（Ｗｉ−Ｆｉ  ＳＤカード・コマンド）のうち、１／ｎをＣＲＣとともにＳＤカード１１に送る。すなわち、５１２バイトを超えるデータのうちの最初の５１２バイトが転送される。この送られたデータは、ＳＤカード１１の指定された拡張レジスタに記録される。このとき、ＳＤカード１１は送られたデータの解析を行うためデータバスがビジー状態となり、ホスト２０から追加のコマンドの発行はできない。この状態において、ＳＤカード１１は、データを解析する。
【０２８４】
最初のデータには、データサイズ（Ｎｒ）が記録されているため、データ解析により、ライトコマンド（ＣＭＤ４９）が続いて発行されることが分かる。この後、ビジー状態が解除され、次のライトコマンド（ＣＭＤ４９）の発行待ち状態となる。ホスト２０は、ビジー状態が解除された後、上記と同様にライトコマンド（ＣＭＤ４９）を発行し、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタのデータのうち、残りのデータを転送する。ホストデバイス２０から最後のライトコマンド（ＣＭＤ４９）が発行され、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタのデータのうち、最後のデータ（ｎ／ｎ）が転送された後、ＳＤカード１１は、データ（コマンド）を解析し、コマンドの処理を実行する。
【０２８５】
図３６は、図２０に対応するものであり、１つのライトコマンド（ＣＭＤ４９）により発行されたデータに、複数のＷｉ−Ｆｉ  ＳＤカード・コマンドが含まれる場合のタイミングチャートを示している。
【０２８６】
複数のＷｉ−Ｆｉ  ＳＤカード・コマンドの発行は、例えば複数のファイルの転送を連続的に行うときなどに用いられる。
【０２８７】
ホスト２０からライトコマンド（ＣＭＤ４９）が発行されると、ＳＤカード１１は、レスポンス（Ｒ１）をホストデバイス２０返す。
【０２８８】
次に、ホスト２０は、Ｗｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタのデータをＣＲＣとともにＳＤカード１１に送る。この送られたデータは、ＳＤカード１１の指定された拡張レジスタに記録される。ＳＤカード１１は、送られたデータ（コマンド＃１〜＃ｍを解析するため、データバスがビジー状態とされ、ホスト２０により追加のコマンドは発行できない。
【０２８９】
ＳＤカード１１は、データの解析を行った後、コマンドを受け取ることができれば“０ｘ０１”を、受け取ることができなければ“０ｘ０２”を発行された複数のコマンドに対して、Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタ上のコマンド・ステータスにそれぞれ設定する。もし、コマンドを受け取ることができる場合、ＳＤカード１１は、各コマンドを実行する。全てのコマンドの実行状況は、Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタ上のプロセス・ステータスによって参照することができる。
【０２９０】
１つのコマンドの実行処理が完了すると、プロセス・ステータスからコマンドの実行状況が消去され、代わりに実行結果が、Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタ上の別のステータス情報に反映される。
【０２９１】
次に、まだ実行していないコマンドが実行される。図３２は、一例として、コマンドの実行処理を連続して行うタイミングチャートを示したが、コマンドの実行処理は並列して行うことも可能である。また、ＳＤカード１１がコマンドの実行順序を最適化して実行することも可能である。
【０２９２】
図３６の実施形態によれば、１つのコマンドにより発行されたデータに、複数のＷｉ−Ｆｉ  ＳＤカード・コマンドが含まれているため、効率良くＷｉ−Ｆｉ  ＳＤカード・コマンドを転送し、実行することが可能である。
【０２９３】
図３７は、リードコマンド（ＣＭＤ４８）を用いて、Ｗｉ−Ｆｉ  ＳＤカード１１からデータを取得した場合、つまり、Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタ、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタ、Ｗｉ−Ｆｉ  ＳＤカードＩＤ・リスト・レジスタ、Ｗｉ−Ｆｉ  ＳＤカードＳＳＩＤ・ヒストリ・レジスタにアクセスした場合のタイミングチャートを示している。
【０２９４】
ホスト２０からリードコマンド（ＣＭＤ４８）が発行されると、ＳＤカード１１は、レスポンス（Ｒ１）をホストデバイス２０返す。
【０２９５】
次に、ＳＤカード１１は、リードコマンド（ＣＭＤ４８）の引数に応じて、Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタ、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタ、Ｗｉ−Ｆｉ  ＳＤカードＩＤ・リスト・レジスタ、Ｗｉ−Ｆｉ  ＳＤカードＳＳＩＤ・ヒストリ・レジスタのいずれかのデータ（例えばステータス）を拡張レジスタに準備する。さらに、ＳＤカード１１は、この拡張レジスタ内のデータをＣＲＣとともにホスト２０に送る。
【０２９６】
図３８は、図１７に対応するものであり、複数のリードコマンド（ＣＭＤ４８）により、Ｗｉ−Ｆｉ  ＳＤカードのデータを取得する場合、つまり、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタ等のサイズが５１２バイトを超える場合のタイミングチャートを示している。
【０２９７】
ホスト２０からリードコマンド（ＣＭＤ４８）が発行されると、ＳＤカード１１は、レスポンス（Ｒ１）をホスト２０に返す。
【０２９８】
次に、ＳＤカード１１は、リードコマンド（ＣＭＤ４８）の引数に応じて、Ｗｉ−Ｆｉ  ＳＤカード・レスポンス・データ・レジスタ等のデータを拡張レジスタに準備し、この拡張レジスタのデータをＣＲＣとともにホスト２０に送る。
【０２９９】
ホスト２０は、受け取ったデータを解析する。最初のデータには、データサイズ（Ｎｒ）が記録されているため、リードコマンド（ＣＭＤ４８）を続いて発行する必要があることが分かる。このため、データの解析終了後、次のリードコマンド（ＣＭＤ４８）が発行される。以降の動作は、図３１に示すライトコマンド（ＣＭＤ４９）の動作と同様であるため、説明は省略する。
【０３００】
図３８に示す実施形態によれば、データ長が５１２バイトを超えるデータを確実に読み取ることが可能である。
【０３０１】
図３９は、Ｗｉ−Ｆｉ  ＳＤカードがサポートするアプリケーションの一例を示している。
【０３０２】
図４０は、ホストデバイスの起動時の動作を示している。
【０３０３】
ホスト２０は、起動されると、リードコマンド（ＣＭＤ４８）を発行し、拡張レジスタ３１のページ０のデータを読み込み、ＳＤカード１１が有する拡張機能としての無線通信機能を確認する（Ｓ１１、Ｓ１２）。すなわち、ＳＤカード１１がＷｉ−Ｆｉ機能や、Ｂｌｕｅｔｏｏｔｈ機能など、どのような無線通信機能を実装しているかが確認される。次に、ホスト２０がＳＤカード１１の拡張機能に対応しているかどうかが判別される（Ｓ１３）。この結果、拡張機能に対応している場合、その拡張機能を有効とさせるため、拡張レジスタ３１のページｉ（ｉは０以外）のデータが読み込まれ（Ｓ１４）、ＳＤカード１１が対応する例えば規格名、バージョン、プロファイル、デバイス情報などが確認される（Ｓ１５）。これに基づき、ホスト２０は、ホスト２０が所有する最適なドライバを有効とする（Ｓ１６）。これにより、ＳＤカード１１の拡張機能にアクセスすることが可能となる。
【０３０４】
次に、拡張レジスタ３１の全てのページの機能を確認したかどうかが判別される（Ｓ１７）。この結果、残りのページがある場合、次のページにおけるカードの機能が確認され（Ｓ１８、Ｓ１６）、全てのページが確認されている場合は、機能設定が終了される。
【０３０５】
図４１は、各アプリケーションの状態遷移図である。
【０３０６】
図３９に示す各アプリケーションは、“Initial Application”を初期状態とし、“StartApplication”コマンドにより各アプリケーションに遷移、“EndApplication”により初期状態に戻る構成になっている。これにより、各アプリケーションが同時に実行されることを避けることができ、カードの実装の負荷を低減し、ホストのアプリケーションの使用方法を単純化することができる。
【０３０７】
図４２は、無線ＬＡＮの状態遷移図である。
【０３０８】
無線ＬＡＮの状態は“Initial/Failed”、“Scan”、“AP”、“STA”、“Association”に分類される。
【０３０９】
“Initial/Failed”は、無線ＬＡＮの初期状態を示す、ただし何らかの処理が失敗し場合も初期状態と同じ状態に遷移する。
【０３１０】
“Scan”は、“ScanWiFi”、コマンドによりスキャンを実行中であることを示す状態である。スキャンが終了し、”SSIDLIST”ファイルを出力すると初期状態に戻る。
【０３１１】
“AP”はアクセスポイントとして無線ＬＡＮを構築している状態である。初期状態から、インフラストラクチャのAPとなるためのコマンドの実行、またはAPとなる必要があるアプリケーションを起動するコマンドの実行を行った状態である。
【０３１２】
“Association”は、インフラストラクチャのSTAとして無線ＬＡＮに接続するためにアソシエーションを行うとともにDHCPサーバーからIPアドレス等の設定を行っている状態である。これが成功するとSTAとして無線ＬＡＮに接続している状態に遷移し、失敗すると初期状態に戻る。
【０３１３】
なお、現在の無線ＬＡＮの状態は図２４に示すＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタのWLAN情報に反映され、ホストはリードコマンド（ＣＭＤ４８）を発行することで、いつでも無線ＬＡＮの状態を知ることができ、現在の無線ＬＡＮの状態に応じたコマンドを実行することができる。
【０３１４】
図４３は、Ｗｉ−Ｆｉ  ＳＤカード内のディレクトリ構成を示している。
【０３１５】
“DCIM”ディレクトリはDCF（Design rule for Camera File system）規格で定められる写真データを記録するためのディレクトリである。また、MISCファイルはDPOF(Digital Print Order Format)規格が定める写真プリントのためのデータや他のデータを記録するためのディレクトリである。“WIFISD”ディレクトリは本発明におけるＷｉ−Ｆｉ  ＳＤカードに関連するデータを記録するためのディレクトリである。
【０３１６】
“WIFISD”ディレクトリの下には、“DOWNLOAD”ディレクトリ、“CONFIG”ファイル、“SSIDLIST”ファイル、“FILELIST”ファイルが記録されている。
【０３１７】
“DONWLOAD”ディレクトリは、相手先サーバーから受信するHTTPレスポンス・メッセージを記録するためのディレクトリである。“SendHttpMessage”コマンド、“SendHttpFile”コマンド、“SendHttpSSLMessage”コマンド、“SendHttpSSLFile”コマンドを実行すると、カードは相手先サーバーに対してHTTPリクエスト・メッセージを送信し、カードはその相手先サーバーからのHTTPレスポンス・メッセージを“RESPONSE”ディレクトリの下にファイルとして保存する。このときファイルにはHTTPリクエスト・ライン、HTTPメッセージ・ヘッダとHTTPメッセージ・ボディが記録され、このときのファイル名は発行されたコマンドの“Wi-Fi SD command sequence id”を用いることにより、他のHTTPレスポンス・メッセージと区別され、ホストがHTTPレスポンス・メッセージを参照することが可能になる。カードはファイルを記録する際に、HTTPレスポンス・メッセージを解析し、HTTPレスポンス・メッセージに添付されるデータを抽出して、別のファイルとして保存することも可能である。例えば、HTTPレスポンス・メッセージにMIMEタイプがimage/jpegであるようなデータが添付されていた場合、カードはMIMEタイプのサブタイプを識別しJPEGディレクトリの下にそのデータを保存する。このときのファイル名は“DL000000.JPG”〜“DL999999.JPG”のように規定の連番を用いる。もしHTTPレスポンス・メッセージにダウンロードしたファイルのファイル名情報が含まれる場合、そのファイル名を用いても良い。もし、MIMEタイプが分からないデータが含まれていた場合、“UNDEF”ディレクトリに全て保存することとする。ことのきのファイル名も“DL000000”〜“DL999999”の規定の連番を用いる。
【０３１８】
“CONFIG”ファイルは、図３３に示した“Wi-Fi SD Card Configuration Information”を記録するファイルであり、ホストが編集することができる。また、ホストが“StartApplication”コマンドを実行して無線ＬＡＮの接続や構築を行った際に“Card Configuration Information”の設定情報がその接続と設定に用いられる。
【０３１９】
“SSIDLIST”ファイルは、“ScanWiFi”コマンドを実行した際に、接続可能なSSID名、信号強度、“AP”のMACアドレスをリストとしてカードがファイルに出力するときの出力ファイルである。ホストはこのリストを参照し、接続するSSID名を選択し、“SetSSID”コマンドで設定することができる。
【０３２０】
“FILELIST”ファイルは、“P2P [Restricted] Server Application”を実行する送信者が、“P2P Client Application”実行する受信者に対し、送信可能なファイル(例えば写真のデータ)のリストをファイルとして記録してものである。“FILELIST”ファイルには、送信するファイルのファイルパスとファイル名とともに、そのファイルのサムネール・ファイルのファイルパスとファイル名、そのファイルのメタデータ・ファイルのファイルパスとファイル名を記録することが可能である。これにより、受信者は、送信者からのファイルの取得を行う前に、サムネール・ファイルのみを受信し、サムネールを確認しながら必要なファイルのみを選択して受信することできる。更に、ファイルの取得を行う前に、送信者からメタデータ・ファイルのみを取得し、メタデータ・ファイルに含まれる情報(例えば写真の撮影時間情報、撮影場所情報、撮影機器情報、撮影内容情報等)を用いて取得可能なファイルを分類し、取得するファイルを選択するための階層メニューをユーザーに提供することが可能である。なお、サムネール・ファイルやメタデータが存在しない場合は省略可能である。
【０３２１】
図４４は、Ｗｉ−Ｆｉ  ＳＤカードのコマンド処理の流れを示す図である。
【０３２２】
１．ホストは、ライトコマンド（ＣＭＤ４９）を用いてＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタにおける“Wi-Fi Command Information”を書き込むことにより、Ｗｉ−Ｆｉ  ＳＤコマンドをカードに対して発行する。
【０３２３】
２．コマンドが発行されると、発行されたコマンドをカードが受けとることができたかどうかがＷｉ−Ｆｉ  ＳＤカード・コマンド・レスポンス・ステータス・レジスタの“Command Response Status”にカードによって登録される。
【０３２４】
３．ホストは、リードコマンド（ＣＭＤ４８）を用いてＷｉ−Ｆｉ  ＳＤカード・コマンド・レスポンス・ステータス・レジスタにおける“Command Response Status”を読み込み、ホストが発行したコマンドをカードが受け取ることができたか、何らかの理由（発行したコマンドと引数に誤りがあった、またはカードがコマンドを既に処理中であるため新規のコマンドを受け付けない状態である等）で受け取ることができなかったかを確認することができる。
【０３２５】
４．カードが受け取ることができたコマンドは、その処理状況をＷｉ−Ｆｉ  ＳＤカード・コマンド・プロセス・ステータス・レジスタにおける“Command Process Status”にカードによって登録される。
【０３２６】
５．ホストは、リードコマンド（ＣＭＤ４８）を用いてＷｉ−Ｆｉ  ＳＤカード・コマンド・プロセス・ステータス・レジスタにおける“Command Process Status”を読み込み、ホストが発行したコマンドの処理状況（処理前か、処理中か、処理後成功したか、処理後失敗したか等）を確認することができる。
【０３２７】
６．処理が終わったコマンドは順次Ｗｉ−Ｆｉ  ＳＤカード・コマンド・プロセス・ステータス・レジスタから削除してもよいし、後から参照する必要があるものは残しても良い。また、コマンド処理が終わった結果、Ｗｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの“Meida Change”、“SSID List Update”、“File List Update”、“Response Data Update”等の情報が更新される。
【０３２８】
図４５は、Ｗｉ−Ｆｉ  ＳＤカードの設定の流れを示す図である。
【０３２９】
ホストはカード内に“CONFIG”ファイルが存在しなければ、“Card Configuration Information”を含む“CONFIG”ファイルを生成する。このとき、“Card Configuration Information”の各情報はホストが指定した値(指定すべき値がない場合は初期値)が設定される。無線ＬＡＮが接続、または構成された場合、“Card Configuration Information”に設定した値がカードに自動的に設定される。もし“CONFIG”ファイルが存在しない場合は、カードは“Card Configuration Information”に初期値が設定されているものとして動作する。
【０３３０】
ただし、SSIDとパスフレーズに関しては、無線ＬＡＮ接続または構築する前に、ホストは“SetSSID”コマンドを実行してホストに記録されているSSIDとパスフレーズを設定する必要がある。これはパスフレーズをファイルに記録して外部に流出することを避けるためである。
【０３３１】
設定したSSIDや“Card Configuration Information”の各情報が、無線ＬＡＮ接続・構築後にどのように設定されているかは、リードコマンド（ＣＭＤ４８）を用いてＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタを参照することにより知ることができる。
【０３３２】
更に、設定したSSIDの履歴は、パスフレーズと“AP”のMACアドレス情報とともに、カード内に記録され、“SetSSID”コマンドでSSIDに関する情報を設定しない場合でも、過去の履歴を用いて無線ＬＡＮ接続・構築をおこなうことができる。なお、この情報はリードコマンド（ＣＭＤ４８）によりＷｉ−Ｆｉ  ＳＤカードSSIDヒストリ・レジスタを参照することができ、不要なSSID（例えば既に存在しないSSIDである場合）は“RemoveSSID”コマンドを用いて、特定のSSIDをＷｉ−Ｆｉ  ＳＤカードSSIDヒストリ・レジスタから削除することができる。
【０３３３】
図４６は、P2Pアプリケーションの流れを示す図である。
【０３３４】
１：  送信ホストはカード内に受信カードがアクセス可能なファイルをリストにした“FILELIST”ファイルを作成する。
【０３３５】
２：  送信ホストは、無線ＬＡＮを構築するため、ＣＭＤ４９により“SetSSID”コマンドを発行して、送信カードにSSID名、パスフレーズ、認証方式を設定する。
【０３３６】
３：  送信ホストは“P2P Restricted Server Application”または“P2P Server Application”を起動するためにＣＭＤ４９経由で“StartApplication”コマンドを発行する。
【０３３７】
４：  受信ホストは接続可能な無線ＬＡＮをスキャンするため、ＣＭＤ４９により“ScanWiFi”コマンドを発行する。
【０３３８】
４．１：  受信カードは無線ＬＡＮに接続するためにスキャンを行う。(図示せず)
４．１．１：  受信カードは接続可能なSSID名をリストにした“SSIDLIST”ファイルをカード内に作成する。(図示せず)
５：  受信ホストはＣＭＤ４８によりＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの“SSID List Update”を読み、受信カードによる無線ＬＡＮのスキャンが問題なく完了していることを確認する。
【０３３９】
６：  受信ホストはカード内の“SSIDLIST”ファイルを読み込む。
【０３４０】
７：  受信ホストは“SSIDLIST”ファイルからSSIDを選択し、受信カードに対しSSIDとパスフレーズを設定するためにＣＭＤ４９により“SetSSID”コマンドを発行する。ここで、受信ホストがSSIDの選択を行わなかった場合は、受信カードはカード内に記録されている過去に設定されたSSIDの履歴である“SSID History”にあるSSIDの設定を用いる。また、受信カードと送信カードの両方がWPSによってSSIDの設定を行うこともできる。
【０３４１】
８：  受信ホストは“P2P Client Application”を起動するためにＣＭＤ４９により“StartApplication”コマンドを実行する。
【０３４２】
８．１：  受信カードは送信カードに対してアソシエーションを要求する。
【０３４３】
８．２：  受信カードが送信カードに接続すると、受信カードはDHCPサーバーである送信カードに対してIPアドレスの割付を要求する。
【０３４４】
８．３：  IPアドレスが割り当てられると、受信カードは送信カードに受信者のIDを通知するための下記のHTTPリクエスト・メッセージを送信する。ここで、“ReceiverID”は受信者の“ID”、“ReceiverMACaddress”は受信者のMACアドレス、“SenderIPaddress”は送信者のIPアドレスが設定される。
【０３４５】
―――――――――――――――――――――――――――――――――――――――
GET http://SenderIPaddress/command.cgi?op=0&id=ReceiverID&mac=ReceiverMACaddress
―――――――――――――――――――――――――――――――――――――――
９：  送信ホストはＣＭＤ４８によりＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの“ID List Update”を読み、“ID List”が更新されていることを確認する。(受信相手を制限しないP2P Restricted Serverアプリケーションの場合、この処理は省略できる)
１０：  “ID List”が更新されていれば、送信ホストはＣＭＤ４８によりＷｉ−Ｆｉ  ＳＤカードIDリスト・レジスタを読み込む。(受信相手を制限しないP2P Restricted Serverアプリケーションの場合、この処理は省略できる)
１１：  送信ホストはＣＭＤ４９により“SelectID”コマンドを発行して、リスト中の受信者のIDの中から受信を許可する受信者のIDを選択する。(受信相手を制限しないP2P Restricted Serverアプリケーションの場合、この処理は省略できる)
１１．１：  送信カードは下記のHTTPリクエスト・メッセージを受信カードに送信し、受信が許可されてことを通知する。ここで“ReceiverIPaddress”は受信者のIPアドレスを示す。(受信相手を制限しないP2P Restricted Serverアプリケーションの場合、この処理は省略できる)
―――――――――――――――――――――――――――――――――――――――
GET http://ReceiverIPaddress/command.cgi?op=1
―――――――――――――――――――――――――――――――――――――――
１１．１．１：  もし受信が許可されれば、受信カードは送信カードから“FILELIST”ファイルをダウンロードするため以下のHTTPリクエスト・メッセージを送信する。ここで“SenderIPaddress”は送信者のIPアドレスを示す。(受信相手を制限しないP2P Restricted Serverアプリケーションの場合、受信が許可されたものとしてこの処理が行われる)
１２：  受信ホストはＣＭＤ４８によりＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの“File List Update”を読み、“FILELIST”ファイルのダウンロードが完了したことを確認する。
【０３４６】
１３：  受信ホストはカード内の“FILELIST”ファイルを読み込む。
【０３４７】
１４：  受信ホストは、ＣＭＤ４９により“GetFile”コマンドを発行して、“FILELIST”ファイルに書かれた情報（URL）に基づき、サムネール・ファイルやメタデータ・ファイルのダウンロードを指示する。
【０３４８】
１４．１：  受信カードは送信カードに下記のHTTPリクエスト・メッセージを送信し、指定されたサムネール・ファイルやメタデータ・ファイルをダウンロードしてカードに記録する。ここで、“SenderIPaddress”は送信者のIPアドレス、“filepath”はファイルパス、“filename”はファイル名を示す。
【０３４９】
―――――――――――――――――――――――――――――――――――――――
GET http://SenderIPaddress/filepath/filename
―――――――――――――――――――――――――――――――――――――――
１５：  受信ホストはＣＭＤ４８によりＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの“Current HTTP”またはＷｉ−Ｆｉ  ＳＤカード・コマンド・プロセス・ステータス・レジスタの“Command Process Status”を読み、サムネール・ファイルかメタデータ・ファイルのダウンロードが完了したことを確認する。以上のプロセスはサムネール・ファイルとメタデータ・ファイルの数だけ繰り返す。
【０３５０】
１６：  受信ユーザーは事前に取得したサムネールやメタデータによって受信するファイルを選択する。受信ホストは、ＣＭＤ４９により“GetFile”コマンドを発行して、“FILELIST”ファイルに書かれた情報（URL）に基づき、ユーザーによって選択されたファイルのダウンロードを指示する。
【０３５１】
１６．１：  受信カードは送信カードに下記のHTTPリクエスト・メッセージを送信し、指定されたファイルをダウンロードしてカードに記録する。ここで、“SenderIPaddress”は、送信者のIPアドレス、“filepath”はファイルパス、“filename”はファイル名を示す。
【０３５２】
―――――――――――――――――――――――――――――――――――――――
GET http://SenderIPaddress/filepath/filename
―――――――――――――――――――――――――――――――――――――――
１７：  受信ホストはＣＭＤ４８によりＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの“Current HTTP”またはＷｉ−Ｆｉ  ＳＤカード・コマンド・プロセス・ステータス・レジスタの“Command Process Status”を読み、ユーザーにより指定されたファイルのダウンロードが完了したことを確認する。以上のプロセスはユーザーに指定されたファイルの数だけ繰り返す。
【０３５３】
１８．  受信カードによる全てのファイルのダウンロードが完了すると、受信ホストはＣＭＤ４９により“EndApplication”コマンドを発行して、アプリケーションの終了と無線ＬＡＮの接続の終了を指示する。
【０３５４】
１８．１：  受信カードは送信カードに対し、下記のHTTPリクエスト・メッセージを送信し、ダウンロードが完了したことを通知する。ここで“SenderIPaddress”は送信者のIPアドレスを示す。
【０３５５】
―――――――――――――――――――――――――――――――――――――――
GET http://SenderIPaddress/command.cgi?op=3
―――――――――――――――――――――――――――――――――――――――
１８．１．１：  接続している全ての受信カードからダウンロード完了が通知され、送信カードは無線ＬＡＮの構築を終了する。
【０３５６】
１９：  送信ホストはＣＭＤ４８によりＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの“WLAN”を読み、無線ＬＡＮの構築が終了したことを確認する。
【０３５７】
２０：  無線ＬＡＮの構築が終了していれば、送信ホストはＣＭＤ４９により“EndApplication”コマンドを発行して、アプリケーションの終了を指示する。
【０３５８】
図４７は、Server Uploadアプリケーションの流れを示す図である。
【０３５９】
１：  ホストは接続可能な無線ＬＡＮをスキャンするためにＣＭＤ４９により“ScanWiFi”コマンドを発行する。
【０３６０】
１．１：  カードは無線ＬＡＮに接続するためにスキャンを行う。
【０３６１】
１．１．１：  カードは接続可能なSSID名をリストにした“SSIDLIST”ファイルをカード内に作成する。
【０３６２】
２：  ホストはＣＭＤ４８によりＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの“SSID List Update”を読み、カードによる無線ＬＡＮのスキャンが問題なく完了していることを確認する。
【０３６３】
３：  ホストはカード内の“SSIDLIST”ファイルを読み込む。
【０３６４】
４：  ホストは“SSIDLIST”ファイルからSSIDを選択し、カードに対しSSIDとパスフレーズを設定するため、ＣＭＤ４９により“SetSSID”コマンドを発行する。ここで、ホストがSSIDの選択を行わなかった場合は、カードはカード内に記録されている過去に設定されたSSIDの履歴である“SSID History”にあるSSIDの設定を用いる。また、カードと接続する“AP”の両方が“WPS”によってSSIDの設定を行うこともできる。
【０３６５】
５：  ホストはServer Upload Applicationを起動するためＣＭＤ４９により“StartApplication”コマンドを実行する。
【０３６６】
５．１：  カードは“AP”に対してアソシエーションを要求する。
【０３６７】
５．２：  カードが“AP”に接続すると、カードはDHCPサーバーである“AP”に対してIPアドレスの割付を要求する。
【０３６８】
６：  ホストは、ＣＭＤ４８によりＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの“WLAN”を読み、無線ＬＡＮ接続が問題なく行われていることを確認する。
【０３６９】
７：  “SendHttpMessage”、“SendHttpFile”、“SendHttpSSLMessage”、“SendHttpSSLFile” コマンドを発行する場合は、ホストは相手サーバーに送信するHTTPリクエスト・メッセージの内容を含むファイルをカード内に作成する。一方、“SendHttpMessageByRegister”、“SendHttpFileByRegister”、 “SendHttpSSLMessageByRegister”、“SendHttpSSLFileByRegister”コマンドを発行する場合は、ホストは相手サーバーに送信するHTTPリクエスト・メッセージをファイルではなくホスト・デバイス内のメモリに作成する。
【０３７０】
８：  ホストは、ＣＭＤ４９により“SendHttpMessage”、“SendHttpFile”、 “SendHttpSSLMessage”、“SendHttpSSLFile”、“SendHttpMessageByRegister”、 “SendHttpFileByRegister”、“SendHttpSSLMessageByRegister”、 “SendHttpSSLFileByRegister”コマンドを発行して、カードに対して、HTTPリクエスト・メッセージの送信を指示する。
【０３７１】
８．１：  カードはカード内に作成されたファイル、もしくはＷｉ−Ｆｉ  ＳＤカード・コマンド・ライト・レジスタからHTTPリクエスト・メッセージを読み込み、相手サーバーに送信する。このとき、“SendHttpFile”、“SendHttpSSLFile”、 “SendHttpFileByRegister”、“SendHttpSSLFileByRegister”コマンドの場合は、HTTPリクエスト・メッセージ内の特定の文字列を指定されたカード内のファイルに置換して、つまりHTTPリクエスト・メッセージにカード内のファイルを添付して送信する。
【０３７２】
８．１．１：  相手サーバーは、送信されたHTTPリクエスト・メッセージに対し、HTTPレスポンス・メッセージをカードに返信する。ここで、カードが“SendHttpMessage”、 “SendHttpFile”、“SendHttpSSLMessage”、“SendHttpSSLFile”コマンドを発行していた場合は、カードはHTTPレスポンス・メッセージをカード内にファイルとして記録する。一方、 “SendHttpMessageByRegister”、“SendHttpFileByRegister”、 “SendHttpSSLMessageByRegister”、“SendHttpSSLFileByRegister”コマンドを発行していた場合は、カードはHTTPレスポンス・メッセージをＷｉ−Ｆｉ  ＳＤ カード・レスポンス・データ・レジスタの“message”に記録する。
【０３７３】
９：  ホストは、ＣＭＤ４８によりＷｉ−Ｆｉ  ＳＤカード・ステータス・レジスタの“Current HTTP”またはＷｉ−Ｆｉ  ＳＤカード・コマンド・プロセス・ステータス・レジスタの“Command Process Status”を読み、HTTPリクエスト・メッセージの送信とHTTPレスポンス・メッセージの受信が完了したことを確認する。
【０３７４】
１０：  ホストはファイルに記録されたHTTPレスポンス・メッセージを読み込む。または、ＣＭＤ４８によりHTTPレスポンス・メッセージに記録されたHTTPレスポンス・メッセージを読み込む。以上のプロセスはユーザーに指定されたファイルの数だけ繰り返す。
【０３７５】
１１：  ホストは、ＣＭＤ４９により“EndApplication”コマンドを発行して、アプリケーションの終了と無線ＬＡＮの接続の終了を指示する。
【０３７６】
図４８は、P2Pアプリケーションにおいて、送信側ホストの“File List”生成処理とファイル送信処理のフローを示す図である。
【０３７７】
送信ホストは、P2P Serverアプリケーション、またはP2P Restricted Serverアプリケーションを起動する。
【０３７８】
更に、送信ホストはユーザーに送信するファイルを選択するためのメニューを表示し、それに従い送信ユーザーは送信するファイルを選択する（Ｓ２１）。
【０３７９】
送信ホストは選択されたファイルのファイルパスとファイル名を抽出する（Ｓ２２）。更に、送信ホストは選択されたファイルのメタデータを抽出する（Ｓ２３）。
【０３８０】
ここで、選択されたファイルのメタデータ・ファイルが存在するのであれば、メタデータ・ファイルのファイル名とファイルパスを抽出する。
【０３８１】
一方、サムネールに関しては、送信ホストは、まず選択されたファイルのサムネールがカード内に存在するか確認する（Ｓ２４）。もし存在するのであれば送信用のサムネール・ファイルとしてファイルパスとファイル名を抽出する（Ｓ２５）。次に、サムネールが存在しないのであれば、送信ホストはファイル内にサムネールが含まれるかを確認し（Ｓ２６）、サムネールが含まれるのであれば、これを送信用サムネール・ファイルとしてカード内にコピーしファイルパスとファイル名を抽出する（Ｓ２７）。ファイル内にサムネールが含まれないのであれば、送信ホストはファイルのサムネールを生成しカード内に保存しファイルパスとファイル名を抽出する（Ｓ２８）。
【０３８２】
送信ホストは以上の抽出したデータから“FILELIST”ファイルを作成しカード内に保存する（Ｓ２９）。
【０３８３】
送信カードは受信カードからのリクエストに応じて“FILELIST”ファイルを受信カードに送信する（Ｓ３０）。更に、受信カードからのリクエストに応じて“File List”に記載されたファイルを受信カードに送信する。
【０３８４】
全ての送信が完了すると、送信ホストはP2P Serverアプリケーション、またはP2P Restricted Serverアプリケーションを終了する。
【０３８５】
図４９は、P2Pアプリケーションにおいて受信側ホストのファイル選択処理とファイル取得処理のフローを示す図である。
【０３８６】
受信ホストは、P2P Clientアプリケーションを起動する。
【０３８７】
更に、受信ホストは、受信カードは“File List”を送信カードから取得したのち、“File List”を読み込む（Ｓ４１）。
【０３８８】
受信ユーザーが送信カードの全てのファイルを取得したいのであれば、“File List”に記載されているファイルを全て送信側からダウンロードし、受信カード内のフォルダに保存する（Ｓ４２、Ｓ４３）。
【０３８９】
受信ユーザーが送信側カードのファイルから選択して一部だけ取得したいのであれば、受信ホストは受信ユーザーに対してファイル選択のためのメニューを提供する。
【０３９０】
このとき、サムネールをメニューに表示しない場合は取得可能なファイルのメタデータをメニューに表示する（Ｓ４４、Ｓ４５）。
【０３９１】
サムネールをメニューに表示する場合は、もし送信カードにサムネール・ファイルが存在するのであれば、受信ホストはサムネール・ファイルを取得し、取得可能なファイルのサムネールとメタデータをメニューに表示する（Ｓ４６、Ｓ４７、Ｓ４８）。もし、送信カードにサムネール・ファイルが存在しないのであれば受信ホストまたは受信カードは代替となるサムネールを作成し（Ｓ４０）、取得可能なファイルのサムネールとメタデータをメニューに表示する（Ｓ４８）。
【０３９２】
ここで、サムネール・ファイルと同様に、もし送信カードにメタデータ・ファイルが存在するのであれば、受信ホストはメタデータ・ファイルを取得し、これを参照してより詳細なメタデータをメニューに表示しても良い。
【０３９３】
受信ユーザーは表示されたメニューをもとに取得するファイルを選択する（Ｓ５０）。
【０３９４】
受信ホストは選択されたファイルを送信カードからダウンロードし、受信カード内のフォルダに保存する（Ｓ４３）。
【０３９５】
全ての受信が完了すると、受信ホストはP2P Clientアプリケーションを終了する。
【０３９６】
上記各実施形態によれば、次の効果を得ることができる。
【０３９７】
多くのカード製造者が、任意の機能をＳＤカードに実装するため、ＳＤカードに搭載される通信機能の種類は多岐に亘る。これらの通信機能を制御するためには、種々の制御のための定義をＳＤカードのコマンドの空間に割り当てる必要がある。しかし、通信機能は多岐に亘るため、全ての通信機能を制御するための定義を規定すると、コマンドのアドレス空間が不足する。これに対して、本実施形態によれば、複数ページにより構成される拡張レジスタを用いて、ＳＤカードが有する通信機能を制御するためのページ、通信対象のデータの受け渡しに用いるページを定義することにより、通信機能を制御するため定義をコマンドの空間へ効率良く割り当てることができる。
【０３９８】
また、本実施形態によれば、コマンド（ＣＭＤ４８、ＣＭＤ４９）が指定する拡張レジスタにより、通信機能を容易に制御することができる。
【０３９９】
さらに、コマンド（ＣＭＤ４８、ＣＭＤ４９）を用いることにより、メモリ用のホストコントローラであっても、効率良く、拡張レジスタを制御することが可能である。
【０４００】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０４０１】
１１…メモリデバイス、１３…ＣＰＵ、１４…ＲＯＭ、１５…ＲＡＭ、１６…バッファ、１８…ＮＡＮＤフラッシュメモリ、１９ａ…無線ＬＡＮ信号処理部、１９…Ｗｉ−Ｆｉネットワークモジュール、２０…ホスト、２１…ホストコントローラ、２２…ＣＰＵ、３１…拡張レジスタ。
【図１】
0005646712.tif 000002
【図２】
0005646712.tif 000003
【図３】
0005646712.tif 000004
【図４】
0005646712.tif 000005
【図５】
0005646712.tif 000006
【図６】
0005646712.tif 000007
【図７】
0005646712.tif 000008
【図８】
0005646712.tif 000009
【図９】
0005646712.tif 000010
【図１０】
0005646712.tif 000011
【図１２】
0005646712.tif 000012
【図１３】
0005646712.tif 000013
【図１４】
0005646712.tif 000014
【図１５】
0005646712.tif 000015
【図１６】
0005646712.tif 000016
【図１７】
0005646712.tif 000017
【図１８】
0005646712.tif 000018
【図１９】
0005646712.tif 000019
【図２０】
0005646712.tif 000020
【図２１】
0005646712.tif 000021
【図２２】
0005646712.tif 000022
【図２３】
0005646712.tif 000023
【図２４】
0005646712.tif 000024
【図２５】
0005646712.tif 000025
【図２６】
0005646712.tif 000026
【図２７】
0005646712.tif 000027
【図２８】
0005646712.tif 000028
【図２９】
0005646712.tif 000029
【図３０】
0005646712.tif 000030
【図３１】
0005646712.tif 000031
【図３２】
0005646712.tif 000032
【図３３】
0005646712.tif 000033
【図３４】
0005646712.tif 000034
【図３５】
0005646712.tif 000035
【図３６】
0005646712.tif 000036
【図３７】
0005646712.tif 000037
【図３８】
0005646712.tif 000038
【図３９】
0005646712.tif 000039
【図４０】
0005646712.tif 000040
【図４１】
0005646712.tif 000041
【図４２】
0005646712.tif 000042
【図４３】
0005646712.tif 000043
【図４４】
0005646712.tif 000044
【図４５】
0005646712.tif 000045
【図４６】
0005646712.tif 000046
【図４７】
0005646712.tif 000047
【図４８】
0005646712.tif 000048
【図４９】
0005646712.tif 000049
【図１１】
0005646712.tif 000050