(第1実施例)
(通信システム2の構成;図1)
図1に示されるように、通信システム2は、携帯端末10(以下では単に「端末10」と記載する)と、プリンタ100と、AP(Access Pointの略)200と、を備える。端末10は、AP200によって形成される無線ネットワーク(以下では「APネットワーク」と記載)に参加している。AP200は、APネットワークを識別するSSID(Service Set Identifierの略)「ap01」と、当該APネットワークで利用されるパスワード「xxx」と、を記憶する。
(端末10の構成)
端末10は、携帯電話(例えばスマートフォン)、PDA、タブレットPC等の可搬型の端末装置である。端末10は、表示部12と、無線LANインターフェース14と、BT(Bluetooth(登録商標)の略)インターフェース16と、制御部30と、を備える。各部12~30は、バス線(符号省略)に接続されている。なお、以下では、インターフェースのことを単に「I/F」と記載する。
表示部12は、様々な情報を表示するためのディスプレイである。表示部12は、ユーザから指示を受け付けるタッチパネル(即ち操作部)としても機能する。
無線LANI/F14は、Wi-Fi方式に従った無線通信(以下では「Wi-Fi通信」と記載)を実行するための無線インターフェースである。Wi-Fi方式は、例えば、IEEE(The Institute of Electrical and Electronics Engineers, Inc.の略)の802.11の規格、及び、それに準ずる規格(例えば802.11a,11b,11g,11n,11ac等)に従って、無線通信を実行するための無線通信方式である。無線LANI/F14は、特に、Wi-Fi Allianceによって策定されたWFD(Wi-Fi Direct(登録商標)の略)方式をサポートしている。WFD方式は、Wi-Fi Allianceによって作成された規格書「Wi-Fi Peer-to-Peer (P2P) Technical Specification Version1.1」に記述されている無線通信方式である。
端末10は、WFD方式のG/O(Group Ownerの略)状態、CL(Clientの略)状態、及び、デバイス状態のいずれかの状態で動作することができる。例えば、端末10は、WFD方式のクライアントとして動作して、WFD方式のG/Oとして動作している外部装置(例えばプリンタ100)が形成している無線ネットワーク(以下では「WFDネットワーク」と記載)に子局として参加可能である。
BTI/F16は、BT方式に従った無線通信を実行するためのI/Fである。BT方式は、例えば、IEEE802.15.1の規格、及び、それに準ずる規格に基づく無線通信方式である。より具体的に言うと、BTI/F16は、BLE(Bluetooth Low Energyの略)をサポートしている。BLEは、BT方式のバージョン4.0以降のバージョンで実現されている規格である。本実施例では、BTI/F16は、バージョン4.2で実現されているBLEをサポートしていることを想定している。BTI/F16は、BLEに従った無線通信(以下では「BLE通信」と記載)を実行可能である。なお、変形例では、BTI/F16は、バージョン4.2以降のバージョン(例えば5.0)で実現されているBLEをサポートしていてもよい。
Wi-Fi方式とBT方式との相違点を記述しておく。Wi-Fi通信の通信速度(例えば最大の通信速度が600Mbps)は、BT通信の通信速度(例えば最大の通信速度が24Mbps)よりも速い。Wi-Fi通信における搬送波の周波数は、2.4GHz帯又は5.0GHz帯である。BT通信における搬送波の周波数は、2.4GHz帯である。即ち、Wi-Fi通信における搬送波の周波数として5.0GHz帯が採用される場合には、Wi-Fi通信における搬送波の周波数とBT通信における搬送波の周波数とは異なる。また、Wi-Fi通信を実行可能な最大の距離(例えば約100m)は、BT通信を実行可能な最大の距離(例えば約数十m)よりも大きい。
制御部30は、CPU32と、メモリ34と、を備える。CPU32は、メモリ34に格納されているプログラム36、38に従って、様々な処理を実行する。メモリ34は、揮発性メモリ、不揮発性メモリ等によって構成され、OS(Operating Systemの略)プログラム36(以下では単に「OS36」と記載する)とプリントアプリケーション38(以下では単に「アプリ38」と記載する)とを記憶する。本実施例では、OS36がiOS(登録商標)である状況を想定している。
OS36は、端末10の基本的な動作を制御するためのプログラムである。アプリ38は、Wi-Fi方式に従った無線接続を利用して、印刷データをプリンタ100に送信するためのアプリケーションである。アプリ38は、例えば、プリンタ100のベンダによって提供されるインターネット上のサーバから端末10にインストールされてもよいし、プリンタ100と共に出荷されるメディアから端末10にインストールされてもよい。
(プリンタ100の構成)
プリンタ100は、印刷機能を実行可能な周辺装置(例えば、端末10の周辺装置)である。プリンタ100は、表示部112と、無線LANI/F114と、BTI/F116と、制御部130と、を備える。
表示部112は、様々な情報を表示するためのディスプレイである。表示部112は、ユーザから指示を受け付けるタッチパネル(即ち操作部)としても機能する。無線LANI/F114は、端末10の無線LANI/F14と同様である。即ち、無線LANI/F114は、WFD方式をサポートしている。BTI/F116は、端末10のBTI/F16と同様である。即ち、BTI/F116は、BLEをサポートしている。
制御部130は、CPU132と、メモリ134と、を備える。CPU132は、メモリ134に記憶されているプログラム136に従って、様々な処理を実行する。メモリ134は、揮発性メモリ、不揮発性メモリ等によって構成され、プログラム136に加えて、プロトコルスタック138とWFD情報160と再開フラグ162とを記憶する。
プロトコルスタック138は、BLEに従ったプロトコルスタックを含む。プリンタ100は、プロトコルスタック138を利用してBT方式のサーバとして動作し、BT方式のクライアントとして動作する端末10とBLE通信を実行可能である。
プロトコルスタック138は、図1に示す階層構造を有する。L2CAP(Logical Link Control and Application Protocolの略)は、BTI/F116を介した無線接続(以下では「L2CAP Link」と記載)を確立するためのスタックである。SMP(Security Manager Protocolの略)及びATT(Attribute Protocolの略)は、L2CAPの上位層である。SMPは、L2CAP Linkを介して通信される情報を暗号化するためのプロトコルである。ATTは、L2CAP Linkを介した通信におけるサーバとクライアントとの間のアクセス方式を定義するためのプロトコルである。GATT(Generic Attribute Profileの略)は、ATTの上位層であり、サーバ及びクライアントの機能を定義するためのプロトコルである。GAP(Generic Access Profileの略)は、L2CAP、SMP、ATT、及び、GATTの上位層であり、BLE通信を実行可能な各デバイスに共通する機能を定義するためのプロトコルである。Primary Service群は、GAPの上位層であり、BLE通信に関する具体的な動作を定義するためのアプリケーションである。なお、以下では、Primary Serviceのことを単に「PS」と記載する。
WFD情報160は、WFD方式に従った無線接続(以下では「WFD接続」と記載)を確立するために利用される情報である。WFD情報160は、G/Oとして動作するプリンタ100によって形成されるWFDネットワークを識別するSSID「p01」と、当該WFDネットワークで利用されるパスワード「yyy」と、を含む。WFD情報160は、プリンタ100の出荷段階から予めメモリ134に記憶されてもよいし、プリンタ100の電源が投入される際に生成されてもよい。
再開フラグ162は、BT方式に従ったAdvertise信号(以下では単に「ADV信号」と記載する)の送信を停止した直後にADV信号の送信を再開することを示す「ON」と、ADV信号の送信を停止した直後にADV信号の送信を再開しないことを示す「OFF」と、のうちのいずれかの値を示す。再開フラグ162は、プリンタ100の電源が投入される際に「ON」に設定される。
(PS群の概念;図2)
図2を参照して、プロトコルスタック138に含まれるPS群の概念を説明する。図2のテーブルは、理解の容易化のためにPS群を概念的に示したものであり、PS群の具体的なデータ構造とは異なる。PS群のデータ構造については、図2の説明を終えた後に、図3から図5を参照して説明する。PS群は、Bluetooth SIGによって定義される(即ちBT方式の規格によって予め決められている)第1種のPSと、プリンタ100のベンダによって定義される第2種のPSと、に分けられる。
(第1種のPS)
第1種のPSは、GAP Service138Aを含む。以下では、GAP Serviceのことを単に「GA」と記載する。GA138Aは、BTI/F116に関する情報を送信するためのPSである。当該情報は、例えば、BTI/F116を示すデバイス名DN、BTI/F116がサポートしている規格を示す情報等を含む。GA138Aには、GAに対応するPSを識別する識別子としてBT方式の規格によって予め決められているUUID「0x1800」が割り当てられている。GA138Aは、複数個のCharacteristicを含む。Characteristicは、PSの具体的な機能を定義する情報である。GA138Aに含まれる複数個のCharacteristicは、デバイス名DNの送信を定義するCharacteristic「Device Name」を含む。「Device Name」には、当該Characteristicを識別する識別子としてBT方式の規格によって予め決められているUUID「0x2A00」が割り当てられている。なお、図2では、GA138Aに含まれる他のCharacteristicの記載を省略している。
(第2種のPS)
第2種のPSは、Function Service138Bと、AP Connection138Cと、WFD Connection138Dと、BT Control138Eと、Error Service138Fと、を含む。
(Function Service138B)
以下では、Function Serviceのことを単に「FS」と記載する。FS138Bは、プリンタ100が実行可能な複数個の機能を示す機能情報FIを送信するためのPSである。機能情報FIは、印刷機能を示す情報と、AP(例えばAP200)との無線接続(以下では「AP接続」と記載)を確立する機能を示す情報と、WFD接続を確立する機能を示す情報と、エラーURLを送信する機能を示す情報と、を含む。FS138Bには、FSに対応するPSを識別する識別子としてプリンタ100のベンダによって定められるUUID「aaa0」が割り当てられている。以下でも、第2種のPSを識別するUUIDは、プリンタ100のベンダによって定められるものである。なお、UUID「aaa0」は、BT方式の規格によって予め決められているUUID(例えばUUID「0x1800」)の桁数よりも大きい桁数を有するものであり、本明細書では簡略化して記載されている。
FS138Bは、機能情報FIの送信を定義するCharacteristic「Function Information」を含む。「Function Information」には、当該Characteristicを識別する識別子としてプリンタ100のベンダによって定められるUUID「aaa1」が割り当てられている。以下でも、第2種のPSに含まれるCharacteristicを識別するUUIDは、プリンタ100のベンダによって定められるものである。
(AP Connection138C)
以下では、AP Connectionのことを単に「AC」と記載する。AC138Cは、AP接続を確立するためのPSである。AC138Cには、UUID「bbb0」が割り当てられている。AC138Cは、「Connection Status」、「IP Address」、「Connection Information」、及び、「Change Permission」を含む4個のCharacteristicを含む。
「Connection Status」は、プリンタ100のAP接続に関する状態を示すAP状態情報の送信を定義するCharacteristic(UUID「bbb1」)である。AP状態情報は、「Disable」、「Enable」、「Busy」、及び、「Error」を含む複数個の状態のいずれかを示す。「Disable」は、プリンタ100がAP接続の確立を許可しない状態に設定されていることを示す。「Enable」は、プリンタ100がAP接続の確立を許可する状態に設定されていることを示す。「Busy」は、AP接続を確立するための処理が実行中であることを示す。「Error」は、AP接続を確立するための処理が失敗したことを示す。
「IP Address」は、プリンタ100のIPアドレスIAの送信を定義するCharacteristic(UUID「bbb2」)である。
「Connection Information」は、通信相手(例えば端末10)が無線接続を確立しているAP(例えばAP200)のSSID及びパスワードの受信を定義するCharacteristic(UUID「bbb3」)である。
「Change Permission」は、後述するAttribute Permissionの値を変更するための指示の受信を定義するCharacteristic(UUID「bbb4」)である。なお、Change Permissionは、第3及び第4実施例で利用され、第1及び第2実施例では利用されない。
(WFD Connection138D)
以下では、WFD Connectionのことを単に「WC」と記載する。WC138Dは、WFD接続を確立するためのPS(UUID「ccc0」)である。WC138Dは、「Connection Status」、「Connection Information」、「Public Key」、及び、「Change Status」を含む4個のCharacteristicを含む。
「Connection Status」は、プリンタ100のWFD接続に関する状態を示すWFD状態情報の送信を定義するCharacteristic(UUID「ccc1」)である。WFD状態情報は、「Disable」、「Enable」、「Ready」、「Start」、及び、「Error」を含む複数個の状態のいずれかを示す。「Disable」は、プリンタ100がWFD接続の確立を許可しない状態に設定されていることを示す。「Enable」は、プリンタ100がWFD接続の確立を許可する状態に設定されていることを示す。「Ready」は、公開鍵を利用してWFD情報160を暗号化する処理が完了したことを示す。「Start」は、プリンタ100がG/Oとしての動作を開始したことを示す。「Error」は、WFD接続を確立するための処理が失敗したことを示す。
「Connection Information」は、公開鍵を利用して暗号化されたWFD情報(以下では「暗号化済みのWFD情報」と記載)の送信を定義するCharacteristic(UUID「ccc2」)である。
「Public Key」は、公開鍵の受信を定義するCharacteristic(UUID「ccc3」)である。
「Change Status」は、プリンタ100のWFD接続に関する状態を変更するための指示(例えば、プリンタ100をG/Oとして動作させるための指示)の受信を定義するCharacteristic(UUID「ccc4」)である。
(BT Control138E)
以下では、BT Controlのことを単に「BC」と記載する。BC138Eは、BTI/F116の状態を変更する指示を受信するためのPS(UUID「ddd0」)である。BC138Eは、「Paring Control」及び「Advertising Control」を含む2個のCharacteristicを含む。
「Pairing Control」は、確立済みのL2CAP Linkを切断するための指示の受信を定義するCharacteristic(UUID「ddd1」)である。
「Advertising Control」は、再開フラグ162を「ON」から「OFF」に変更するための指示の受信を定義するCharacteristic(UUID「ddd2」)である。
(Error Service138F)
以下では、Error Serviceのことを単に「ES」と記載する。ES138Fは、エラーURLを送信するためのPS(UUID「eee0」)である。エラーURLは、プリンタ100が印刷機能を実行不可能なエラー状態(例えば紙詰まり)を解消するための方法が記載されているWebページを示すURLである。ES138Fは、エラーURLの送信を定義するCharacteristic「Error Information(UUID「eee1」)」を含む。
(PS群のデータ構造;図3~図5)
図2を参照して、PS群の概念を説明した。続いて、図3~図5を参照して、PS群の具体的なデータ構造を説明する。
PS群は、Handleと、Attribute Typeと、Attribute Valueと、Attribute Permissionと、が対応付けられたテーブル構造を有する。Handleは、「0x0001」から続く連番である。図3~図5では、「0x0002」より後の一部のデータ構造が省略されている。このため、「0x0002」より後のHandleは、実際の値ではなく、記号「nk(k=1、2、3、…)」で表現されている。Attribute Type(以下では単に「AType」と記載)は、通信対象の情報のタイプを示す識別子(即ちUUID)である。Attribute Value(以下では単に「AValue」と記載)は、通信対象の情報を示す。Attribute Permisiion(以下では単に「APer」と記載)は、SMPに関する項目であり、より具体的には、情報の読み出し又は書き込みを許可するための条件を示す。
具体的には、APerには、4つの項目のそれぞれを示す値が記憶される。1つ目の項目は情報の読み出しや書き込みを許可するか否かを示す項目であり、「Readable」、「Writeable」、及び、「Readable and writeable」のいずれかを示す1つの値がAPerに記憶される。2つ目の項目は、情報の読み出し又は書き込みの実行時に、Encryptionを要求するか否かを示す項目であり、「Encryption required」及び「No encryption required」のいずれかを示す1つの値がAPerに記憶される。3つ目の項目は、情報の読み出し又は書き込みの実行時に、Authenticationを要求するか否かを示す項目であり、「Authentication required」及び「No authentication required」のいずれかを示す1つの値がAPerに記憶される。4つ目の項目は、情報の読み出し又は書き込みの実行時に、Authorizationを要求するか否かを示す項目であり、「Authorization required」及び「No authorization required」のいずれかを示す1つの値がAPerに記憶される。「Encryption required」、「Authentication required」、及び、「Authorization required」のいずれかを示す値がAPerに記憶されている場合には、SMPに従った認証通信が実行されることを条件として、情報の読み出し又は書き込みが許可される。また、「No encryption required」かつ「No authentication required」かつ「No authorization required」を示す値がAPerに記憶されている場合に、SMPに従った認証通信を実行することなく、情報の読み出し又は書き込みが許可される。図3~図5ではこれらを簡略化して記載している。例えば、APerが「Readable without authentication」を示す場合には、上記1つ目の項目として「Readable」を示す値と、上記3つ目の項目として「No authentication required」を示す値とが、当該APerに実際に記憶されている。また、図3~図5のAPerの記載は、上記2つ目の項目と上記4つ目の項目について省略されている。実際には、上記2つ目の項目として「No encryption required」を示す値と、上記4つ目の項目として「No authorization required」を示す値と、が各APerに記憶されている。以降では、特に言及する場合を除き、上記2つ目の項目として「No encryption required」を示す値と、上記4つ目の項目として「No authorization required」を示す値とが、APerに記憶されているものとする。なお、APerが「Readable without authentication when discoverable」を示す各値を記憶している場合には、上記1つ目の項目として「Readable」を示す値と、上記3つ目の項目として「No authentication required」を示す値と、上記4つ目の項目として「No authorization required」を示す値と、が当該APerに記憶されており、さらに、サーバの状態が後述するDiscoverable状態であるという条件(即ち「when discoverable」)が満たされる場合には、「No authentication required」と「No authorization required」に従って、SMPに従った認証通信を実行することなく、情報の読み出しを許可することを示す値が、当該APerに記憶されている。以上のように、図面のAperの記載は、Bluetooth SIGの規格に記載されている実際の項目と完全に一致するものではなく、SMPに関する条件を概念的に示すものであることに留意されたい。
(第1種のPS)
(GAP Service(GA)138A)
GA138Aは、Handleの範囲「0x0001」~所定値(「n2」の1つ前の値)に対応するデータ群である。Handle「0x0001」に対応するATypeは、1個のPSを構成するデータ群のうちの先頭のデータであることを示すUUID「0x2800」を含む。Handle「0x0001」に対応するAValueは、GA138Aを他のPSと区別するためのUUID「0x1800」を含む。Handle「0x0001」に対応するAPerは、「Readable without authentication」を示す各値を含む。この各値は、SMPに従った情報の暗号化を実行することなく、情報を読み出すことが可能であることを意味する。
Handle「0x0002」に対応するATypeは、Characteristic Declarationを示すUUID「0x2803」を含む。Characteristic Declarationは、CharacteristicのプロパティやUUID等を定義するデータである。ここで、プロパティは、Characteristicが読み出されるべき情報を定義するものであることを示す「Read」やCharacteristicが書き込まれるべき情報を定義するものであることを示す「Write」等を含む複数個の情報のうちのいずれか1個を示す。Handle「0x0002」に対応するAValueは、「Read」を示すプロパティと、Characteristicの情報に対応するHandle「n1」と、当該CharacteristicのUUID「0x2A00」と、を含む。Handle「0x0002」に対応するAPerは、「Readable without authentication」を示す各値を含む。
Handle「n1」に対応するAtypeは、Characteristic「Device Name」のUUID「0x2A00」を含む。Handle「n1」に対応するAValueは、デバイス名DNを含む。Handle「n1」に対応するAPerは、「Readable without authentication when discoverable」を示す各値を含む。この各値は、BT方式のペリフェラル(即ちプリンタ100)の状態がDiscoverable状態である場合に、SMPに従った情報の暗号化を実行することなく、情報(ここではデバイス名DN)を読み出すことが可能であることを意味する。別言すれば、ペリフェラルの状態がDiscoverable状態でない場合(即ち非Discoverable状態である場合)には、SMPに従った情報の暗号化を実行することを条件として、情報を読み出すことが可能であることを意味する。ここで、Discoverable状態は、ペリフェラルがADV信号の送信を繰り返し実行している状態である。別言すれば、Discoverable状態は、ADV信号がBT方式のセントラルによって受信される際に、セントラルがペリフェラルの存在を検出可能な状態である。さらに、Discoverable状態において送信されるADV信号には、Discoverable状態であることに関する所定の値が含まれる。ここで、「所定の値」は、例えば、BT方式の規格に定められているLE Limited Discoverable Mode flag「1」、又は、BT方式の規格に定められているLE General Discoverable Mode flag「1」である。これに対して、非Discoverable状態は、ペリフェラルがADV信号の送信を実行していない状態、又は、ペリフェラルがADV信号の送信を繰り返し実行し、かつ、当該ADV信号に上記の所定の値が含まれていない状態(別言すれば、当該ADV信号にLE Limited Discoverable Mode flag「0」とLE General Discoverable Mode flag「0」の双方が含まれている状態)を示す。なお、「Readable without authentication when discoverable」はバージョン4.2以降の規格に定められている項目である。以下では、特に言及する場合を除き、ADV信号が送信される状況において、ADV信号にDiscoverable状態であることに関する所定の値が含まれているものとする。
GA138Aが上記のデータ構造を有しているので、GA138A内のデバイス名DNは、以下のように読み出される。CPU132(即ちサーバ)は、クライアントからUUID「0x2803」を指定したRead By Type Request信号を受信すると、UUID「0x2803」に対応するAPerに示される「Readable without authentication」に従って、クライアントがUUID「0x2803」に対応するAValue(即ち、プロパティ「Read」、Handle「n1」、及び、UUID「0x2A00」)を読み出すことを許可する。この結果、クライアントは、これらの情報を読み出す(即ち受信する)ことができ、これらの情報に基づいて、Handle「n1」及びUUID「0x2A00」に対応する情報の「Read」を実行可能であることを知ることができる。そして、クライアントは、UUID「0x2A00」を指定したRead By Type Request信号をサーバに送信する。サーバは、クライアントから当該信号を受信すると、UUID「0x2A00」に対応するAPerに示される「Readable without authentication when discoverable」に従って、クライアントがUUID「0x2A00」に対応するAValue(即ちデバイス名DN)を読み出すことを許可する。これにより、クライアントは、デバイス名DNを読み出すことができる。
なお、第1種のPSについては、「Readable without authentication」等の上記の各項目のうち、SIGによって予め決められている項目が採用される。即ち、例えば、Handle「n1」に対応するAPerについては、「Readable without authentication when discoverable」しか採用することができず、プリンタ100のベンダが他の項目を採用することができない。一方、次に説明する第2種のPSについては、プリンタ100のベンダが上記の各項目のうちの任意の項目を採用することができる。
(第2種のPS)
(Function Service(FS)138B)
FS138Bは、Handleの範囲「n2」~「n4」に対応するデータ群である。Handle「n2」に対応するATypeは、FS138Bの先頭データであることを示すUUID「0x2800」を含む。Handle「n2」に対応するAValueは、FS138Bを他のPSと区別するためのUUID「aaa0」を含む。Handle「n2」に対応するAPerは、「Readable without authentication」を示す各値を含む。
Handle「n3」に対応するATypeは、Characteristic Declarationであることを示すUUID「0x2803」を含む。Handle「n3」に対応するAValueは、プロパティ「Read」と、Handle「n4」と、UUID「aaa1」と、を含む。Handle「n3」に対応するAPerは、「Readable without authentication」を示す各値を含む。
Handle「n4」に対応するAtypeは、Characteristic「Function Information」のUUID「aaa1」を含む。Handle「n4」に対応するAValueは、機能情報FIを含む。Handle「n4」に対応するAPerは、「Readable without authentication」を示す各値を含む。
(AP Connection(AC)138C)
図4に示すように、AC138Cは、Handleの範囲「n5」~「n13」に対応するデータ群である。Handle「n5」に対応するATypeは、AC138Cの先頭データであることを示すUUID「0x2800」を含む。Handle「n5」に対応するAValueは、AC138Cを他のPSと区別するためのUUID「bbb0」を含む。Handle「n5」に対応するAPerは、「Readable without authentication」を示す各値を含む。
Handle「n6」~「n9」に対応する各ATypeは、Characteristic Declarationであることを示すUUID「0x2803」を含む。Handle「n6」に対応するAValueは、プロパティ「Read」と、Handle「n10」と、UUID「bbb1」と、を含む。同様に、Handle「n7」~「n9」に対応する各AValueは、プロパティと、Handleと、UUIDと、を含む。なお、Handle「n8」及び「n9」に対応する各プロパティは、「Read」ではなく「Write」である。また、Handle「n6」~「n9」に対応する各APerは、「Readable without authentication」を示す各値を含む。
Handle「n10」に対応するAtypeは、Characteristic「Connection Status」のUUID「bbb1」を含む。Handle「n10」に対応するAValueは、AP状態情報(例えば「Disable」)を含む。Handle「n10」に対応するAPerは、「Readable without authentication」を示す各値を含む。
Handle「n11」に対応するAtypeは、Characteristic「IP Address」のUUID「bbb2」を含む。Handle「n11」に対応するAValueは、IPアドレスIAを含む。Handle「n11」に対応するAPerは、「Readable without authentication」を示す各値を含む。
Handle「n12」に対応するAtypeは、Characteristic「Connection Information」のUUID「bbb3」を含む。Handle「n12」に対応するAValueには、クライアントからAP(例えば200)のSSIDとパスワードが書き込まれる。なお、情報が書き込まれる前では、当該AValueは空情報を含む。Handle「n12」に対応するAPerは、「Writeable without authentication」を示す各値を含む。この各値は、SMPに従った情報の暗号化を実行することなく、情報(ここではSSIDとパスワード)が書き込まれることが可能であることを意味する。
Handle「n13」に対応するAtypeは、Characteristic「Change Permission」のUUID「bbb4」を含む。Handle「n13」に対応するAValueには、Attribute Permissionの値を変更するためのPermission変更指示が書き込まれる。Handle「n13」に対応するAPerは、「Writeable without authentication」を示す各値を含む。
AC138Cが上記のデータ構造を有しているので、例えば、AC138C内のUUID「n12」に対応するAValueには、以下のように情報が書き込まれる。CPU132(即ちサーバ)は、クライアントからUUID「0x2803」を指定したRead By Type Request信号を受信すると、各UUID「0x2803」に対応するAPerに示される「Readable without authentication」に従って、クライアントが各UUID「0x2803」に対応する各AValue(即ちプロパティ「Read(又はWrite)」、Handle「n10」~「n13」、及び、UUID「bbb1」~「bbb4」)を読み出すことを許可する。この結果、クライアントは、これらの情報を読み出すだすことができ、これらの情報に基づいて、例えばHandle「n12」及びUUID「bbb3」に対応する情報の「Write」を実行可能であることを知ることができる。そして、クライアントは、Handle「n12」を指定しているとともに書き込み対象の情報(即ちSSIDとパスワード)を含むWrite Request信号をサーバに送信する。サーバは、当該信号を受信すると、Handle「n12」に対応するAPerに示される「Writeable without authentication」に従って、情報をHandle「n12」に対応するAValueに書き込むことを許可する。これにより、クライアントは、SSIDとパスワードを書き込むことができる。
(WFD Connection(WC)138D)
図5に示されるように、WC138Dは、Handleの範囲「n14」~「n22」に対応するデータ群である。Handle「n14」に対応するATypeは、WC138Dの先頭データであることを示すUUID「0x2800」を含む。Handle「n14」に対応するAValueは、WC138Dを他のPSと区別するためのUUID「ccc0」を含む。Handle「n14」に対応するAPerは、「Readable without authentication」を示す各値を含む。
Handle「n15」~「n18」に対応する各ATypeは、Characteristic Declarationであることを示すUUID「0x2803」を含む。Handle「n15」に対応するAValueは、プロパティ「Read」と、Handle「n19」と、UUID「ccc1」と、を含む。同様に、Handle「n16~」~「n18」に対応する各AValueは、プロパティと、Handleと、UUIDと、を含む。なお、Handle「n17」及び「n18」に対応する各プロパティは、「Read」ではなく「Write」である。また、Handle「n15」~「n18」に対応する各APerは、「Readable without authentication」を示す各値を含む。
Handle「n19」に対応するAtypeは、Characteristi「Connection Status」のUUID「ccc1」を含む。Handle「n19」に対応するAValueは、WFD状態情報(例えば「Disable」)を含む。Handle「n19」に対応するAPerは、「Readable without authentication」を示す各値と、を含む。
Handle「n20」に対応するATypeは、Characteristic「Connection Information」のUUID「ccc2」を含む。Handle「n20」に対応するAValueは、暗号化済みのWFD情報を含み得る。ここで、WFD情報160が暗号化される前では、当該AValueは、暗号化済みのWFD情報を含まずに、空情報を含む。また、Handle「n20」に対応するAPerは、「Readable without authentication」を示す各値を含む。
Handle「n21」に対応するATypeは、Characteristic「Public Key」のUUID「ccc3」を含む。Handle「n21」に対応するAValueには、公開鍵が書き込まれる。また、Handle「n22」に対応するATypeは、Characteristic「Change Status」のUUID「ccc4」を含む。Handle「n22」に対応するAValueには、WFD接続に関する状態を変更するための各指示(例えば、プリンタ100の状態を「Disable」から「Enable」に変更するEnable指示、プリンタ100をG/Oとして動作させるためのStart指示)が書き込まれる。各Handle「n21」及び「n22」に対応する各APerは、「Writeable without authentication」を示す各値を含む。
(BT Control(BC)138E)
BC138Eは、Handleの範囲「n23」~「n27」に対応するデータ群である。Handle「n23」に対応するATypeは、BC138Eの先頭データであることを示すUUID「0x2800」を含む。Handle「n23」に対応するAValueは、BC138Eを他のPSと区別するためのUUID「ddd0…」を含む。Handle「n23」に対応するAPerは、「Readable without authentication」を示す各値を含む。
Handle「n24」及び「n25」に対応する各ATypeは、Characteristic Declarationであることを示すUUID「0x2803」を含む。Handle「n24」に対応するAValueは、プロパティ「Write」と、Handle「n26」と、UUID「ddd1」と、を含み、同様に、Handle「n25」に対応するAValueは、プロパティと、Handleと、UUIDと、を含む。
Handle「n26」に対応するATypeは、Characteristic「Paring Control」のUUID「ddd1」を含む。Handle「n26」に対応するAValueには、L2CAP Linkを切断するための切断指示が書き込まれる。Handle「n27」に対応するATypeは、Characteristic「Advertising Control」のUUID「ddd2」を含む。Handle「n27」に対応するAValueには、再開フラグ162を「ON」から「OFF」に変更するための再開フラグOFF指示が書き込まれる。各Handle「n26」及び「n27」に対応する各APerは、「Writeable without authentication」を示す各値を含む。
(Error Service(ES)138F)
ES138Fは、Handleの範囲「n28」~「n30」に対応するデータ群である。Handle「n28」に対応するATypeは、ES138Fの先頭データであることを示すUUID「0x2800」を含む。Handle「n28」に対応するAValueは、ES138Fを他のPSと区別するためのUUID「eee0」と、を含む。Handle「n28」に対応するAPerは、「Readable without authentication」を示す各値を含む。
Handle「n29」に対応するATypeは、Characteristic Declarationであることを示すUUID「0x2803」を含む。Handle「n29」に対応するAValueは、プロパティ「Read」と、Handle「n30」と、UUID「eee1」と、を含む。Handle「n29」に対応するAPerは、「Readable without authentication」を示す各値を含む。
Handle「n30」に対応するATypeは、Characteristic「Error Information」のUUID「eee1」を含む。Handle「n30」に対応するAValueは、エラーURLを含み得る。ここで、プリンタ100がエラー状態でない場合には、当該AValueは、エラーURLを含まずに、空情報を含む。また、Handle「n30」に対応するAPerは、「Readable without authentication」を示す各値を含む。
(比較例;図6及び図7)
本実施例の端末10及びプリンタ100によって実行される処理を説明する前に、比較例の携帯端末300(以下では単に「端末300」と記載する)及びプリンタ500によって実行される処理を説明する。端末300は、OS36を備えるが、本実施例の処理(後述の図8~図18参照)を実現するためのアプリ38とは異なるアプリ338を備える。プリンタ500は、本実施例の処理を実現するためのプログラム136とは異なるプログラムを備え、再開フラグ162を記憶しない。また、比較例のPS群は、少なくともGA138A及びFS138Bを含む。なお、以下では、理解の容易さの観点から、端末300のCPUがOS36、アプリ338に従って実行する処理を、それぞれ、OS36、アプリ338を主体として説明する。また、比較例の全ての通信は、端末300及びプリンタ500のそれぞれのBTI/Fを介して実行されるので、以下では、「BTI/Fを介して」という説明を省略する。
T10では、アプリ338を起動する操作がユーザによって端末300に実行され、この結果、アプリ338が起動する。この場合、T12では、アプリ338は、Scan開始命令をOS36に供給する。Scan開始命令は、Scan Request信号の送信を開始させるための命令である。
また、T14では、プリンタ500の電源を投入する操作がユーザによってプリンタ500に実行される。T20では、プリンタ500は、ADV信号のブロードキャスト送信を開始する。当該信号は、BT方式の規格によって予め決められている接続許可パラメータ「ADV_IND」を含む。当該パラメータは、ADV信号を受信したデバイスとのL2CAP Linkを確立することを許可することを示す。なお、変形例では、接続許可パラメータは、「ADV_DIRECT_IND」であってもよい。
OS36は、アプリ338からScan開始命令を取得し(T12)、かつ、プリンタ500からADV信号を受信する場合(T20)に、T22において、Scan Request信号をプリンタ500に送信する。当該信号は、ADV信号の送信元のデバイス(ここではプリンタ500)の情報を要求するための信号である。
T24では、OS36は、プリンタ500からScan Request信号に対する応答としてScan Response信号を受信する。当該信号は、プリンタ500のモデル名「model0」を含む。OS36は、当該信号を受信すると、当該信号をアプリ338に供給する。
アプリ338は、OS36からScan Response信号を取得すると、T26において、接続確認画面を端末300の表示部に表示させる。接続確認画面は、BT方式に従った無線接続(即ちL2CAP Link)をプリンタ500と確立するのか否かをユーザに確認するための画面である。接続確認画面は、Scan Response信号に含まれるモデル名「model0」と、L2CAP Linkの確立の指示を受け付けるための接続ボタンと、を含む。
アプリ338は、T28において、接続確認画面内の接続ボタンの選択を受け付けると、T30において、接続開始命令をOS36に供給する。接続開始命令は、CONNECT_IND信号の送信を開始させるための命令である。当該信号は、L2CAP Linkの確立を要求するための信号である。なお、接続開始命令の取得をトリガとして開始される後述するT30~T80の処理のうちOS36によって実行される処理は、OS36によって自動的に実行され、アプリ338からの命令によって停止することができない。
OS36は、T30において、アプリ338から接続開始命令を取得すると、T32において、CONNECT_IND信号をプリンタ500に送信する。当該信号がプリンタ500に送信されると、T34において、端末300とプリンタ500の間にL2CAP Linkが確立される。
プリンタ500は、T34において、L2CAP Linkが確立されると、T36において、ADV信号の送信を停止する。即ち、プリンタ500が、Discoverable状態から非Discoverable状態に移行する。このように、L2CAP Linkが確立されることに応じてADV信号の送信が停止するのは、例えば、BTI/F116のチップ等の仕様による。
また、OS36は、T34で確立されたL2CAP Linkを利用して、後述するT38からT78の処理を実行する。T38からT78の処理は、iOSの仕様により実行される。即ち、iOSはL2CAP Linkが確立される場合に、PS群の情報を自動的に取得する仕様を有する。T38では、OS36は、ATTによって定義されるRead By Group Type Request信号(以下では単に「Group_Req信号」と記載)をプリンタ500に送信する。Group_Req信号は、プリンタ500のプロトコルスタック内のPS群の構成を示す情報を読み出すための信号である。
プリンタ500は、T38において、端末300からGroup_Req信号を受信すると、T40において、当該信号に対する応答として、各PSのUUIDと、各PSの最初のHandleと、各PSの最後のHandleと、を端末300に送信する。具体的には、プリンタ500は、PS群から、先頭データであることを示すUUID「0x2800」に対応するAValueを取得する。図3に示すように、UUID「0x2800」に対応するAValueとして、GA138AのUUID「0x1800」、FS138Bの「aaa0」等が取得される。また、プリンタ500は、各PSの最初のHandle(例えば、GA138Aの最初のHandle「0x0001」、FS138Bの最初のHandle「n2」等)と、各PSの最後のHandle(例えば、GA138Aの最後のHandle(n2の前の値)、FS138Bの最後のHandle「n4」等)と、を取得する。そして、プリンタ500は、取得済みの各情報を端末300に送信する。これにより、端末300は、プリンタ500のPS群の構成を知ることができる。
次いで、OS36は、T40で受信された各情報を利用して、複数個のPSに対応する複数個のRead By Type Request信号(以下では、単に「Type_Req信号」と記載)をプリンタ500に順次送信する。Type_Req信号は、ATypeを指定した信号であって、指定済みのATypeに対応するAValueを読み出すための信号である。OS36は、具体的には、以下の処理を実行する。
まず、OS36は、T42Aにおいて、最も小さい値を有するHandle「0x0001」に対応するPSであるGA138Aについて、Type_Req信号をプリンタ500に送信する。具体的には、OS36は、T42Aにおいて、UUID「0x2803」(即ちCharacteristic Declaration)と、GA138Aの最初のHandle「0x0001」と、GA138Aの最後のHandle(記載省略)と、を含むType_Req信号をプリンタ500に送信する。
プリンタ500は、T42Aにおいて、端末300からType_Req信号を受信すると、Type_Req信号に含まれる最初のHandle「0x0001」及び最後のHandleによって示されるHandleの範囲内に含まれるデータ群の中から、Type_Req信号に含まれるUUID「0x2803」に対応するHandle「0x0002」を特定する。次いで、プリンタ500は、特定済みのHandle「0x0002」に対応するAValue及びAPerを特定する。ここで、特定済みのAPerは、「Readable without authentication」を示す。このため、プリンタ500は、T42Bにおいて、SMPに従った情報の暗号化を実行することなく、特定済みのHandle「0x0002」と、特定済みのAValue(即ち、プロパティ「Read」、Handle「n1」、及び、UUID「0x2A00」)と、をType_Req信号に対する応答として端末300に送信する。
OS36は、T42Bにおいて、プリンタ500からHandle「0x0002」及びAValueを受信すると、T42Cにおいて、当該AValue内のUUID「0x2A00」を含むType_Req信号をプリンタ500に送信する。当該信号は、さらに、GA138Aの最初のHandle「0x0001」とGA138Aの最後のHandleとを含む。
プリンタ500は、T42Cにおいて、端末300からType_Req信号を受信すると、当該信号に含まれる最初のHandle「0x0001」及び最後のHandleによって示されるHandleの範囲内に含まれるデータ群の中から、Type_Req信号に含まれるUUID「0x2A00」に対応するHandle「n1」を特定する。次いで、プリンタ500は、特定済みのHandle「n1」に対応するAValue及びAPerを特定する。ここで、特定済みのAPerは、「Readable without authentication when discoverable」を示す。上述したように、現時点では、プリンタ500は、非Discoverable状態である。このため、プリンタ500は、SMPに従った情報の暗号化を実行することを条件として、情報を読み出すことを許可する。そして、現時点では、SMPに従った情報の暗号化を実行するための鍵(本比較例では後述のLong Term Key)が生成されていない。このために、プリンタ500は、SMPに従った情報の暗号化を実行することができず、この結果、T46において、Error Response信号を端末300に送信する。
OS36は、T46において、プリンタ500からError Response信号を受信すると、T48において、Pairing Request信号をプリンタ500に送信する。当該信号は、SMPに関する処理を開始させるための信号である。
プリンタ500は、T48において、端末300からPairing Request信号を受信すると、T50において、Pairing Response信号を端末300に送信する。そして、プリンタ500は、T52において、PINコード「1234」を表示する。これにより、ユーザは、PINコード「1234」を知ることができる。
OS36は、T50において、プリンタ500からPairing Response信号を受信すると、T54において、PINコードを入力するためのPIN入力画面を端末300の表示部に表示させる。
図7に示されるように、T60では、OS36は、PIN入力画面でPINコード「1234」の入力を受け付ける。この結果、T62において、OS36とプリンタ500との間でSMPに従った認証通信が実行される。認証通信の少なくとも一部の過程において、入力済みのPINコード「1234」によって暗号化された情報である暗号化情報が通信される。そして、暗号化情報の復号が成功する場合に、プリンタ500は、Long Term Key(以下では単に「Key」と記載)を端末300に送信する。これにより、後述するT72以降の処理において、OS36とプリンタ500との間でBLE通信される情報は、Keyによって暗号化される。なお、図7において、細線の矢印、太線の矢印は、それぞれ、暗号化されていない情報の通信、SMPに従って暗号化された情報の通信を示す。以下の図でも同様である。
T62の認証通信が完了すると、OS36は、T72において、図6のT42Cと同様のType_Req信号をプリンタ500に再び送信する。ただし、上述したように、当該信号内の情報は、Keyによって暗号化されている。
プリンタ500は、T72において、端末300からType_Req信号を受信すると、当該信号内の情報をKeyによって復号し、復号済みの情報に含まれる最初のHandle「0x0001」及び最後のHandleによって示されるHandleの範囲内に含まれるデータ群の中から、Type_Req信号に含まれるUUID「0x2A00」に対応するHandle「n1」を特定する。次いで、プリンタ500は、特定済みのHandle「n1」に対応するAValue及びAPerを特定する。ここで、特定済みのAPerは、「Readable without authentication when discoverable」を示す。プリンタ500は、非Discoverable状態であるものの、T62の認証処理を実行済みであるために、SMPに従った情報の暗号化を実行可能である。従って、プリンタ500は、当該AValueに含まれる情報(即ちデバイス名DN)を読み出すことを許可する。このため、プリンタ500は、Keyを利用してデバイス名DNを暗号化し、T74において、暗号化済みのデバイス名DNを端末300に送信する。
続けて、OS36は、T76Aにおいて、PS群のうち、Handle「0x0001」の次に小さいHandleに対応するPSについて、Type_Req信号をプリンタ500に送信する。すなわち、GA138A(Handle「0x0001」)の次のPSであるFS138B(Handle「n2」)について、Type_Req信号をプリンタ500に送信する。当該信号は、UUID「0x2803」と、FS138Bの最初のHandle「n2」と、FS138Bの最後のHandle「n4」と、を含む。T76Bは、UUID「0x2803」に対応するHandle「n3」と、Handle「n3」に対応するAValue(即ち、プロパティ「Read」、Handle「n4」、及び、UUID「aaa1」)が端末300に送信される点を除いて、図6のT42Bと同様である。
OS36は、T76Bにおいて、端末300からHandle「n3」及びAValueを受信すると、T76Cにおいて、UUID「aaa1」を含むType_Req信号をプリンタ500に送信する。当該信号は、FS138Bの最初のHandle「n2」とFS138Bの最後のHandle「n4」を含む。
プリンタ500は、T76Cにおいて、端末300からType_Req信号を受信すると、当該信号内の情報をKeyによって復号し、復号済みの情報に含まれる最初のHandle「n2」及び最後のHandle「n4」によって示されるHandleの範囲内に含まれるデータ群の中から、Type_Req信号に含まれるUUID「aaa1」に対応するHandle「n4」を特定する。次いで、プリンタ500は、特定済みのHandle「n4」に対応するAValue及びAPerを特定する。ここで、特定済みのAPerは、「Readable without authentication」を示す。従って、プリンタ500は、当該AValueに含まれる情報(即ち機能情報FI)を読み出すことを許可する。このため、プリンタ500は、Keyを利用して機能情報FIを暗号化し、T78において、暗号化済みの機能情報FIを端末300に送信する。
OS36は、T78において、プリンタ500から機能情報FIを受信した後に、PS群のうちの残りの各PSに対応する各Type_Req信号をプリンタ500に順次送信する。OS36は、上述したT38~T78の処理と残りの各PSに対応する各Type_Req信号の送信を自動的に実行することによって、PS群の情報、即ち、各PSに含まれるCharacteristicのプロパティ、UUID、及び、Handleを知ることができる。
OS36は、複数個のPSに対応する複数個のType_Req信号の全ての送信が完了すると、T80において、接続完了通知をアプリ338に供給する。接続完了通知は、図6のT30の接続開始命令に対する応答である。
アプリ338は、T80において、OS36から接続完了通知を取得すると、T81Aにおいて、各PSの各UUIDを示す第1のリストを要求するためのリスト要求をOS36に供給する。これにより、アプリ338は、T81Bにおいて、OS36から第1のリストを取得する。次いで、アプリ338は、T81Cにおいて、第1のリストの中からFS138BのUUID「aaa0」を選択し、選択済みのUUID「aaa0」をOS36に供給する。これにより、アプリ338は、T81Dにおいて、OS36からFS138B内の各Characteristicの各プロパティと各UUIDとを含む第2のリスト(ここでは1組のプロパティ「Read」とUUID「aaa1」のみを含むリスト)を取得する。
アプリ338は、T81Dにおいて、OS36から第2のリストを取得すると、T82において、第2のリストの中からUUID「aaa1」を選択し、UUID「aaa1」に対応するプロパティ「Read」に従って、選択済みのUUID「aaa1」を含むType_Req信号の送信をOS36に要求する。この結果、OS36は、UUID「aaa1」とFS138Bの最初のHandle「n2」と最後のHandle「n4」とを含むType_Req信号をプリンタ500に送信する。
プリンタ500は、T82において、端末300からUUID「aaa1」を含むType_Req信号を受信すると、T84において、T78と同様に、機能情報FIをType_Req信号に対する応答として端末300に送信する。
OS36は、T84において、プリンタ500から機能情報FIを受信すると、受信済みの機能情報FIをアプリ338に供給する。
アプリ338は、T84においてOS36から機能情報FIを取得すると、T90において、プリンタ500の機能を示す機能画面を表示する。機能画面は、プリンタ500のモデル名「model0」と、機能情報FIによって示されるプリンタ500の複数個の機能のうちの印刷機能を示す文字情報と、を含む。また、本ケースでは、機能情報FIは、プリンタ500がAP接続の確立とWFD接続の確立とエラー情報の送信とを実行可能であることを示す。このため、機能画面は、これら機能を実行するためのボタンとして、AP接続ボタンと、WFD接続ボタンと、エラー情報ボタンと、を含む。AP接続ボタンは、AP接続を確立する指示を受け付けるためのボタンである。WFD接続ボタンは、WFD接続を確立するための指示を受け付けるためのボタンである。エラー情報ボタンは、エラーURLを表示する指示を受け付けるためのボタンである。また、機能画面は、さらに、Cancelボタンを含む。Cancelボタンは、以降の処理をキャンセルするための指示を受け付けるためのボタンである。
本比較例では、プリンタ500が実行可能な複数個の機能(即ち、印刷機能、AP接続、WFD接続)の中にユーザが望む機能が存在しない。この場合、ユーザは、T92において、機能画面内のCancelボタンを選択する。この結果、機能画面の表示が終了し、図7の処理が終了する。
本比較例によると、端末300においてT90で機能画面が表示される前に、T62の認証通信が実行される。即ち、ユーザがPINコードを端末300に入力しなければ(T60)、端末300において機能画面が表示されない。そして、本比較例では、機能画面内に示される複数個の機能の中にユーザが望む機能が含まれない。即ち、本比較例によると、プリンタ500が実行可能な複数個の機能の中にユーザが望む機能が含まれない場合でも、ユーザがPINコードを入力しなければならない。そこで、本実施例では、プリンタ100が実行可能な複数個の機能の中にユーザが望む機能が含まれない場合に、プリンタ100と端末10との間で認証通信が実行されることを抑制することを実現する。これにより、プリンタ100が実行可能な複数個の機能の中にユーザが望む機能が含まれない場合に、ユーザがPINコードを入力する作業を実行せずに済む。この結果、ユーザの利便性が向上する。
(Cancelのケース;図8、図9)
図8及び図9を参照して、本実施例において機能画面のCancelボタンが選択されるケースを説明する。なお、以下では、理解の容易さの観点から、端末10のCPU32がOS36、アプリ38に従って実行する処理を、それぞれ、OS36、アプリ38を主体として説明する。プリンタ100のCPU132がプログラム136に従って実行する処理を、プリンタ100を主体として説明する。また、本実施例の通信は、特に言及する場合を除き、端末10及びプリンタ100の各BTI/Fを介して実行されるので、以下では、「BTI/F16(又は116)を介して」という説明を省略する。
T110、T112は、それぞれ、図6のT10、T12と同様である。プリンタ100は、T114において、プリンタ100の電源を投入する操作がユーザによって実行されると、T116において、再開フラグ162を「ON」に設定する。そして、プリンタ100は、T120において、接続許可パラメータ「ADV_IND」を含むADV信号のブロードキャスト送信を開始する。
OS36は、プリンタ100からADV信号を受信するので(T120)、T122において、Scan Request信号をプリンタ100に送信し、T124において、プリンタ100からモデル名「model1」を含むScan Response信号を受信し、当該信号をアプリ338に供給する。
T126~T132は、接続確認画面がモデル名「model1」を含む点を除いて、図6のT26~T32と同様である。OS36は、T132において、CONNECT_IND信号をプリンタ100に送信し、T134において、端末10とプリンタ100の間にL2CAP Linkを確立する。
プリンタ100は、T134において、L2CAP Linkが確立されると、T136において、ADV信号の送信を停止する。上記したように、現時点において、再開フラグ162は「ON」を示す。このため、プリンタ100は、T136でADV信号の送信を停止した直後に、T137において、ADV信号の送信を再開する。即ち、プリンタ100は、Discoverable状態から非Discoverable状態に移行した直後に、Discoverable状態に再び移行する。ここで、再開後のADV信号は、接続許可パラメータ「ADV_IND」を含まず、接続不許可パラメータ「ADV_NONCONN_IND」を含む。当該パラメータは、ADV信号を受信したデバイスとのL2CAP Linkを確立することを許可しないことを示す。当該パラメータを含むADV信号を受信したデバイスは、Scan_Request信号を送信せず、この結果、当該デバイスとプリンタ100との間にL2CAP Linkが確立されない。このような構成によれば、再開後のADV信号が端末10とは異なるデバイスによって受信される場合に、当該異なるデバイスとプリンタ100との間にL2CAP Linkが確立されることを抑制することができる。
また、OS36は、T134で確立されたL2CAP Linkを利用して、後述するT138~T178の処理を実行する。T138~T142Cは、図6のT38~T42Cと同様である。
プリンタ100は、T142Cにおいて、端末10からUUID「0x2A00」を含むType_Req信号を受信すると、当該信号に含まれる最初のHandle「0x0001」及び最後のHandleによって示されるHandleの範囲内に含まれるデータ群の中から、Type_Req信号に含まれるUUID「0x2A00」に対応するHandle「n1」を特定する。次いで、プリンタ500は、特定済みのHandle「n1」に対応するAValue及びAPerを特定する。ここで、特定済みのAPerは、「Readable without authentication when discoverable」を示す。上述したように、現時点では、プリンタ100は、Discoverable状態である(T137)。このため、プリンタ100は、SMPに従った情報の暗号化を実行することなく、情報を読み出すことを許可する。この結果、プリンタ100は、T144において、SMPに従った情報の暗号化を実行することなく、UUID「0x2A00」に対応するAValueであるデバイス名DNを端末10に送信する。このように、プリンタ100は、T137でDiscoverable状態に再び移行するので、T142CでType_Req信号を受信する場合に、図6のT46のようにError Response信号を端末10に送信することなく、即ち、PINコードの入力を端末10に求めることなく、デバイス名DNを端末10に送信することができる。
OS36は、T144において、プリンタ100からデバイス名DNを受信すると、T176Aにおいて、FS138Bに対応するType_Req信号をプリンタ100に送信する。T176A~T176Cは、Keyを利用した暗号化が実行されない点を除いて、図7のT76A~T76Cと同様である。
プリンタ100は、T176Cにおいて、端末10からType_Req信号を受信すると、当該信号に含まれる最初のHandle「n2」及び最後のHandle「n4」によって示されるHandleの範囲内に含まれるデータ群の中から、Type_Req信号に含まれるUUID「aaa1」に対応するHandle「n4」を特定する。次いで、プリンタ100は、特定済みのHandle「n4」に対応するAValue及びAPerを特定する。ここで、特定済みのAPerは、「Readable without authentication」を示す。このため、プリンタ100は、当該AValueに含まれる情報(即ち機能情報FI)を読み出すことを許可する。この結果、プリンタ100は、T178において、SMPに従った情報の暗号化を実行することなく、機能情報FIを端末10に送信する。
OS36は、T178において、プリンタ100から機能情報FIを受信すると、PS群のうちの残りの各PSに対応する各Type_Req信号をプリンタ100に順次送信し、プリンタ100から残りの各PSのプロパティ「Read」に対応する各AValueを受信する。そして、OS36は、T180において、接続完了通知をアプリ38に供給する。
図9に示されるように、アプリ38は、T180において、OS36から接続完了通知を取得すると、図7のT81A~T81Dと同様の処理を実行し、T182において、UUID「aaa1」を含むType_Req信号の送信をOS36に要求する。この結果、OS36は、UUID「aaa1」とFS138Bの最初のHandle「n2」と最後のHandle「n4」とを含むType_Req信号をプリンタ100に送信する。
OS36は、T182において、Type_Req信号をプリンタ100に送信すると、T184において、プリンタ100から機能情報FIを受信し、受信済みの機能情報FIをアプリ38に供給する。
アプリ38は、T184において、OS36から機能情報FIを取得すると、T185Cにおいて、各PSの各UUIDを含む第1のリストの中からBC138EのUUID「ddd0」を選択し、選択済みのUUID「ddd0」をOS36に供給する。これにより、アプリ38は、T185Dにおいて、OS36からBC138E内の各Characteristicの各UUIDの第2のリスト(即ち、2個のUUID「ddd1」、「ddd2」を含むリスト)を取得する。
アプリ38は、T185Dにおいて、OS36から第2のリストを取得すると、T186において、第2のリストの中からUUID「ddd1」を選択し、切断指示を含むWrite Request信号の送信をOS36に要求する。この結果、OS36は、選択済みのUUID「ddd1」に対応するHandle「n26」と切断指示とを含むWrite Request信号をプリンタ100に送信する。
プリンタ100は、T182において、端末10からWrite Request信号を受信すると、当該信号に含まれるHandle「n26」に対応するAValue及びAPerを特定する。ここで、特定済みのAPerは、「Writeable without authentication」を示す。このため、プリンタ100は、当該信号に含まれる情報(即ち切断指示)を特定済みのAValueに書き込むことを許可する。即ち、プリンタ100は、切断指示を当該AValueに記憶する。
プリンタ100は、切断指示が記憶されると、T188において、Write Response信号を端末10に送信する。さらに、プリンタ100は、T189Aにおいて、記憶済みの切断指示に従って、図8のT134で確立されたL2CAP Linkを切断する。
プリンタ100は、L2CAP Linkが切断されると、T189Bにおいて、接続不許可パラメータを含むADV信号に代えて、接続許可パラメータ「ADV_IND」を含むADV信号の送信を開始する。
また、端末10は、T188において、プリンタ100からWrite Response信号を受信すると、T190において、プリンタ100の機能を示す機能画面を表示する。T190の機能画面は、モデル名が異なる点を除いて、図7のT90の機能画面と同様である。
本ケースでは、プリンタ100が実行可能な複数個の機能(即ち、印刷機能、AP接続、WFD接続)の中にユーザが望む機能が存在しない。この場合、ユーザは、T192において、機能画面内のCancelボタンを選択する。この結果、機能画面の表示が終了し、図9の処理が終了する。
本ケースによると、プリンタ100は、L2CAP Linkを確立した後にADV信号の送信を再開する(図8のT137)。これにより、プリンタ100の状態がDiscoverable状態になる。このため、プリンタ100は、T142Cにおいて、Type_Req信号を受信する場合(T142C)に、SMPに従った情報の暗号化を実行することなく、デバイス名DNを端末10に送信する(T144)。即ち、図6の比較例とは異なり、端末10において機能画面が表示される前に、認証通信が実行されない。これにより、プリンタ100が実行可能な複数個の機能の中にユーザが望む機能が含まれない場合に、プリンタ100と端末10との間で認証通信が実行されることを抑制することができる。即ち、プリンタ100が実行可能な複数個の機能の中にユーザが望む機能が含まれない場合に、ユーザがPINコードを入力する作業を実行せずに済む。この結果、ユーザの利便性が向上する。
(AP接続のケース;図10~図12)
図10~図12を参照して、本実施例において機能画面のAP接続ボタンが選択されるケースを説明する。本ケースでは、プリンタ100が実行可能な複数個の機能(即ち、印刷機能、AP接続、WFD接続)の中にユーザが望むAP接続の機能が存在する。この場合、ユーザは、T200において、機能画面内のAP接続ボタンを選択する。
アプリ38は、T200において、AP接続ボタンの選択を受け付けると、T212において、接続開始命令をOS36に供給する。これにより、OS36は、T232において、CONNECT_IND信号をプリンタ100に送信し、T234において、端末10とプリンタ100の間にL2CAP Linkを確立する。
プリンタ100は、T234において、L2CAP Linkが確立されると、T236において、ADV信号の送信を停止する。そして、再開フラグ162が「ON」を示すので、T237において、ADV信号の送信を再開する。即ち、プリンタ100は、Discoverable状態に再び移行する。
また、OS36は、T234で確立されたL2CAP Linkを利用して、図8のT138~T142Bと同様の通信(即ち、Group_Req信号の送信と、UUID「0x2803」を含むType_Req信号の送信)を実行する。そして、OS36は、T242Cにおいて、図8のT142Cと同様に、UUID「0x2A00」を含むType_Req信号をプリンタ100に送信する。
プリンタ100は、T242Cにおいて、端末10からType_Req信号を受信すると、APerが「Readable without authentication when discoverable」を示し、かつ、プリンタ100がDiscoverable状態であることに起因して、図8のT144と同様に、T244において、デバイス名DNを端末10に送信する。
OS36は、T244において、プリンタ100からデバイス名DNを受信すると、図8のT176A~T178と同様の通信を実行するとともに、PS群のうちの残りの各PSに対応する各Type_Req信号をプリンタ100に順次送信する。そして、OS36は、図8のケースと同様に、Error Response信号を受信することなく、プリンタ100から残りの各PSのプロパティ「Read」に対応する各AValueを受信し、T250において、接続完了通知をアプリ38に供給する。
アプリ38は、T250において、OS36から接続完了通知を取得すると、T252において、OS36からBC138E内の各Characteristicの各UUIDを示す第2のリストを取得する。そして、アプリ38は、OS36を介して、当該第2のリスト内のUUID「ddd2」に対応するHandle「n27」と再開フラグOFF指示とを含むWrite Request信号をプリンタ100に送信する。
プリンタ100は、T252において、端末10からWrite Request信号を受信すると、Handle「n27」に対応するAPerが「Writeable without authentication」を示すことに起因して、再開フラグOFF指示をHandle「n27」に対応するAValueに記憶する。そして、プリンタ100は、T254において、Write Response信号を端末10に送信する。
また、アプリ38は、T256において、図9のT186と同様に、Handle「n26」と切断指示とを含むWrite Request信号をプリンタ100に送信し、T258において、図9のT188と同様に、プリンタ100からWrite Response信号を受信する。この結果、切断指示がHandle「n26」に対応するAValueに記憶される。
プリンタ100は、再開フラグOFF指示及び切断指示がAValueに記憶されると、T260Aにおいて、記憶済みの切断指示に従って、T234で確立されたL2CAP Linkを切断し、T260Bにおいて、接続許可パラメータ「ADV_IND」を含むADV信号の送信を開始する。また、プリンタ100はT262において、記憶済みの再開フラグOFF指示に従って、再開フラグ162を「ON」から「OFF」に変更する。これにより、以降の処理において、ADV信号の送信が再開されない。
図11に示すように、アプリ38は、T258において、端末10からWrite Response信号を受信すると、T312において、接続開始命令をOS36に供給する。T322~T336は、図8のT132~T134と同様である。ここで、図10のT262で再開フラグ162が「OFF」に変更されているので、プリンタ100は、ADV信号の送信を再開しない。即ち、プリンタ100は、非Discoverable状態である。
また、OS36は、T234で確立されたL2CAP Linkを利用して、図8のT138~T142Bと同様の通信を実行する。そして、OS36は、T342Cにおいて、図8のT142Cと同様に、UUID「0x2A00」を含むType_Req信号をプリンタ100に送信する。
T342Cで端末10からType_Req信号を受信した時点において、Keyは生成されていない。このため、プリンタ100は、APerが「Readable without authentication when discoverable」を示し、かつ、プリンタ100が非Discoverable状態であることに起因して、T346において、Error_Response信号を端末10に送信する。
OS36は、T346において、プリンタ100からError Response信号を受信すると、T348において、Pairing Request信号をプリンタ100に送信し、T350において、Pairing Response信号をプリンタ100から受信する。この結果、プリンタ100は、T352において、PINコード「1234」を表示し、端末10は、T354において、PIN入力画面を端末10の表示部12に表示する。
OS36は、T360において、PIN入力画面でPINコード「1234」の入力を受け付けると、T362において、OS36とプリンタ100との間でSMPに従った認証通信を実行する。当該認証通信において、入力済みのPINコード「1234」によって暗号化された暗号化情報の復号が成功し、Keyがプリンタ100から端末10に送信される。これにより、後述するT372以降の処理において、OS36とプリンタ100との間でBT方式に従って通信される情報は、Keyによって暗号化される。
T362の認証通信が完了すると、OS36は、T372において、T342Cと同様のType_Req信号をプリンタ500に再び送信する。ただし、上述したように、当該Type_Req信号内の情報は、Keyによって暗号化されている。
T372で端末10からType_Req信号を受信した時点において、Keyが生成されており、SMPに従った情報の暗号化を実行可能である。このため、プリンタ100は、APerが「Readable without authentication when discoverable」を示し、かつ、プリンタ100が非Discoverable状態であることに起因して、T374において、Keyを利用してデバイス名DNを暗号化し、暗号化済みのデバイス名DNを端末300に送信する。
OS36は、T374において、プリンタ100からデバイス名DNを受信すると、Keyによる暗号化が実行される点を除いて、図8のT176A~T178と同様の通信を実行するとともに、PS群のうちの残りの各PSに対応する各Type_Req信号をプリンタ100に順次送信する。この結果、OS36は、プリンタ100から残りの各PSのプロパティ「Read」に対応する各AValueを受信し、T380において、接続完了通知をアプリ38に供給する。
図12に示すように、アプリ38は、T380において、OS36から接続完了通知を取得すると、T402において、OS36からAC138C内の各Characteristicの各UUIDを示す第2のリストを取得する。そして、アプリ38は、OS36を介して、当該第2のリスト内のUUID「bbb1」とAC138Cの最初のHandle「n5」と最後のHandle「n13」とを含むType_Req信号をプリンタ100に送信する。
本ケースでは、T402でType_Req信号がプリンタ100に送信される時点において、プリンタ100のAP状態情報は「Enable」に設定されている。このため、アプリ38は、T402において、Type_Req信号をプリンタ100に送信すると、T404において、OS36を介して、プリンタ100からUUID「bbb1」に対応するAP状態情報「Enable」を受信する。
アプリ38は、T404において、OS36からAP状態情報「Enable」を取得すると、T406において、SSID画面を表示部12に表示する。SSID画面は、端末10が現在参加しているAP200のAPネットワークを識別するSSIDのリストと、パスワードを入力するための入力欄と、を含む。当該リストは、AP200のSSID「ap01」を含む。
T408では、アプリ38は、SSID画面内のリストの中からSSID「ap01」を選択する指示を受け付けるとともに、SSID画面内の入力欄にAP200のパスワード「xxx」を入力することを受け付ける。これにより、アプリ38は、取得済みの第2のリストの中からUUID「bbb3」を選択し、OS36を介して、選択済みのUUID「bbb3」に対応するHandle「n12」とSSID「ap01」とパスワード「xxx」とを含むWrite Request信号をプリンタ100に送信する。ここで、Write Request信号内の情報(即ちHandle「n12」とSSID「ap01」とパスワード「xxx」)は、Keyによって暗号化されている。
プリンタ100は、T410において、端末10からWrite Request信号を受信すると、当該信号内の情報を復号し、SSID「ap01」及びパスワード「xxx」を取得する。そして、プリンタ100は、SSID「ap01」及びパスワード「xxx」をHandle「n12」に対応するAValueに記憶する。次いで、プリンタ100は、T412において、Write Response信号を端末10に送信し、T414において、記憶済みのSSID「ap01」及びパスワード「xxx」を利用して、AP接続を確立するためのAP接続処理を開始し、AP状態情報を「Enable」から「Busy」に変更する。
アプリ38は、T412において、プリンタ100から、OS36を介して、Write Response信号を受信すると、T416において、OS36を介して、UUID「bbb1」を含むType_Req信号をプリンタ100に送信する。T416では、アプリ38は、AP接続処理が完了する前に、UUID「bbb1」を含むType_Req信号をプリンタ100に送信する。この結果、アプリ38は、T418において、プリンタ100から、OS36を介して、UUID「bbb1」に対応するAValue内のAP状態情報「Busy」を受信する。
アプリ38は、「Busy」を取得するのでAP接続処理が完了していないことを知ることができ、T422において、OS36を介して、UUID「bbb1」を含むType_Req信号をプリンタ100に再び送信する。ここで、T420においてAP接続処理が完了し、プリンタ100とAP200との間にAP接続が確立される。なお、図12において、破線の矢印は、APネットワークが利用されたWi-Fi通信(即ち無線LANI/F114を介した通信)を示す。プリンタ100は、AP接続が確立されると、AP状態情報を「Busy」から「Enable」に変更する。その後、T422では、アプリ38は、UUID「bbb1」を含むType_Req信号をプリンタ100に送信する。この結果、アプリ38は、T424において、プリンタ100から、OS36を介して、UUID「bbb1」に対応するAValue内のAP状態情報「Enable」を受信する。
アプリ38は、T424において、プリンタ100から、OS36を介して、AP状態情報「Enable」を受信すると、T426において、OS36を介して、AC138Cの「IP Address」のUUID「bbb2」と、AC138Cの最初のHandle「n5」と、最後のHandle「n13」と、を含むType_Req信号をプリンタ100に送信する。この結果、アプリ38は、T428において、プリンタ100から、OS36を介して、UUID「bbb2」に対応するAValue内のIPアドレスIAを受信する。
アプリ38は、T428において、OS36からIPアドレスIAを取得すると、T430において、IPアドレスIAを宛先とした確認信号の送信をOS36に要求する。この結果、OS36は、AP200のAPネットワークを利用して、無線LANI/F14を介して、確認信号を送信する。上記したように、プリンタ100とAP200との間にはAP接続が確立されている。このため、確認信号は、AP200を介してプリンタ100によって受信される。
プリンタ100は、T430において、無線LANI/F114を介して、AP200から確認信号を受信すると、T432において、無線LANI/F114とAP200とを介して、確認信号に対する応答信号を端末10に送信する。
アプリ38は、T432において、プリンタ100から、OS36を介して、応答信号を受信すると、プリンタ100との通信を実行可能であると判断する。T432の後に実行されるT434~T438Bは、Write Request信号内の情報がKeyにより暗号化される点を除いて、図10のT256~T260Bと同様である。
プリンタ100は、T438Aにおいて、L2CAP Linkが切断されると、T440において、再開フラグ162を「OFF」から「ON」に変更する。
また、アプリ38は、T436において、プリンタ100から、OS36を介して、Write Response信号を受信すると、T450において、印刷画面を表示部12に表示する。そして、アプリ38は、印刷画面において、ユーザから印刷操作を受け付ける。印刷操作は、印刷対象の画像を選択する操作と、印刷設定(用紙サイズ、色数等)の入力を受け付ける操作と、を含む。
T452では、アプリ38は、OS36、無線LANI/F14、及び、AP200を介して、選択済みの画像に対応する画像情報と、入力済みの印刷設定を示す設定情報と、を含む印刷データをプリンタ100に送信する。この結果、プリンタ100は、T454において、端末10から受信された設定情報によって示される印刷設定に従って、端末10から受信された画像情報に対応する画像の印刷を実行する。
本ケースの構成によれば、プリンタ100は、機能画面内のAP接続ボタンが選択される場合(図10のT200)に、再開フラグ162を「ON」から「OFF」に変更する(T262)。これにより、プリンタ100は、L2CAP Linkの確立に応じてADV信号の送信を停止した後に、ADV信号の送信を再開しない。そして、プリンタ100は、APerが「Readable without authentication when discoverable」を示し、かつ、プリンタ100が非Discoverable状態であることに起因して、認証通信を実行する(図11のT326)。この結果、端末10は、AP200のSSID「ap01」及びパスワード「xxx」をKeyによって暗号化してプリンタ100に送信することができる(T410)。このために、SSID「ap01」及びパスワード「xxx」が第三者によって取得されることを抑制することができる。
(WFD接続のケース;図13、図14)
図13、図14を参照して、本実施例において機能画面のWFD接続ボタンが選択されるケースを説明する。本ケースでは、プリンタ100が実行可能な複数個の機能(即ち、印刷機能、AP接続、WFD接続)の中にユーザが望むWFD接続の機能が存在する。この場合、ユーザは、T200において、機能画面内のWFD接続ボタンを選択する。
アプリ38は、T500において、WFD接続ボタンの選択を受け付けると、T512において、接続開始命令をOS36に供給する。T532~T537は、図10のT232~T237(即ち2CAP Linkの確立、ADV信号の送信の再開)と同様である。そして、OS36は、図8のT138~T142B、図10のT242C、T244と同様の通信(即ちPS群に対応する各Typ_Req信号の順次送信)を実行する。即ち、ADV信号の送信の再開により、プリンタ100はDiscoverable状態であるので、Error Response信号は受信されず、SMPに従った認証通信は実行されない。
アプリ38は、T550において、OS36からT512の接続開始命令に対する接続完了通知を取得すると、T552において、OS36からWC138D内の各Characteristicの各UUIDを示す第2のリストを取得する。そして、アプリ38は、OS36を介して、当該第2のリスト内のUUID「ccc4」に対応するHandle「n22」とEnable指示とを含むWrite Request信号をプリンタ100に送信する。
プリンタ100は、T552において、端末10からWrite Request信号を受信すると、Handle「n22」に対応するAPerが「Writeable without authentication」を示すことに起因して、Enable指示をHandle「n22」に対応するAValueに記憶する。そして、プリンタ100は、T554において、Write Response信号を端末10に送信する。
また、アプリ38は、T556において、OS36を介して、取得済みの第2のリスト内のUUID「ccc3」に対応するHandle「n21」と公開鍵とを含むWrite Request信号をプリンタ100に送信する。なお、公開鍵は、アプリ38の起動時にアプリ38によって予め生成されてもよいし、WFD接続ボタンが選択される場合等にアプリ38によって生成されてもよい。
プリンタ100は、T556において、端末10からWrite Request信号を受信すると、Handle「n21」に対応するAPerが「Writeable without authentication」を示すことに起因して、公開鍵をHandle「n21」に対応するAValueに記憶する。T558は、T554と同様である。
T560、T562は、図10のT256、T258と同様である。これにより、切断指示がHandle「n26」に対応するAValueに記憶される。
プリンタ100は、Enable指示、公開鍵、及び、切断指示がAValueに記憶されると、T564Aにおいて、記憶済みの切断指示に従って、T534で確立されたL2CAP Linkを切断し、T564Bにおいて、接続許可パラメータ「ADV_IND」を含むADV信号の送信を開始する。また、プリンタ100はT566において、記憶済みのEnable指示に従って、プリンタ100の状態を「Disable」から「Enable」に変更する。これにより、WFD状態情報が「Disable」から「Enable」に変更される。また、プリンタ100は、T568において、記憶済みの公開鍵を利用して、WFD情報160を暗号化する。プリンタ100は、WFD情報160の暗号化が完了すると、プリンタ100の状態を「Enable」から「Ready」に変更する。
図14に示すように、アプリ38は、T562において、端末10からWrite Response信号を受信すると、T570において、接続開始命令をOS36に供給する。T572~T577は、図13のT532~T537と同様である。そして、OS36は、図8のT138~T142B、図10のT242C、T244と同様の通信を実行する。即ち、図13と同様に、SMPに従った認証通信は実行されない。
アプリ38は、T580において、OS36からT570の接続開始命令に対する接続完了通知を取得すると、T582において、OS36からWC138D内の各Characteristicの各UUIDを示す第2のリストを取得する。そして、アプリ38は、OS36を介して、当該第2のリスト内のUUID「ccc1」とWC138Dの最初のHandle「n14」と最後のHandle「n22」とを含むType_Req信号をプリンタ100に送信する。
本ケースでは、T582でType_Req信号がプリンタ100に送信される時点において、プリンタ100のWFD状態情報は「Ready」に設定されている。このため、アプリ38は、T582において、OS36を介して、Type_Req信号をプリンタ100に送信すると、T584において、OS36を介して、プリンタ100からUUID「ccc1」に対応するWFD状態情報「Ready」を受信する。
アプリ38は、T584において、OS36からWFD状態情報「Ready」を取得すると、T586において、OS36を介して、取得済みの第2のリスト内のUUID「ccc2」とWC138Dの最初のHandle「n14」と最後のHandle「n22」とを含むType_Req信号をプリンタ100に送信する。この結果、アプリ38は、T588において、プリンタ100から、OS36を介して、暗号化済みのWFD情報を受信する。
T590では、アプリ38は、公開鍵を利用して、受信済みの暗号化済みのWFD情報を復号する。これにより、アプリ38は、WFD情報160を取得する。
T592では、アプリ38は、OS36を介して、取得済みの第2のリスト内のUUID「ccc4」に対応するHandle「n22」とStart指示とを含むWrite Request信号をプリンタ100に送信する。この結果、Handle「n22」に対応するAValueに、Start指示が記憶され、T594において、Write Response信号が端末10に送信される。
プリンタ100は、T596において、記憶済みのStart指示に従って、G/O状態としての動作を開始する。この結果、プリンタ100の状態は、「Ready」から「Start」に変更される。
また、アプリ38は、T598において、T590で取得したWFD情報160をOS36に供給して、WFD接続の確立をOS36に要求する。これにより、OS36は、T600において、WFD方式のクライアントとして動作して、WFD情報160を利用して、プリンタ100との間にWFD接続を確立する。
また、プリンタ100は、T600において、端末10との間でWFD接続を確立すると、T602において、プリンタ100の状態を「Start」から「Enable」に変更する。
また、アプリ38は、T598において、WFD情報160をOS36に供給すると、T604において、T582と同様に、OS36を介して、UUID「ccc1」を含むType_Req信号をプリンタ100に送信する。本ケースでは、アプリ38は、WFD接続の確立が完了した後に、UUID「ccc1」を含むType_Req信号をプリンタ100に送信する。この結果、アプリ38は、T606において、プリンタ100から、OS36を介して、UUID「ccc1」に対応するAValue内のWFD状態情報「Enable」を受信する。
アプリ38は、T606において、プリンタ100からWFD状態情報「Enable」を受信すると、WFD接続の確立が完了したと判断する。T606の後に実行されるT608~T612Bは、図13のT560~T564Bと同様である。
T620~T622は、印刷データがWFD接続を利用して端末10からプリンタ100に直接送信される点を除いて、図12のT450~T454と同様である。
本ケースの構成によれば、プリンタ100は、機能画面内のWFD接続ボタンが選択される場合(図13のT500)に、公開鍵をプリンタ100に送信する(T556)。これにより、プリンタ100は、WFD情報160を暗号化する(T568)。そして、プリンタ100は、暗号化済みのWFD情報を端末10に送信する(図14のT588)。このために、WFD情報160が第三者によって取得されることを抑制することができる。
また、本ケースの構成によれば、プリンタ100は、L2CAP Linkを確立した後にADV信号の送信を再開する(図13のT537)。APerが「Readable without authentication when discoverable」を示し、かつ、プリンタ100がDiscoverable状態であることに起因して、SMPに従った認証通信が実行されずに、公開鍵がプリンタ100に送信される(T556)。このため、公開鍵による暗号化を実行すべき場合に、SMPのKeyに従った暗号化が実行されることを抑制することができる。
(エラー情報の場合;図15)
図15を参照して、本実施例において機能画面のエラー情報ボタンが選択されるケースを説明する。本ケースでは、ユーザは、プリンタ100がエラー状態であるのか否かを確認するために、機能画面内のエラー情報ボタンを選択する。
アプリ38は、T630において、エラー情報ボタンの選択を受け付けると、T632において、接続開始命令をOS36に供給する。T642~T647は、図10のT232~T237と同様である。そして、OS36は、図8のT138~T142B、図10のT242C、T244と同様の通信を実行する。即ち、図10と同様に、SMPに従った認証通信は実行されない。
アプリ38は、T660において、OS36からT632の接続開始命令に対する接続完了通知を取得すると、T662において、OS36からES138F内の各Characteristicの各UUIDを示す第2のリストを取得する。そして、アプリ38は、OS36を介して、当該第2のリスト内のUUID「eee1」とES138Fの最初のHandle「n28」と最後のHandle「n30」とを含むType_Req信号をプリンタ100に送信する。
本ケースでは、T662でType_Req信号がプリンタ100に送信される時点において、プリンタ100の状態がエラー状態(例えば紙詰まり)である。このため、アプリ38は、T662において、Type_Req信号をプリンタ100に送信すると、T664において、OS36を介して、プリンタ100からUUID「eee1」に対応するエラーURLを受信する。
T664の後に実行されるT666~T670Bは、図10のT256~T260Bと同様である。即ち、T644で確立されたL2CAP Linkが切断される。
アプリ38は、T668において、OS36からWrite Request信号を取得すると、T672において、エラーURLを表示部12に表示する。これにより、ユーザは、表示済みのエラーURLを選択し、エラー状態(例えば紙詰まり)を解消するための方法が記載されているWebページを見ることができる。
また、本ケースの構成によれば、プリンタ100は、機能画面内のエラー情報ボタンが選択される場合(T630)に、L2CAP Linkを確立した後にADV信号の送信を再開する(T647)。APerが「Readable without authentication when discoverable」を示し、かつ、プリンタ100がDiscoverable状態であることに起因して、SMPに従った認証通信が実行されず、エラーURLが端末10に送信される(T664)。第1実施例のSSID「ap01」及びパスワード「xxx」と比較して機密性が低いエラーURLを、SMPに従った認証通信を実行せずに、端末10に送信することができる。
(対応関係)
プリンタ100、端末10、BTI/F116、無線LANI/F114が、それぞれ、「機能実行装置」、「端末装置」、「第1の無線インターフェース」、「第2の無線インターフェース」の一例である。AP接続を確立する機能又はWFD接続を確立する機能が、「第1の機能」の一例である。図9のT190の機能画面、当該機能画面内のAP接続ボタン又はWFD接続ボタンを選択する指示、機能情報FIが、それぞれ、「機能画面」、「第1の実行指示」、「画面表示情報」の一例である。印刷データが、「関係データ」の一例である。接続不許可パラメータ「ADV_NONCONN_IND」が、「不許可情報」の一例である。接続開始命令が、「命令」の一例である。エラーURLを送信する機能、機能画面内のエラー情報ボタンを選択する指示、図15のT662のType_Req信号が、それぞれ、「第2の機能」、「第2の実行指示」、「第2の機能実行情報」の一例である。図15のT644のL2CAPLinkが、「第5の無線接続(及び特定の無線接続)」の一例である。
図10~図12(AP接続の場合)についての対応関係は以下の通りである。PINコード、暗号化情報が、それぞれ、「特定の認証情報(及び第1(又は第2)のコード)」、「関係情報」の一例である。プリンタ100、端末10が、それぞれ、「一方の装置」、「他方の装置」の一例である。AP200が「外部装置」の一例である。図10のT234のL2CAP Link、図11のT334のL2CAPLinkが、それぞれ、「第1の無線接続」、「第2の無線接続」の一例である。再開フラグ「ON」である状態、再開フラグ「OFF」である状態が、それぞれ、「第1の状態」、「第2の状態」の一例である。図10のT252のフラグOFF指示が、「実行要求(及び設定変更要求)」の一例である。Type_Req信号が、「特定のRead要求」の一例である。図12のT410のSSID「ap01」とパスワード「xxx」が、「第1の機能実行情報」の一例である。
図13、図14(WFD接続の場合)についての対応関係は以下の通りである。公開鍵、PINコードが、それぞれ、「特定の認証情報」、「特定のコード」の一例である。端末10、プリンタ100が、それぞれ、「一方の装置」、「他方の装置」の一例である。端末10が「外部装置」の一例である。図13のT534のL2CAP Link、図14のT574のL2CAPLinkが、それぞれ、「第1の無線接続」、「第3の無線接続」の一例である。図14のT588の暗号化済みのWFD情報が、「第1の機能実行情報」の一例である。図13のT556の公開鍵を含むWrite Request信号が、「実行要求」の一例である。
AP接続の場合において、図10のT234、図10のT252、図11のT362、図12のT410が、それぞれ、「第1の確立部」、「受信部」、「対象処理実行部」、「第1の通信実行部」によって実現される処理の一例である。WFD接続の場合において、図13のT534、図13のT556、図13のT568、図14のT588が、それぞれ、「第1の確立部」、「受信部」、「対象処理実行部」、「第1の通信実行部」によって実現される処理の一例である。図9のT184、図9のT190が、それぞれ、「受信部」、「表示制御部」によって実現される処理の一例である。AP接続の場合において、図10のT212、図12のT410が、それぞれ、「供給部」、「通信実行部」によって実現される処理の一例である。WFD接続の場合において、図13のT512、図14のT588が、それぞれ、「供給部」、「通信実行部」によって実現される処理の一例である。
(第2実施例)
(WFD接続の場合;図13、図14)
第2実施例は、第1実施例の変形例である。第2実施例は、WFD接続の場合の処理の一部が異なる点を除いて、第1実施例と同様である。本実施例では、アプリ38及びプリンタ100は、図13のT560~T564Bの処理と図14のT570~T580の処理を実行しない。即ち、プリンタ100は、T534で確立されたL2CAP Linkを切断することなく、当該Linkの確立が維持された状態で、WFD情報160を暗号化する(T568)。そして、プリンタ100は、T534のL2CAP Linkを利用して、暗号化済みのWFD情報を端末10に送信する(T588)。
本実施例では、プリンタ100のCPU132の処理能力が比較的高い状況を想定している。CPU132の処理能力が比較的高い場合、CPU132はL2CAP Linkの確立が維持された状態でWFD情報160を暗号化することができる。例えば、CPU132の処理能力が比較的低い場合、CPU132はL2CAP Linkの確立が維持された状態でWFD情報160を暗号化することができない。このような場合に、第1実施例のように、L2CAP Linkを切断した(図13のT564A参照)後にWFD情報160を暗号化する構成を採用するのが有効である。これに対して、本実施例では、CPU132の処理能力が比較的高いことを考慮して、L2CAP Linkを切断し再びL2CAP Linkを確立する処理(即ち図13のT560~図14のT580の処理)を省略し、不必要な処理が実行されることを抑制することができる。
(第3実施例)
(AP接続の場合;図16、図17)
第3実施例は、AP接続の場合の処理の一部が異なる点を除いて、第1実施例と同様である。
T700~T720は、図10のT200~T250(即ち2CAP Linkの確立、ADV信号の送信の再開、即ちPS群に対応する各Typ_Req信号の順次送信)と同様である。即ち、ADV信号の送信の再開により、プリンタ100はDiscoverable状態であるので、Error Response信号は受信されず、SMPに従った認証通信は実行されない。
アプリ38は、T720において、OS36からT712の接続開始命令に対する接続完了通知を取得すると、T722において、OS36からAP138C内の各Characteristicの各UUIDを示す第2のリストを取得する。そして、アプリ38は、OS36を介して、当該第2のリスト内のUUID「bbb4」に対応するHandle「n13」とPermission変更指示とを含むWrite Request信号をプリンタ100に送信する。当該Permission変更指示は、AP138C内の「Readable without authentication」を示す各値を「Readable with authentication」を示す各値に変更するとともにAP138C内の「Writeable without authentication」を示す各値を「Writeable with authentication」を示す各値に変更するための指示である。具体的には、当該指示は、「No authentication required」を示す値を「Authentication required」を示す値に変更するための指示である。なお、変形例では、当該指示に従って、「No encryption required」を示す値が「Encryption required」を示す値に変更されてもよいし、「No authorization required」を示す値が「Authorization required」を示す値に変更されてもよい。ここで、「Readable with authentication」は、SMPに従った情報の暗号化を実行することを条件として、情報を読み出すことが可能であることを意味する。また、「Writeable with authentication」は、SMPに従った情報の暗号化を実行することを条件として、情報が書き込まれることが可能であることを意味する。なお、変形例では、AP138C内の各データの全てに限らず、例えば、AP138C内の各データ内のうちの少なくとも1個のデータ(例えばHandle「n10」に対応するデータ)内の「Readable without authentication」を示す各値のみが「Readable with authentication」を示す各値に変更されてもよい。
プリンタ100は、T722において、端末10からWrite Request信号を受信すると、Handle「n13」に対応するAPerが「Writeable without authentication」を示すことに起因して、Permission変更指示をHandle「n13」に対応するAValueに記憶する。そして、プリンタ100は、T724において、Write Response信号を端末10に送信する。
T726、T728は、図10のT256、T258と同様である。これにより、切断指示がHandle「n26」に対応するAValueに記憶される。
プリンタ100は、Permission変更指示及び切断指示がAValueに記憶されると、T730Aにおいて、記憶済みの切断指示に従って、T712の接続開始命令に応じて確立されたL2CAP Linkを切断し、T730Bにおいて、接続許可パラメータ「ADV_IND」を含むADV信号の送信を開始する。また、プリンタ100はT732において、記憶済みのPermission変更指示に従って、Handle「n11」、「n12」に対応するAPer内の「Readable without authentication」を示す各値を「Readable with authentication」を示す各値に変更するとともにHandle「n13」、「n14」に対応するAPer内の「Writeable without authentication」を示す各値を「Writeable with authentication」を示す各値に変更する。
図17に示すように、アプリ38は、T728において、端末10からWrite Response信号を受信すると、T742において、接続開始命令をOS36に供給する。これにより、図11のT332~T336と同様の処理(即ち2CAP Linkの確立とADV信号の送信の停止)が実行される。
プリンタ100は、再開フラグ162が「ON」を示すので、T747において、ADV信号の送信を再開する。即ち、プリンタ100は、Discoverable状態に再び移行する。
また、OS36は、T712の接続開始命令に応じて確立されたL2CAP Linkを利用して、図8のT138~T178と同様の通信(即ち、Group_Req信号の送信と、UUID「0x2803」を含むType_Req信号の送信、GA138Aに対応するType_Req信号の送信、FS138B対応するType_Req信号の送信)を実行する。
アプリ38は、GA138AのAPerが「Readable without authentication when discoverable」を示し、かつ、プリンタ100がDiscoverable状態であることに起因して、プリンタ100からデバイス名DNを受信する。また、アプリ38は、FS138BのAPerが「Readable without authentication」を示すことに起因して、プリンタ100から機能情報FIを受信する。
OS36は、プリンタ100から機能情報FIを受信すると、T756Aにおいて、Handle「n1」の次に小さい値を有するHandle「n5」に対応するPSであるAC138Cについて、Type_Req信号をプリンタ100に送信する。当該信号は、UUID「0x2803」と、AC138Cの最初のHandle「n5」と、AC138Cの最後のHandle「n13」と、を含む。
プリンタ100は、T756Aにおいて、端末10からType_Req信号を受信すると、Type_Req信号に含まれる最初のHandle「n5」及び最後のHandle「n13」によって示されるHandleの範囲内に含まれるデータ群の中から、Type_Req信号に含まれるUUID「0x2803」に対応するHandle「n6」~「n9」を特定する。プリンタ100は、特定済みの各Handle「n6」~「n9」に対応するAPerが「Readable without authentication」を示すことに起因して、T756Bにおいて、特定済みの各Handle「n6」~「n9」と、特定済みの各Handle「n6」~「n9」に対応するAValue(プロパティ「Read」、Handle「n6」、及び、UUID「bbb1」)~AValue(プロパティ「Write」、Handle「n9」、及び、UUID「bbb4」)を端末10に送信する。
OS36は、T756Bにおいて、プリンタ500から各Handleと各AValueを受信すると、T756Cにおいて、各AValueのうちの最も小さい値を有するHandle「n10」に対応するUUID「bbb1」を含むType_Req信号をプリンタ100に送信する。当該信号は、さらに、AC138Cの最初のHandle「n5」とAC138Cの最後のHandle「n13」とを含む。
プリンタ500は、T756Cにおいて、端末10からType_Req信号を受信すると、当該信号に含まれる最初のHandle「n5」及び最後のHandle「n13」によって示されるHandleの範囲内に含まれるデータ群の中から、Type_Req信号に含まれるUUID「bbb1」に対応するHandle「n10」を特定する。ここで、特定済みのHandle「n10」に対応するAPerは、「Readable with authentication」を示す。現時点では、SMPに従った情報の暗号化を実行するためのKeyが生成されていない。このために、プリンタ100は、SMPに従った情報の暗号化を実行することができず、この結果、T758において、Error Response信号を端末10に送信する。
T768~T782は、図11のT348~T362と同様である。これにより、後述するT790以降の処理において、OS36とプリンタ100との間でBT方式に従って通信される情報は、Keyによって暗号化される。
T782の認証通信が完了すると、OS36は、T790において、T756Cと同様のType_Req信号をプリンタ100に再び送信する。ただし、上述したように、当該Type_Req信号内の情報は、Keyによって暗号化されている。
T790で端末10からType_Req信号を受信した時点において、Keyが生成されており、SMPに従った情報の暗号化を実行可能である。このため、プリンタ100は、APerが「Readable without authentication」を示すことに起因して、T792において、Keyを利用してAP状態情報(ここでは「Enable」)を暗号化し、暗号化済みのAP状態情報を端末10に送信する。T794は、図11のT380と同様である。
T794においてOS36から接続完了通知が取得されると、図12のT402~T454と同様の処理が実行される。これにより、AP接続の確立と印刷が実行される。
本ケースの構成によれば、プリンタ100は、機能画面内のAP接続ボタンが選択される場合(図16のT700)に、AC138CのAPerを「Readable without authentication」から「Readable with authentication」に変更する(T732)。これにより、プリンタ100は、AC138CのAPerが「Readable with authentication」を示すことに起因して、認証通信を実行する(図17のT782)。この結果、端末10は、第1実施例と同様に、AP200のSSID「ap01」及びパスワード「xxx」をKeyによって暗号化してプリンタ100に送信することができる。このために、SSID「ap01」及びパスワード「xxx」が第三者によって取得されることを抑制することができる。
(対応関係)
再開フラグ「ON」かつAPerが「Readable without authentication」を示す状態、再開フラグ「ON」かつAPerが「Readable with authentication」を示す状態が、それぞれ、「第1の状態」、「第2の状態」の一例である。「Readable without authentication」、「Readable with authentication」が、それぞれ、「第1の設定情報」、「第2の設定情報」の一例である。図16のT722のPermission変更指示が、「実行要求(設定変更要求)」の一例である。図16で引用する図10のT234のL2CAP Link、図17で引用する図11のT334のL2CAP Linkが、それぞれ、「第1の無線接続」、「第2の無線接続」の一例である。図17のT782が、「対象処理実行部」によって実現される処理の一例である。図17のT742が、「供給部」によって実現される処理の一例である。
(第4実施例)
(AP接続の場合;図16、図18)
第4実施例は、第3実施例の変形例である。第4実施例は、AP接続の場合の処理の一部が異なる点を除いて、第3実施例と同様である。
図16に示すように、本実施例では、アプリ38及びプリンタ100は、図16のT726~T739Bの処理を実行しない。即ち、プリンタ100は、T712の接続開始命令に応じて確立されたL2CAP Linkを切断することなく、当該Linkの確立が維持された状態で、AC138CのAPer「Readable with authentication(又はWriteable with authentication)」を変更する(T732)。
アプリ38は、T728において、Write Response信号を受信すると、図18に示すように、T800の処理を実行する。T800は、Keyを利用した暗号化が実行されない点を除いて、図12のT402と同様である。
プリンタ100は、T800において、端末10からType_Req信号を受信すると、当該信号に含まれる最初のHandle「n5」及び最後のHandle「n13」によって示されるHandleの範囲内に含まれるデータ群の中から、Type_Req信号に含まれるUUID「bbb1」に対応するHandle「n10」を特定する。ここで、特定済みのHandle「n10」に対応するAPerは、「Readable with authentication」を示す。現時点では、SMPに従った情報の暗号化を実行するためのKeyが生成されていない。このために、プリンタ100は、SMPに従った情報の暗号化を実行することができず、この結果、T802において、Error Response信号を端末10に送信する。
T806~T882は、図17のT768~T782と同様である。T882の認証通信が完了すると、OS36は、T890において、T800と同様のType_Req信号をプリンタ100に再び送信する。ただし、上述したように、当該Type_Req信号内の情報は、Keyによって暗号化されている。この結果、OS36は、T892において、プリンタ100からKeyによって暗号化されたAP状態情報(ここでは「Enable」)を受信し、受信済みの情報をアプリ38に供給する。
T892においてOS36から暗号化済みのAP状態情報が取得されると、図12のT406~T454と同様の処理が実行される。これにより、AP接続の確立と印刷が実行される。
本実施例では、プリンタ100のCPU132の処理能力が比較的高い状況を想定している。CPU132の処理能力が比較的高い場合、CPU132はL2CAP Linkの確立が維持された状態でAPer内の値を変更することができる。例えば、CPU132の処理能力が比較的低い場合、CPU132はL2CAP Linkの確立が維持された状態でAPer内の値を変更することができない。このような場合に、第3実施例のように、L2CAP Linkを切断した後にAPer内の値を変更する構成を採用するのが有効である。これに対して、本実施例では、CPU132の処理能力が比較的高いことを考慮して、L2CAP Linkを切断し再びL2CAP Linkを確立する処理を省略し、不必要な処理を実行させることを抑制することができる。
(対応関係)
図16で引用する図10のT234のL2CAP Linkが、「第1の無線接続」の一例である。図18のT882が、「対象処理実行」によって実現される処理の一例である。図16のT712が、「供給部」によって実現される処理の一例である。
(第5実施例)
第5実施例は、BLE通信を利用した印刷が実行可能な点を除いて第1実施例と同様である。図9、図10に示すように、本実施例では、機能画面にBLE接続ボタンが含まれる。BLE接続ボタンは、BLEのKeyによる暗号化を実行して、印刷データをプリンタ100に送信する指示を受け付けるボタンである。また、図示は省略するが、本実施例のPS群は、各PS138A~138Fに加えて、端末10から印刷データを受信するためのPS(以下、「PPS」と記載)を含む。PPSは、印刷データの受信(即ち書き込み)を定義するCharacteristicを含む。
(印刷の場合;図10、図11)
本ケースでは、プリンタ100が実行可能な複数個の機能(即ち、印刷機能、AP接続、WFD接続)の中にユーザが望む印刷の機能が存在する。この場合、ユーザは、T200において、機能画面内のBLE接続ボタンを選択する。
本ケースでは、アプリ38は、T200において、BLE接続ボタンの選択を受け付ける。これにより、第1実施例と同様に、T212~T262の処理及び図11のT312~T380の処理が実行される。
アプリ38は、T380において、OS36から接続完了通知を取得すると、T390において、印刷画面を表示部12に表示する。そして、アプリ38は、印刷画面において、ユーザから印刷操作を受け付ける。
T390では、アプリ38は、OS36からPPS内の第2のリストを取得し、OS36を介して、当該第2のリスト内のUUIDに対応するHandleと印刷データとを含むWrite Request信号をプリンタ100に送信する。ここで、当該信号内の印刷データは、Keyによって暗号化されている。
プリンタ100は、T392において、端末10からWrite Request信号を受信すると、T394において、Write Request信号内の情報を復号して、印刷データを取得する。そして、プリンタ100は、印刷データ内の印刷設定に従って、印刷データ内の画像情報に対応する画像の印刷を実行する。
本ケースによれば、端末10は、印刷データをKeyによって暗号化してプリンタ100に送信することができる(T392)。このために、印刷データ内の情報が第三者によって取得されることを抑制することができる。
(対応関係)
印刷機能、機能画面内のBLE接続ボタンを選択する指示、T392の印刷データが、それぞれ、「第1の機能」、「第1の実行指示」、「第1の機能実行情報」の一例である。
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
(変形例1)「機能実行装置」は、プリンタ100でなくてもよく、例えば、スキャナ、FAX装置、多機能機であってもよい。例えば、「機能実行装置」がスキャナである場合、スキャナは、図10のT200において、機能画面内のBLE接続ボタンが選択される場合に、図11のT392において、端末10からスキャン要求を受信してもよい。そして、スキャナは、T394において、スキャン要求内のスキャン設定に従ってスキャンを実行してスキャンデータを生成し、生成済みのスキャンデータをKeyで暗号化して、端末10に送信してもよい。本変形例では、スキャンデータを送信する機能、スキャンデータが、それぞれ、「第1の機能」、「第1の機能実行情報」の一例である。
(変形例2)「端末装置」は、端末10でなくてもよく、例えば、デスクトップPC等の据え置き型の端末装置であってもよい。
(変形例3)「第1の無線インターフェース」は、BTI/Fでなくてもよく、BT方式以外の通信方式(例えば、Zigbee(登録商標)方式、Wi-Fi方式)に従った無線通信を実行するためのI/Fであってもよい。例えば、「第1の無線インターフェース」がWi-Fi方式に従った無線通信を実行するためのI/Fである場合、WPS(Wi-Fi Protected Setupの略)方式に従ったPINコードが、「特定の認証情報」の一例である。
(変形例4)上記の各実施例では、端末10は、プリンタ100から機能情報FIを受信し(図9のT184)、機能情報FIによって示される文字情報を含む機能画面を表示する(T190)。これに代えて、端末10は、プリンタ100から特定情報(例えばモデル名)を受信し、受信済みの特定情報を利用して、端末10に記憶されている複数個の機能情報の中からプリンタ100に対応する機能情報FIを特定してもよい。そして、端末10は、特定済みの機能情報FIによって示される文字情報を含む機能画面を表示してもよい。本変形例では、特定情報が、「画面表示情報」の一例である。
(変形例5)上記の第1実施例では、プリンタ100は、PINコード「1234」を表示し(図11のT352)、端末10は、PINコード「1234」の入力を受け付ける(T354)。これに代えて、プリンタ100は、PINコード「1234」をコード化したコード画像(例えば、バーコード、QRコード(登録商標))を表示し、端末10は、当該コード画像を復号して、PINコード「1234」を取得してもよい。また、端末10は、NFC(Near field communicationの略)通信等を利用して、プリンタ100のICタグからPINコード「1234」を取得してもよい。
(変形例6)上記の第1実施例では、プリンタ100がPINコード「1234」を準備する(図11のT352)。これに代えて、端末10がPINコード「1234」を準備し、当該PINコード「1234」がプリンタ100に入力されてもよい。一般的に言えば、「特定の認証情報」及び「第1のコード」は、機能実行装置及び前記端末装置のうちの一方の装置によって準備されればよい。また、例えば、端末10がPINコード「1234」を準備する場合に、プリンタ100は、SMPに従った認証通信を実行する前に、Pairing Request信号を端末10に送信し、端末10からPairing Response信号を受信する。そして、プリンタ100は、Pairing Response信号を受信することに応じて、SMPに従った認証通信を実行する。本変形例では、Pairing Response信号が「実行要求」の一例である。
(変形例7)上記の第1実施例では、プリンタ100がG/Oとして動作し、端末10が公開鍵を準備する(図13のT556)。これに代えて、端末10がG/Oとして動作し、プリンタ100が公開鍵を準備してもよい。そして、端末10は、プリンタ100から受信した公開鍵を利用して、端末10に記憶されているWFD情報を暗号化してもよい。一般的に言えば、「特定の認証情報」及び「公開鍵」は、機能実行装置及び前記端末装置のうちの一方の装置によって準備されればよい。
(変形例8)「特定のRead要求」は、Type_Req信号でなくてもよく、ATTによって定義される他の信号(例えば、Read Request信号、Read Blob Request信号、Read Multiple Request信号)であってもよい。
(変形例9)上記の各実施例では、アプリ38は、図9のT186等において、Write Request信号をプリンタ100に送信する。これに代えて、アプリ38は、ATTのよって定義される他の信号(例えば、Write Command信号、Sighed Write Command信号)をプリンタ100に送信してもよい。
(変形例10)上記の第1実施例では、プリンタ100は、機能画面内のエラー情報ボタンが選択される場合(図15のT630)に、SMPに従った情報の暗号化を実行することなく、エラーURLを端末10に送信する(T664)。これに代えて、例えば、機能画面内に印刷ボタンが含まれており、プリンタ100は、機能画面内の印刷ボタンが選択される場合に、SMPに従った情報の暗号化を実行することなく、端末10から印刷データを受信してもよい。本変形例では、印刷機能、印刷データが、「第2の機能」、「第2の機能実行情報」の一例である。
(変形例11)上記の第1実施例では、端末10は、エラーURLを表示する(図15のT672)。これに代えて、端末10は、エラー状態を示すメッセージを表示してもよい。本変形例では、当該メッセージが、「エラー情報」の一例である。また、端末10は、プリンタ100から特定情報(例えばエラーの種類を示す番号)を受信し、受信済みの特定情報を利用して、端末10に記憶されている複数個のエラーURLの中からプリンタ100の現在のエラー状態に対応するエラーURLを特定してもよい。そして、端末10は、特定済みエラーURLを表示してもよい。本変形例では、特定情報が、「エラー表示情報」の一例である。
(変形例12)上記の第4実施例では、プリンタ100は、端末10からPermission変更指示を受信し(図16のT722)、APer内の値を変更する(T732)。これに代えて、プリンタ100は、端末10からADV信号の送信を停止するための停止指示を受信し、受信済みの停止指示に従って、ADV信号の送信を停止してもよい。そして、プリンタ100は、図18のT800に代えて、端末10からUUID「0x2A00」を含むType_Req信号を受信してもよい。これにより、APerが「Readable without authentication when discoverable」を示し、かつ、プリンタ100が非Discoverable状態であることに起因して、認証通信が実行されてもよい。本変形例では、停止指示、Discoverable状態、非Discoverable状態が、それぞれ、「設定変更要求」、「第1の状態」、「第2の状態」の一例である。
(変形例13)上記の第1実施例では、OS36は、第1種のPSに対するType_Req信号の送信(例えば図8のT142A)と第2種のPSに対するType_Req信号の送信(例えば図8のT176A)を実行する。これに代えて、OS36は、第1種のPSに対するType_Req信号の送信のみを実行し、第2種のPSに対するType_Req信号の送信を実行しなくてもよい。
(変形例14)図12のT450~T454の処理は実行されなくてもよい。本変形例では、「関係データ」の通信を実行しなくてもよい。
(変形例15)上記の第3、第4実施例では、プリンタ100は、AP138C内のAPer内の「Readable(or Writeable) without authentication」を示す各値を「Readable(or Writeable) with authentication」を示す各値に変更する。これに代えて、プリンタ100は、第2種のPS内のAPer内の「Readable(or Writeable) without authentication」を示す各値の全てを「Readable(or Writeable) with authentication」を示す各値に変更してもよい。
(変形例16)OS36は、例えばAndroid(登録商標)であってもよい。この場合、図8のT138、T142A、T142C、T176A、T176C、図10のT242C、図11のT342C、T372、図15のT652C、図17のT756A、T756C、T790等は実行されない。このため、例えば上記の第4実施例において、T137の処理(図16で引用する図8のT137~T178も同様)は実行されなくてもよい。即ち、接続開始命令の取得に応じて、OS36がPS群の情報の自動取得を実行しないため、ADV信号の送信が再開されなくてもよい。本変形例では、FS138BのAPerが「Readable without authentication」を示すことにより、例えば、図9のT182でType_Req信号を受信しても、Error Response信号が送信されず、機能画面を表示する前に認証通信が実行されない。そして、図16のT732によってAC138CのAPerが「Readable with authentication」に変更されることに起因して、認証通信が実行される(図18のT802~T880)。本変形例では、FS138BのAPerが「Readable without authentication」を示すこと、AC138CのAPerが「Readable with authentication」を示すことが、それぞれ、「第1の状態」、「第2の状態」の一例である。また、更なる変形例として、FS138BのHandle「n1」に対応するAPerは「Readable without authentication」で不変であり、AC138CのHandle「n10」に対応するAPerが「Readable with authentication」で不変であってもよい。そして、図16のT722、T724、T732の処理が実行されなくてもよい。本変形例では、「設定変更要求」を省略可能である。
(変形例17)図8のT137では、プリンタ100は、接続不許可パラメータ「ADV_NONCONN_IND」を含むADV信号を送信する。これに代えて、プリンタ100は、接続許可パラメータ「ADV_IND」を含むADV信号を送信してもよい。本変形例では、「不許可情報」を省略可能である。
(変形例18)上記の第1、第2実施例では、OS36はiOSであり、WFD接続ボタンが選択された後に、ADV信号の送信が再開されることによって(図13のT537又は図14のT572)、認証通信が実行されない。これに代えて、OS36が、例えばAndroid(登録商標)の場合には、接続開始命令の取得に応じて、OS36がPS群の情報の自動取得を実行しないため、ADV信号の送信の再開(即ち図13のT537又は図14のT572の処理)が実行されない。この場合、WC138CのAPerが「Readable(or Writeable) without authentication」を示すことに起因して、認証通信が実行されない。本変形例では、「特定のコードを利用した前記通信を実行することなく」は、「Readable(or Writeable) without authentication」を示すAPerによって実現されている。
(変形例19)上記の各実施例では、プリンタ100及び端末10は、AP接続の確立とWFD接続の確立の双方を実行可能である。これに代えて、プリンタ100及び端末10は、AP接続の確立とWFD接続の確立のうちのいずれか一方を実行可能でもよい。
(変形例20)図15の処理は、実行されなくてもよい。本変形例では、「第4の確立部」、「第2の通信実行部」を省略可能である。
(変形例21)上記の第1実施例では、プリンタ100は、認証通信を実行するために、再開フラグ162を「ON」から「OFF」に変更し(図10のT262)、ADV信号の送信を停止した後に、ADV信号の送信を再開しない(図11のT336)。これに代えて、プリンタ100は、再開フラグ162を「ON」に維持し、ADV信号の送信を停止した後に、Discoverable状態であることに関する所定の値を含まないADV信号の送信を開始してもよい。この場合でも、プリンタ100の状態は、非Discoverable状態となり、その結果、認証通信が実行される。本変形例では、上記の所定の値を含まないADV信号の送信を実行している状態が、「第2の状態」の一例である。
(変形例22)上記の各実施例では、プリンタ100は、L2CAP Linkを確立し(図8のT134)、確立済みのL2CAP Linkを利用して、機能情報FIを端末10に送信する(T184)。これに代えて、プリンタ100は、機能情報FIを含むADV信号を端末10に送信してもよい。この場合、図8のT130~T180の処理が実行せずに、接続確認画面内の接続ボタンが選択される場合に、T182以降の処理が実行され、ADV信号内の機能情報FIを利用して、機能画面が表示されてもよい。本変形例では、機能情報FIを含むADV信号を受信することが、「対象処理を実行することなく、画面表示情報を端末装置に送信する送信部」によって実現される処理の一例であり、ADV信号内の機能情報FIが、「画面表示情報」の一例である。
(変形例23)上記の各実施例では、プリンタ100のCPU132がプログラム136(即ちソフトウェア)を実行すること及び端末10のCPU32がプログラム36、38を実行することによって、図7~図18の各処理が実現される。これに代えて、いずれかの処理は、論理回路等のハードウェアによって実現されてもよい。
以下に、本明細書で開示する技術の特徴を列挙する。
(項目1)
機能実行装置であって、
第1の無線インターフェースと、
前記機能実行装置及び端末装置のうちの一方の装置によって準備される特定の認証情報を利用した対象処理を実行することなく、前記第1の無線インターフェースを介して、前記機能実行装置が実行可能な1個以上の機能を示す機能画面を前記端末装置に表示させるための画面表示情報を前記端末装置に送信する送信部と、
前記機能画面が前記端末装置に表示された後に、第1の機能を前記機能実行装置に実行させるための第1の実行指示が前記端末装置に入力される場合に、前記第1の無線インターフェースを介して、前記端末装置との第1の無線接続を確立する第1の確立部と、
前記第1の無線接続を利用して、前記第1の無線インターフェースを介して、前記特定の認証情報を利用した前記対象処理を実行することなく、前記端末装置から実行要求を受信する受信部であって、前記実行要求は、前記特定の認証情報を利用した前記対象処理を前記機能実行装置に実行させるための要求である、前記受信部と、
前記端末装置から前記実行要求が受信されることに応じて、前記特定の認証情報を利用した前記対象処理を実行する対象処理実行部と、
前記特定の認証情報を利用した前記対象処理が実行された後に、前記第1の無線インターフェースを介して、前記第1の機能を実行するための第1の機能実行情報の通信を前記端末装置と実行する第1の通信実行部と、
を備える、機能実行装置。
(項目2)
前記第1の無線インターフェースは、Bluetooth(登録商標)方式に従った無線通信を実行するためのインターフェースである、項目1に記載の機能実行装置。
(項目3)
前記機能実行装置は、さらに、
前記第1の無線インターフェースとは異なる第2の無線インターフェースを備え、
前記第1の機能は、前記第2の無線インターフェースを介した無線接続を外部装置と確立する機能であり、
前記第1の機能実行情報は、前記第2の無線インターフェースを介した前記無線接続を前記外部装置と確立するための情報を含む、項目1又は2に記載の機能実行装置。
(項目4)
前記1個以上の機能は、印刷機能及びスキャン機能のうちの少なくとも一方の機能を含み、
前記第1の機能は、前記少なくとも一方の機能に関係する関係データの通信を前記端末装置と実行するために、前記第2の無線インターフェースを介した前記無線接続を前記外部装置と確立する機能である、項目3に記載の機能実行装置。
(項目5)
前記第1の機能は、印刷機能及びスキャン機能のうちの少なくとも一方の機能であり、
前記第1の機能実行情報は、前記少なくとも一方の機能に関係する関係データを含む、項目1又は2に記載の機能実行装置。
(項目6)
前記機能実行装置は、
前記特定の認証情報を利用した前記対象処理を実行不可能な第1の状態と、
前記特定の認証情報を利用した前記対象処理を実行可能な第2の状態と、
のうちのどちらかの状態に設定され、
前記送信部は、前記機能実行装置が前記第1の状態に設定されている間に、前記画面表示情報を前記端末装置に送信し、
前記実行要求は、前記機能実行装置を前記第1の状態に代えて前記第2の状態に設定するための設定変更要求であり、
前記対象処理実行部は、前記端末装置から前記設定変更要求を受信することに応じて、前記機能実行装置が前記第1の状態に代えて前記第2の状態に設定された後に、前記特定の認証情報を利用した前記対象処理を前記端末装置と実行する、項目1から5のいずれか一項に記載の機能実行装置。
(項目7)
前記機能実行装置は、さらに、
前記端末装置から前記設定変更要求が受信される場合に、前記第1の無線接続を切断する第1の切断部と、
前記第1の無線接続が切断された後に、前記第1の無線インターフェースを介して、前記端末装置との第2の無線接続を確立する第2の確立部と、
を備え、
前記第1の通信実行部は、前記第2の無線接続を利用して、前記第1の無線インターフェースを介して、前記第1の機能実行情報の通信を前記端末装置と実行する、項目6に記載の機能実行装置。
(項目8)
前記第1の通信実行部は、前記第1の無線接続を利用して、前記第1の無線インターフェースを介して、前記第1の機能実行情報の通信を前記端末装置と実行する、項目6に記載の機能実行装置。
(項目9)
前記第1の無線インターフェースは、Bluetooth(登録商標)方式に従った無線通信を実行するためのインターフェースであり、
前記第1の状態は、前記第1の無線インターフェースが前記Bluetooth方式に従ったAdvertise信号を繰り返し送信する状態を含む、項目6から8のいずれか一項に記載の機能実行装置。
(項目10)
前記端末装置から前記Bluetooth方式に従った特定のRead要求が受信され、かつ、前記第1の無線インターフェースが前記Advertise信号の送信を停止している場合に、前記特定の認証情報を利用した前記対象処理は実行され、
前記端末装置から前記特定のRead要求が受信され、かつ、前記第1の無線インターフェースが前記Advertise信号を繰り返し送信する場合に、前記特定の認証情報を利用した前記対象処理は実行されず、
前記送信部は、前記機能実行装置が、前記第1の無線インターフェースが前記Advertise信号を繰り返し送信する前記第1の状態に設定されている間に、前記端末装置から前記特定のRead要求が受信される場合に、前記特定の認証情報を利用した前記対象処理を実行することなく、前記画面表示情報を前記端末装置に送信する、項目9に記載の機能実行装置。
(項目11)
前記第1の状態は、前記第1の無線インターフェースが前記Bluetooth方式に従った無線接続の確立を許可しない不許可情報を含むAdvertise信号を繰り返し送信する状態を含む、項目10に記載の機能実行装置。
(項目12)
前記第1の無線インターフェースが前記Advertise信号の送信を停止している場合に、前記特定の認証情報を利用した前記対象処理は実行され、
前記第1の無線インターフェースが前記Advertise信号を繰り返し送信する場合に、前記特定の認証情報を利用した前記対象処理は実行されず、
前記第2の状態は、前記第1の無線インターフェースが前記Advertise信号の送信を停止している状態を含み、
前記設定変更要求は、前記Advertise信号の送信を前記第1の無線インターフェースに実行させないための要求であり、
前記送信部は、前記機能実行装置が、前記第1の無線インターフェースが前記Advertise信号を繰り返し送信する前記第1の状態に設定されている間に、前記特定の認証情報を利用した前記対象処理を実行することなく、前記画面表示情報を前記端末装置に送信し、
前記対象処理実行部は、前記機能実行装置が、前記第1の無線インターフェースが前記Advertise信号の送信を停止している前記第2の状態に設定されている間に、前記特定の認証情報を利用した前記対象処理を実行する、項目9から11のいずれか一項に記載の機能実行装置。
(項目13)
前記第1の無線インターフェースは、Bluetooth(登録商標)方式に従った無線通信を実行するためのインターフェースであり、
前記第1の状態は、第1の設定情報がメモリに記憶されている状態を含み、
前記第1の設定情報は、前記端末装置から前記Bluetooth方式に従った特定のRead要求が受信される場合に、前記特定の認証情報を利用した前記対象処理を実行することなく、前記特定のRead要求に対する応答を送信する設定を示し、
前記第2の状態は、第2の設定情報が前記メモリに記憶されている状態を含み、
前記第2の設定情報は、前記端末装置から前記特定のRead要求が受信される場合に、前記特定の認証情報を利用した前記対象処理を実行し、前記特定の認証情報を利用した認証が成功する場合に、前記特定のRead要求に対する前記応答を送信する設定を示し、
前記設定変更要求は、前記メモリ内の前記第1の設定情報を前記第2の設定情報に変更する要求であり、
前記送信部は、前記メモリに前記第1の設定情報が記憶されている間に、前記端末装置から前記特定のRead要求が受信される場合に、前記特定の認証情報を利用した前記対象処理を実行することなく、前記特定のRead要求に対する前記応答として前記画面表示情報を前記端末装置に送信し、
前記対象処理実行部は、前記メモリに前記第2の設定情報が記憶されている間に、前記端末装置から前記特定のRead要求が受信される場合に、前記特定の認証情報を利用した前記対象処理を実行する、項目6から11のいずれか一項に記載の機能実行装置。
(項目14)
前記特定の認証情報は、前記機能実行装置及び前記端末装置のうちの前記一方の装置によって準備される第1のコードであり、
前記特定の認証情報を利用した前記対象処理は、前記第1のコードが前記一方の装置に表示された後に、第2のコードが前記機能実行装置及び前記端末装置のうちの他方の装置に入力される場合に、前記第2のコードに関係する関係情報を前記他方の装置から前記一方の装置に送信することを含み、
前記第1の通信実行部は、前記関係情報の通信が実行された後に、前記第1のコードと前記第2のコードとが一致すると前記一方の装置によって判断される場合に、前記第1の無線インターフェースを介して、前記第1の機能実行情報の通信を前記端末装置と実行する、項目1から13のいずれか一項に記載の機能実行装置。
(項目15)
前記特定の認証情報は、前記機能実行装置及び前記端末装置のうちの前記一方の装置によって準備される公開鍵であり、
前記実行要求は、前記公開鍵を前記一方の装置から前記機能実行装置及び前記端末装置のうちの他方の装置に送信するための要求であり、
前記第1の機能実行情報は、前記公開鍵を利用する前記対象処理が実行されることによって前記他方の装置によって生成される情報である、項目1から5のいずれか一項に記載の機能実行装置。
(項目16)
前記機能実行装置は、さらに、
前記端末装置から前記実行要求が受信される場合に、前記第1の無線接続を切断する第2の切断部と、
前記第1の無線接続が切断された後に、前記第1の無線インターフェースを介して、前記端末装置との第3の無線接続を確立する第3の確立部と、
を備え、
前記第1の通信実行部は、前記第3の無線接続を利用して、前記第1の無線インターフェースを介して、前記第1の機能実行情報の通信を前記端末装置と実行する、項目15に記載の機能実行装置。
(項目17)
前記第1の通信実行部は、前記第1の無線接続を利用して、前記第1の無線インターフェースを介して、前記第1の機能実行情報の通信を前記端末装置と実行する、項目15に記載の機能実行装置。
(項目18)
前記第1の無線インターフェースは、Bluetooth(登録商標)方式に従った無線通信を実行するためのインターフェースであり、
前記送信部は、前記特定の認証情報である前記公開鍵を利用した前記対象処理と、前記Bluetooth方式に従った特定のコードを利用した通信と、のどちらも実行することなく、前記画面表示情報を前記端末装置に送信し、
前記対象処理実行部は、前記特定のコードを利用した前記通信を実行することなく、前記公開鍵を利用した前記対象処理を実行する、項目15から17のいずれか一項に記載の機能実行装置。
(項目19)
前記第1の無線インターフェースが前記Bluetooth方式に従ったAdvertise信号を繰り返し送信する場合に、前記特定のコードを利用した前記通信は実行されず、
前記送信部は、前記機能実行装置が、前記第1の無線インターフェースが前記Advertise信号を繰り返し送信する状態に設定されている間に、前記特定のコードを利用した前記通信を実行することなく、前記画面表示情報を前記端末装置に送信し、
前記対象処理実行部は、前記機能実行装置が、前記第1の無線インターフェースが前記Advertise信号を繰り返し送信する状態に設定されている間に、前記特定のコードを利用した前記通信を実行することなく、前記公開鍵を利用した前記対象処理を実行し、
前記第1の通信実行部は、前記機能実行装置が、前記第1の無線インターフェースが前記Advertise信号を繰り返し送信する状態に設定されている間に、前記特定のコードを利用した前記通信を実行することなく、前記第1の機能実行情報の通信を前記端末装置と実行する、項目18に記載の機能実行装置。
(項目20)
前記機能実行装置は、さらに、
前記機能画面が前記端末装置に表示された後に、前記機能実行装置に前記第1の機能とは異なる第2の機能を実行させるための第2の実行指示が前記端末装置に入力される場合に、前記第1の無線インターフェースを介して、前記端末装置との第4の無線接続を確立する第4の確立部と、
前記特定の認証情報を利用した前記対象処理を実行することなく、前記第4の無線接続を利用して、前記第1の無線インターフェースを介して、前記第2の機能を実行するための第2の機能実行情報の通信を前記端末装置と実行する第2の通信実行部と、
を備える、項目1から19のいずれか一項に記載の機能実行装置。
(項目21)
前記第2の機能は、前記機能実行装置がエラー状態である場合に、前記エラー状態に関係するエラー情報を前記端末装置に表示させるためのエラー表示情報を前記端末装置に送信する機能であり、
前記第2の通信実行部は、前記端末装置から、前記エラー表示情報を前記端末装置に送信するための要求を前記第2の機能実行情報として受信する、項目20に記載の機能実行装置。
(項目22)
端末装置のためのコンピュータプログラムであって、
前記端末装置のコンピュータを、以下の各部、即ち、
機能実行装置及び前記端末装置のうちの一方の装置によって準備される特定の認証情報を利用した対象処理を実行することなく、前記端末装置の第1の無線インターフェースを介して、前記機能実行装置から、前記機能実行装置が実行可能な1個以上の機能を示す機能画面を前記端末装置に表示させるための画面表示情報を受信する受信部と、
前記機能実行装置から前記画面表示情報が受信される場合に、前記機能画面を前記端末装置の表示部に表示させる表示制御部と、
前記機能画面が前記表示部に表示された後に、第1の機能を前記機能実行装置に実行させるための第1の実行指示が前記端末装置に入力される場合に、前記第1の無線インターフェースを介して、前記機能実行装置との第1の無線接続を確立するための命令を前記端末装置のOS(Operating Systemの略)プログラムに供給する供給部と、
前記第1の無線接続を利用して、前記第1の無線インターフェースを介して、実行要求を前記機能実行装置に送信する送信部であって、前記実行要求は、前記特定の認証情報を利用した前記対象処理を前記機能実行装置に実行させるための要求である、前記送信部と、
前記特定の認証情報を利用した前記対象処理が実行された後に、前記第1の無線インターフェースを介して、前記第1の機能を実行するための機能実行情報の通信を前記機能実行装置と実行する通信実行部と、
として機能させるコンピュータプログラム。
(項目23)
前記コンピュータプログラムは、前記コンピュータを、さらに、
前記機能画面が前記端末装置に表示された後に、前記機能実行装置に前記第1の機能とは異なる第2の機能を実行させるための第2の実行指示が前記端末装置に入力される場合に、前記第1の無線インターフェースを介して、前記機能実行装置との特定の無線接続を確立する特定の確立部と、
前記特定の認証情報を利用した前記対象処理を実行することなく、前記特定の無線接続を利用して、前記第1の無線インターフェースを介して、前記第2の機能を実行するための第2の機能実行情報の通信を前記機能実行装置と実行する特定の通信実行部と、として機能させる、項目22のいずれか一項に記載のコンピュータプログラム。
(項目24)
前記第2の機能は、前記機能実行装置がエラー状態である場合に、前記エラー状態に関係するエラー情報を前記端末装置に表示させるためのエラー表示情報を前記端末装置に送信する機能であり、
前記特定の通信実行部は、前記エラー表示情報を前記端末装置に送信するための要求を前記第2の機能実行情報として前記機能実行装置に送信する、項目23に記載のコンピュータプログラム。