説明

メモリシステム

【課題】種々の無線通信機能を制御することが可能なメモリシステムを提供する。
【解決手段】制御部13は、不揮発性半導体記憶装置18を制御する。メモリ15は、制御部に接続された作業エリアである。無線通信機能部19aは、制御部により制御される。拡張レジスタは、メモリ15に設けられ、無線通信機能部19aの無線通信機能を定義可能な一定のデータ長を有する複数ページで構成されている。制御部は、拡張レジスタを一定のデータ長単位でリードする第1のコマンドと、拡張レジスタを前記一定のデータ長単位でライトする第2のコマンドとを処理し、拡張レジスタは、特定ページに無線通信機能の種別及び制御可能なドライバを特定するための情報と、無線通信機能が割り当てられる拡張レジスタ上の場所を示すアドレス情報が記録され、特定ページ以外のページ又は領域に無線通信機能の情報が記録される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、無線通信機能を有するメモリシステムに関する。
【背景技術】
【0002】
無線通信機能を備えたSDカードが開発されている。これらのカードは、SDカードの中に独自の無線機能を収容し、独自に追加した機能のみに対応した制御が行えれば良かった。しかし、無線通信機能は多岐に亘るため、全ての無線通信機能を制御するための定義を規定すると、コマンドのアドレス空間が不足してしまう。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002−329180号公報
【特許文献2】特開2009−124302号公報
【非特許文献】
【0004】
【非特許文献1】Part 1 Physical Layer Simplified Specification Ver3.01 May 18, 2010 (URL: http://www.sdcard.org/home/)
【非特許文献2】Part E1 SDIO Simplified Specification Ver2.00 Feb. 8, 2007 (URL: http://www.sdcard.org/home/)
【発明の概要】
【発明が解決しようとする課題】
【0005】
本実施形態は、種々の無線通信機能を制御することが可能なメモリシステムを提供しようとするものである。
【課題を解決するための手段】
【0006】
本実施形態によれば、メモリシステムは、不揮発性半導体記憶装置と、制御部と、メモリと、無線通信機能部と、拡張レジスタとを含んでいる。制御部は、第1のコマンドと、第2のコマンドとを処理する。制御部は、不揮発性半導体記憶装置を制御する。メモリは、制御部に接続された作業エリアである。無線通信機能部は、制御部により制御される。拡張レジスタは、メモリに設けられ、無線通信機能部の無線通信機能を定義可能な一定のデータ長を有する複数ページで構成されている。制御部は、前記拡張レジスタを前記一定のデータ長単位でリードする第1のコマンドと、前記拡張レジスタを前記一定のデータ長単位でライトする第2のコマンドとを処理し、前記拡張レジスタは、特定ページに前記無線通信機能の種別及び制御可能なドライバを特定するための情報と、前記無線通信機能が割り当てられる拡張レジスタ上の場所を示すアドレス情報が記録され、前記特定ページ以外のページ又は領域に前記無線通信機能の情報が記録される。
【図面の簡単な説明】
【0007】
【図1】実施形態に適用されるメモリシステムを概略的に示す構成図。
【図2】図1に示すメモリシステムのファームウェの一例を示す構成図。
【図3】拡張レジスタのリードコマンドの一例を示す構成図。
【図4】リードコマンドによる拡張レジスタのリード動作を示すタイミング図。
【図5】リードコマンドによるデータポートのリード動作を示すタイミング図。
【図6】拡張レジスタのライトコマンドの一例を示す構成図。
【図7】図7(a)(b)(c)はマスクレジスタの動作を示す図。
【図8】ライトコマンドによる拡張レジスタのライト動作を示すタイミング図。
【図9】ライトコマンドによるデータポートのライト動作を示すタイミング図。
【図10】拡張レジスタの先頭ページに設定される情報フィールドの一例を示す図。
【図11】無線LAN(Local Area Network)を有したSDカードの使用例を示す構成図。
【図12】メモリデバイスが有するインターフェース機能を示す図。
【図13】Wi−Fi SDカードとホストデバイスの構成例を示す図。
【図14】SDカードとホストデバイスの別の構成例を示す。
【図15】リードコマンド(CMD48)とライトコマンド(CMD49)でアクセスする拡張レジスタの例を示す図。
【図16】拡張レジスタをWi−Fi SDカードに用いた場合の例を示す図。
【図17】Wi−Fi SDレジスタが拡張レジスタのページに割り当てられた場合において、512バイトを超えるデータを読み書きするときの例を示す図。
【図18】拡張レジスタをWi−Fi SDカードに用いた場合における他の例を示す図。
【図19】拡張レジスタをWi−Fi SDカードに用いた場合における他の例を示す図。
【図20】拡張レジスタをWi−Fi SDカードに用いた場合における他の例を示す図。
【図21】拡張レジスタがWi−Fi SDカード用に用いられる場合における拡張レジスタを示す図。
【図22】Wi−Fi SDカード・コマンド・ライト・レジスタの構成例を示す図。
【図23】Wi−Fi SDカード・コマンド・ライト・レジスタに書き込むコマンドの一覧を示す図。
【図24】Wi−Fi SDカード・コマンド・ライト・レジスタに書き込むコマンドの一覧を示す図。
【図25】Wi−Fi SDカード・コマンド・ライト・レジスタに書き込むコマンドの一覧を示す図。
【図26】Wi−Fi SDカード・ステータス・レジスタの構成例を示す図。
【図27】Wi−Fi SDカード・ステータス・レジスタの構成例を示す図。
【図28】Wi−Fi SDカード・コマンド・レスポンス・ステータス・レジスタの構成例を示す図。
【図29】Wi−Fi SDカード・コマンド・レスポンス・ステータス・レジスタの構成例を示す図。
【図30】Wi−Fi SDカード・レスポンス・データ・レジスタの構成例を示す図。
【図31】Wi−Fi SDカードIDリスト・レジスタの構成例を示す図。
【図32】Wi−Fi SDカードSSIDヒストリ・レジスタの構成例を示す図。
【図33】Wi−Fi SDカードコンフィグレーション情報(Configuration Information)の構成例を示す図。
【図34】ライトコマンド(CMD49)を用いてWi−Fi SDカードのコマンドを発行する場合を示すタイミングチャート。
【図35】複数のライトコマンド(CMD49)により、Wi−Fi SDカード・コマンドを発行する場合を示すタイミングチャート。
【図36】1つのライトコマンド(CMD49)により発行されたデータに、複数のWi−Fi SDカード・コマンドが含まれる場合を示すタイミングチャート。
【図37】リードコマンド(CMD48)を用いて、Wi−Fi SDカード11からデータを取得する場合を示すタイミングチャート。
【図38】複数のリードコマンド(CMD48)により、Wi−Fi SDカードのデータを取得する場合を示すタイミングチャート。
【図39】Wi−Fi SDカードがサポートするアプリケーションの一例を示す図。
【図40】ホストデバイスの起動時の動作を示すフローチャート。
【図41】各アプリケーションの状態遷移を示す図。
【図42】無線LANの状態遷移を示す図。
【図43】Wi−Fi SDカード内のディレクトリ構成を示す図。
【図44】Wi−Fi SDカードのコマンド処理の流れを示す図。
【図45】Wi−Fi SDカードの設定の流れを示す図。
【図46】P2Pアプリケーションの流れを示す図。
【図47】サーバーアップロード(Server Upload)アプリケーションの流れを示す図。
【図48】P2Pアプリケーションにおいて、送信側ホストのファイルリスト(File List)生成処理とファイル送信処理を示すフローチャート。
【図49】P2Pアプリケーションにおいて受信側ホストのファイル選択処理とファイル取得処理を示すフローチャート。
【発明を実施するための形態】
【0008】
近年、各種電子機器(特に携帯型ディジタル機器)間で、無線通信によるデータ通信が可能とされている。各種電子機器としては、パーソナルコンピュータや、例えばPDA(Personal Digital Assistant)と呼ばれる携帯情報端末、携帯電話、携帯型オーディオ機器、デジタルビデオカメラ、あるいはデジタルスチルカメラなどが含まれる。以下の説明では、デジタルビデオカメラ及びデジタルスチルカメラを総称してデジタルカメラと記載する場合がある。
【0009】
これら電子機器間で、無線通信によりデータ通信が可能であれば、ケーブルによる接続が不要となるため利便性を向上できる。特に、無線LAN(Local Area Network)システムの普及に伴い、パーソナルコンピュータや、組み込み機器応用のみならず、デジタルカメラなどでメモリとして使用されるSDカードにおいても無線LANシステムが導入されるようになってきている。
【0010】
無線LAN通信機能を備えていないデジタルカメラなどの電子機器でこのような機能を実現するため、SDカードは、フラッシュメモリの他、ホストと物理的に接続するためのインターフェース、アンテナ、高周波処理部(無線信号の送受信を行う処理部)、ベースバンド処理部(ベースバンド信号を処理する処理部)などの構成要素を実装する必要がある。
【0011】
このような無線LAN機能を備えたSDカードにおいて、無線LAN機能を制御するための手順は、SDカードベンダーの実装に依存しているため、一意に定まっていない。さらに、制御手順をどのように実装するかが課題となっている。
【0012】
また、無線通信機能を備えたSDカードには、SDカードベンダーによって異なる方式の通信機能が備えられることも考えられる。この場合、ホストは、SDカードにどのような機能が備えられているかを知る手段がなければ、SDカードの機能を用いることが出来ない。
【0013】
そこで、本実施形態は、例えばデジタルカメラなどにおいて広くメモリとして用いられているSDカードに関して、本来のメモリ以外の拡張機能を把握するための手段を提示する。さらに、本来のメモリ以外の機能に対する制御手順を提示する。特に、SDメモリカードのコマンド体系において、無線LANなどを制御することを可能とする。これによって、デジタルカメラなどの電子機器と親和性の高い無線通信機能を搭載したSDカードを提供する。
【0014】
このため、本実施形態は、SDカード内に、複数ページにより構成される拡張レジスタ(Extension Register)を設け、この拡張レジスタをSDカードのコマンド仕様の1つであるコマンドCMD48、CMD49を用いて、リード又はライト可能とする。CMD48は、対象とするレジスタからデータをブロック単位で読み出すためのコマンドであり、CMD49は、対象とするレジスタにデータをブロック単位で書き込むコマンドである。拡張レジスタは、例えばSDカードが有する機能を示すためのページと、SDカードが有する通信機能を制御するためのページと、通信対象のデータの受け渡しに用いるページとを有している。
【0015】
(実施形態)
以下、実施の形態について、図面を参照して説明する。
【0016】
図1は、本実施形態に係るメモリシステムを概略的に示している。
【0017】
メモリシステムは、例えばSDカードのようなメモリデバイス11と、ホスト20により構成される。メモリデバイス11はSDカードとも言う。また、ホスト20はホストデバイスとも言う。尚、メモリデバイス11は必ずしもカード形状を備えている必要はなく、ホストデバイスに対して挿抜不可能な態様で実装されていても良い。
【0018】
メモリデバイス11は、ホスト20に接続されたときに電源供給を受けて動作し、ホスト20からのアクセスに応じた処理を行う。このメモリデバイス11は、カードコントローラ11aを有している。
【0019】
カードコントローラ11aは、例えばホストインターフェース(I/F)12、CPU13、ROM(Read only Memory)14、RAM(Random Access Memory)15、バッファ16、無線通信インターフェース(I/F)17a、メモリインターフェース(I/F)17bにより構成されている。これらは、バスにより接続されている。メモリインターフェース17bには、例えばNANDフラッシュメモリ18が接続されている。無線通信インターフェース17aには、拡張機能部としての無線LAN信号処理部19aが接続されている。この無線LAN信号処理部19aには、高周波信号を送受信するアンテナATaが接続されている。
【0020】
尚、拡張機能部は、無線LAN信号処理部19aに限らず、その他の無線通信信号処理部19b、及びこの無線通信信号処理部19bに接続されたアンテナATbなどを増設し、マルチファンクションのSDカードを構成することが可能である。無線LAN信号処理部19aは、例えばWi−Fi(登録商標)接続認定されたIEEE802.11b/g/nによる無線通信機能を制御し、無線通信信号処理部19bは、例えばTransferJet(登録商標)による近接無線通信機能、Bluetooth(登録商標)による近接無線通信機能などを制御する。
【0021】
ホストインターフェース(I/F)12は、カードコントローラ11aとホスト20との間のインターフェース処理を行う。
【0022】
一方、無線通信インターフェース17aは、無線LAN信号処理部19aや無線通信信号処理部19bとの間のインターフェース処理を行う。メモリインターフェース17bは、カードコントローラ11aとNANDフラッシュメモリ18との間のインターフェース処理を行う。
【0023】
CPU13は、メモリデバイス11全体の動作を司るものである。このCPU13を制御するプログラムは、ROM14の中に格納されているファームウェア(制御プログラム等)を用いるか、あるいは、RAM115上にロードして所定の処理が実行される。すなわち、CPU13は、各種のテーブルや後述する拡張レジスタをRAM18上に作成したり、ホスト20からライト(書き込み)コマンド、リード(読み出し)コマンド、イレース(消去)コマンドを受けてNANDフラッシュメモリ18上の領域をアクセスしたり、バッファ16を介してデータ転送処理を制御したりする。
【0024】
ROM14は、CPU13により使用される制御プログラムなどのファームウェアを格納する。RAM15は、CPU13の作業エリアとして使用され、制御プログラムや各種のテーブルや後述する拡張レジスタを記憶する。
【0025】
バッファ16は、ホスト20から送られてくるデータを、例えばNANDフラッシュメモリ18へ書き込む際、一定量のデータ(例えば1ページ分)を一時的に記憶したり、NANDフラッシュメモリ18から読み出されたデータをホスト20へ送り出す際、一定量のデータを一時的に記憶したりする。またバッファ16を介することにより、SDバスインターフェースとバックエンドを非同期に制御することができる。
【0026】
NANDフラッシュメモリ18は、例えば積層ゲート構造のメモリセル、又はMONOS構造のメモリセルにより構成されている。
【0027】
無線LAN信号処理部19aでは、無線LANの信号処理が行われる。無線LAN信号処理部19aは、無線通信I/F17aを介して制御される。
【0028】
ホスト20は、例えばデジタルカメラや携帯電話、パーソナルコンピュータなどが適用可能である。ホスト20は、ホストコントローラ21、CPU22、ROM23、RAM24、例えばハードディスク25(SSDを含む)により構成されている。これらはバスにより接続されている。ホスト20が無線LAN通信機能を備えていない場合、本実施形態に係るメモリデバイス11を接続することで、他の電子機器との無線LAN通信が可能となる。
【0029】
CPU22は、ホスト20全体を制御する。ROM23は、CPU22の動作に必要なファームウェアを記憶している。RAM24は、例えばCPU22の作業領域として使用されるが、CPU22が実行可能なプログラムもここにロードされ実行される。ハードディスク25は、各種データを保持する。ホストコントローラ21は、メモリデバイス11が接続された状態において、メモリデバイス11とのインターフェース処理を行う。さらに、CPU22の指示に従って、後述する各種コマンドを発行する。
【0030】
(ファームウェアの構成)
図2は、メモリデバイス11のROM14に記憶されたファームウェアの機能構成の一例を示している。これらの機能はコントローラ11aを構成するCPU13等の各ハードウェアとの組み合わせにより実現されるものである。ファームウェアは、例えばコマンド処理部14a、フラッシュメモリ制御部14b、拡張レジスタ処理部14c、機能処理プログラム14dにより構成されている。拡張レジスタ処理部14cは、メモリデバイス11が起動された際、RAM15内に拡張レジスタ31を生成する。この拡張レジスタ31は、仮想レジスタであり、拡張機能を定義可能とされている。
【0031】
(拡張レジスタの構成)
図2に示すように、拡張レジスタ31は、例えば8ページにより構成されている、1ページは、512バイトにより構成されている。512バイトの拡張レジスタをバイト単位にアクセスするため、最低9ビットのアドレスが必要となり、8ページアクセスするために、最低3ビットのアドレスが必要となる。合計12ビットのアドレスにより、拡張レジスタの全空間がアクセス可能となる。
【0032】
512バイト単位とする理由は、多数のSDメモリカードホストコントローラが、1ブロック=512バイトを単位としてリード/ライト転送を行う構成になっているためである。SDIOカード対応のホストコントローラであれば、1バイト単位のリード/ライトが可能であるが、全てのホストコントローラがこれをサポートしているわけではない。大多数のホストコントローラで拡張機能を制御できるようにするためには、512バイト単位のアクセスが行えると都合が良い。
【0033】
8ページ(ページ0〜ページ7)の内、ページ0は、拡張機能のプラグ・アンド・プレイを行うために情報フィールドを記録しておくための領域である。ページ1〜ページ7は、拡張機能の情報が記録される。すなわち、例えばページ1には、通信機能を制御するための情報が記録され、ページ2には、通信対象のデータの受け渡しのための情報が記録される。ホスト20は、メモリデバイス11が有する機能を示すためのページ0に記載された情報から、メモリデバイス11が有する通信機能を制御するためのページ、通信対象のデータの受け渡しに用いるページ、がどのページであるのかを把握することができる。情報フィールドの詳細については後述する。
【0034】
拡張レジスタのリード/ライトは、以下に定義される専用のリード/ライトコマンドが用いられる。これらのコマンドは、拡張レジスタをリード/ライトする第1の動作モードと、データポートを構成する第2の動作モードを有している。また、これらのコマンドは、SDカードのコマンド仕様として定義される。
【0035】
(拡張レジスタのリードコマンド(CMD48))
図3は、拡張レジスタのリードコマンド(CMD48)のフィールド構成の一例を示している。“S”は、コマンドのスタートビットを示し、“T”は転送方向を示すビットであり、“index”は、コマンド番号を示している。“RS”(レジスタ・セレクト)は拡張レジスタ31内のページを示し、“OFS”は選択されたページ内におけるデータの位置(ページの先頭からのオフセット)を示している。3ビットの“RS”と、9ビットの“OFS”で、512バイトの拡張レジスタ8ページ分の空間をバイト単位に指定することができる。具体的には、選択された拡張レジスタ内のリード開始位置が“RS”と“OFS”により指定される。
【0036】
“LEN”はデータ長を示している。9ビットのLENフィールドにより、512バイトの拡張レジスタ内の読み出しに必要な有効なデータ長が指定される。
【0037】
“CRC7”は、巡回冗長検査(cyclic redundancy check)コードを示し、“E”は、コマンドのエンドビットを示している。“rsv”は、予備のビットを示している。
【0038】
(拡張レジスタのリードコマンド、第1の動作モード)
図4は、第1の動作モードによる拡張レジスタのリード動作の例を示している。
【0039】
図4に示すように、メモリデバイス11は、ホスト20からコマンド(CMD48)を受け取ると、レスポンス(R1)をホスト20に返し、その後、拡張レジスタ31から512バイトのデータブロックを読み出す。
【0040】
具他的には、コマンド(CMD48)の引数で、拡張レジスタのページと、ページ内の読み出すべきデータの位置が、“RS”と“OFS”で指定され、データ長が“LEN”で指定される。このようにして指定された拡張レジスタ内のデータが、512バイトのデータブロックの先頭にセットされ、読み出される。512バイトのデータブロックのうち、“LEN”で指定されたデータ長を超えるデータは、無効データとなる。データブロックの最後にはCRCコードが付加され、正しくデータが受け取れたかをチェックすることが可能とされている(無効データを含めてチェックを行う)。有効データが先頭から配置されているため、ホスト20は、有効データを探すために、データシフトなどの操作を行う必要がない。
【0041】
(拡張レジスタのリードコマンド、第2の動作モード)
図5は、第2の動作モードによるデータポートリードの動作の例を示している。
【0042】
メモリデバイス11は、このコマンド(CMD48)を受け取ると、レスポンス(R1)を返し、その後に512バイトのデータブロックを返す。
【0043】
コマンドの引数“RS”,“OFS”により、拡張レジスタの選択されたページ内の位置が指定される。データポートは、複数バイト割り当てることは可能であるが、1バイトで十分であるので、図5では“LEN=0”(レングスが1)の場合のデータポートの例が示されている。すなわち、データポートは、拡張レジスタマップ上において、1バイトのアドレスを占有するだけで良い。このデータポートに割り当てられたデバイスから1ブロック(512バイト単位)のデータをリードすることができる。すなわち、1回当たり、1ブロック(512バイト単位)のデータをリードすることができる。この読み出されたデータは、例えばバッファ16に保持され、ホスト20によって読み出される。
【0044】
続いて同じデータポートをリードすると、続きの512バイトのデータを読み出すことができる。データポートから読み出すデータを何処から取ってくるかは、拡張機能の仕様によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジスタを定義して制御することができる。512バイトのデータブロックの最後にCRCコードが付加され、正しくデータが受け取れたか否かがチェック可能とされている。
【0045】
(拡張レジスタのライトコマンド(CMD49))
図6は、拡張レジスタのライトコマンドの一例を示している。ライトコマンド(CMD49)において、リードコマンド(CMD48)と同一部分には同一符号を付している。ライトコマンドとリードコマンドは、“index”により区別される。3ビットの“RS”と、9ビットの“OFS”により、拡張レジスタのページと選択されたページ内のデータの位置が指定される。9ビットの“LEN”フィールドにより、512バイトの拡張レジスタに書き込むデータ長が指定される。したがって、512バイト内の任意のデータ長(バイト単位)のデータを拡張レジスタの任意のページと場所に書き込むことが可能である。
【0046】
ライトコマンド(CMD49)は、コマンドの引数の中にマスクレジスタが設けられている。すなわち、“Mask”は、8ビット長のマスクレジスタを示している。このマスクレジスタにより、1バイトのデータのライトにおいて、ビット単位のオペレーションが可能となり、特定のビットにのみデータを書き込むことが可能となる。このため、1バイト内のビットオペレーションであれば、リード・モディファイ・ライトを行う必要がない。マスクレジスタは、データ長が1バイトのとき、すなわち、“LEN=0”(レングス1)のとき有効となる。マスクレジスタ“Mask”のデータが“1”のビットは、データが書き込まれ、マスクレジスタ“Mask”のデータが“0”のビットは、既にセットされた値が保存される。
【0047】
すなわち、図7(a)に示すようなデータを保持している拡張レジスタを仮定した場合において、マスクレジスタのデータが、図7(b)に示すようである場合、ライトコマンドが実行されることにより、図7(c)に示すように、マスクレジスタのデータが“1”のビットはデータが書き込まれ、データが“0”のビットは、元のデータが保持される。このため、リード・モディファイ・ライトを行うことなく、所要のビットのみデータを書き換えることが可能となる。“x”で示す部分が、新しいデータが書き込まれたビットを示す。
【0048】
また、より長いマスクデータが別な手段によって供給できれば、LEN>1でもマスクライトが可能であるが、図6の例では、コマンド引数にマスクデータを割り当てているため、8ビットとしている。
【0049】
(拡張レジスタのライトコマンド、第1の動作モード)
図8は、第1の動作モードによる拡張レジスタのライト動作の例を示している。
【0050】
メモリデバイス11は、このコマンド(CMD49)を受け取ると、レスポンス(R1)を返し、その後、512バイトのデータブロックを受け取る。
【0051】
メモリデバイス11は、データブロックが正しく受け取れたかどうかを示すCRCコードをホスト20に返す。その後、このコマンドの処理が終了するまでビジーを返し、ホスト20が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ16に保持されている。
【0052】
コマンド処理において、コマンドの引数“RS”、“OFS”により、拡張レジスタ内のページと位置が指定され、“LEN”によりデータ長が指定される。バッファ16に保持されたデータブロックのうち、先頭から“LEN”で指定して長さのデータが拡張レジスタに書き込まれる。“LEN”で指定されたデータ長を超えるデータブロック中のデータは無効データとして破棄される。
【0053】
有効データをデータブロックの先頭から配置することにより、ホストシステムは有効データをデータブロックの途中に配置する操作が不要となる。
【0054】
(拡張レジスタのライトコマンド、第2の動作モード)
図9は、第2の動作モードによるライトデータポートの動作の例を示している。
【0055】
メモリデバイス11は、このコマンド(CMD49)を受け取ると、レスポンス(R1)を返し、その後、512バイトのデータブロックを受け取る。
【0056】
メモリデバイス11は、データブロックが正しく受け取れたかどうかを示すCRCコードをホストに返す。その後、このコマンド処理が終わるまでビジーを返し、ホスト20が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ16に保持されている。
【0057】
コマンド処理において、コマンドの引数“RS”、“OFS”により、拡張レジスタ内のページと位置が指定され、“LEN”により1バイト(LEN=0)のデータポートが指定される。データポートは、複数バイト割り当てることは可能であるが、1バイトで十分であるので、図9では“LEN=0”(レングス1)の場合のデータポート例が示されている。データポートは、拡張レジスタマップ上において、1バイトのアドレスを占有するだけでよい。このデータポートに、バッファ16に保持された1ブロック(512バイト単位)のデータをある割り当てたデバイスにライトすることができる。すなわち、1回当たり、1ブロックのデータをライトすることができる。
【0058】
続いて同じデータポートをライトすると、続く512バイトのデータを割り当てたデバイスに書き込むことができる。データポートのデータを何処に渡すかは、拡張機能の仕様によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジスタを定義して制御することができる。
【0059】
(ページ0の情報フィールドの使用例)
図10は、拡張レジスタ31のページ0に示された情報フィールドの例を示している。この情報フィールドにより、ホスト20が拡張機能を制御するドライバを特定できるようにすることにより、拡張機能を追加した場合において、ホストシステムが容易に拡張機能を使えることができ、プラグ・アンド・プレイを実現することができる。
【0060】
(ストラクチャレビジョン)
ストラクチャレビジョンは、拡張レジスタ31のページ0のフォーマットを定義するレビジョンである。デバイス情報フィールドに新しい情報を追加した場合、ストラクチャレビジョンを更新することにより、どのバージョンの情報フィールドを保持しているかを示す。以前のバージョンのホストドライバは、新しいフィールドを無視する。
【0061】
(データ長)
データ長は、ページ0に記録されている有効データ長を示している。
【0062】
(拡張機能数(=N))
拡張機能数は、デバイスが何個の拡張機能をサポートしているかを示している。ホストドライバは、起動時に、サポートしている機能数だけ繰り返し、各拡張機能用のドライバがインストールされているかどうかを調べる。
【0063】
(デバイスの情報領域)
デバイスの情報領域には、N個のデバイス(デバイス1〜デバイスN)の情報を記録することができる。各デバイスの情報を次に示す。
【0064】
(デバイス1機能識別コード)
デバイス1機能識別コードにおいて、このコードが設定してある場合、標準ドライバ用を用いることができることを示す。ホストシステムのOSが標準ドライバをサポートしている場合、専用ドイバをインストールすることなく、このデバイスが使用できる。専用ドライバがインストールされている場合は、そちらの使用を優先する。非標準の機能は“0”を設定する。この場合は、専用ドライバによってのみこの機能は制御される。
【0065】
(デバイス1製造者識別情報、デバイス1機能識別情報)
デバイス1製造者識別情報、デバイス1機能識別情報は、専用ドライバを特定するための情報である。ホストドライバは、これらの情報をもとにデバイス1の専用ドライバがインストールされているかどうかを探す。識別し易いように、例えばASCII文字列で記載される。機能識別情報は、デバイスの型番、レビジョンなどが記載される。
【0066】
(次デバイスの先頭アドレス)
次デバイスの先頭アドレスは、次のデバイス情報が記載されているページ0内のアドレスを示している。ホストシステムがこのデバイスをサポートしていない場合、このデバイスは使用できないため、次のデバイスがチェックされる。これ以降のフィールドは可変長のため、この位置に定義している。
【0067】
(デバイス1アドレスポインタ1〜X、レングスフィールド1〜X)
デバイス1アドレスポインタ1〜X、レングスフィールド1〜Xは、ひとつの機能に複数の拡張レジスタ領域を定義できることを示している。それぞれのアドレスとレングスを下記に列挙する。
【0068】
(デバイス1アドレスポインタ1(開始アドレス)、レングス1)
デバイス1が使用する拡張レジスタの第1領域。拡張レジスタのページ1〜7の空間内の先頭アドレスと、使用する拡張レジスタ領域の大きさを示している。
【0069】
すなわち、1つのデバイスに、1つ又は複数の拡張レジスタ領域を割り付けることができ、アドレスポインタは、ページ0以外の任意の拡張領域の場所(開始アドレス)を示している。レングスは、ポインタを先頭アドレスとした拡張レジスタを占有する大きさを示している。
【0070】
(デバイス1アドレスポインタ2(開始アドレス)、レングス2)
デバイス1に割り当てられた拡張レジスタ内の第2領域の位置と領域の大きさを示している。これにより、例えば標準ドライバは、第1領域のみで制御するが、専用ドライバは、第1領域と第2領域を用いて効率良く制御することを可能にするなどの応用が可能となる。
【0071】
(デバイス1アドレスポインタX(開始アドレス)、レングスX)
デバイス1に割り当てられた第X領域の位置と領域の大きさを示している。
【0072】
このように、拡張レジスタ内に複数の領域を定義できる。各領域はオーバーラップしないように配置される。レングス情報によりオーバーラップがあるかどうかをチェックすることができる。
【0073】
追加フィールドが必要になった場合、これ以降に追加定義していく。新しいフィールドが認識できないホストは、認識可能なフィールドまで読み出し、追加フィールドは無視する。上記の(次デバイスの先頭アドレス)フィールドによりスキップすることができる。
【0074】
(無線LAN対応SDカード)
図11は、無線通信機能を有したメモリデバイス(SDカード)11の使用例を示している。SDカード11は、ホストとしての例えばデジタルカメラ51、52や、サーバー53、パーソナルコンピュータ54、携帯電話55に装着される。
【0075】
無線通信機能を有したSDカード11は、デジタルカメラ51とともに使用することにより、写真データを無線通信ネットワーク上で他のカメラ52に送信したり、他のカメラ52から受信したりすることが可能である。また、無線通信ネットワークを介して例えば外部のサーバー53に接続し、写真データをデジタルカメラ51からサーバー53に転送することも可能である。さらに、無線通信ネットワークを介して例えばパーソナルコンピュータ54や携帯電話55などの機器に接続し、写真データをデジタルカメラ51からこれらパーソナルコンピュータ54や携帯電話55に転送することができる。
【0076】
図12は、SDカード11が有するインターフェース機能を示している。
【0077】
無線通信機能を有したSDカード11は、メモリデバイス11を制御するホストデバイスとしての例えばデジタルカメラ51とのインターフェースとなるインターフェース機能と、デジタルカメラ51と他の電子機器、例えばカメラ52や、サーバー53、パーソナルコンピュータ54、テレビ56、プリンタ57などと無線LAN接続を行うネットワークインターフェースの機能を有している。
【0078】
前述したホストインターフェース(カードインターフェース)12は、SDA(SD Association)で規格化された“SD Specifications Part 1”と“SD Specifications Part 2”に従って、SDカード11内のデータにFAT32経由でアクセス(読み書き)する機能を有するとともに、SDカード11内の拡張レジスタ31にアクセスする機能を有している。以下、無線通信機能を有するSDカードにおいて拡張レジスタを利用する場合について説明する。また、無線通信規格としてIEEE802.11b/g/nに準拠する場合を想定して、この様な拡張レジスタをWi−Fi SDレジスタと記載する場合がある。
【0079】
ここでWi−Fi SDレジスタのアクセスには、前述したリードコマンド(CMD48)とライトコマンド(CMD49)が用いられる。リードコマンド(CMD48)は、前述したように、対象となる拡張レジスタからデータをブロック単位で読み出すコマンドであり、ライトコマンド(CMD49)は対象となる拡張レジスタにデータをブロック単位で書き込むコマンドである。
【0080】
本実施形態において、例えばホスト20がSDカード11に対して、無線通信機能を有するSDカード特有のコマンドを発行する。具体的には、無線通信機能を有するSDカード特有の拡張レジスタにデータを書き込むために専用のライトコマンド(CMD49)を用いることを特徴とする。または、無線通信機能を有するSDカード特有の拡張レジスタからデータを読み出すために専用のリードコマンド(CMD48)を用いることを特徴とする。
【0081】
無線通信インターフェース17aは、物理層にIEEE802.11b/g/nを、ネットワーク層にIPv4やIPv6を、トランスポート層にTCPを、プレゼンテーション層にSSL/TLSを、アプリケーション層にHTTPやFTPをサポートすることを想定している。さらに、家庭内機器との通信のためDLNA(Digital Living Network Alliance)の機能を有する場合もある。
【0082】
メモリデバイス11が2つのインターフェースを持つことにより、デジタルカメラで作成した写真データ(JPEGやRAWフォーマット)や動画データ(MPEG−2 TSやMP4フォーマット)を、HTTPプロトコルをサポートするサーバーや機器に対して送信、又は受信することが可能になる。さらに、DLNAをサポートするサーバーや機器により、写真や動画の再生が可能となるとともに、印刷を行うことも可能となる。また、写真データや動画データだけでなく、ホストデバイスが作成するデータ(XMLデータやテキストデータ)を追加して送ることにより、ホストデバイスはサーバーや周辺機器と認証作業を行ったり、メタデータの送受信を行ったりすることが可能となる。
【0083】
図13は、無線通信機能を有するSDカードとホストデバイスの構成例を示している。これ以降、無線通信規格としてIEEE802.11b/g/nに準拠し、Wi−Fi接続認定されたSDカード(以下、Wi−Fi SDカード11と記載する場合がある)を例に挙げて説明する。
【0084】
前述したように、ホスト20は、Wi−Fi SDカード11を制御するためのホストコントローラ21を有し、前記カードインターフェースに従って、SDAで規格化された“SD Specifications Part 1”のコマンドと、Wi−Fi SDカード特有の制御を行うためのCMD48とCMD49のコマンドを発行することが可能である。
【0085】
Wi−Fi SDカード11は、カードコントローラ11a、NANDメモリモジュール(NANDフラッシュメモリ)18、Wi−Fiネットワークモジュール(無線LAN信号処理部19a)19cを有し、ホストコントローラ21から発行されたコマンドに従い動作する。無線通信機能を有していない一般的なSDカードにおいて、カードコントローラ11aは、NANDメモリモジュール18にアクセスし、データの読み出し、書き込みを行うことが可能である。
【0086】
本実施形態におけるWi−Fi SDカードは、NANDメモリモジュール18へのアクセス(読み書き)と、Wi−Fiネットワークモジュール19cへのアクセス、さらに、NANDメモリモジュール18に記録されたデータをWi−Fiネットワークモジュール19cへ内部転送を行う。もしくはWi−Fiネットワークモジュール19cのデータをNANDメモリモジュール18に内部転送を行うことが可能である。これにより、例えばNANDメモリモジュール18に記録された写真データをホスト20の介在なしにWi−Fiネットワークモジュール19cが外部に送信することができる。つまり、ホスト20はWi−Fiネットワークモジュール19cの複雑な制御を行う必要がない。
【0087】
さらに、写真データがカードインターフェースを経由せず内部転送されるため、転送速度を上げることができる。例えば、写真データの内部転送をカードコントローラ11a内部のDMA(Direct Memory Access)レジスタで制御すれば、ホスト20とWi−Fi SDカード11とは独立して動作することが可能である。
【0088】
また、Wi−Fiネットワークモジュール19cのステータス情報や、外部ネットワークのサーバーからダウンロードしたデータなどを、ホスト20が逐次管理することなく、自動的にNANDメモリモジュール18に直接記録することが可能である。
【0089】
図14は、Wi−Fi SDカードとホストデバイスの別の構成例を示す。
【0090】
図14は、図13と異なり、Wi−Fi SDカード11自身は無線通信機能を有さず、カードコントローラ11bとNANDメモリモジュール18で構成されている。また、ホスト20は、無線通信機能を有している。すなわち、ホスト20は、ホストコントローラ21と、Wi−Fiネットワークモジュール19cと、リードコマンド(CMD48)とライトコマンド(CMD49)を分離するためのカードコントローラ(セレクタ)25とを有している。
【0091】
この構成は、デジタルカメラなどのホストデバイス自身が無線通信機能を有する場合において、図13と同じ制御方法でWi−Fiネットワークモジュール19cの制御が可能である。
【0092】
図15は、リードコマンド(CMD48)とライトコマンド(CMD49)でアクセスする拡張レジスタの例を示している。前述したように、拡張レジスタのページ0は、ページ1以降のページのインデックスとなっており、ホスト20は、ページ0を読むことにより、カードがどのような拡張機能を有しているか、そのサポートされている拡張機能の規格のバージョン情報やプロファイル情報(オプショナル機能のうちどの機能がサポートされているか)、その拡張機能を制御するためのドライバ情報(どのメーカーから提供されているドライバか、ドライバのバージョンが何であるか)などを知ることができる。例えば、あるカードがWi−Fi機能とともに、Bluetooth機能を有しているのであれば、Wi−Fi機能にアクセスするためのレジスタをページ1に割り当て、Bluetooth機能にアクセスするためのレジスタを例えばページ2に割り当てる。ホスト20は必要に応じてページ1、2にアクセスし、それぞれの機能を同時に用いることが可能である。これにより、Wi−Fi機能を用いて外部のサーバーからデータをダウンロードしてカードに一旦記録し、Bluetooth機能を用いて周辺機器に転送して再生や表示するといった動作を実現することができる。
【0093】
図16は拡張レジスタをWi−Fi SDカードに用いた場合の例を示す。
【0094】
Wi−Fi SDレジスタは、その用途に応じて5種類の拡張レジスタで構成されている。Wi−Fi SDカード・コマンド・ライト・レジスタは、書き込み専用のレジスタでありホスト20からWi−Fi SDカード11に対してコマンドを発行するときにアクセスされる。Wi−Fi SDカード・ステータス・レジスタは、読み込み専用のレジスタであり、ホスト20がWi−Fi SDカード11のステータス情報を取得するときにアクセスされる。Wi−Fi SDカード・レスポンス・データ・レジスタは、読み込み専用のレジスタであり、ホスト20が外部サーバーからWi−Fi SDカード11にダウンロードしたデータ(HTTPレスポンス・データ)を取得するときにアクセスされる。Wi−Fi SD カードID・リスト・レジスタは、読み込み専用のレジスタであり、そのWi−Fi SDカード11に接続している(若しくは接続をリクエストしている)他のデバイスのIDのリストをホスト20が取得するときにアクセスされる。Wi−Fi SDカードSSID・ヒストリ・レジスタは、読み込み専用のレジスタであり、Wi−Fi SDカード11が過去に接続したSSID(若しくは接続しなかったが接続するようにリクエストされたSSID)のリストをホスト20が取得するときにアクセスされる。
【0095】
また、図示しないが、Wi−Fi SDカード・コマンド・レスポンス・レジスタは、読み込み専用のレジスタであり、ホスト20が発行したコマンドに対し、Wi−Fi SDカード11がそれを受け取ることができたかどうかを、ホスト20が確認するときにアクセスされる。更に、図示しないが、Wi−Fi SDカード・コマンド・プロセス・レジスタは、読み込み専用のレジスタであり、ホスト20が発行したコマンドに対し、Wi−Fi SDカードがそれに対する処理の進捗(処理前か、処理中か、処理後成功したか、処理後失敗したか)を、ホスト20が確認するときにアクセスされる。
【0096】
本実施形態は、これらのWi−Fi SDレジスタを拡張レジスタのページにそれぞれ割り当てるケースを説明する。先ず、ホスト20は、リードコマンド(CMD48)を用いて拡張レジスタのページ0を読み、Wi−Fi機能がSDカードに実装されているか、それぞれの機能を用いるために何ページをアクセスすればよいかを確認する。ここでは、ページ番号(i、j、k、l、m)とWi−Fi SDレジスタの略称(WIFISDCR、WIFISDSR、WIFISDRD、WIFISDIL、WIFISDSH)のペアがページ0に記録されている。
【0097】
ホスト20がWi−Fi SDカード11に対してコマンドを発行する場合、コマンド発行用のレジスタであるWi−Fi SDカード・コマンド・ライト・レジスタに対してライトコマンド(CMD49)にて書き込みを行う。このとき、ページ0の情報から当該レジスタはページiにあることが分かっているため、CMD49の引数としてページiが指定される。同様にホスト20がWi−Fi SDカードからステータス情報等を取得する場合、データ取得のためのレジスタであるWi−Fi SDカード・ステータス・レジスタ、Wi−Fi SDカード・レスポンス・データ・レジスタ、Wi−Fi SD カードIDヒストリ・レジスタ、Wi−Fi SDカードSSID・ヒストリ・レジスタのいずれかより、リードコマンド(CMD48)にてデータを読み出す。このとき、CMD48の引数としては、それぞれのレジスタに対応するページ番号であるj、k、l、mが指定される。
【0098】
ここで、本実施形態において、書き込み用レジスタと読み込み用レジスタを別のページに割り当てているが、それぞれのレジスタは書き込み専用と読み込み専用となっているため、同じページに割り当てることも可能である。
【0099】
図17は、Wi−Fi SDレジスタが拡張レジスタのページに割り当てられた場合において、512バイト(拡張レジスタのページ当たりの最大サイズ)を超えるデータを読み書きするときの例を示している。
【0100】
拡張レジスタのページ当たりの最大サイズは512バイトと限られている。しかし、ホスト20がリードコマンド(CMD48)、又はライトコマンド(CMD49)を連続して発行することにより、512バイトを超えるデータの読み込み、又は書き込みが可能である。例えばWi−Fi SDカード・コマンド・ライト・レジスタに512バイトを超えるデータを書き込む場合、ホスト20はCMD49によって最初の512バイトのデータをレジスタに書き込む。
【0101】
具体的には、コマンドCMD49のレジスタ・セレクト“RS”でページを指定し、オフセット“OFS”は“0”とし、データ長“LEN”で512バイトを指定する。つまり、先ず、“RS”を“1”、“OFS”を“0”、“LEN”を512バイトとして、512バイトのデータをWi−Fi SDカード・コマンド・ライト・レジスタに書き込む。次に、“RS”を“2”、“OFS”を“0”、“LEN”を512バイトとして、512バイトのデータをWi−Fi SDカード・コマンド・ライト・レジスタに書き込む。このような動作が順次繰り返される。
【0102】
ここで、最初の512バイトのデータにはWi−Fi SDカード・コマンド・ライト・レジスタに書き込むデータのデータサイズ(Nw)が記録されている。このため、Wi−Fi SDカード11は、このデータを読み込むことにより、ホスト20がライトコマンド(CMD49)をceil(Nw/512)回発行することが分かる。尚、ceil()は小数点以下切り上げを示す。つまり、例えばデータ長が513バイトであれば、コマンドを2回発行することを意味する。
【0103】
一方、Wi−Fi SDカード・レスポンス・データ・レジスタから512バイトを超のデータを読み込む場合、ホスト20はリードコマンド(CMD48)によって最初の512バイトのデータをレジスタから繰り返し読み込む。CMD48の引数の設定方法は、CMD49と同様である。
【0104】
ここで、最初の512バイトのデータにはWi−Fi SDカード・レスポンス・データ・レジスタから読み込むデータのデータサイズ(Nr)が記録されている。このため、ホスト20は、このデータを読み込むことにより、ホスト20がリードコマンド(CMD48)をceil(Nr/512)回発行すべきことが分かる。
【0105】
例えばホスト20が読み込み、又は書き込みを途中で、不具合が生じた場合、処理を中止する。この場合、ホスト20が、処理を中止するためのAbort()コマンドを発行したり、Wi−Fi SDカード11に設定されているタイムアウト時間によって、タイムアウト処理が行われるのを待ったりすることにより、処理の中止を行うことができる。
【0106】
図18は、拡張レジスタをWi−Fi SDレジスタに用いたときの別の例を示している。例えば無線通信のステータスをホスト20から拡張レジスタに転送したり、拡張レジスタのデータをSDレジスタに転送したりする場合、512バイトのデータ全てを転送する必要がなく、特定の短いデータ長のデータを転送すればよいことがある。図18は、このような場合におけるデータ転送の例を示すものである。
【0107】
具体的には、例えばリードコマンド(CMD48)、ライトコマンド(CMD49)の引数“RS”により拡張レジスタのページを指定し、さらに“OFS”により指定されたページのオフセットアドレスが指定される。
【0108】
この例において、5種類のWi−Fi SDレジスタは、拡張レジスタのある1ページ(h)において、それぞれ1バイト分のアドレス(i、j、k、l、m)に割り当てられる。
【0109】
先ず、ホスト20は、リードコマンド(CMD48)を用いて拡張レジスタのページ0を読み、Wi−Fi SD機能がカードに実装されているか、それぞれの機能を用いるために何ページをアクセスすればよいかを確認する。ここでは、ページ番号(h)+オフセットアドレス(i、j、k、l、m)とWi−Fi SDレジスタの略称(WIFISDCR、WIFISDSR、WIFISDRD、 WIFISDIL、WIFISDSH)のペアがページ0に記録されている。
【0110】
ホスト20がWi−Fi SDカード11に対してコマンドを発行する場合、コマンド発行用のレジスタであるWi−Fi SDカード・コマンド・ライト・レジスタに対して、ライトコマンド(CMD49)にて書き込みを行う。このとき、ページ0の情報から当該レジスタはページ“h”のオフセットアドレス“i”にあることが分かるため、CMD49の引数として“RS”=“h”、“OFS”=“i”が指定される。
【0111】
一方、ホスト20がWi−Fi SDカード11からステータス情報等を取得する場合、リードコマンド(CMD48)により、データ取得のためのレジスタであるWi−Fi SDカード・ステータス・レジスタ、Wi−Fi SDカード・レスポンス・データ・レジスタ、Wi−Fi SDカードID・リスト・レジスタ、Wi−Fi SDカードSSID・ヒストリ・レジスタのいずれかからデータが読み込まれる。このとき、リードコマンド(CMD48)の引数としては、それぞれのレジスタに対応するページ番号とオフセットアドレスである(h、j)、(h、k)、(h、l)、(h、m)が指定される。すなわち、“RS”が“h”で、“OFS”が“j、k、l、m”の何れかに設定される。
【0112】
図18に示す実施形態は、拡張レジスタの構成とWi−Fi SDレジスタの構成が対応しないが、拡張レジスタの消費量が少ないという利点がある。
【0113】
また、図18において、書き込み用レジスタ(Wi−Fi SDカード・コマンド・ライト・レジスタ)と読み込み用レジスタ(Wi−Fi SDカード・ステータス・レジスタ、Wi−Fi SDカード・レスポンス・データ・レジスタ、Wi−Fi SDカードID・リスト・レジスタ、Wi−Fi SDカードSSID・ヒストリ・レジスタ)を別のオフセットアドレスに割り当てているが、それぞれのレジスタは書き込み専用と読み込み専用であるため、同じオフセットアドレスに割り当てることも可能である。
【0114】
図19は、Wi−Fi SDレジスタがあるページのアドレスにそれぞれ割り当てられた場合において、512バイトを超えるデータ、つまり、拡張レジスタのページ当たりの最大サイズを超えるデータを読み書きするときの例を示している。
【0115】
図17に示す例と同様に、拡張レジスタに転送できるデータは512バイトと限られているが、ホスト20が、CMD48又はCMD49を連続して発行することにより、512バイトを超えるデータの読み込み、又は書き込みが可能である。この場合、拡張レジスタのページh内に記録されたデータは、Wi−Fi SDカード・コマンド・ライト・レジスタや、Wi−Fi SDカード・レスポンス・データ・レジスタ内に記録された512バイト毎のデータの、例えばインデックスとしての機能を有している。
【0116】
このため、ライトコマンド(CMD49)の引数により、拡張レジスタのページ“h”、オフセット“OFS”は“i”を“LEN”を512バイトとして指定することにより、Wi−Fi SDカード・コマンド・ライト・レジスタに512バイトのデータを書き込むことができ、このライトコマンド(CMD49)を連続的に発行することにより、Wi−Fi SDカード・コマンド・ライト・レジスタに512バイトのデータを連続的に書き込むことができる。
【0117】
また、リードコマンド(CMD48)の引数により、拡張レジスタのページ“h”、オフセット“OFS”は“j”を“LEN”を512バイトとして指定することにより、Wi−Fi SDカード・レスポンス・データ・レジスタ内の512バイトのデータを読み出すことができ、このリードコマンド(CMD48)を連続的に発行することにより、Wi−Fi SDカード・レスポンス・データ・レジスタから512バイトのデータを連続的に読み出すことができる。
【0118】
ここで、最初の512バイトのデータにはWi−Fi SDカード・コマンド・ライト・レジスタに書き込むデータのデータサイズ(Nw)が記録されている。このため、SDカードは、このデータを読み込むことにより、ホスト20がライトコマンド(CMD49)をceil(Nw/512)回発行することが分かる。尚、ceil()は小数点以下切り上げを示す。つまり、例えばデータ長が513バイトであれば、コマンドを2回発行することを意味する。
【0119】
一方、Wi−Fi SDカード・レスポンス・データ・レジスタから512バイトを超のデータを読み込む場合、ホスト20はリードコマンド(CMD48)によって最初の512バイトのデータをレジスタから繰り返し読み込む。CMD48の引数の設定方法は、CMD49と同様である。
【0120】
ここで、最初の512バイトのデータにはWi−Fi SDカード・レスポンス・データ・レジスタから読み込むデータのデータサイズ(Nr)が記録されている。このため、ホスト20は、このデータを読み込むことにより、ホストデ20がリードコマンド(CMD48)をceil(Nr/512)回発行すべきことが分かる。
【0121】
例えばホスト20が読み込み、又は書き込みを行っている途中で、不具合が生じた場合、処理を中止する。この場合、ホスト20が、処理を中止するためのAbort()コマンドを発行したり、Wi−Fi SDカード11に設定されているタイムアウト時間によって、タイムアウト処理が行われるのを待ったりすることにより、処理の中止を行うことができる。
【0122】
図20は、拡張レジスタをWi−Fi SDレジスタに用いた場合におけるさらに他の例を示す図である。
【0123】
図20は、1つのライトコマンド(CMD49)により、発行されたデータに無線通信を制御するための複数のWi−Fi SDカード・コマンドが含まれる場合や、1つのリードコマンド(CMD48)により発行されたデータに複数のステータスが含まれる場合を示している。複数のWi−Fi SDカード・コマンドの発行は、例えば複数のファイルの転送を連続的に行うときなどに用いられる。
【0124】
Wi−Fi SDカード・コマンド・ライト・レジスタは、例えばコマンド・レジスタ部と、アーギュメント・レジスタ部(引数レジスタ部)とから構成され、Wi−Fi SDカード・レスポンス・データ・レジスタは、例えばレスポンス・レジスタ部と、レスポンス・データ・レジスタ部とから構成されている。
【0125】
Wi−Fi SDカード・コマンド・ライト・レジスタにおいて、コマンド・レジスタ部には、コマンド毎にコマンド発行用のレジスタが割り当てられており、書き込まれたコマンドのIDに応じて、対応するレジスタに値が書き込まれる。アーギュメント・レジスタ部には、引数毎に引数データ書き込み用レジスタが割り当てられており、書き込まれたコマンドのIDの内容に応じて、引数データが対応するレジスタに書き込まれる。
【0126】
例えば、ホストデバイス20からCMD49(i、x)が発行された場合、“i”は、拡張レジスタのページ番号、“x”はコマンドIDを示し、コマンドID=xと、それに対応する引数の数(m)の引数データが拡張レジスタに書き込まれ、Wi−Fi SDカード・コマンド・ライト・レジスタ内の対応するコマンド・レジスタとアーギュメント・レジスタに値が書き込まれる。
【0127】
尚、“x”は対応するコマンドIDのレジスタのオフセットアドレスと定義してもよい。
【0128】
一方、Wi−Fi SDカード・レスポンス・データ・レジスタにおいて、レスポンス・ステータス・レジスタ部には、コマンドに毎にステータス情報用のレジスタが割り当てられており、Wi−Fi SDカード・コマンド・ライト・レジスタに書き込まれたコマンドのIDに応じて、対応するステータス情報用のレジスタから値が読み込まれる。レスポンス・データ・レジスタ部には、コマンドID毎にレスポンス・データ用のレジスタが割り当てられ、書き込まれたコマンドのIDの内容に応じて、レスポンス・データが対応するレジスタから読み込まれる。
【0129】
ホスト20から例えばCMD48(j、y)が発行された場合、“j”はページ番号、“y”はコマンドIDを示し、コマンドID=“y”に対応するステータス情報と、レスポンス・データが、Wi−Fi SDカード・データ・レジスタのレスポンス・ステータス・レジスタとレスポンス・データ・レジスタから、拡張レジスタを経由して、ホスト20により読み込出される。
【0130】
尚、“y”は対応するコマンドIDのレジスタのオフセットアドレスと定義してもよい。
【0131】
上記図20に示す実施形態は、Wi−Fi SDレジスタの値が対応する機能や処理に一対一に割り当てられている。このため、レジスタの内容を解釈する処理を経ずに効率的な処理を行うことが可能である。
【0132】
以降、図18と図19を用いて説明したWi−Fi SDレジスタがあるページのアドレスにそれぞれ割り当てられたケースを前提として、Wi−Fi SDレジスタの詳細を説明するが、他の実施形態にも適用可能である。
【0133】
図20に示す実施形態によれば、1つのコマンド(CMD49又はCMD48)により、複数のWi−Fi SDカード・コマンドなどのデータを転送することができるため、複数データを転送するために、複数回コマンド(CMD49又はCMD48)を発行する必要がない。このため、効率良くデータを転送でき、高速な処理が可能である。
【0134】
図21は、拡張レジスタがWi−Fi SDカード用に用いられる場合における拡張レジスタを示している。
【0135】
図21において、“Wi-Fi SD Card Identifier”は、拡張レジスタがWi−Fi SDカードに用いられることを示す情報であり、文字列“WIFISD00”が記録されている。
【0136】
“Wi-Fi SD Card Specification Version”は、このWi−Fi SDカードがサポートする Wi−Fi SDカード規格のバージョンであり、例えばVer. 1.0 をサポートするのであれば16進数“0x0100”が記録されている。
【0137】
“Wi-Fi SD Card Profile Indicator”は、このWi−Fi SDカードがサポートする機能を示すための情報である。例えば、図39に示すWi−Fi SDカード機能のうち、このWi−Fiカードがどのアプリケーションを使うことができるかを示す。ホストは最初にこの情報を取得した後、カードがサポートする機能のみを実行する必要がある。
【0138】
“Vendor Unique ID”は、このカードを作成したベンダーのIDの文字列が記録される。ホストはこのIDを参照することにより、カードベンダーを知ることができ、カードベンダー独自の追加機能が実装されているので、ホストがその機能を使うことができることを知ることができる。
【0139】
“Vendor Unique Field”は、カードベンダーが独自の情報を記録することができ、カードベンダー独自の追加機能のうちいずれの機能が実装されているか等の情報を記録することができる。
【0140】
“Command Write Register Port”は、ホストデバイスからカードに対してコマンドを発行するためのWi−Fi SDカード・コマンド・ライト・レジスタにアクセスするためのデータポートである。
【0141】
“Status Register Port”は、ホストデバイスがカードのステータス情報を取得するためのWi−Fi SDカード・ステータス・レジスタにアクセスするためのデータポートである。
【0142】
“Response Data Register Port”は、ホストデバイスがカードからの外部サーバーからダウンロードしたデータ(HTTPレスポンス・データ)を取得するためのWi−Fi SDカード・レスポンス・データ・レジスタにアクセスするためのデータポートである。
【0143】
“ID List Register Port”は、そのカードに接続している(若しくは接続をリクエストしている)他のデバイスのIDのリストをホストデバイスが取得するためのWi−Fi SD カードID・リスト・レジスタにアクセスするためのデータポートである。
【0144】
“SSID History Register Port”は、カードが過去に接続したSSID(若しくは接続しなかったが接続するようにリクエストされたSSID)のリストをホストデバイスが取得するためWi−Fi SDカードSSID・ヒストリ・レジスタにアクセスするためのデータポートである。
【0145】
図22は、Wi−Fi SDカード・コマンド・ライト・レジスタの構成例を示している。
【0146】
“Wi-Fi SD Card Register Identifier”は、このレジスタがWi−Fi SDカード・コマンド・ライト・レジスタであることを示す情報であり、文字列“WIFISDCR”が記録されている。
【0147】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、カードはこの情報を参照して、ライトコマンド(CMD49)が何回発行されて、どれだけのサイズのデータを受信すべきかが分かる。
【0148】
“Number of Wi-Fi SD Command Information”は、1回のWi−Fi SDカード・コマンド・ライト・レジスタへの書き込みにより、何個のWi-Fi SDコマンドが発行されるかを示す情報である。ホストが指定された個数分だけコマンドをリスト化することにより、カードは列挙されたコマンドの順次処理を行う。更にカードはコマンドの種類に応じて、最も効率の良い順序に並べ替えたり、並列実行が可能なものに関しては並列処理を行ったりすることも可能である。例えば、複数のサーバーにデータをアップロードする際には、負荷がかかっていないサーバーに対する処理を優先したり、カードの転送速度が転送先のサーバーのネットワーク転送速度よりも十分大きい場合は、複数のサーバーへの転送を同時に実行したりすることなどが可能になる。
【0149】
“Wi-Fi SD Command Information”は、それぞれ“Wi-Fi SD command id”、“Wi-Fi SD command sequence id”、“Total Number of Arguments”、“Length of Argument”、“Argument”により構成されている。
【0150】
“Wi-Fi SD command id”は、発行するWi-Fi SDコマンドの種類を表し、図23乃至図25のWi-Fi SDコマンドのうちの一つが記録される。
【0151】
“Wi-Fi SD command sequence id”は、発行されるWi−Fi SDコマンドを一つ一つ識別・区別するためにホストが割り振る値であり、ホストは発行した一つ一つのコマンドの状況をWi-Fi SDカード・ステータス・レジスタにより知ることができる。
【0152】
“Number of Arguments”は、発行するコマンドの引数の個数であり、“Length of Argument”は引数のデータの大きさを示し、“Argument”は引数のデータを示す。
【0153】
図23乃至図25は、Wi−Fi SDカード・コマンド・ライト・レジスタに書き込むコマンドの一覧を示している。
【0154】
“ScanWiFi”コマンドは、引数なしのコマンドで構成される。コマンドを実行すると、ホストがカードに対し、接続可能な無線LANをスキャンするようにリクエストし、その結果は、図43に示す“SSIDLIST”ファイルに保存することができる。
【0155】
“SetSSID”コマンドは、SSID名を示す“ssid”、パスフレーズを示す“passphrase”、認証方法を示す“authentication”の3つの引数により構成される。ホストは、“Server Upload Application”と“P2P Application”のために、接続する無線LANのSSID名とパスフレーズを設定するか、もしくは“P2P Restricted Server Application”と“P2P Server Application”のために、構築する無線LANのSSID名とパスフレーズと認証方法を設定することができる。なお、この設定は“StartApplication”コマンドを実行して無線LANに接続、または無線LANを構成するときに用いられる。なお、認証方式とは、ネットワークの認証方式とデータ暗号方式を示し、“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”のいずれかがホストから選択される。
【0156】
“SetCurrentTime”コマンドは、現在の日付を示す“currentDate”、現在の時刻を示す“currentTime”の2つの引数から構成される。コマンドを実行すると、ホストが指定した現在日付と現在時刻がカードに設定することができる。カードに電力が常時供給されていない場合、カードには日付・時刻情報を常時保持することが難しい。このとき、ホストからカードに日付・時刻設定を行うことにより、カードは日付・時刻情報を保持することができ、カードが作成するファイルなどの日付・時刻情報が必要なデータに対し、現在の日付・時刻を設定することができる。
【0157】
“StartApplication”コマンドは、起動するアプリケーションを示す“application”、現在日付を示す“currentDate”、現在時刻を示す“currentTime”の3つの引数から構成される。コマンドを実行すると、無線LANネットワークの設定に従い無線LANへの接続を行う、または無線LANの構築を行うことができる。次に、指定されたアプリケーション(図35に示された“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)の起動設定が行われていた場合、アプリケーション起動前の無線LANへの接続、または構成をWPSにより行う。もし、“SetSSID”コマンドによってSSIDが設定されている場合は、その設定を用いて無線LANへの接続または構成を行う。もし、“SetSSID”コマンドによってSSIDが設定されていない場合は、図32に示すカード中の“SSID History”に記録されている一つのSSIDを用いて無線LANへの接続または構成を行う。
【0158】
“SetWPS”コマンドは、WPS方式を示す“mode”、ピンコードを示す“pin”の2つの引数から構成される。コマンドを実行すると、カードは無線LAN接続や構成を行う際にWPSを用いることができる。ここでWPS方式が“WPS with PIN”の場合、設定されたピンコードを用いたピンコード認証を行い、“WPS with PBC”の場合、プッシュボタン認証を行う。
【0159】
“Abort”コマンドは、図22に記載された“Wi-Fi SD Command Sequence ID”を示す“sequenceID”の1つの引数から構成される。コマンドを実行すると、既に実行されたコマンドのうち指定された“Wi-Fi SD Command Sequence ID”をもつコマンドの処理を中断することができる。例えば、ユーザーがファイルをネットワーク内の機器やWebサーバーに対してアップロードやダウンロードを行っている際に、ユーザーが電源を切る等の理由で処理を中止する必要がある場合に用いることができる。
【0160】
“Reset”コマンドは、ステータス情報を示す“status”の1つの引数から構成される。ここで、ステータス情報とは、図26に記載された“Media Change”、“SSID List Update”、“File List Update”、“ID List Update”、“Response Data Update”等の情報のうちのいずれか1つを示している。コマンドが実行されると指定されたステータス情報をリセットして初期値に戻すことができる。例えば、“Media Change”は、カード中のファイルシステム情報が更新されたことを示すステータス情報であるが、ホストはホストデバイス内にキャッシュされたファイルシステム情報を更新可能な場合、この“Media Change”情報を参照し、カードのファイルシステムが更新されていれば、カードのファイルシステム情報をホストデバイスのファイルシステム情報に反映する。このとき、再度“Media Change”情報を参照することができるよう“Reset”コマンドを実行して“Media Change”情報を初期値に戻し、再度カードのファイルシステム情報が更新されることを知ることができる。
【0161】
“Remove”コマンドは、SSID名を示す“ssid”の1つの引数から構成される。コマンドが実行されると指定されたSSIDをカード内に記録されている“SSID History”レジスタから削除することができる。例えば、“SSID History”レジスタに記録されているSSIDのうち、既に使用しなくなったようなSSIDが残っている場合、カードがこのSSIDに接続を行ってしまうため、無駄な接続処理が発生する。同様に“SSID History”レジスタに記録されているSSIDのうち、ユーザーが接続することを意図しないSSIDが存在する場合、カードがこのSSIDに接続を行ってしまうため、他のSSIDに接続を行うことができない。以上の場合、“Remove”コマンドを実行することにより、意図しないSSIDに接続することを避けることができる。
【0162】
“EndApplication”コマンドは引数なしで構成されるコマンドである。コマンドが実行されると現在実行しているアプリケーションを終了し、カードは初期状態に戻ることができる。
【0163】
“SendHttpMessage”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージが記録されているファイルのファイルパスとファイル名を示す“messageFileName”の2つの引数により構成される。コマンドを実行する前に、HTTPリクエスト・ライン、HTTPメッセージ・ヘッダ、HTTPメッセージ・ボディから構成されるHTTPリクエスト・メッセージをファイルに記録する。ホストがコマンドを実行すると、カードは指定された送信先のサーバーに対し、前記ファイルをHTTPリクエスト・メッセージとして送信する。送信先のサーバーはカードからのHTTPリクエスト・メッセージに対し、HTTPレスポンス・メッセージを返信する。カードは、HTTPレスポンス・ライン、HTTPメッセージ・ヘッダ、HTTPメッセージ・ボディから構成される前記HTTPレスポンス・メッセージを受信し、ファイルとしてカードに記録する。このとき、ファイルは、図43におけるRESPONSEディレクトリの下に“Wi-Fi SD command sequence id”をファイル名として記録される。“Wi-Fi SD command sequence id”は、ホストが任意にコマンドごとに異なるように指定可能な値であり、たとえ他の“SendHttpMessage”を同時に実行してもHTTPレスポンス・メッセージのファイルを区別して受信することができる。更に、HTTPレスポンス・メッセージに添付ファイルが含まれる場合は、カードはメッセージ内に記載されているMIMEタイプによる添付ファイルの種別を識別し、図43に示すMIMEタイプに応じたディレクトリの下にファイルとして記録する。このときHTTPレスポンス・メッセージ内にファイル名の情報が含まれていれば、この情報をもとにファイルを記録する。以下に、HTTPリクエスト・メッセージを構成するファイルの内容の例を示す。
【0164】
――――――――――――――――――――――――――――――――――――――
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”の3つの引数から構成される。基本的な構成は“SendHttpMessage”コマンドと同様であるが、違いとしてHTTPリクエスト・メッセージ内の特定の文字列(例えば“<!--WIFISDFILE-->”とする)を、カードがHTTPリクエスト・メッセージの送信時に、添付するファイルの内容に置き換えることができる。このコマンドにより、カード内に既に記録されているファイルを加工することなしにHTTPリクエスト・メッセージとして送信することができる。例えば、カード内の写真データをWebサーバーにアップロードする場合に用いることができる。以下に、HTTPリクエスト・メッセージを構成するファイルの内容の例を示す。
【0165】
――――――――――――――――――――――――――――――――――――――
POST /hoge/ HTTP/1.1
Content-Type: text/plain
User-Agent: XXXXXXXX
Host: hogehoge.com
ContentLength=1234567
<!--WIFISDFILE-->
――――――――――――――――――――――――――――――――――――――
上記のHTTPリクエスト・メッセージに対し、カードは<!--WIFISDFILE-->を指定されたファイルに置き換えて下記のとおり送信する。
【0166】
――――――――――――――――――――――――――――――――――――――
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”の2つの引数から構成される。基本的な構成は“SendHttpMessage”コマンドと同様であるが、違いとしてはこのコマンドにより、HTTPリクエスト・メッセージの送信とHTTPレスポンス・メッセージの受信をSSL(Secure Socket Layer)やTLS(Transport Layer Security)で暗号化して行うことができる。
【0167】
“SendHttpSSLFile”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージが記録されているファイルのファイルパスとファイル名を示す“messageFileName”、送信するHTTPリクエスト・メッセージに添付するファイルのファイルパスとファイル名を示す“appendFileName”の3つの引数から構成される。基本的な構成は“SendHttpFile”コマンドと同様であるが、違いとしてはこのコマンドにより、HTTPリクエスト・メッセージの送信とHTTPレスポンス・メッセージの受信をSSL(Secure Socket Layer)やTLS(Transport Layer Security)で暗号化して行うことができる。
【0168】
“SendHttpMessageByRegister”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージを示す“message”の2つの引数から構成される。“SendHttpMessage”コマンドとは異なり、HTTPメッセージをカード内のファイルに書き込むのではなく、ホストがWi−Fi SDカード・コマンド・ライト・レジスタに対して直接HTTPメッセージを書き込むことができる。例えばパスワードなどの情報を送信先のサーバーに送る際に、ファイルに書き込むことによってパスワードが外部に流出することを防ぐことができる。ホストがコマンドを実行すると、カードは指定された送信先のサーバーに対し、入力されたHTTPリクエスト・メッセージ(HTTPリクエスト・ライン、HTTPメッセージ・ヘッダ、HTTPメッセージ・ボディから構成される)を送信する。送信先のサーバーはカードからのHTTPリクエスト・メッセージに対し、HTTPレスポンス・メッセージを返信する。カードは、HTTPレスポンス・ライン、HTTPメッセージ・ヘッダ、HTTPメッセージ・ボディから構成される前記HTTPレスポンス・メッセージを受信し、図30に示す“Response Data”としてWi−Fi SDカード・レスポンス・データ・レジスタに書き込む。ホストはリードコマンド(CMD48)により、Wi−Fi SDカード・レスポンス・データ・レジスタを読み込むことにより、実行した“SendHttpMessageByRegister”に対するHTTPレスポンス・メッセージを読み込むことができる。
【0169】
“SendHttpFileByRegister”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージに添付するファイルのファイルパスとファイル名を示す“appendFileName”、送信するHTTPリクエスト・メッセージを示す“message”の3つの引数から構成される。基本的な構成は“SendHttpMessageByRegister”コマンドと同様であるが、違いとしてHTTPリクエスト・メッセージ内の特定の文字列(例えば“<!--WIFISDFILE-->”とする)を、カードがHTTPリクエスト・メッセージの送信時に、添付するファイルの内容に置き換えることができる。
【0170】
“SendHttpSSLMessageByRegister”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージを示す“message”の2つの引数により構成される。基本的な構成は“SendHttpMessageByRegister”コマンドと同様であるが、違いとしてはこのコマンドにより、HTTPリクエスト・メッセージの送信とHTTPレスポンス・メッセージの受信をSSL(Secure Socket Layer)やTLS(Transport Layer Security)で暗号化して行うことができる。
【0171】
“SendHttpSSLFile”コマンドは、送信先のサーバーを示す“hostname”、送信するHTTPリクエスト・メッセージに添付するファイルのファイルパスとファイル名を示す“appendFileName”、送信するHTTPリクエスト・メッセージを示す“message”の3つの引数から構成される。基本的な構成は“SendHttpFileByRegister”コマンドと同様であるが、違いとしてはこのコマンドにより、HTTPリクエスト・メッセージの送信とHTTPレスポンス・メッセージの受信をSSL(Secure Socket Layer)やTLS(Transport Layer Security)で暗号化して行うことができる。
【0172】
“GetFile”コマンドは、受信するファイルのファイルパスとファイル名を示す“requestFileName”、受信したファイルの記録先のファイルパスとファイル名を示す“Savefilename”の2つの引数により構成される。このコマンドはP2P Clientアプリケーションにおいて実行され、受信者が、送信者から取得した“FILELIST”ファイル(図43に示す)に記載された取得可能なファイルのファイルパスとファイル名をもとに、送信者から所望のファイルを取得して指定したファイルに記録することができる。
【0173】
“SelectID”コマンドは、アクセスを許可する受信者のIDを示す“id”の1つの引数から構成される。このコマンドは、P2P Restricted Serverアプリケーションにおいて実行される。P2P Restricted Serverアプリケーションは、受信者に対して、アクセスを許可するか拒否するかを決めるため受信者に対してIDの送信を要求する。受信者はアクセスの許可を取得するために受信者のIDを送信者に送り、送信者はアクセスを許可する受信者に対してのみ、このコマンドを実行する。このコマンドが実行されない受信者のIDは、送信者に対してアクセスを行うことができない。
【0174】
“CancelID”コマンドは、アクセスを取り消す受信者のIDを示すidの1つの引数から構成される。このコマンドはP2P Restricted Serverアプリケーションにおいて実行される。P2P Restricted Serverアプリケーションにおいて、このコマンドを実行することにより、すでにアクセスが許可された受信者に対して、アクセスを取り消すことができる。
【0175】
“SetMailAccount”コマンドは、アカウント名を示す“accountName”、そのパスワードを示す“password”の2つの引数から構成される。このコマンドを実行することにより、メール・サーバーに対して、メール・アカウントの設定を行い、メールの送信と受信を行うことができる。
【0176】
“SendSmtpMessage”は、送信先のアドレスを示す“address”、送信するメールの本文が記録されているファイルのファイルパスとファイル名を示す“messageFileName”の2つの引数から構成される。このコマンドを実行することにより、カードは送信先のアドレスに対して、指定されたファイルをメールの本文として送信する。
【0177】
“SendSmtpFile”は、送信先のアドレスを示す“address”、送信するメールの本文が記録されているファイルのファイルパスとファイル名を示す“messageFileName”、添付するファイルのファイルパスとファイル名を示す“appendFileName”の3つの引数により構成される。このコマンドを実行することにより、カードは送信先のアドレスに対して、指定されたファイルをメールの本文とし、指定された添付ファイルに対しbase64変換を施し、バイナリーデータからテキストデータに変換してメールの本文の末尾に添付し、メールの送信を行う。
【0178】
“SendSmtpMessageByRegister”は、送信先のアドレスを示す“address”、送信するメールの本文を示す“message”の2つの引数から構成される。このコマンドを実行することにより、カードは送信先のアドレスに対して、コマンドの引数として入力されたデータをメールの本文として送信する。
【0179】
“SendSmtpFileByRegister”は、送信先のアドレスを示す“address”、添付するファイルのファイルパスとファイル名を示す“appendFileName”、送信するメールの本文を示す“message”の3つの引数により構成される。このコマンドを実行することにより、カードは送信先のアドレスに対して、コマンドの引数として入力されたデータをメールの本文とし、指定された添付ファイルに対しbase64変換を施し、バイナリーデータからテキストデータに変換してメールの本文の末尾に添付し、メールの送信を行う。
【0180】
“ShowDeviceList”は、ネットワーク内のデバイスリストを取得するためのコマンドである。
【0181】
“PrintImageByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定した画像を転送、印刷するためのコマンドである。
【0182】
“DisplayImageByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定した画像を転送、表示するためのコマンドである。
【0183】
“PlayVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、再生するためのコマンドである。
【0184】
“StopVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、再生停止するためのコマンドである。
【0185】
“PauseOnVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、再生一時停止するためのコマンドである。
【0186】
“PauseOffPlayVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、再生一時停止解除するためのコマンドである。
【0187】
“SeekVideoByDLNA(time, address, file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送したい箇所(ファイルのアドレス、もしくはビデオの再生開始時間)から再生するためのコマンドである。
【0188】
“FastForwardVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、早送り再生するためのコマンドである。
【0189】
“SlowForwardVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、スロー再生するためのコマンドである。
【0190】
“FastBackwardVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、巻き戻し再生するためのコマンドである。
【0191】
“SlowBackwardVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、逆スロー再生するためのコマンドである。
【0192】
“StreamingDownloadVideoByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したビデオを転送、再生しながら記録するためのコマンドである。
【0193】
“SendFileByDLNA(file, targetDevice)”は、ネットワーク内のデバイスに対して指定したファイルを転送するためのコマンドである。
【0194】
“SelectFileByDLNA(file)”は、ネットワーク内のデバイスに対して指定したファイルを公開するためのコマンドである。
【0195】
“CancelFileByDLNA(file)”は、ネットワーク内のデバイスに対して指定したファイルを非公開するためのコマンドである。すでに公開しているファイルの公開を取り消すことができる。
図26乃至図27は、Wi−Fi SDカード・ステータス・レジスタの構成例を示している。
【0196】
“Wi-Fi SD Card Register Identifier”は、このレジスタがWi−Fi SDカード・ステータス・レジスタであることを示すためのものであり、文字列“WIFISDSR”が記録されている。
【0197】
“Size of Wi-Fi SD Card Register”は、このレジスタのサイズを示しており、もしこの値が512より大きい場合は、ホストは一回のリードコマンド(CMD48)の実行ではレジスタの値を全て読み出すことができず、リードコマンド(CMD48)をceil(レジスタサイズ/512)回実行する必要がある。
【0198】
“WLAN”は、無線LANの状態を示す情報であり、図42に示す“Initial”、“Scan”、“Association”、“STA”、“AP”のいずれかの状態を示す。
【0199】
“Application”は、現在実行されているアプリケーションを示す情報であり、図41に示す“Initial Application”、“Server Upload Application”、“P2P Server Application”、“P2P Restricted Server Application”、“P2P Client Application”、“DLNA Server Application”、“DLNA Controller Application”のいずれかの状態を示す。
【0200】
“SSID”は、現在接続している、もしくは構成している無線LANのSSID名を示す。無線LANに非接続状態の場合は、接続もしくは構成するときに用いる予定のSSID名を示している。
【0201】
“Network Authentication”は、現在無線LANに接続している、または無線LANを構成しているネットワークの認証方式とデータの暗号化方式を示し、“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”のいずれかが選択される。
【0202】
“HTTP Processing”は、カードがHTTPメッセージを送受信しているか、送受信していないかを示す。
【0203】
“HTTP Progress”は、HTTPメッセージの送受信の進捗度を百分率で示す。カードは送受信中のHTTPメッセージのヘッダーからメッセージのトータルサイズを知ることができ、現在、送受信済みのHTTPメッセージのサイズから進捗度を計算する。
【0204】
“Date”は現在の日付を示す。
【0205】
“Time”は現在の時刻を示す。
【0206】
“Media Change”は、カード内のNAND Memory ModuleのFAT(File Allocation Table)情報が更新されているかどうかを示す情報である。もし更新されている場合において、ホストはホスト内にキャッシュしているFAT情報があるのであれば、カードのFAT情報をキャッシュし直す必要がある。なお、この情報はアプリケーションを終了する“EndApplication”コマンドか、ステータス情報を初期化する“Reset”コマンドを実行することにより初期値にすることが可能である。
【0207】
“SSID List Update”は、“SSID List”が更新されているかどうかを示す情報である。カードは“ScanWiFi”コマンドが実行されると無線LANのスキャンを行い、”SSIDLIST”ファイルを作成し、“SSID List Update”情報を設定する。ホストはこの情報を参照することにより、カードのスキャン作業が終了したかどうかを知ることができる。なお、この情報は“ScanWiFi”コマンドを再度実行するか、ステータス情報を初期化する“Reset”コマンドを実行することにより初期値にすることが可能である。
【0208】
“File List Update”は、“File List”が更新されているかどうかを示す情報である。カードはP2P Client Applicationにおいて、受信側のアクセスが許可されれば、送信側から“File List”を受信したものを“FILELIST”ファイルとして記録し、“File List Update”情報を設定する。ホストはこの情報を参照することにより、カードが“File List”を取得したかどうかを知ることができる。この情報はアプリケーションを終了する“EndApplication”コマンドか、ステータス情報を初期化する“Reset”コマンドを実行することにより初期値にすることが可能である。
【0209】
“Response Data Update”は、“Response Data”が更新されているかどうかを示す情報である。ホストが“SendHttpMessageByRegister”コマンド等のWi−Fi SDカードレジスタ経由でのHTTPメッセージの送受信を実行し、カードがHTTPレスポンス・メッセージを受信し、“Response Data”情報を設定する。ホストはこの情報を参照することにより、カードがHTTPレスポンス・メッセージを受信し、Wi−Fi SDカード・レスポンス・データ・レジスタによって参照できるようになったことを知ることができる。この情報はアプリケーションを終了する“EndApplication”コマンドか、ステータス情報を初期化する“Reset”コマンドを実行することにより初期値にすることが可能である。この情報は、ホストがリードコマンド(CMD48)により、全ての“Response Data”が読み込みが完了したときか、ステータス情報を初期化する“Reset”コマンドを実行することにより初期値にすることが可能である。
【0210】
“Signal Strength”は、現在の信号強度を示す情報である。信号なし、レベル1、レベル2、レベル3、レベル4、レベル5のいずれかが設定される。
【0211】
“MAC Address”は、Wi−Fi SDカードのMACアドレスを示す情報である。
【0212】
“ID s”は、Wi−Fi SDカードのIDを示す情報である。この値は図33に示すユーザーが設定可能な“Card Configuration Information”のID情報に設定した値が反映される。
【0213】
“DHCP Enabled”は、“DHCP”を有効にしているかどうかを示す情報である。この値は図33に示すユーザーが設定可能な“Card Configuration Information”の“DHCP”情報に設定した値が反映される。
【0214】
“IP Address”は、現在設定されているIPアドレスを示す情報である。
【0215】
“Subnet Mask”は、現在設定されているサブネット・マスクを示す情報である。
【0216】
“Default Gateway”は、現在設定されているデフォルト・ゲートウェイを示す情報である。
【0217】
“Preferred DNS Server”は、現在設定されている優先DNSサーバーを示す情報である。
【0218】
“Alternate DNS Server”は、現在設定されている代替DNSサーバーを示す情報である。
【0219】
“Time Out”は、カードがタイムアウト処理を行うまでの待ち時間を示す情報である。この値は図33に示すユーザーが設定可能な“Card Configuration Information”の“Time Out”情報に設定した値が反映される。
【0220】
“Power Save mode”は、カードが省電力モードで動作しているかどうかを示す情報である。これは図33に示すユーザーが設定可能な“Card Configuration Information”の“Power Save mode”情報に設定した値が反映されるが、省電力モードをサポートしないカードは常に通常モードに設定される。
【0221】
“WPS mode”は“WPS”で無線LANの接続や構成を行う際のWPS方式を示す情報である。この情報は“SetWPS”コマンドにより設定可能であり、設定されたピンコードを用いたピンコード認証を行う“WPS with PIN”、もしくはプッシュボタン認証を行う“WPS with PBC”のいずれかが設定される。なお、“SetWPS”コマンドを実行しない場合は、“WPS”を使用しないモードに設定され、WPSを使わずに無線LAN接続や構成を行う。
【0222】
“Selected Number of Proxy Server”は、図33に示すユーザー設定可能な“Card Configuration Information”に記録されている“Proxy Server Name”のうち、どのプロキシ・サーバーを使っているかを示す情報である。これは“Card Configuration Information”の“Selected Proxy Server”情報に設定した値が反映される。
【0223】
“Current Mail Account Name”は現在のメール・アカウント名を示す情報である。この情報は“SetMailAccount”コマンドにより設定された値が反映される。
【0224】
図28は、Wi−Fi SDカード・コマンド・レスポンス・ステータス・レジスタの構成例を示している。
【0225】
“Wi-Fi SD Card Register Identifier”は、このレジスタがWi−Fi SDカード・コマンド・レスポンス・ステータス・レジスタであることを示す情報であり、文字列 “WIFISDRS” が記録されている。
【0226】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、ホストはこの情報を参照して、リードコマンド(CMD48)を何回発行して、どれだけのサイズのデータを読み込むべきかが分かる
“Number of Wi-Fi SD Command Response Status”は、1回のWi−Fi SDカード・コマンド・レスポンス・ステータス・レジスタの読み込みにより、何個の“Wi-Fi SD Command Response Status”が取得できるかを示す情報である。
【0227】
“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”から構成されている。
【0228】
“Wi-Fi SD command id”は、ホストがWi−Fi SD・カード・コマンド・ライト・レジスタ経由で発行したWi-Fi SDコマンドの種類を表し、図23、図24、図25のWi-Fi SDコマンドのうちの一つが記録される。
【0229】
“Wi-Fi SD command sequence id”は、ホストがコマンドを発行する際に、それぞれのコマンドを識別するためにホストが割り振った値であり、それと同じ値が設定される。
【0230】
“Command Response Status”は、ホストが発行したコマンドの状態を示す情報であり、発行したコマンドをカードが問題なく受信できたか、何らかの問題があり受信できなかったか、という状態を示すものである。例えば、発行したコマンドの設定に問題があった場合、またはカード側が他のコマンド処理を行っている最中なので新しいコマンドを受け付けることができない場合などに、コマンドの受信できないことがありうる。
【0231】
“Reserved for Vendors for Error Status”は、エラーが発生した場合に、どのような理由でエラーが発生しているのかを示す情報である。
【0232】
図29は、Wi−Fi SDカード・コマンド・プロセス・ステータス・レジスタの構成例を示している。
【0233】
“Wi-Fi SD Card Register Identifier”は、このレジスタがWi−Fi SDカード・コマンド・プロセス・ステータス・レジスタであることを示す情報であり、文字列 “WIFISDPS” が記録されている。
【0234】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、ホストはこの情報を参照して、リードコマンド(CMD48)を何回発行して、どれだけのサイズのデータを読み込むべきかが分かる
“Number of Wi-Fi SD Command Process Status”は、1回のWi−Fi SDカード・コマンド・プロセス・ステータス・レジスタの読み込みにより、何個の“Command Process Status”が取得できるかを示す情報である。
【0235】
“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”により構成されている。
【0236】
“Wi-Fi SD command id”は、ホストがWi−Fi SDカード・カード・コマンド・レジスタ経由で発行したWi-Fi SDコマンドの種類を表し、図23、図24、図25のWi-Fi SDコマンドのうちの一つが記録される。
【0237】
“Wi-Fi SD command sequence id”は、ホストがコマンドを発行する際に、それぞれのコマンドを識別するためにホストが割り振った値であり、それと同じ値が設定される。
【0238】
“Command Process Status”は、ホストが発行したコマンドの状態を示す情報であり、コマンド処理前、コマンド処理中、コマンド処理成功、コマンド処理失敗のいずれかの状態を示すものである。
【0239】
“Reserved for Vendors for Error Status”は、エラーが発生した場合に、どのような理由でエラーが発生しているのかを示す情報である。
【0240】
図30は、Wi−Fi SDカード・レスポンス・データ・レジスタの構成例を示している。
【0241】
“Wi-Fi SD Card Identifier”は、このレジスタがWi−Fi SDカード・レスポンス・データ・レジスタであることを示す情報であり、文字列 “WIFISDRD” が記録されている。
【0242】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、ホストはこの情報を参照して、リードコマンド(CMD48)を何回発行して、どれだけのサイズのデータを読み込むべきかが分かる
“Number of Wi-Fi SD Response Data”は、1回のWi−Fi SDカード・レスポンス・データ・レジスタの読み込みにより、何個の“Response Data”が取得できるかを示す情報である。
【0243】
“Wi-Fi SD command id”は、ホストがWi−Fi SDカード・カード・コマンド・レジスタ経由で発行したWi-Fi SDコマンドの種類を表し、図23、図24、図25のWi-Fi SDコマンドのうちの一つが記録される。
【0244】
“Wi-Fi SD command sequence id”は、ホストがコマンドを発行する際に、それぞれのコマンドを識別するためにホストが割り振った値であり、それと同じ値が設定される。
【0245】
“Size of Response Data”は、“Response data”のサイズを示す情報であり、”Response Data”は、“SendMessageByRegister”コマンドなどのWi−Fi SDコマンド・ライト・レジスタ経由でHTTPリクエスト・メッセージを送信し、Wi−Fi SDレスポンス・データ・レジスタ経由でHTTPレスポンス・メッセージを受信するようなコマンドを発行した際に、受信したデータが記録される。
【0246】
図31は、Wi−Fi SDカードIDリスト・レジスタの構成例を示している。
【0247】
“Wi-Fi SD Card Register Identifier”は、このレジスタがWi−Fi SDカードIDリスト・レジスタであることを示す情報であり、文字列 “WIFISDIL” が記録されている。
【0248】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、ホストはこの情報を参照して、リードコマンド(CMD48)を何回発行して、どれだけのサイズのデータを読み込むべきかが分かる
“Number of Receiver IDs”は、リスト中に幾つの受信者IDが含まれているかを示す。つまり、“P2P Restricted Server Application”を実行している送信者に対して、幾つの“P2P Client Application”を実行している受信者がアクセスをリクエストしているかを示す。
【0249】
“Receiver ID”は、送信者に対してアクセスをリクエストしている受信者のIDである。受信者のIDは受信者の“Card Configuration Information”により設定される。
【0250】
“Receiver MAC Address”は、送信者に対してアクセスをリクエストしている受信者のMACアドレスである。
【0251】
“Receiver Permission”は、送信者に対してアクセスをリクエストしている受信者が、送信者からアクセスを許可されているかどうかを示す情報である。つまり、送信者が各受信者に対して、“SelectID”コマンドによりアクセスを許可したかどうかを示す情報である。
【0252】
図32は、Wi−Fi SDカードSSIDヒストリ・レジスタの構成例を示している。
【0253】
“Wi-Fi SD Card Register Identifier”は、このレジスタがWi−Fi SDカードSSIDヒストリ・レジスタであることを示す情報であり、文字列“WIFISDSH”が記録されている。
【0254】
“Size of Wi-Fi SD Card Register”は、レジスタのサイズを表す情報であり、ホストはこの情報を参照して、リードコマンド(CMD48)を何回発行して、どれだけのサイズのデータを読み込むべきかが分かる
“SSID”は、カードがこれまで無線LANに接続または構築した際のSSIDの履歴リストにあるSSIDの名前が記録される。
【0255】
“MAC Address”は、カードがこれまで無線LANに接続または構築した際のSSIDの履歴リストにあるSSIDに対応したAP(アクセス・ポイント)のMACアドレスが記録される。
【0256】
なお、レジスタには記録されないが、カードには各SSIDに対するパスフレーズやチャンネル等の情報が保持されており、ホストから無線LANに接続または構築する際に、特定のSSIDが指定されなかった場合に、カードはこれらの情報を用いて接続または構築可能なSSIDの検索を行う。
【0257】
図33は、Wi−Fi SDカード“Configuration Information”の構成例を示している。
【0258】
“Wi-Fi SD Card Identifier”は、この情報がWi−Fi SDカード“Configuration Information”であることを示す情報であり、文字列“WIFISDCI”が記録されている。
【0259】
“Size of Configuration Information”は、Wi−Fi SDカード“Configuration Information”のサイズを表す情報である。
【0260】
“ID”は、このカードのIDを設定する情報であり、“P2P Client Application”の実行時に受信者のIDとして、このIDを送信者に送る際に用いられる。
【0261】
“DHCP Enabled”は、IP アドレス等の設定にDHCPを用いるかどうかを設定する情報である。
【0262】
“IP Address”は、IPアドレスを手動で設定する際に用いる情報である。
【0263】
“Subnet Mask”は、“Subnet Mask”を手動で設定する際に用いる情報である。
【0264】
“Default Gateway”は、“Default Gateway”を手動で設定する際に用いる情報である。
【0265】
“Preferred DNS Server”は、優先DNSサーバーを手動で設定する際に用いる情報である。
【0266】
“Alternate DNS Server”は、代替DNSサーバーを手動で設定する際に用いる情報である。
【0267】
“Time Out”は、カードがタイムアウト処理を行うまでの待ち時間を設定する情報である。この値は図27に示すWi−Fi SDカード・ステータス・レジスタの“Time Out”情報に反映され、ホストが参照することができる。
【0268】
“Power Save mode”は、カードが省電力モードで動作させるかどうかを設定する情報である。省電力モードをサポートしないカードにおいては、この設定は無視される。
【0269】
“Number of Proxy Servers”は、このカードに設定するプロキシ・サーバーの数である。
【0270】
“Selected Proxy Server”は、このカードに設定するプロキシ・サーバーのうち、現在はどのプロキシ・サーバーを使うかを示す情報である。(例えばリストの番号が示される)
“Length of Proxy Server Name”は、設定するプロキシ・サーバー名の文字数である。
【0271】
“Proxy Server Name”は、設定するプロキシ・サーバー名である。
【0272】
“Port Number”は、設定するプロキシ・サーバーのポート番号である。
【0273】
“Mail Address”は、メールの送受信を行うユーザーのメール・アドレスを設定する。
【0274】
また、図示しないが、カードが接続可能なWebサービスのホスト名、そのWebサービスに接続に必要な情報(例えば、ユーザーアカウント名、パスワード、トークンデータ)なども記録することができる。
【0275】
なお、一部を除き、これらの設定は図26、図27に示すWi−Fi SDカード・ステータス・レジスタの各情報に対応しており、実際にどの値で動作しているかは、リードコマンド(CMD48)を発行してWi−Fi SDカード・ステータス・レジスタを参照することができる。
【0276】
図34は、ライトコマンド(CMD49)を用いてWi−Fi SDカードのコマンドを発行するとき、つまり、Wi−Fi SDカード・コマンド・ライト・レジスタにアクセスしたときのタイミングチャートを示している。ここで、図中のCMDとDATはカードインターフェース上のコマンドバスとデータバスを示し、カード動作はそのときのカードの動作状態を示している。
【0277】
ホスト20からライトコマンド(CMD49)が発行されると、SDカード11はレスポンス(R1)をホスト20に返す。
【0278】
次に、ホスト20は、Wi−Fi SDカード・コマンド・ライト・レジスタのデータ(Wi−Fi SDカード・コマンド)をCRCとともにSDカード11に送る。この送られたデータは、SDカード11の指定された拡張レジスタに記録される。SDカード11は、送られたデータの解析を行うため、データバスがビジー状態となる。このため、ホスト20から追加のコマンドを発行できない。
【0279】
SDカード11は、データの解析を行った後、コマンドを受け取ることができれば“0x01”を、受け取ることができなければ“0x02”をWi−Fi SDカード・ステータス・レジスタ上のコマンド・ステータスに設定する。もし、コマンドを受け取ることができれば、SDカード11はコマンドの実行処理に移る。コマンドの実行状況は、図24乃至図28に示すWi−Fi SDカード・ステータス・レジスタ上のプロセス・ステータスによって参照することができる。コマンドの実行処理が完了すると、プロセス・ステータスからコマンドの実行状況が消去され、代わりに実行結果がWi−Fi SDカード・ステータス・レジスタにおいて、別のステータス情報に反映される。
【0280】
図35は、図17に対応するものであり、複数のライトコマンド(CMD49)により、Wi−Fi SDカード・コマンドを発行したとき、つまり、Wi−Fi SDカード・コマンド・ライト・レジスタのサイズが512バイトを超える場合のタイミングチャートを示している。
【0281】
ホスト20からライトコマンド(CMD49)が発行されると、SDカード11は、レスポンス(R1)をホスト20に返す。
【0282】
次に、ホスト20は、先ず、Wi−Fi SDカード・コマンド・ライト・レジスタのデータ(Wi−Fi SDカード・コマンド)のうち、1/nをCRCとともにSDカード11に送る。すなわち、512バイトを超えるデータのうちの最初の512バイトが転送される。この送られたデータは、SDカード11の指定された拡張レジスタに記録される。このとき、SDカード11は送られたデータの解析を行うためデータバスがビジー状態となり、ホスト20から追加のコマンドの発行はできない。この状態において、SDカード11は、データを解析する。
【0283】
最初のデータには、データサイズ(Nr)が記録されているため、データ解析により、ライトコマンド(CMD49)が続いて発行されることが分かる。この後、ビジー状態が解除され、次のライトコマンド(CMD49)の発行待ち状態となる。ホスト20は、ビジー状態が解除された後、上記と同様にライトコマンド(CMD49)を発行し、Wi−Fi SDカード・コマンド・ライト・レジスタのデータのうち、残りのデータを転送する。ホストデバイス20から最後のライトコマンド(CMD49)が発行され、Wi−Fi SDカード・コマンド・ライト・レジスタのデータのうち、最後のデータ(n/n)が転送された後、SDカード11は、データ(コマンド)を解析し、コマンドの処理を実行する。
【0284】
図36は、図20に対応するものであり、1つのライトコマンド(CMD49)により発行されたデータに、複数のWi−Fi SDカード・コマンドが含まれる場合のタイミングチャートを示している。
【0285】
複数のWi−Fi SDカード・コマンドの発行は、例えば複数のファイルの転送を連続的に行うときなどに用いられる。
【0286】
ホスト20からライトコマンド(CMD49)が発行されると、SDカード11は、レスポンス(R1)をホストデバイス20返す。
【0287】
次に、ホスト20は、Wi−Fi SDカード・コマンド・ライト・レジスタのデータをCRCとともにSDカード11に送る。この送られたデータは、SDカード11の指定された拡張レジスタに記録される。SDカード11は、送られたデータ(コマンド#1〜#mを解析するため、データバスがビジー状態とされ、ホスト20により追加のコマンドは発行できない。
【0288】
SDカード11は、データの解析を行った後、コマンドを受け取ることができれば“0x01”を、受け取ることができなければ“0x02”を発行された複数のコマンドに対して、Wi−Fi SDカード・ステータス・レジスタ上のコマンド・ステータスにそれぞれ設定する。もし、コマンドを受け取ることができる場合、SDカード11は、各コマンドを実行する。全てのコマンドの実行状況は、Wi−Fi SDカード・ステータス・レジスタ上のプロセス・ステータスによって参照することができる。
【0289】
1つのコマンドの実行処理が完了すると、プロセス・ステータスからコマンドの実行状況が消去され、代わりに実行結果が、Wi−Fi SDカード・ステータス・レジスタ上の別のステータス情報に反映される。
【0290】
次に、まだ実行していないコマンドが実行される。図32は、一例として、コマンドの実行処理を連続して行うタイミングチャートを示したが、コマンドの実行処理は並列して行うことも可能である。また、SDカード11がコマンドの実行順序を最適化して実行することも可能である。
【0291】
図36の実施形態によれば、1つのコマンドにより発行されたデータに、複数のWi−Fi SDカード・コマンドが含まれているため、効率良くWi−Fi SDカード・コマンドを転送し、実行することが可能である。
【0292】
図37は、リードコマンド(CMD48)を用いて、Wi−Fi SDカード11からデータを取得した場合、つまり、Wi−Fi SDカード・ステータス・レジスタ、Wi−Fi SDカード・レスポンス・データ・レジスタ、Wi−Fi SDカードID・リスト・レジスタ、Wi−Fi SDカードSSID・ヒストリ・レジスタにアクセスした場合のタイミングチャートを示している。
【0293】
ホスト20からリードコマンド(CMD48)が発行されると、SDカード11は、レスポンス(R1)をホストデバイス20返す。
【0294】
次に、SDカード11は、リードコマンド(CMD48)の引数に応じて、Wi−Fi SDカード・ステータス・レジスタ、Wi−Fi SDカード・レスポンス・データ・レジスタ、Wi−Fi SDカードID・リスト・レジスタ、Wi−Fi SDカードSSID・ヒストリ・レジスタのいずれかのデータ(例えばステータス)を拡張レジスタに準備する。さらに、SDカード11は、この拡張レジスタ内のデータをCRCとともにホスト20に送る。
【0295】
図38は、図17に対応するものであり、複数のリードコマンド(CMD48)により、Wi−Fi SDカードのデータを取得する場合、つまり、Wi−Fi SDカード・レスポンス・データ・レジスタ等のサイズが512バイトを超える場合のタイミングチャートを示している。
【0296】
ホスト20からリードコマンド(CMD48)が発行されると、SDカード11は、レスポンス(R1)をホスト20に返す。
【0297】
次に、SDカード11は、リードコマンド(CMD48)の引数に応じて、Wi−Fi SDカード・レスポンス・データ・レジスタ等のデータを拡張レジスタに準備し、この拡張レジスタのデータをCRCとともにホスト20に送る。
【0298】
ホスト20は、受け取ったデータを解析する。最初のデータには、データサイズ(Nr)が記録されているため、リードコマンド(CMD48)を続いて発行する必要があることが分かる。このため、データの解析終了後、次のリードコマンド(CMD48)が発行される。以降の動作は、図31に示すライトコマンド(CMD49)の動作と同様であるため、説明は省略する。
【0299】
図38に示す実施形態によれば、データ長が512バイトを超えるデータを確実に読み取ることが可能である。
【0300】
図39は、Wi−Fi SDカードがサポートするアプリケーションの一例を示している。
【0301】
図40は、ホストデバイスの起動時の動作を示している。
【0302】
ホスト20は、起動されると、リードコマンド(CMD48)を発行し、拡張レジスタ31のページ0のデータを読み込み、SDカード11が有する拡張機能としての無線通信機能を確認する(S11、S12)。すなわち、SDカード11がWi−Fi機能や、Bluetooth機能など、どのような無線通信機能を実装しているかが確認される。次に、ホスト20がSDカード11の拡張機能に対応しているかどうかが判別される(S13)。この結果、拡張機能に対応している場合、その拡張機能を有効とさせるため、拡張レジスタ31のページi(iは0以外)のデータが読み込まれ(S14)、SDカード11が対応する例えば規格名、バージョン、プロファイル、デバイス情報などが確認される(S15)。これに基づき、ホスト20は、ホスト20が所有する最適なドライバを有効とする(S16)。これにより、SDカード11の拡張機能にアクセスすることが可能となる。
【0303】
次に、拡張レジスタ31の全てのページの機能を確認したかどうかが判別される(S17)。この結果、残りのページがある場合、次のページにおけるカードの機能が確認され(S18、S16)、全てのページが確認されている場合は、機能設定が終了される。
【0304】
図41は、各アプリケーションの状態遷移図である。
【0305】
図39に示す各アプリケーションは、“Initial Application”を初期状態とし、“StartApplication”コマンドにより各アプリケーションに遷移、“EndApplication”により初期状態に戻る構成になっている。これにより、各アプリケーションが同時に実行されることを避けることができ、カードの実装の負荷を低減し、ホストのアプリケーションの使用方法を単純化することができる。
【0306】
図42は、無線LANの状態遷移図である。
【0307】
無線LANの状態は“Initial/Failed”、“Scan”、“AP”、“STA”、“Association”に分類される。
【0308】
“Initial/Failed”は、無線LANの初期状態を示す、ただし何らかの処理が失敗し場合も初期状態と同じ状態に遷移する。
【0309】
“Scan”は、“ScanWiFi”、コマンドによりスキャンを実行中であることを示す状態である。スキャンが終了し、”SSIDLIST”ファイルを出力すると初期状態に戻る。
【0310】
“AP”はアクセスポイントとして無線LANを構築している状態である。初期状態から、インフラストラクチャのAPとなるためのコマンドの実行、またはAPとなる必要があるアプリケーションを起動するコマンドの実行を行った状態である。
【0311】
“Association”は、インフラストラクチャのSTAとして無線LANに接続するためにアソシエーションを行うとともにDHCPサーバーからIPアドレス等の設定を行っている状態である。これが成功するとSTAとして無線LANに接続している状態に遷移し、失敗すると初期状態に戻る。
【0312】
なお、現在の無線LANの状態は図24に示すWi−Fi SDカード・ステータス・レジスタのWLAN情報に反映され、ホストはリードコマンド(CMD48)を発行することで、いつでも無線LANの状態を知ることができ、現在の無線LANの状態に応じたコマンドを実行することができる。
【0313】
図43は、Wi−Fi SDカード内のディレクトリ構成を示している。
【0314】
“DCIM”ディレクトリはDCF(Design rule for Camera File system)規格で定められる写真データを記録するためのディレクトリである。また、MISCファイルはDPOF(Digital Print Order Format)規格が定める写真プリントのためのデータや他のデータを記録するためのディレクトリである。“WIFISD”ディレクトリは本発明におけるWi−Fi SDカードに関連するデータを記録するためのディレクトリである。
【0315】
“WIFISD”ディレクトリの下には、“DOWNLOAD”ディレクトリ、“CONFIG”ファイル、“SSIDLIST”ファイル、“FILELIST”ファイルが記録されている。
【0316】
“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”の規定の連番を用いる。
【0317】
“CONFIG”ファイルは、図33に示した“Wi-Fi SD Card Configuration Information”を記録するファイルであり、ホストが編集することができる。また、ホストが“StartApplication”コマンドを実行して無線LANの接続や構築を行った際に“Card Configuration Information”の設定情報がその接続と設定に用いられる。
【0318】
“SSIDLIST”ファイルは、“ScanWiFi”コマンドを実行した際に、接続可能なSSID名、信号強度、“AP”のMACアドレスをリストとしてカードがファイルに出力するときの出力ファイルである。ホストはこのリストを参照し、接続するSSID名を選択し、“SetSSID”コマンドで設定することができる。
【0319】
“FILELIST”ファイルは、“P2P [Restricted] Server Application”を実行する送信者が、“P2P Client Application”実行する受信者に対し、送信可能なファイル(例えば写真のデータ)のリストをファイルとして記録してものである。“FILELIST”ファイルには、送信するファイルのファイルパスとファイル名とともに、そのファイルのサムネール・ファイルのファイルパスとファイル名、そのファイルのメタデータ・ファイルのファイルパスとファイル名を記録することが可能である。これにより、受信者は、送信者からのファイルの取得を行う前に、サムネール・ファイルのみを受信し、サムネールを確認しながら必要なファイルのみを選択して受信することできる。更に、ファイルの取得を行う前に、送信者からメタデータ・ファイルのみを取得し、メタデータ・ファイルに含まれる情報(例えば写真の撮影時間情報、撮影場所情報、撮影機器情報、撮影内容情報等)を用いて取得可能なファイルを分類し、取得するファイルを選択するための階層メニューをユーザーに提供することが可能である。なお、サムネール・ファイルやメタデータが存在しない場合は省略可能である。
【0320】
図44は、Wi−Fi SDカードのコマンド処理の流れを示す図である。
【0321】
1.ホストは、ライトコマンド(CMD49)を用いてWi−Fi SDカード・コマンド・ライト・レジスタにおける“Wi-Fi Command Information”を書き込むことにより、Wi−Fi SDコマンドをカードに対して発行する。
【0322】
2.コマンドが発行されると、発行されたコマンドをカードが受けとることができたかどうかがWi−Fi SDカード・コマンド・レスポンス・ステータス・レジスタの“Command Response Status”にカードによって登録される。
【0323】
3.ホストは、リードコマンド(CMD48)を用いてWi−Fi SDカード・コマンド・レスポンス・ステータス・レジスタにおける“Command Response Status”を読み込み、ホストが発行したコマンドをカードが受け取ることができたか、何らかの理由(発行したコマンドと引数に誤りがあった、またはカードがコマンドを既に処理中であるため新規のコマンドを受け付けない状態である等)で受け取ることができなかったかを確認することができる。
【0324】
4.カードが受け取ることができたコマンドは、その処理状況をWi−Fi SDカード・コマンド・プロセス・ステータス・レジスタにおける“Command Process Status”にカードによって登録される。
【0325】
5.ホストは、リードコマンド(CMD48)を用いてWi−Fi SDカード・コマンド・プロセス・ステータス・レジスタにおける“Command Process Status”を読み込み、ホストが発行したコマンドの処理状況(処理前か、処理中か、処理後成功したか、処理後失敗したか等)を確認することができる。
【0326】
6.処理が終わったコマンドは順次Wi−Fi SDカード・コマンド・プロセス・ステータス・レジスタから削除してもよいし、後から参照する必要があるものは残しても良い。また、コマンド処理が終わった結果、Wi−Fi SDカード・ステータス・レジスタの“Meida Change”、“SSID List Update”、“File List Update”、“Response Data Update”等の情報が更新される。
【0327】
図45は、Wi−Fi SDカードの設定の流れを示す図である。
【0328】
ホストはカード内に“CONFIG”ファイルが存在しなければ、“Card Configuration Information”を含む“CONFIG”ファイルを生成する。このとき、“Card Configuration Information”の各情報はホストが指定した値(指定すべき値がない場合は初期値)が設定される。無線LANが接続、または構成された場合、“Card Configuration Information”に設定した値がカードに自動的に設定される。もし“CONFIG”ファイルが存在しない場合は、カードは“Card Configuration Information”に初期値が設定されているものとして動作する。
【0329】
ただし、SSIDとパスフレーズに関しては、無線LAN接続または構築する前に、ホストは“SetSSID”コマンドを実行してホストに記録されているSSIDとパスフレーズを設定する必要がある。これはパスフレーズをファイルに記録して外部に流出することを避けるためである。
【0330】
設定したSSIDや“Card Configuration Information”の各情報が、無線LAN接続・構築後にどのように設定されているかは、リードコマンド(CMD48)を用いてWi−Fi SDカード・ステータス・レジスタを参照することにより知ることができる。
【0331】
更に、設定したSSIDの履歴は、パスフレーズと“AP”のMACアドレス情報とともに、カード内に記録され、“SetSSID”コマンドでSSIDに関する情報を設定しない場合でも、過去の履歴を用いて無線LAN接続・構築をおこなうことができる。なお、この情報はリードコマンド(CMD48)によりWi−Fi SDカードSSIDヒストリ・レジスタを参照することができ、不要なSSID(例えば既に存在しないSSIDである場合)は“RemoveSSID”コマンドを用いて、特定のSSIDをWi−Fi SDカードSSIDヒストリ・レジスタから削除することができる。
【0332】
図46は、P2Pアプリケーションの流れを示す図である。
【0333】
1: 送信ホストはカード内に受信カードがアクセス可能なファイルをリストにした“FILELIST”ファイルを作成する。
【0334】
2: 送信ホストは、無線LANを構築するため、CMD49により“SetSSID”コマンドを発行して、送信カードにSSID名、パスフレーズ、認証方式を設定する。
【0335】
3: 送信ホストは“P2P Restricted Server Application”または“P2P Server Application”を起動するためにCMD49経由で“StartApplication”コマンドを発行する。
【0336】
4: 受信ホストは接続可能な無線LANをスキャンするため、CMD49により“ScanWiFi”コマンドを発行する。
【0337】
4.1: 受信カードは無線LANに接続するためにスキャンを行う。(図示せず)
4.1.1: 受信カードは接続可能なSSID名をリストにした“SSIDLIST”ファイルをカード内に作成する。(図示せず)
5: 受信ホストはCMD48によりWi−Fi SDカード・ステータス・レジスタの“SSID List Update”を読み、受信カードによる無線LANのスキャンが問題なく完了していることを確認する。
【0338】
6: 受信ホストはカード内の“SSIDLIST”ファイルを読み込む。
【0339】
7: 受信ホストは“SSIDLIST”ファイルからSSIDを選択し、受信カードに対しSSIDとパスフレーズを設定するためにCMD49により“SetSSID”コマンドを発行する。ここで、受信ホストがSSIDの選択を行わなかった場合は、受信カードはカード内に記録されている過去に設定されたSSIDの履歴である“SSID History”にあるSSIDの設定を用いる。また、受信カードと送信カードの両方がWPSによってSSIDの設定を行うこともできる。
【0340】
8: 受信ホストは“P2P Client Application”を起動するためにCMD49により“StartApplication”コマンドを実行する。
【0341】
8.1: 受信カードは送信カードに対してアソシエーションを要求する。
【0342】
8.2: 受信カードが送信カードに接続すると、受信カードはDHCPサーバーである送信カードに対してIPアドレスの割付を要求する。
【0343】
8.3: IPアドレスが割り当てられると、受信カードは送信カードに受信者のIDを通知するための下記のHTTPリクエスト・メッセージを送信する。ここで、“ReceiverID”は受信者の“ID”、“ReceiverMACaddress”は受信者のMACアドレス、“SenderIPaddress”は送信者のIPアドレスが設定される。
【0344】
―――――――――――――――――――――――――――――――――――――――
GET http://SenderIPaddress/command.cgi?op=0&id=ReceiverID&mac=ReceiverMACaddress
―――――――――――――――――――――――――――――――――――――――
9: 送信ホストはCMD48によりWi−Fi SDカード・ステータス・レジスタの“ID List Update”を読み、“ID List”が更新されていることを確認する。(受信相手を制限しないP2P Restricted Serverアプリケーションの場合、この処理は省略できる)
10: “ID List”が更新されていれば、送信ホストはCMD48によりWi−Fi SDカードIDリスト・レジスタを読み込む。(受信相手を制限しないP2P Restricted Serverアプリケーションの場合、この処理は省略できる)
11: 送信ホストはCMD49により“SelectID”コマンドを発行して、リスト中の受信者のIDの中から受信を許可する受信者のIDを選択する。(受信相手を制限しないP2P Restricted Serverアプリケーションの場合、この処理は省略できる)
11.1: 送信カードは下記のHTTPリクエスト・メッセージを受信カードに送信し、受信が許可されてことを通知する。ここで“ReceiverIPaddress”は受信者のIPアドレスを示す。(受信相手を制限しないP2P Restricted Serverアプリケーションの場合、この処理は省略できる)
―――――――――――――――――――――――――――――――――――――――
GET http://ReceiverIPaddress/command.cgi?op=1
―――――――――――――――――――――――――――――――――――――――
11.1.1: もし受信が許可されれば、受信カードは送信カードから“FILELIST”ファイルをダウンロードするため以下のHTTPリクエスト・メッセージを送信する。ここで“SenderIPaddress”は送信者のIPアドレスを示す。(受信相手を制限しないP2P Restricted Serverアプリケーションの場合、受信が許可されたものとしてこの処理が行われる)
12: 受信ホストはCMD48によりWi−Fi SDカード・ステータス・レジスタの“File List Update”を読み、“FILELIST”ファイルのダウンロードが完了したことを確認する。
【0345】
13: 受信ホストはカード内の“FILELIST”ファイルを読み込む。
【0346】
14: 受信ホストは、CMD49により“GetFile”コマンドを発行して、“FILELIST”ファイルに書かれた情報(URL)に基づき、サムネール・ファイルやメタデータ・ファイルのダウンロードを指示する。
【0347】
14.1: 受信カードは送信カードに下記のHTTPリクエスト・メッセージを送信し、指定されたサムネール・ファイルやメタデータ・ファイルをダウンロードしてカードに記録する。ここで、“SenderIPaddress”は送信者のIPアドレス、“filepath”はファイルパス、“filename”はファイル名を示す。
【0348】
―――――――――――――――――――――――――――――――――――――――
GET http://SenderIPaddress/filepath/filename
―――――――――――――――――――――――――――――――――――――――
15: 受信ホストはCMD48によりWi−Fi SDカード・ステータス・レジスタの“Current HTTP”またはWi−Fi SDカード・コマンド・プロセス・ステータス・レジスタの“Command Process Status”を読み、サムネール・ファイルかメタデータ・ファイルのダウンロードが完了したことを確認する。以上のプロセスはサムネール・ファイルとメタデータ・ファイルの数だけ繰り返す。
【0349】
16: 受信ユーザーは事前に取得したサムネールやメタデータによって受信するファイルを選択する。受信ホストは、CMD49により“GetFile”コマンドを発行して、“FILELIST”ファイルに書かれた情報(URL)に基づき、ユーザーによって選択されたファイルのダウンロードを指示する。
【0350】
16.1: 受信カードは送信カードに下記のHTTPリクエスト・メッセージを送信し、指定されたファイルをダウンロードしてカードに記録する。ここで、“SenderIPaddress”は、送信者のIPアドレス、“filepath”はファイルパス、“filename”はファイル名を示す。
【0351】
―――――――――――――――――――――――――――――――――――――――
GET http://SenderIPaddress/filepath/filename
―――――――――――――――――――――――――――――――――――――――
17: 受信ホストはCMD48によりWi−Fi SDカード・ステータス・レジスタの“Current HTTP”またはWi−Fi SDカード・コマンド・プロセス・ステータス・レジスタの“Command Process Status”を読み、ユーザーにより指定されたファイルのダウンロードが完了したことを確認する。以上のプロセスはユーザーに指定されたファイルの数だけ繰り返す。
【0352】
18. 受信カードによる全てのファイルのダウンロードが完了すると、受信ホストはCMD49により“EndApplication”コマンドを発行して、アプリケーションの終了と無線LANの接続の終了を指示する。
【0353】
18.1: 受信カードは送信カードに対し、下記のHTTPリクエスト・メッセージを送信し、ダウンロードが完了したことを通知する。ここで“SenderIPaddress”は送信者のIPアドレスを示す。
【0354】
―――――――――――――――――――――――――――――――――――――――
GET http://SenderIPaddress/command.cgi?op=3
―――――――――――――――――――――――――――――――――――――――
18.1.1: 接続している全ての受信カードからダウンロード完了が通知され、送信カードは無線LANの構築を終了する。
【0355】
19: 送信ホストはCMD48によりWi−Fi SDカード・ステータス・レジスタの“WLAN”を読み、無線LANの構築が終了したことを確認する。
【0356】
20: 無線LANの構築が終了していれば、送信ホストはCMD49により“EndApplication”コマンドを発行して、アプリケーションの終了を指示する。
【0357】
図47は、Server Uploadアプリケーションの流れを示す図である。
【0358】
1: ホストは接続可能な無線LANをスキャンするためにCMD49により“ScanWiFi”コマンドを発行する。
【0359】
1.1: カードは無線LANに接続するためにスキャンを行う。
【0360】
1.1.1: カードは接続可能なSSID名をリストにした“SSIDLIST”ファイルをカード内に作成する。
【0361】
2: ホストはCMD48によりWi−Fi SDカード・ステータス・レジスタの“SSID List Update”を読み、カードによる無線LANのスキャンが問題なく完了していることを確認する。
【0362】
3: ホストはカード内の“SSIDLIST”ファイルを読み込む。
【0363】
4: ホストは“SSIDLIST”ファイルからSSIDを選択し、カードに対しSSIDとパスフレーズを設定するため、CMD49により“SetSSID”コマンドを発行する。ここで、ホストがSSIDの選択を行わなかった場合は、カードはカード内に記録されている過去に設定されたSSIDの履歴である“SSID History”にあるSSIDの設定を用いる。また、カードと接続する“AP”の両方が“WPS”によってSSIDの設定を行うこともできる。
【0364】
5: ホストはServer Upload Applicationを起動するためCMD49により“StartApplication”コマンドを実行する。
【0365】
5.1: カードは“AP”に対してアソシエーションを要求する。
【0366】
5.2: カードが“AP”に接続すると、カードはDHCPサーバーである“AP”に対してIPアドレスの割付を要求する。
【0367】
6: ホストは、CMD48によりWi−Fi SDカード・ステータス・レジスタの“WLAN”を読み、無線LAN接続が問題なく行われていることを確認する。
【0368】
7: “SendHttpMessage”、“SendHttpFile”、“SendHttpSSLMessage”、“SendHttpSSLFile” コマンドを発行する場合は、ホストは相手サーバーに送信するHTTPリクエスト・メッセージの内容を含むファイルをカード内に作成する。一方、“SendHttpMessageByRegister”、“SendHttpFileByRegister”、 “SendHttpSSLMessageByRegister”、“SendHttpSSLFileByRegister”コマンドを発行する場合は、ホストは相手サーバーに送信するHTTPリクエスト・メッセージをファイルではなくホスト・デバイス内のメモリに作成する。
【0369】
8: ホストは、CMD49により“SendHttpMessage”、“SendHttpFile”、 “SendHttpSSLMessage”、“SendHttpSSLFile”、“SendHttpMessageByRegister”、 “SendHttpFileByRegister”、“SendHttpSSLMessageByRegister”、 “SendHttpSSLFileByRegister”コマンドを発行して、カードに対して、HTTPリクエスト・メッセージの送信を指示する。
【0370】
8.1: カードはカード内に作成されたファイル、もしくはWi−Fi SDカード・コマンド・ライト・レジスタからHTTPリクエスト・メッセージを読み込み、相手サーバーに送信する。このとき、“SendHttpFile”、“SendHttpSSLFile”、 “SendHttpFileByRegister”、“SendHttpSSLFileByRegister”コマンドの場合は、HTTPリクエスト・メッセージ内の特定の文字列を指定されたカード内のファイルに置換して、つまりHTTPリクエスト・メッセージにカード内のファイルを添付して送信する。
【0371】
8.1.1: 相手サーバーは、送信されたHTTPリクエスト・メッセージに対し、HTTPレスポンス・メッセージをカードに返信する。ここで、カードが“SendHttpMessage”、 “SendHttpFile”、“SendHttpSSLMessage”、“SendHttpSSLFile”コマンドを発行していた場合は、カードはHTTPレスポンス・メッセージをカード内にファイルとして記録する。一方、 “SendHttpMessageByRegister”、“SendHttpFileByRegister”、 “SendHttpSSLMessageByRegister”、“SendHttpSSLFileByRegister”コマンドを発行していた場合は、カードはHTTPレスポンス・メッセージをWi−Fi SD カード・レスポンス・データ・レジスタの“message”に記録する。
【0372】
9: ホストは、CMD48によりWi−Fi SDカード・ステータス・レジスタの“Current HTTP”またはWi−Fi SDカード・コマンド・プロセス・ステータス・レジスタの“Command Process Status”を読み、HTTPリクエスト・メッセージの送信とHTTPレスポンス・メッセージの受信が完了したことを確認する。
【0373】
10: ホストはファイルに記録されたHTTPレスポンス・メッセージを読み込む。または、CMD48によりHTTPレスポンス・メッセージに記録されたHTTPレスポンス・メッセージを読み込む。以上のプロセスはユーザーに指定されたファイルの数だけ繰り返す。
【0374】
11: ホストは、CMD49により“EndApplication”コマンドを発行して、アプリケーションの終了と無線LANの接続の終了を指示する。
【0375】
図48は、P2Pアプリケーションにおいて、送信側ホストの“File List”生成処理とファイル送信処理のフローを示す図である。
【0376】
送信ホストは、P2P Serverアプリケーション、またはP2P Restricted Serverアプリケーションを起動する。
【0377】
更に、送信ホストはユーザーに送信するファイルを選択するためのメニューを表示し、それに従い送信ユーザーは送信するファイルを選択する(S21)。
【0378】
送信ホストは選択されたファイルのファイルパスとファイル名を抽出する(S22)。更に、送信ホストは選択されたファイルのメタデータを抽出する(S23)。
【0379】
ここで、選択されたファイルのメタデータ・ファイルが存在するのであれば、メタデータ・ファイルのファイル名とファイルパスを抽出する。
【0380】
一方、サムネールに関しては、送信ホストは、まず選択されたファイルのサムネールがカード内に存在するか確認する(S24)。もし存在するのであれば送信用のサムネール・ファイルとしてファイルパスとファイル名を抽出する(S25)。次に、サムネールが存在しないのであれば、送信ホストはファイル内にサムネールが含まれるかを確認し(S26)、サムネールが含まれるのであれば、これを送信用サムネール・ファイルとしてカード内にコピーしファイルパスとファイル名を抽出する(S27)。ファイル内にサムネールが含まれないのであれば、送信ホストはファイルのサムネールを生成しカード内に保存しファイルパスとファイル名を抽出する(S28)。
【0381】
送信ホストは以上の抽出したデータから“FILELIST”ファイルを作成しカード内に保存する(S29)。
【0382】
送信カードは受信カードからのリクエストに応じて“FILELIST”ファイルを受信カードに送信する(S30)。更に、受信カードからのリクエストに応じて“File List”に記載されたファイルを受信カードに送信する。
【0383】
全ての送信が完了すると、送信ホストはP2P Serverアプリケーション、またはP2P Restricted Serverアプリケーションを終了する。
【0384】
図49は、P2Pアプリケーションにおいて受信側ホストのファイル選択処理とファイル取得処理のフローを示す図である。
【0385】
受信ホストは、P2P Clientアプリケーションを起動する。
【0386】
更に、受信ホストは、受信カードは“File List”を送信カードから取得したのち、“File List”を読み込む(S41)。
【0387】
受信ユーザーが送信カードの全てのファイルを取得したいのであれば、“File List”に記載されているファイルを全て送信側からダウンロードし、受信カード内のフォルダに保存する(S42、S43)。
【0388】
受信ユーザーが送信側カードのファイルから選択して一部だけ取得したいのであれば、受信ホストは受信ユーザーに対してファイル選択のためのメニューを提供する。
【0389】
このとき、サムネールをメニューに表示しない場合は取得可能なファイルのメタデータをメニューに表示する(S44、S45)。
【0390】
サムネールをメニューに表示する場合は、もし送信カードにサムネール・ファイルが存在するのであれば、受信ホストはサムネール・ファイルを取得し、取得可能なファイルのサムネールとメタデータをメニューに表示する(S46、S47、S48)。もし、送信カードにサムネール・ファイルが存在しないのであれば受信ホストまたは受信カードは代替となるサムネールを作成し(S40)、取得可能なファイルのサムネールとメタデータをメニューに表示する(S48)。
【0391】
ここで、サムネール・ファイルと同様に、もし送信カードにメタデータ・ファイルが存在するのであれば、受信ホストはメタデータ・ファイルを取得し、これを参照してより詳細なメタデータをメニューに表示しても良い。
【0392】
受信ユーザーは表示されたメニューをもとに取得するファイルを選択する(S50)。
【0393】
受信ホストは選択されたファイルを送信カードからダウンロードし、受信カード内のフォルダに保存する(S43)。
【0394】
全ての受信が完了すると、受信ホストはP2P Clientアプリケーションを終了する。
【0395】
上記各実施形態によれば、次の効果を得ることができる。
【0396】
多くのカード製造者が、任意の機能をSDカードに実装するため、SDカードに搭載される通信機能の種類は多岐に亘る。これらの通信機能を制御するためには、種々の制御のための定義をSDカードのコマンドの空間に割り当てる必要がある。しかし、通信機能は多岐に亘るため、全ての通信機能を制御するための定義を規定すると、コマンドのアドレス空間が不足する。これに対して、本実施形態によれば、複数ページにより構成される拡張レジスタを用いて、SDカードが有する通信機能を制御するためのページ、通信対象のデータの受け渡しに用いるページを定義することにより、通信機能を制御するため定義をコマンドの空間へ効率良く割り当てることができる。
【0397】
また、本実施形態によれば、コマンド(CMD48、CMD49)が指定する拡張レジスタにより、通信機能を容易に制御することができる。
【0398】
さらに、コマンド(CMD48、CMD49)を用いることにより、メモリ用のホストコントローラであっても、効率良く、拡張レジスタを制御することが可能である。
【0399】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0400】
11…メモリデバイス、13…CPU、14…ROM、15…RAM、16…バッファ、18…NANDフラッシュメモリ、19a…無線LAN信号処理部、19…Wi−Fiネットワークモジュール、20…ホスト、21…ホストコントローラ、22…CPU、31…拡張レジスタ。

【特許請求の範囲】
【請求項1】
不揮発性半導体記憶装置と、
前記不揮発性半導体記憶装置を制御する制御部と、
前記制御部に接続された作業エリアとしてのメモリと、
前記制御部により制御される無線通信機能部と、
前記メモリに設けられ、前記無線通信機能部の無線通信機能を定義可能な一定のデータ長を有する複数ページで構成された拡張レジスタと、を具備し、
前記制御部は、前記拡張レジスタを前記一定のデータ長単位でリードする第1のコマンドと、前記拡張レジスタを前記一定のデータ長単位でライトする第2のコマンドとを処理し、
前記拡張レジスタは、特定ページに前記無線通信機能の種別及び制御可能なドライバを特定するための情報と、前記無線通信機能が割り当てられる拡張レジスタ上の場所を示すアドレス情報が記録され、前記特定ページ以外のページ又は領域に前記無線通信機能の情報が記録されることを特徴とするメモリシステム。
【請求項2】
前記第1、第2のコマンドは、リード又はライト対象のデータ長が前記ブロック長より大きい場合、前記第1、第2のコマンドを複数回発行されることを特徴とする請求項1記載のメモリシステム。
【請求項3】
前記第2のコマンドは、1つのコマンドに対応して複数のデータを転送することを特徴とする請求項2記載のメモリシステム。
【請求項4】
前記拡張レジスタの前記特定のページは、無線通信機能用レジスタが記録された前記特定ページ以外の少なくとも1つのページアドレスが記録されることを特徴とする請求項1記載のメモリシステム。
【請求項5】
前記拡張レジスタの前記特定のページは、無線通信機能用レジスタが記録された前記特定ページ以外の1つのページ内のアドレスが記録されることを特徴とする請求項1記載のメモリシステム。
【請求項6】
前記拡張レジスタの前記特定のページ以外のページは、無線通信機能用レジスタ内のデータのアドレスが記録されることを特徴とする請求項1記載のメモリシステム。
【請求項7】
前記拡張レジスタの前記特定のページ以外の第1のページは、無線通信機能用のコマンドと引数が記録され、このコマンドと引数に対応するデータが、無線通信機能用レジスタに記録されることを特徴とする請求項1記載のメモリシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate

【図45】
image rotate

【図46】
image rotate

【図47】
image rotate

【図48】
image rotate

【図49】
image rotate


【公開番号】特開2012−178129(P2012−178129A)
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願番号】特願2011−45614(P2011−45614)
【出願日】平成23年3月2日(2011.3.2)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】