(57)【要約】【課題】  ＧＡＴＴデータ内の情報の取得をより適切に実行することが可能とすることを目的とする。【解決手段】  通信装置と情報処理装置との間で、ＢＬＥによって第２の接続が確立される場合、前記通信装置が有するＧＡＴＴデータ内の所定の種類の情報が格納されている領域を特定可能になるまで、前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部を取得し、前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部に基づいて、前記所定の種類の情報を取得することで課題を解決する。【選択図】  図１
2020198504.tif 000002
【特許請求の範囲】
【請求項１】
通信装置とＢｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）によって通信する情報処理装置のコンピュータに、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第１の接続が確立されることに応じて、前記通信装置が有するＧｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅ（ＧＡＴＴ）データの構造を示す情報を取得する第１取得ステップと、
前記通信装置が有するＧＡＴＴデータ内の所定の種類の情報を取得する第２取得ステップと、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第２の接続が確立されることに応じて、前記通信装置が有するＧＡＴＴデータ内の前記所定の種類の情報が格納されている領域を特定可能になるまで、前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部を取得する第３取得ステップと、
前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部に基づいて、前記所定の種類の情報を取得する第４取得ステップと、
前記第２取得ステップで取得された前記所定の種類の情報と、前記第４取得ステップで取得された前記所定の種類の情報とが一致する場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報のうち前記第３取得ステップで取得されていない情報を新たに取得せず、前記第２取得ステップで取得された前記所定の種類の情報と、前記第４取得ステップで取得された前記所定の種類の情報とが異なる場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報のうち前記第３取得ステップで取得されていない情報を新たに取得する第５取得ステップと、
を実行させることを特徴とするプログラム。
【請求項２】
前記第１の接続において前記情報処理装置と接続する前記通信装置と、前記第２の接続において前記情報処理装置と接続する前記通信装置が同じである場合、前記第２取得ステップで取得された前記所定の種類の情報と、前記第４取得ステップで取得された前記所定の種類の情報とが一致し、
前記第１の接続において前記情報処理装置と接続する前記通信装置と、前記第２の接続において前記情報処理装置と接続する前記通信装置が同じでない場合、前記第２取得ステップで取得された前記所定の種類の情報と、前記第４取得ステップで取得された前記所定の種類の情報とが異なることを特徴とする請求項１に記載のプログラム。
【請求項３】
前記第１の接続において前記情報処理装置と接続する前記通信装置が有する所定の識別情報と、前記第２の接続において前記情報処理装置と接続する前記通信装置が有する前記所定の識別情報が同じである場合、前記第２取得ステップで取得された前記所定の種類の情報と、前記第４取得ステップで取得された前記所定の種類の情報とが一致し、
前記第１の接続において前記情報処理装置と接続する前記通信装置が有する前記所定の識別情報と、前記第２の接続において前記情報処理装置と接続する前記通信装置が有する前記所定の識別情報が同じでない場合、前記第２取得ステップで取得された前記所定の種類の情報と、前記第４取得ステップで取得された前記所定の種類の情報とが異なることを特徴とする請求項１又は２に記載のプログラム。
【請求項４】
前記所定の種類の情報は、ハッシュ値であることを特徴とする請求項１乃至３のいずれか１項に記載のプログラム。
【請求項５】
通信装置とＢｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）によって通信する情報処理装置のコンピュータに、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第１の接続が確立されることに応じて、前記通信装置が有するＧｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅ（ＧＡＴＴ）データの構造を示す情報を取得する第１取得ステップと、
前記通信装置が有するＧＡＴＴデータ内の所定の情報を取得する第２取得ステップと、
前記第１取得ステップで取得された前記通信装置が有するＧＡＴＴデータの構造を示す情報に基づいて、前記第１の接続において前記情報処理装置が接続した前記通信装置が有するＧＡＴＴデータ内の前記所定の情報が格納されていた領域を特定するための領域情報を特定する特定ステップと、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第２の接続が確立されることに応じて、前記第２の接続において前記情報処理装置が接続する前記通信装置が有するＧＡＴＴデータ内の領域のうち前記領域情報に対応する領域から特定の情報を取得する第３取得ステップと、
前記第２取得ステップで取得された前記所定の情報と、前記第３取得ステップで取得された前記特定の情報とが一致する場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報を新たに取得せず、前記第２取得ステップで取得された前記所定の情報と、前記第３取得ステップで取得された前記特定の情報とが異なる場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報を新たに取得する第４取得ステップと、
を実行させることを特徴とするプログラム。
【請求項６】
前記第１の接続において前記情報処理装置と接続する前記通信装置と、前記第２の接続において前記情報処理装置と接続する前記通信装置が同じである場合、前記第２取得ステップで取得された前記所定の情報と、前記第３取得ステップで取得された前記特定の情報とが一致し、
前記第１の接続において前記情報処理装置と接続する前記通信装置と、前記第２の接続において前記情報処理装置と接続する前記通信装置が同じでない場合、前記第２取得ステップで取得された前記所定の情報と、前記第３取得ステップで取得された前記特定の情報とが異なることを特徴とする請求項５に記載のプログラム。
【請求項７】
前記第１の接続において前記情報処理装置と接続する前記通信装置が有する所定の識別情報と、前記第２の接続において前記情報処理装置と接続する前記通信装置が有する前記所定の識別情報が同じである場合、前記第２取得ステップで取得された前記所定の情報と、前記第３取得ステップで取得された前記特定の情報とが一致し、
前記第１の接続において前記情報処理装置と接続する前記通信装置が有する前記所定の識別情報と、前記第２の接続において前記情報処理装置と接続する前記通信装置が有する前記所定の識別情報が同じでない場合、前記第２取得ステップで取得された前記所定の情報と、前記第３取得ステップで取得された前記特定の情報とが異なることを特徴とする請求項５又は６に記載のプログラム。
【請求項８】
前記所定の情報は、ハッシュ値であることを特徴とする請求項５乃至７のいずれか１項に記載のプログラム。
【請求項９】
前記領域情報は、ハンドル値であることを特徴とする請求項５乃至８のいずれか１項に記載のプログラム。
【請求項１０】
アドバタイズ情報を受信する受信ステップと、
前記受信された前記アドバタイズ情報の送信元の装置が、すでに取得されたＧＡＴＴデータの構造を示す情報に対応する装置である場合、前記通信装置と前記情報処理装置との間で、ＢＬＥによって第２の接続が確立されることに応じて、前記通信装置が有するＧＡＴＴデータ内の前記特定の情報が格納されている領域を特定可能になるまで、前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部を取得する第５取得ステップと、
前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部に基づいて、前記特定の情報を取得する第６取得ステップと、をさらに有し、
前記受信された前記アドバタイズ情報の送信元の装置が、すでに取得されたＧＡＴＴデータの構造を示す情報に対応する装置でない場合、前記通信装置と前記情報処理装置との間で、ＢＬＥによって第２の接続が確立されることに応じて、前記第２の接続において前記情報処理装置が接続する前記通信装置が有するＧＡＴＴデータ内の領域のうち前記領域情報に対応する領域から前記特定の情報が取得されることを特徴とする請求項５乃至９のいずれか１項に記載のプログラム。
【請求項１１】
前記通信装置と前記情報処理装置との間のＢＬＥによる接続を確立する処理を含む所定の機能の実行指示がユーザから受け付けられることなく、前記第１の接続が確立され、
前記所定の機能の実行指示がユーザから受け付けられることに応じて、前記第２の接続が確立されることを特徴とする請求項１乃至１０のいずれか１項に記載のプログラム。
【請求項１２】
前記所定の機能は、前記第２の接続において前記情報処理装置と接続する前記通信装置に関する情報を、前記所定の機能を実行可能な所定のプログラムに登録する処理を含むことを特徴とする請求項１１に記載のプログラム。
【請求項１３】
前記所定の機能は、前記第２の接続において前記情報処理装置と接続する前記通信装置とＢＬＥ以外の通信方式により接続するための接続情報を、前記第２の接続を介して取得する処理を含むことを特徴とする請求項１１又は１２に記載のプログラム。
【請求項１４】
前記所定の機能はさらに、前記接続情報により確立される接続を介して、所定の情報を送信する処理を含むことを特徴とする請求項１３に記載のプログラム。
【請求項１５】
前記所定の情報は、前記通信装置に印刷を実行させるための印刷ジョブであることを特徴とする請求項１４に記載のプログラム。
【請求項１６】
前記所定の機能は、前記第２の接続において前記情報処理装置と接続する前記通信装置と、前記通信装置の外部且つ前記情報処理装置の外部の装置とを、ＢＬＥ以外の通信方式により接続させるための情報を、前記第２の接続を介して送信する処理を含むことを特徴とする請求項１１乃至１５のいずれか１項に記載のプログラム。
【請求項１７】
ＢＬＥ以外の通信方式は、Ｗｉ−Ｆｉであることを特徴とする請求項１６に記載のプログラム。
【請求項１８】
前記プログラムが前記情報処理装置において起動されたことに応じて、前記第１の接続が確立されることを特徴とする請求項１乃至１７のいずれか１項に記載のプログラム。
【請求項１９】
アドバタイズ情報を受信する受信ステップをさらに実行させ、
前記アドバタイズ情報が受信された場合、前記受信された前記アドバタイズ情報の送信元の前記通信装置と前記情報処理装置との間のＢＬＥによる前記第１の接続が確立されることを特徴とする請求項１乃至１８のいずれか１項に記載のプログラム。
【請求項２０】
前記アドバタイズ情報が受信された場合、前記受信された前記アドバタイズ情報の送信元の前記通信装置が、前記情報処理装置がＢＬＥによって接続したことがある装置か否かを判定するための判定処理を実行する接続判定ステップをさらに実行させ、
前記受信された前記アドバタイズ情報の送信元の前記通信装置が、前記情報処理装置がＢＬＥによって接続したことがある装置であると判定された場合、前記受信された前記アドバタイズ情報の送信元の前記通信装置が有するＧＡＴＴデータの構造を示す情報が新たに取得されず、
前記受信された前記アドバタイズ情報の送信元の前記通信装置が、前記情報処理装置がＢＬＥによって接続したことがある装置でないと判定された場合、前記受信された前記アドバタイズ情報の送信元の前記通信装置が有するＧＡＴＴデータの構造を示す情報が新たに取得されることを特徴とする請求項１９に記載のプログラム。
【請求項２１】
前記受信された前記アドバタイズ情報の送信元の前記通信装置が、前記情報処理装置がＢＬＥによって接続したことがある装置であると判定された場合、前記受信された前記アドバタイズ情報の送信元の前記通信装置からＧＡＴＴデータの構造を示す情報を取得してから所定の時間が経過したか否かを判定するための判定処理を実行する時間判定ステップをさらに実行させ、
前記受信された前記アドバタイズ情報の送信元の前記通信装置からＧＡＴＴデータの構造を示す情報を取得してから前記所定の時間が経過していないと判定された場合、前記受信された前記アドバタイズ情報の送信元の前記通信装置が有するＧＡＴＴデータの構造を示す情報が新たに取得されず、
前記受信された前記アドバタイズ情報の送信元の前記通信装置からＧＡＴＴデータの構造を示す情報を取得してから前記所定の時間が経過したと判定された場合、前記受信された前記アドバタイズ情報の送信元の前記通信装置が有するＧＡＴＴデータの構造を示す情報が新たに取得されることを特徴とする請求項２０に記載のプログラム。
【請求項２２】
前記受信された前記アドバタイズ情報の送信元の前記通信装置が、前記情報処理装置がＢＬＥによって接続したことがある装置であると判定された場合、前記受信された前記アドバタイズ情報と、前記受信された前記アドバタイズ情報の送信元の前記通信装置から前に受信された前記アドバタイズ情報とが一致するか否かを判定するための判定処理を実行する情報判定ステップをさらに実行させ、
前記受信された前記アドバタイズ情報と、前記受信された前記アドバタイズ情報の送信元の前記通信装置から前に受信された前記アドバタイズ情報とが一致すると判定された場合、前記受信された前記アドバタイズ情報の送信元の前記通信装置が有するＧＡＴＴデータの構造を示す情報が新たに取得されず、
前記受信された前記アドバタイズ情報と、前記受信された前記アドバタイズ情報の送信元の前記通信装置から前に受信された前記アドバタイズ情報とが一致しないと判定された場合、前記受信された前記アドバタイズ情報の送信元の前記通信装置が有するＧＡＴＴデータの構造を示す情報が新たに取得されることを特徴とする請求項２１に記載のプログラム。
【請求項２３】
前記第１の接続が確立されたことに応じてＧＡＴＴデータの構造を示す情報が取得された後、前記第１の接続が解除されることを特徴とする請求項１乃至２２のいずれか１項に記載のプログラム。
【請求項２４】
ＧＡＴＴデータの構造を示す情報は、ＢＬＥによるサービスディスカバリによって取得されることを特徴とすることを特徴とする請求項１乃至２３のいずれか１項に記載のプログラム。
【請求項２５】
前記第２の接続が、前記通信装置と前記情報処理装置との間のＢＬＥによるペアリングが行われていない状態において確立されるとしても、前記第２の接続において前記情報処理装置と接続する前記通信装置が有するＧＡＴＴデータの構造を示す情報のうち少なくとも一部は新たに取得されないことを特徴とする請求項１乃至２４のいずれか１項に記載のプログラム。
【請求項２６】
前記情報処理装置は、前記通信装置と、Ｂｌｕｅｔｏｏｔｈ５．１の規格に含まれるＢＬＥによって通信することを特徴とする請求項１乃至２５のいずれか１項に記載のプログラム。
【請求項２７】
前記通信装置に印刷を実行させるための印刷ジョブを送信する送信ステップをさらに実行させることを特徴とする請求項１乃至２６のいずれか１項に記載のプログラム。
【請求項２８】
通信装置とＢｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）によって通信する情報処理装置であって、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第１の接続が確立されることに応じて、前記通信装置が有するＧｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅ（ＧＡＴＴ）データの構造を示す情報を取得する第１取得手段と、
前記通信装置が有するＧＡＴＴデータ内の所定の種類の情報を取得する第２取得手段と、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第２の接続が確立されることに応じて、前記通信装置が有するＧＡＴＴデータ内の前記所定の種類の情報が格納されている領域を特定可能になるまで、前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部を取得する第３取得手段と、
前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部に基づいて、前記所定の種類の情報を取得する第４取得手段と、
前記第２取得手段で取得された前記所定の種類の情報と、前記第４取得手段で取得された前記所定の種類の情報とが一致する場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報のうち前記第３取得手段で取得されていない情報を新たに取得せず、前記第２取得手段で取得された前記所定の種類の情報と、前記第４取得手段で取得された前記所定の種類の情報とが異なる場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報のうち前記第３取得手段で取得されていない情報を新たに取得する第５取得手段と、
を実行させることを特徴とする情報処理装置。
【請求項２９】
通信装置とＢｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）によって通信する情報処理装置であって、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第１の接続が確立されることに応じて、前記通信装置が有するＧｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅ（ＧＡＴＴ）データの構造を示す情報を取得する第１取得手段と、
前記通信装置が有するＧＡＴＴデータ内の所定の情報を取得する第２取得手段と、
前記第１取得手段で取得された前記通信装置が有するＧＡＴＴデータの構造を示す情報に基づいて、前記第１の接続において前記情報処理装置が接続した前記通信装置が有するＧＡＴＴデータ内の前記所定の情報が格納されていた領域を特定するための領域情報を特定する特定手段と、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第２の接続が確立されることに応じて、前記第２の接続において前記情報処理装置が接続する前記通信装置が有するＧＡＴＴデータ内の領域のうち前記領域情報に対応する領域から特定の情報を取得する第３取得手段と、
前記第２取得手段で取得された前記所定の情報と、前記第３取得手段で取得された前記特定の情報とが一致する場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報を新たに取得せず、前記第２取得手段で取得された前記所定の情報と、前記第３取得手段で取得された前記特定の情報とが異なる場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報を新たに取得する第４取得手段と、
を有することを特徴とする情報処理装置。
【請求項３０】
通信装置とＢｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）によって通信する情報処理装置の制御方法であって、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第１の接続が確立されることに応じて、前記通信装置が有するＧｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅ（ＧＡＴＴ）データの構造を示す情報を取得する第１取得ステップと、
前記通信装置が有するＧＡＴＴデータ内の所定の種類の情報を取得する第２取得ステップと、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第２の接続が確立されることに応じて、前記通信装置が有するＧＡＴＴデータ内の前記所定の種類の情報が格納されている領域を特定可能になるまで、前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部を取得する第３取得ステップと、
前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部に基づいて、前記所定の種類の情報を取得する第４取得ステップと、
前記第２取得ステップで取得された前記所定の種類の情報と、前記第４取得ステップで取得された前記所定の種類の情報とが一致する場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報のうち前記第３取得ステップで取得されていない情報を新たに取得せず、前記第２取得ステップで取得された前記所定の種類の情報と、前記第４取得ステップで取得された前記所定の種類の情報とが異なる場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報のうち前記第３取得ステップで取得されていない情報を新たに取得する第５取得ステップと、
を有することを特徴とする制御方法。
【請求項３１】
通信装置とＢｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）によって通信する情報処理装置の制御方法であって、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第１の接続が確立されることに応じて、前記通信装置が有するＧｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅ（ＧＡＴＴ）データの構造を示す情報を取得する第１取得ステップと、
前記通信装置が有するＧＡＴＴデータ内の所定の情報を取得する第２取得ステップと、
前記第１取得ステップで取得された前記通信装置が有するＧＡＴＴデータの構造を示す情報に基づいて、前記第１の接続において前記情報処理装置が接続した前記通信装置が有するＧＡＴＴデータ内の前記所定の情報が格納されていた領域を特定するための領域情報を特定する特定ステップと、
前記通信装置と前記情報処理装置との間で、ＢＬＥによって第２の接続が確立されることに応じて、前記第２の接続において前記情報処理装置が接続する前記通信装置が有するＧＡＴＴデータ内の領域のうち前記領域情報に対応する領域から特定の情報を取得する第３取得ステップと、
前記第２取得ステップで取得された前記所定の情報と、前記第３取得ステップで取得された前記特定の情報とが一致する場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報を新たに取得せず、前記第２取得ステップで取得された前記所定の情報と、前記第３取得ステップで取得された前記特定の情報とが異なる場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報を新たに取得する第４取得ステップと、
を有することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法及びプログラムムに関するものである。
【背景技術】
【０００２】
Ｂｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（登録商標）（以下、ＢＬＥ）によって通信を行う装置が知られている。特許文献１には、スマートホン等の情報処理装置とプリンタ等の通信装置との間で、ＢＬＥによる通信を行うことが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特願２０１６−２５１８３４
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところでＢＬＥでは、通信装置が有するＧＡＴＴ（Ｇｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅ）データに対する読み書きを行うことでデータ通信をするＧＡＴＴ通信と呼ばれる通信方法が用いられる。そして情報処理装置は、ＧＡＴＴデータ内の特定の情報（ハッシュ値等）を取得して、当該特定の情報を用いた処理を実行可能である。
【０００５】
ＧＡＴＴデータ内の情報を取得する装置が普及するにつれ、ＧＡＴＴデータ内の情報の取得をより適切に実行することが要望されている。
【０００６】
上述の課題を解決するために、本発明は、ＧＡＴＴデータ内の情報の取得をより適切に実行することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、通信装置とＢｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）によって通信する情報処理装置の制御方法であって、前記通信装置と前記情報処理装置との間で、ＢＬＥによって第１の接続が確立される場合、前記通信装置が有するＧｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅ（ＧＡＴＴ）データの構造を示す情報を取得する第１取得ステップと、前記通信装置が有するＧＡＴＴデータ内の所定の種類の情報を取得する第２取得ステップと、前記通信装置と前記情報処理装置との間で、ＢＬＥによって第２の接続が確立される場合、前記通信装置が有するＧＡＴＴデータ内の前記所定の種類の情報が格納されている領域を特定可能になるまで、前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部を取得する第３取得ステップと、前記通信装置が有するＧＡＴＴデータの構造を示す情報の少なくとも一部に基づいて、前記所定の種類の情報を取得する第４取得ステップと、前記第２取得ステップで取得された前記所定の種類の情報と、前記第４取得ステップで取得された前記所定の種類の情報とが一致する場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報のうち前記第３取得ステップで取得されていない情報を新たに取得せず、前記第２取得ステップで取得された前記所定の種類の情報と、前記第４取得ステップで取得された前記所定の種類の情報とが異なる場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報のうち前記第３取得ステップで取得されていない情報を新たに取得する第５取得ステップと、を有することを特徴とする。
【０００８】
また本発明は、通信装置とＢｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）によって通信する情報処理装置の制御方法であって、前記通信装置と前記情報処理装置との間で、ＢＬＥによって第１の接続が確立される場合、前記通信装置が有するＧｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅ（ＧＡＴＴ）データの構造を示す情報を取得する第１取得ステップと、前記通信装置が有するＧＡＴＴデータ内の所定の情報を取得する第２取得ステップと、前記第１取得ステップで取得された前記通信装置が有するＧＡＴＴデータの構造を示す情報に基づいて、前記第１接続において前記情報処理装置が接続した前記通信装置が有するＧＡＴＴデータ内の前記所定の情報が格納されていた領域を特定するための領域情報を特定する特定ステップと、前記通信装置と前記情報処理装置との間で、ＢＬＥによって第２の接続が確立される場合、前記第２接続において前記情報処理装置が接続する前記通信装置が有するＧＡＴＴデータ内の領域のうち前記領域情報に対応する領域から特定の情報を取得する第３取得ステップと、前記第２取得ステップで取得された前記所定の情報と、前記第３取得ステップで取得された前記特定の情報とが一致する場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報を新たに取得せず、前記第２取得ステップで取得された前記所定の情報と、前記第３取得ステップで取得された前記特定の情報とが異なる場合、前記通信装置が有するＧＡＴＴデータの構造を示す情報を新たに取得する第４取得ステップと、を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ＧＡＴＴデータ内の情報の取得をより適切に実行することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置及び通信装置の構成の図例である。
【図２】アドバタイズ情報のブロードキャスト及び接続要求情報の受信の処理を説明するための図である。
【図３】ＢＬＥにおけるアドバタイズを説明するための図である。
【図４】ＧＡＴＴ構成データをキャッシュするための処理を示すフローチャートである。
【図５】登録機能を示すフローチャートである。
【図６】ＧＡＴＴ構成データをキャッシュするための処理を示すフローチャートである。
【図７】ＧＡＴＴ構成データをキャッシュするための処理を示すフローチャートである。
【図８】登録機能を示すフローチャートである。
【図９】アドバタイズ情報の構造を示す図である。
【図１０】ＧＡＴＴのデータ形式を示す図である。
【図１１】近距離無線通信部に保存されるＧＡＴＴデータの一例を示す表である。
【図１２】ＧＡＴＴ構成データをキャッシュするための処理を示すシーケンス図である。
【図１３】登録機能を示すシーケンス図である。
【発明を実施するための形態】
【００１１】
以下に図面を参照して、本発明の好適な実施形態を例示的に説明する。ただし、本発明については、その趣旨を逸脱しない範囲で、当業者の通常の知識に基づいて、以下に記載する実施形態に対して適宜変更、改良が加えられたものについても本発明の範囲に入ることが理解されるべきである。
【００１２】
（第１実施形態）
本実施形態の通信システムに含まれる情報処理装置及び通信装置について説明する。情報処理装置として、本実施形態ではスマートホンを例示しているが、これに限定されず、携帯端末、ノートＰＣ、タブレット端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、デジタルカメラ等、種々のものを適用可能である。また、通信装置として、本実施形態ではプリンタを例示しているが、これに限定されず、情報処理装置と無線通信を行うことが可能な装置であれば、種々のものを適用可能である。例えば、プリンタであれば、インクジェットプリンタ、フルカラーレーザービームプリンタ、モノクロプリンタ等に適用することができる。また、プリンタのみならず複写機やファクシミリ装置、携帯端末、スマートホン、ノートＰＣ、タブレット端末、ＰＤＡ、デジタルカメラ、音楽再生デバイス、テレビ等にも適用可能である。その他、複写機能、ＦＡＸ機能、印刷機能等の複数の機能を備える複合機にも適用可能である。
【００１３】
まず、本実施形態の情報処理装置と、本実施形態の情報処理装置と通信可能な通信装置の構成について図１のブロック図を参照して説明する。また、本実施形態では以下の構成を例に記載するが、本実施形態は通信装置と通信を行うことが可能な装置に関して適用可能なものであり、特にこの図のとおりに機能を限定するものではない。
【００１４】
情報処理装置１０１は、本実施形態の情報処理装置である。情報処理装置１０１は、入力インタフェース１０２、ＣＰＵ１０３、ＲＯＭ１０４、ＲＡＭ１０５、外部記憶装置１０６、出力インタフェース１０７、表示部１０８、通信部１０９、近距離無線通信部１１０等を有する。
【００１５】
入力インタフェース１０２は、ユーザからのデータ入力や動作指示を受け付けるためのインタフェースであり、物理キーボードやボタン、タッチパネル等で構成される。なお、後述の出力インタフェース１０７と入力インタフェース１０２とを同一の構成とし、画面の出力とユーザからの操作の受け付けを同一の構成で行うような形態としても良い。
【００１６】
ＣＰＵ１０３は、システム制御部であり、情報処理装置１０１の全体を制御する。
【００１７】
ＲＯＭ１０４は、ＣＰＵ１０３が実行する制御プログラムやデータテーブル、組み込みオペレーティングシステム（以下、ＯＳという。）プログラム等の固定データを格納する。本実施形態では、ＲＯＭ１０４に格納されている各制御プログラムは、ＲＯＭ１０４に格納されている組み込みＯＳの管理下で、スケジューリングやタスクスイッチ、割り込み処理等のソフトウエア実行制御を行う。
【００１８】
ＲＡＭ１０５は、バックアップ電源を必要とするＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成される。なお、ＲＡＭ１０５は、図示しないデータバックアップ用の１次電池によってデータが保持されているため、プログラム制御変数等の重要なデータを揮発させずに格納することができる。また、情報処理装置１０１の設定情報や情報処理装置１０１の管理データ等を格納するメモリエリアもＲＡＭ１０５に設けられている。また、ＲＡＭ１０５は、ＣＰＵ１０３の主メモリとワークメモリとしても用いられる。
【００１９】
外部記憶装置１０６は、印刷実行機能を提供するアプリケーション、通信装置１５１が解釈可能な印刷情報を生成する印刷情報生成プログラム等を保存している。また、外部記憶装置１０６は、通信部１０９を介して接続している通信装置１５１との間で送受信する情報送受信制御プログラム等の各種プログラムや、これらのプログラムが使用する各種情報を保存している。
【００２０】
出力インタフェース１０７は、表示部１０８がデータの表示や情報処理装置１０１の状態の通知を行うための制御を行うインタフェースである。
【００２１】
表示部１０８は、ＬＥＤ（発光ダイオード）やＬＣＤ（液晶ディスプレイ）などから構成され、データの表示や情報処理装置１０１の状態の通知を行う。なお、表示部１０８上に、数値入力キー、モード設定キー、決定キー、取り消しキー、電源キー等のキーを備えるソフトキーボードを設置することで、表示部１０８を介してユーザからの入力を受け付けても良い。
【００２２】
通信部１０９は、通信装置１５１等の装置と接続して、データ通信を実行するための構成である。例えば、通信部１０９は、通信装置１５１内のアクセスポイント（不図示）に接続可能である。通信部１０９と通信装置１５１内のアクセスポイントが接続することで、情報処理装置１０１と通信装置１５１は相互に通信可能となる。なお、通信部１０９は無線通信で通信装置１５１とダイレクトに通信しても良いし、情報処理装置１０１や通信装置１５１の外部に存在する外部アクセスポイント（アクセスポイント１３１）を介して通信しても良い。無線通信方式としては、例えば、Ｗｉ−Ｆｉ（ＷｉｒｅｌｅｓｓＦｉｄｅｌｉｔｙ）（登録商標）やＢｌｕｅｔｏｏｔｈ（登録商標）等が挙げられる。また、アクセスポイント１３１としては、例えば、無線ＬＡＮルーター等の機器などが挙げられる。なお、本実施形態において、情報処理装置１０１と通信装置１５１とが外部アクセスポイントを介さずにダイレクトに接続する方式をダイレクト接続方式という。また、情報処理装置１０１と通信装置１５１とが外部アクセスポイントを介して接続する方式をインフラストラクチャー接続方式という。
【００２３】
近距離無線通信部１１０は、通信装置１５１等の装置と近距離で無線接続して、データ通信を実行するための構成であり、通信部１０９とは異なる通信方式によって通信を行う。近距離無線通信部１１０は、通信装置１５１内の近距離無線通信部１５７と接続可能である。なお、本実施形態では、近距離無線通信部１１０の通信方式として、Ｂｌｕｅｔｏｏｔｈ５．１が用いられるものとする。なお、Ｂｌｕｅｔｏｏｔｈ５．１には、Ｃｌａｓｓｉｃ  Ｂｌｕｅｔｏｏｔｈと、Ｂｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）の両規格が含まれるが、本実施形態では近距離無線通信部１５７の通信方式として、ＢＬＥが用いられるものとする。
【００２４】
通信装置１５１は、本実施形態の通信装置である。通信装置１５１は、ＲＯＭ１５２、ＲＡＭ１５３、ＣＰＵ１５４、プリントエンジン１５５、通信部１５６、近距離無線通信部１５７等を有する。
【００２５】
通信部１５６は、通信装置１５１内部のアクセスポイントとして、情報処理装置１０１等の装置と接続するためのアクセスポイントを有している。なお、該アクセスポイントは、情報処理装置１０１の通信部１０９に接続可能である。なお、通信部１５６は無線通信で情報処理装置１０１とダイレクトに通信しても良いし、アクセスポイント１３１を介して通信しても良い。通信方式としては、例えば、Ｗｉ−Ｆｉ（登録商標）やＢｌｕｅｔｏｏｔｈ（登録商標）等が挙げられる。また、通信部１５６は、アクセスポイントとして機能するハードウェアを備えていてもよいし、アクセスポイントとして機能させるためのソフトウエアにより、アクセスポイントとして動作してもよい。
【００２６】
近距離無線通信部１５７は、情報処理装置１０１等の装置と近距離で無線接続するための構成である。本実施形態では、近距離無線通信部１５７の通信方式として、Ｂｌｕｅｔｏｏｔｈ５．１が用いられるものとする。より具体的には、本実施形態では近距離無線通信部１５７の通信方式として、ＢＬＥが用いられるものとする。
【００２７】
ＲＡＭ１５３は、バックアップ電源を必要とするＳＲＡＭ等で構成される。なお、ＲＡＭ１５３は、図示しないデータバックアップ用の１次電池によってデータが保持されているため、プログラム制御変数等の重要なデータを揮発させずに格納することができる。また、通信装置１５１の設定情報や通信装置１５１の管理データ等を格納するメモリエリアもＲＡＭ１５３に設けられている。また、ＲＡＭ１５３は、ＣＰＵ１５４の主メモリとワークメモリとしても用いられ、情報処理装置１０１等から受信した印刷情報を一旦保存するための受信バッファや各種の情報を保存する。
【００２８】
ＲＯＭ１５２は、ＣＰＵ１５４が実行する制御プログラムやデータテーブル、ＯＳプログラム等の固定データを格納する。本実施形態では、ＲＯＭ１５２に格納されている各制御プログラムは、ＲＯＭ１５２に格納されている組み込みＯＳの管理下で、スケジューリングやタスクスイッチ、割り込み処理等のソフトウエア実行制御を行う。
【００２９】
ＣＰＵ１５４は、システム制御部であり、通信装置１５１の全体を制御する。
【００３０】
プリントエンジン１５５、ＲＡＭ１５３に保存された情報や情報処理装置１０１等から受信した印刷ジョブに基づき、インク等の記録剤を用いて紙等の記録媒体上に画像形成し、印刷結果を出力する。この時、情報処理装置１０１等から送信される印刷ジョブは、送信データ量が大きく、高速な通信が求められるため、近距離無線通信部１５７よりも高速に通信可能な通信部１５６を介して受信する。
【００３１】
なお、通信装置１５１には、外付けＨＤＤやＳＤカード等のメモリがオプション機器として装着されてもよく、通信装置１５１に保存される情報は、当該メモリに保存されても良い。
【００３２】
また、本実施形態の通信装置は、接続設定処理により接続モードが設定され、設定された接続モードに基づいた接続形態により、情報処理装置と通信を行う。本実施形態の通信装置は、インフラストラクチャー接続により通信を行う場合は、接続モードとしてインフラストラクチャー接続モードが設定され、ダイレクト接続により通信を行う場合は、接続モードとしてダイレクト接続モードが設定される。
【００３３】
ここでは、例として情報処理装置１０１と通信装置１５１との処理分担を上記のように示したが、特にこの分担形態に限らず他の形態であってもよい。
【００３４】
本実施形態では、情報処理装置１０１は、ＲＯＭ１０４や外部記憶装置１０６等に所定のアプリケーションを格納しているものとする。所定のアプリケーションとは、例えば、情報処理装置１０１内の画像データや文書データ等を印刷させるための印刷ジョブを、通信装置１５１に送信するためのアプリケーションプログラムである。このような機能を有するアプリケーションを、以後印刷アプリという。なお、印刷アプリは、印刷機能以外に、他の機能を備えていても良い。例えば、印刷アプリは、通信装置１５１がスキャン機能を備えている場合に、通信装置１５１にセットされた原稿をスキャンさせる機能や、通信装置１５１の他の設定を行う機能、通信装置１５１の状態を確認する機能等を備えていても良い。すなわち、印刷アプリは、印刷ジョブ以外に、スキャンジョブや設定ジョブを通信装置１５１に送信する機能を有していても良い。また、所定のアプリケーションは、印刷アプリに限定されず、印刷以外の機能を備えているアプリケーションプログラムであっても良い。
【００３５】
また、本実施形態では、近距離無線通信部１１０および近距離無線通信部１５７はＢＬＥによって通信を行うものとして説明する。なお、本実施形態では、近距離無線通信部１５７が、後述のアドバタイズ情報を所定の間隔でブロードキャストするアドバタイザ（又はスレーブ）として機能し、近距離無線通信部１１０が、アドバタイズ情報を受信するスキャナ（又はマスタ）として機能する。また、通信部１０９および通信部１５６は無線ＬＡＮ（Ｗｉ−Ｆｉ）によって通信を行うものとして説明する。ここで、ＢＬＥ規格におけるアドバタイズ情報の送信及びＢＬＥ接続要求の受信の処理について説明する。本実施形態では、上述したように近距離無線通信部１５７がスレーブ機器として動作するため、近距離無線通信部１５７が上記処理を行うものとする。近距離無線通信部１５７は、２．４ＧＨｚの周波数帯を４０チャネル（０〜３９ｃｈ）に分割して通信を行う。近距離無線通信部１５７は、そのうち、３７〜３９番目のチャネルをアドバタイズ情報の送信やＢＬＥ接続要求の受信に利用し、０〜３６番目のチャネルをＢＬＥ接続後のデータ通信に利用している。図２では、縦軸が近距離無線通信部１５７の消費電力を、横軸が時間を示しており、１つのチャネルを利用してアドバタイズ情報を送信する際の消費電力を各処理別に示している。Ｔｘ２０５は、アドバタイズ情報をブロードキャストする処理である送信処理における総消費電力を、Ｒｘ２０６は、ＢＬＥ接続要求を受信するための受信器を有効にしておく処理である受信処理における総消費電力を示している。送信電力２０２は送信処理による瞬間消費電力を示している。また、受信電力２０３は受信処理による瞬間消費電力を示している。また、マイコン動作電力２０１は、近距離無線通信部１５７内のマイコンが動作している場合の瞬間消費電力を示している。なお、Ｔｘ２０５とＲｘ２０６の前後や間にもマイコンが動作しているのは、送信・受信処理の実行や停止のためには事前にマイコンが起動している必要があるからである。また、アドバタイズ情報の送信を複数チャネルで行う場合は、アドバタイズ情報の送信を行うチャネルの数だけ消費電力が増えることになる。また、マイコンが動作を行っておらず、近距離無線通信部１５７が省電力状態となっている間は、スリープ電力２０４が近距離無線通信部１５７の瞬間消費電力となる。このように、近距離無線通信部１５７は、所定のチャネルを用いて送信処理を行った後、同一のチャネルを用いて一定時間受信処理を行うことで、情報処理装置１０１からＢＬＥ接続要求が送信されるのを待つ。
【００３６】
また、近距離無線通信部１５７は、図３に示すように、アドバタイズ情報の送信処理と受信処理を、チャネル別に３回繰り返した後、マイコンの動作を停止させ一定時間省電力状態になる。以下、所定のチャネルによるアドバタイズ情報の送信処理と受信処理の組み合わせをアドバタイズと言う。また、所定のチャネルによってアドバタイズ情報を送信する時間間隔をアドバタイズ間隔という。なお、１回目のアドバタイズを行ってから省電力状態になるまでに繰り返すアドバタイズの回数は、３回以下であれば任意に変更可能である。また、図３ではアドバタイズ時のチャネルは３７、３８、３９番目のチャネルの順番で順次使用しているが、この順番はランダムであってもよく、順番は１回目のアドバタイズと２回目のアドバタイズ、３回目以降のアドバタイズとでそれぞれ異なっていてもよい。
【００３７】
図９は、近距離無線通信部１５７が通信装置１５１の周辺にブロードキャストするアドバタイズ情報の構造の一例である。
【００３８】
近距離無線通信部１５７は、電力の供給が開始されると初期化処理を行い、アドバタイジング状態となる。近距離無線通信部１５７は、アドバタイジング状態となると、アドバタイズ間隔に基づいて定期的にアドバタイズ情報を周辺にブロードキャストする。アドバタイズ情報とは、基本的なヘッダ情報（当該アドバタイズ情報を送信する装置を識別するための識別情報等）を含む信号であり、ヘッダ９０１とペイロード９０２から構成される。情報処理装置１０１は、このアドバタイズ情報を受信することで、通信装置１５１の存在を認識することができる。さらに、情報処理装置１０１は、通信装置１５１にＢＬＥ接続要求を送信することで通信装置１５１とＢＬＥ接続することができる。ヘッダ９０１は、アドバタイズ情報のタイプやペイロード９０２の大きさの情報などを格納する領域である。ペイロード９０２は、識別情報としてのデバイス名９０３や搭載プロファイル情報、通信装置１５１とＢＬＥ接続するための接続情報９０４、アドバタイズ情報の送信電力（Ｔｘ  Ｐｏｗｅｒ）９０５等の情報を格納する。なお、通信装置の識別情報９０６をアドバタイズ情報に含めても良い。通信装置の識別情報９０６としては、通信装置のＭＡＣアドレスや、通信装置のサービス情報、通信装置内のアクセスポイントのＳＳＩＤ、パスワード等が該当する。
【００３９】
本実施形態では、近距離無線通信部１５７は、通信装置１５１の電源がＯＮになった場合にアドバタイジング状態となり、アドバタイズ情報の送信を開始するものとする。ただし、近距離無線通信部１５７がアドバタイズ情報の送信を開始するタイミングは、上述の形態に限定されず、例えば、ＢＬＥ機能を有効にするための所定の操作が行われたタイミング等であっても良い。
【００４０】
なお例えば、近距離無線通信部１５７は、第１アドバタイズ情報を送信し、第１アドバタイズ情報に対するスキャンレスポンスを情報処理装置１０１から受け取った場合、第１アドバタイズ情報と内容が異なる第２アドバタイズ情報を送信する形態であっても良い。なお例えば、第１アドバタイズ情報は、アドバタイズ情報の送信電力に関する情報や近距離無線通信部１５７の識別情報等を含むものとする。そして、第２アドバタイズ情報は、通信装置１５１の識別情報や、通信装置１５１が備えている機能やハードウェアに関する情報等を含むものとする。このような形態の場合、例えば印刷アプリは、第２アドバタイズ情報をハンドリングするものとして設計される。そのため、以下の説明において印刷アプリがハンドリングするアドバタイズ情報は、第２アドバタイズ情報であるものとする。
【００４１】
ここで、ＢＬＥ規格におけるＧＡＴＴ（Ｇｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅ）通信の概要について説明する。ＧＡＴＴとは、ＢＬＥ規格において情報の読み書き（送受信）を司るプロファイルである。
【００４２】
ＧＡＴＴ通信においては、データの転送元と転送先に基づいて、ＧＡＴＴクライアントとＧＡＴＴサーバの２つのロールが定義されている。
【００４３】
ＧＡＴＴクライアントはＧＡＴＴサーバにリクエストを送信し、ＧＡＴＴサーバからの応答を受信する。本実施形態では、情報処理装置１０１がＧＡＴＴクライアントとなる。ＧＡＴＴクライアントは、ＧＡＴＴサーバの近距離無線通信部内の記憶領域に保持されている情報の読み取り（リード）及び、当該記憶領域に対する情報の書き込み（ライト）を実行することが出来る。
【００４４】
ＧＡＴＴサーバは、ＧＡＴＴクライアントからの要求を受信すると、ＧＡＴＴクライアントに対して応答を返す。本実施形態では、通信装置１５１がＧＡＴＴサーバとなり、情報処理装置１０１がＧＡＴＴクライアントとなる。なお、ＧＡＴＴサーバは、ＧＡＴＴサーバの状態情報等の情報を格納するデバイスとして動作する。
【００４５】
次に、ＧＡＴＴのデータ形式について説明する。ＧＡＴＴのデータは、図１０に示すような階層構造を持っており、サービス、キャラクタリスティック、ディスクリプタと呼ばれる３つの要素から構成される。ただし、ディスクリプタは存在していなくても良く、本実施形態では、近距離無線通信部１５７が構成するＧＡＴＴデータにはディスクリプタは存在しないものとする。サービス、キャラクタリスティック、ディスクリプタは３２桁で表現されるＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）で識別することができる。ここで言う、ＵＵＩＤとは、ソフトウエア上でオブジェクトを一意に識別するための識別子として使用されるものである。ＵＵＩＤは１２８ビットの数値だが、通常は１６進数で５５０ｅ８４００−ｅ２９ｂ−４１ｄ４−ａ７１６−４４６６５５４４００００のように表現される。なお、サービス、キャラクタリスティック、ディスクリプタには、Ｂｌｕｅｔｏｏｔｈ  ＳＩＧ  の標準で定義されているものやベンダー固有のもの等がある。ベンダー固有のもののＵＵＩＤは、上述のように３２桁で表現されるが、Ｂｌｕｅｔｏｏｔｈ  ＳＩＧ  の標準で定義されているもののＵＵＩＤについては４桁で表現される。すなわち、例えば、Ｂｌｕｅｔｏｏｔｈ  ＳＩＧ  の標準で定義されているもののＵＵＩＤは、２Ａ４９のように表現される。
【００４６】
サービスは、ＧＡＴＴのデータ中のアトリビュートを共通区分ごとにグループ化したものであり、各サービスには１以上のキャラクタリスティックが含まれる。キャラクタリスティックには、キャラクタリスティック毎に単一の値が設定されている。ディスクリプタは、キャラクタリスティックに付加情報が必要な際に用いられる属性値が設定されている。サービス、キャラクタリスティック、ディスクリプタには、それぞれ、ＧＡＴＴクライアントにリードやライトを許可するか否かを示す設定値であるリード・ライトの属性を設定することが出来る。
【００４７】
ＧＡＴＴクライアントは、サービス、キャラクタリスティックそれぞれのＵＵＩＤを指定することで、指定したキャラクタリスティックに設定されている値に対して、リード・ライトを実行することが出来る。ただし、リード・ライトが実行できるか否かは、各サービス、キャラクタリスティックに設定されているリード・ライト属性に基づく。
【００４８】
近距離無線通信部１５７によって構築されているＧＡＴＴデータの例を、図１１に示す。図１１のＧＡＴＴデータにおいて、「Ｓｅｒｖｉｃｅ  ＵＵＩＤ」は、各サービスに割り振られているＵＵＩＤを示す。「Ｓｅｒｖｉｃｅ名」は、各サービスの名前を示す。「Ｃｈａｒａｃｔａｒｉｓｔｉｃ  ＵＵＩＤ」は、各キャラクタリスティックに割り振られているＵＵＩＤを示す。「Ｃｈａｒａｃｔａｒｉｓｔｉｃ名」は、各キャラクタリスティックの名前を示す。「Ｓｅｒｖｉｃｅ  リード可能」は、各サービスに関する値を情報処理装置１０１がリード（読み取り）可能か否かを示す。「Ｓｅｒｖｉｃｅ  ライト可能」は、各サービスに関する値を情報処理装置１０１がライト（書き込み）可能か否かを示す。「Ｃｈａｒａｃｔａｒｉｓｔｉｃ  リード可能」は、各キャラクタリスティックに関する値を情報処理装置１０１がリード可能か否かを示す。「Ｃｈａｒａｃｔａｒｉｓｔｉｃ  ライト可能」は、各キャラクタリスティックに関する値を情報処理装置１０１がライト（書込み）可能か否かを示す。「Ｃｈａｒａｃｔａｒｉｓｔｉｃ  インディケイト可能」は、各キャラクタリスティックに関する値を通信装置１５１が更新した場合に情報処理装置１０１へインディケイト（通知）可能か否かを示す。「ペアリング必要」は、各キャラクタリスティックに関する値をペアリング済みでなければ情報処理装置１０１にライトもしくはリードを許可しないか否かを示す。情報処理装置１０１は、「Ｓｅｒｖｉｃｅ  リード可能」がリード可能（○）を示し且つ「Ｃｈａｒａｃｔａｒｉｓｔｉｃ  リード可能」がリード可能を示（○）している場合、対応するキャラクタリスティックに関する値を読み取ることができる。また、情報処理装置１０１は、「Ｓｅｒｖｉｃｅ  リード可能」がリード可能（○）を示し且つ「Ｃｈａｒａｃｔａｒｉｓｔｉｃ  リード可能」がリード不可能（空欄）を示している場合、対応するキャラクタリスティックに関する値を読み取ることができない。「値」は、各キャラクタリスティックに設定された値を示す。また、「ペアリング必要」がペアリング不必要（空欄）を示している場合、情報処理装置１０１は、通信装置１５１とペアリングをしていない状態でも、対応するキャラクタリスティックに関する値を読み書きすることができる。一方、「ペアリング必要」がペアリング必要（○）を示している場合、情報処理装置１０１は、通信装置１５１とペアリングをしている状態でなければ、対応するキャラクタリスティックに関する値を読み書きすることができない。
【００４９】
情報処理装置１０１は、通信装置１５１とＢＬＥによってＧＡＴＴ通信を行うためには、通信装置１５１が保持する上記のＧＡＴＴデータの構成に関する情報（以下、ＧＡＴＴ構成データ）を把握する必要がある。ＧＡＴＴ構成データとは例えば、ＧＡＴＴデータ内のサービスの数、キャラクタリスティックの数、それぞれのＵＵＩＤの値、リードの可否を示す属性等であり、各キャラクタリスティックの値は含まれない。通信装置１５１が保持するＧＡＴＴ構成データを取得する処理を、サービスディスカバリという。
【００５０】
ところで、サービスディスカバリが完了する（通信装置１５１が保持するＧＡＴＴ構成データが完全に情報処理装置１０１によって取得される）までにはいくらかの時間を要する。また本実施形態では例えば、通信装置１５１に対する印刷データの送信指示がユーザから行われた場合に情報処理装置１０１が通信装置１５１とＢＬＥによるＧＡＴＴ通信を行う。ユーザ指示に応じて情報処理装置１０１が通信装置１５１とＢＬＥによるＧＡＴＴ通信を行おうとする度に、サービスディスカバリを完了させる形態は、ユーザ指示に応じたＧＡＴＴ通信が実行されるまでに時間がかかるという課題がある。
【００５１】
そこで本実施形態では、情報処理装置１０１は、既にサービスディスカバリを完了させており、通信装置１５１のＧＡＴＴ構成データを把握している場合は、サービスディスカバリを最後まで実行しない。またさらに本実施形態では、情報処理装置１０１は、ユーザからサービスディスカバリの実行を指示されることなく、最初のサービスディスカバリを自動で完了させる。これにより、ユーザ指示に応じて情報処理装置１０１が通信装置１５１とＢＬＥによるＧＡＴＴ通信を行おうとする場合、ユーザ指示に応じたＧＡＴＴ通信を迅速に開始させることができる。
【００５２】
図１２は、情報処理装置１０１と通信装置１５１との間における、ＧＡＴＴ構成データをキャッシュするための処理を示すシーケンス図である。なおこの処理シーケンスが示す通信装置１５１の処理は、ＣＰＵ１５４が、ＲＯＭ１５２又は通信装置１５１が備えるＨＤＤ（不図示）に記憶されている制御プログラムをＲＡＭ１５３にロードし、その制御プログラムを実行することで実現される。また、情報処理装置１０１の処理は、ＣＰＵ１０３が、ＲＯＭ１０４又は情報処理装置１０１が備えるＨＤＤ（不図示）に記憶されている制御プログラムや印刷用アプリをＲＡＭ１０５にロードし、その制御プログラムを実行することで実現される。また情報処理装置１０１の処理は、情報処理装置１０１において印刷用アプリが起動したことに応じて自動で実行される。すなわち、印刷用アプリが起動すると、情報処理装置１０１は、印刷用アプリによるアドバタイズ情報の受信を開始する。
【００５３】
以下の説明において、通信装置１５１がアドバタイザであり、情報処理装置１０１がスキャナであるものとする。
【００５４】
Ｓ１２０１〜Ｓ１２０３で、通信装置１５１内の近距離無線通信部１５７は、アドバタイズ情報の送信を行う。情報処理装置１０１は、近距離無線通信部１１０が近距離無線通信部１５７から送信されたアドバタイズ情報を受信することで、通信装置１５１の存在を認識する。なお情報処理装置１０１は、Ｓ１２０１〜Ｓ１２０３でアドバタイズ情報を受信した場合に、Ｓ１２０４以降の処理を実行するか否かを判定しても良い。すなわち情報処理装置１０１は、受信されたすべてのアドバタイズ情報に対して、Ｓ１２０４以降の解析を行わなくともよい。具体的には情報処理装置１０１は、アドバタイズ情報に、印刷用アプリに対応する情報が含まれるか否かを判定する。印刷用アプリに対応する情報とは例えば、アドバタイズ情報の送信元の装置が印刷機能を有していることを示す情報や、印刷用アプリを提供するベンダーを示す情報である。また例えば、アドバタイズ情報の送信元の装置が印刷用アプリによって印刷指示が可能な機種であることを示す情報である。情報処理装置１０１は、アドバタイズ情報を受信して通信装置１５１を認識すると、受信したアドバタイズ情報に含まれる個体識別情報を取得する。本実施例では個体識別情報は、ＢＤアドレス（Ｂｌｕｅｔｏｏｔｈ  Ｄｅｖｉｃｅ  Ａｄｄｒｅｓｓ）と呼ばれるＢｌｕｅｔｏｏｔｈ対応デバイスを識別するための一意のアドレスを使用しているがこの限りではない。例えば、通信装置１５１のＭＡＣアドレスやシリアルナンバー、デバイス名、型番、ベンダーの独自フォーマットに従った情報などでも構わない。
【００５５】
Ｓ１２０４では、情報処理装置１０１は、Ｓ１２０１〜Ｓ１２０３で取得したアドバタイズ情報の送信元の装置が、情報処理装置１０１が取得済みのＧＡＴＴ構成データに対応する装置か否かを判定する。情報処理装置１０１が取得済みのＧＡＴＴ構成データに対応する装置とは例えば、情報処理装置１０１が過去にＢＬＥによって接続したことがある装置である。また情報処理装置１０１が取得済みのＧＡＴＴ構成データに対応する装置とは例えば、過去にＢＬＥによって接続したことがある装置とは異なる装置であるが、過去にＢＬＥによって接続したことがある装置が有する識別情報と同じ識別情報を有する装置である。ここで識別情報とは例えば、型番、名前、ベンダー名、サービス名、ＭＡＣアドレスである。Ｓ１２０４では具体的には、情報処理装置１０１は、上述のようにして新たに取得した個体識別情報と、情報処理装置１０１が備えるメモリ（ＲＯＭ１０４等）に保存されており、且つ情報処理装置１０１が取得済みのＧＡＴＴ構成データに対応する装置から取得済みである個体識別情報とを比較する。比較した結果、２つの個体識別情報が一致した場合は、Ｓ１２０４の判定処理においてＹＥＳと判定される。そして、その場合は、Ｓ１２０１〜Ｓ１２０３で取得したアドバタイズ情報の送信元の装置（あるいは、当該装置に対応する装置）に対するサービスディスカバリを既に実行しているため、新たにサービスディスカバリを実行することなく、処理を終了する。一方、２つの個体識別情報が一致しなかった場合は、Ｓ１２０４の判定処理においてＮＯと判定され、Ｓ１２０５以降の処理が実行される。なお、新たに取得した個体識別情報が通信装置１５１においてランダムに生成されたＢＤアドレスである場合がある。その場合は、取得されたＢＤアドレスが、情報処理装置１０１が備えるメモリに保存されているＩＲＫ（Ｉｄｅｎｔｉｔｙ  Ｒｅｓｏｌｕｔｉｏｎ  Ｋｅｙ）と呼ばれるキーを使用して復号可能か否かにより、Ｓ１２０４による判定が実行されても良い。復号可能である場合、Ｓ１２０４の判定処理においてＹＥＳと判定され、復号可能でない場合、Ｓ１２０４の判定処理においてＮＯと判定される。
【００５６】
Ｓ１２０５では、情報処理装置１０１は、ＢＬＥによって接続したことがないと判定された装置（ここでは通信装置１５１）とＢＬＥによって接続するための処理を実行する。具体的には、近距離無線通信部１１０が、ＢＬＥによるネットワーク接続を確立する接続イベントに遷移するための要求であるＣＯＮＮＥＣＴ＿ＲＥＱを送信する。近距離無線通信部１５７がＣＯＮＮＥＣＴ＿ＲＥＱを受信すると、情報処理装置１０１及び通信装置１５１は、接続イベントに遷移する準備をする。具体的には、近距離無線通信部１１０及び近距離無線通信部１５７が、それぞれＣＰＵ１０３及びＣＰＵ１５４にＧＡＴＴ通信のための接続処理が完了した旨を通知する。
【００５７】
その後、情報処理装置１０１及び通信装置１５１はそれぞれスキャナとアドバタイザからマスタとスレーブに遷移し、マスタである情報処理装置１０１とスレーブである通信装置１５１は、ＧＡＴＴ通信のための接続（ＢＬＥ接続）を確立する。
【００５８】
上述したように、情報処理装置１０１は、ＧＡＴＴ通信により通信装置１５１のＧＡＴＴデータにアクセスする前に、通信装置１５１がどのような構成のＧＡＴＴデータを有しているかを把握する必要がある。
【００５９】
そこで情報処理装置１０１は、Ｓ１２０５でＢＬＥ接続が確立された後に、Ｓ１２０６で、サービスディスカバリを開始する。具体的には情報処理装置１０１は、通信装置１５１のＧＡＴＴ構成データを要求するためのディスカバリ要求を通信装置１５１へと送信する。これにより、ディスカバリ要求の応答として、通信装置１５１は、情報処理装置１０１へＧＡＴＴ構成データの一部を送信する。受信された一部のＧＡＴＴ構成データに基づき、情報処理装置１０１は、通信装置１５１のＧＡＴＴデータ内の、ハッシュ値と呼ばれる種類の情報が格納されている領域を特定し、ハッシュ値のリードを行う。なおハッシュ値は、図１１のＣｈａｒａｃｔｅｒｉｓｔｉｃ  ＵＵＩＤが０ｘ２Ｂ２ＡのＤａｔａｂａｓｅ  Ｈａｓｈキャラクタリスティックに格納されている値である。通信装置１５１は、Ｄａｔａｂａｓｅ  Ｈａｓｈキャラクタリスティックの値として、通信装置１５１があらかじめＧＡＴＴデータの構成から算出したハッシュ値を格納している。すなわちハッシュ値とは、通信装置１５１のＧＡＴＴデータの構成に応じて一意に定められる値である。
【００６０】
なお、情報処理装置１０１は、過去に情報処理装置１０１がＢＬＥによって接続したことがある装置からリードしたハッシュ値を、情報処理装置１０１が備えるメモリ（ＲＯＭ１０４等）に格納している。そこでＳ１２０７で、情報処理装置１０１は、Ｓ１２０６でリードしたハッシュ値が、過去にリードしたハッシュ値（情報処理装置１０１が備えるメモリに格納されているハッシュ値）と一致するものがあるかを比較する。すなわち情報処理装置１０１は、通信装置１５１が、過去に情報処理装置１０１がＢＬＥによって接続したことがある端末か否かを判定する。このとき情報処理装置１０１は、ハッシュ値だけでなく、通信装置１５１のＢＤアドレスなどの個体識別情報等の他の情報を判定条件に加えてもよい。
【００６１】
Ｓ１２０７でＮＯと判定された場合、情報処理装置１０１は、通信装置１５１のＧＡＴＴ構成データの残りを把握するために、サービスディスカバリを継続する。そのためＳ１２０８で情報処理装置１０１は、通信装置１５１のＧＡＴＴ構成データを要求するためのディスカバリ要求を通信装置１５１へと送信する。当該要求を受け付けた通信装置１５１は、Ｓ１２０９で、情報処理装置１０１へＧＡＴＴ構成データの残りを送信する。なお、ディスカバリ要求の送受信及びＧＡＴＴ構成データの送受信は、ＧＡＴＴデータ内のサービス、キャラクタリスティック、ディスクリプタの数の分だけ繰り返される。そのため、Ｓ１２１０では、すべてのＧＡＴＴ構成データの送信が完了されるまで、ディスカバリ要求の送受信及びＧＡＴＴ構成データの送受信が繰り返される。
【００６２】
すべてのＧＡＴＴ構成データの送信が完了されると、Ｓ１２１１で、情報処理装置１０１は、通信装置１５１のＧＡＴＴ構成データをキャッシュとして情報処理装置１０１が備えるメモリに格納（保存）する。このとき情報処理装置１０１は、通信装置１５１のＧＡＴＴ構成データのキャッシュと通信装置１５１から得たハッシュ値とを対応付けてメモリへの格納を行う。なお情報処理装置１０１は、通信装置１５１のＭＡＣアドレスなどの個体識別情報等の他の情報をさらに対応付けてメモリへの格納を行ってもよい。また、情報処理装置１０１は、キャッシュした時刻の情報を対応付けてメモリへの格納を行ってもよい。なお、サービスディスカバリは、キャラクタリスティックの値を取得する処理ではないため、情報処理装置１０１と通信装置１５１との間でペアリングが実行されていない状態でも実行可能な処理である。
【００６３】
なお、Ｓ１２０７でＹＥＳと判定された場合、情報処理装置１０１は、通信装置１５１のＧＡＴＴ構成データを既にキャッシュしていることになるため、Ｓ１２０８〜Ｓ１２１１までの処理を省略する。すなわち情報処理装置１０１は、サービスディスカバリを完了させず、中断する。
【００６４】
通信装置１５１のＧＡＴＴ構成データを取得することにより、以降、情報処理装置１０１は、通信装置１５１との任意のＧＡＴＴ通信を実行することが可能となる。そのため、情報処理装置１０１は、Ｓ１２１２で、通信装置１５１との任意のＧＡＴＴ通信を実行する。
【００６５】
ＧＡＴＴ通信が完了した後、情報処理装置１０１は、Ｓ１２１３にて、解放要求を送信する。解放要求を受け取った通信装置１５１は、Ｓ１２１４にて解放応答を送信し、装置間のＢＬＥ接続を終了する。装置間のＢＬＥ接続が終了すると、情報処理装置１０１と通信装置１５１はそれぞれスキャナとアドバタイザに戻り、通信装置１５１は、アドバタイズ情報の送信を再開する。
【００６６】
図４は、情報処理装置１０１が実行する、ＧＡＴＴ構成データをキャッシュするための処理を示すフローチャートである。本処理は、ＣＰＵ１０３が、ＲＯＭ１０４又は情報処理装置１０１が備えるＨＤＤ（不図示）に記憶されている制御プログラムや印刷用アプリをＲＡＭ１０５にロードし、それらのプログラムを実行することで実現される。また本処理は、情報処理装置１０１において印刷用アプリの起動が指示されたことに基づいて開始される。
【００６７】
Ｓ４０１では、ＣＰＵ１０３は、印刷用アプリをフォアグラウンドで起動する。
【００６８】
Ｓ４０２では、ＣＰＵ１０３は、アドバタイズ情報を受信する。
【００６９】
Ｓ４０３では、ＣＰＵ１０３は、受信されたアドバタイズ情報の送信元の装置が、情報処理装置１０１が取得済みのＧＡＴＴ構成データに対応する装置か否かを判定する。ＣＰＵ１０３は、ＮＯ判定の場合、Ｓ４０４に進み、ＹＥＳ判定の場合、受信されたアドバタイズ情報の送信元の装置に対するサービスディスカバリを実行することなく、Ｓ４０２で他の装置からのアドバタイズ情報の受信を待つ。本処理は、Ｓ１２０４の処理に対応する。
【００７０】
Ｓ４０４では、ＣＰＵ１０３は、受信されたアドバタイズ情報の送信元の装置とのＢＬＥ接続を確立し、サービスディスカバリを開始する。本処理は、Ｓ１２０５の処理に対応する。
【００７１】
Ｓ４０５では、ＣＰＵ１０３は、受信されたアドバタイズ情報の送信元の装置からハッシュ値の取得を行う。本処理は、Ｓ１２０６の処理に対応する。
【００７２】
Ｓ４０６では、ＣＰＵ１０３は、Ｓ４０５で取得されたハッシュ値が、既に取得済みのハッシュ値と同じか否かを判定する。ＣＰＵ１０３は、ＮＯ判定の場合、Ｓ４０７に進み、ＹＥＳ判定の場合、受信されたアドバタイズ情報の送信元の装置に対するサービスディスカバリを中断し、Ｓ４０８に進む。本処理は、Ｓ１２０７の処理に対応する。なお、既に取得済みのハッシュ値がない場合は、本判定はＮＯ判定として扱われる。
【００７３】
Ｓ４０７では、ＣＰＵ１０３は、サービスディスカバリを継続し、残りのＧＡＴＴ構成データを取得し、キャッシュする。本処理は、Ｓ１２０８〜Ｓ１２１１の処理に対応する。
【００７４】
Ｓ４０８では、ＣＰＵ１０３は、受信されたアドバタイズ情報の送信元の装置とのＢＬＥ接続を解除する。本処理は、Ｓ１２１３、Ｓ１２１４の処理に対応する。その後ＣＰＵ１０３は、Ｓ４０２で他の装置からのアドバタイズ情報の受信を待つ。
【００７５】
このように、本実施形態では情報処理装置１０１は、印刷用アプリが起動した後のユーザ操作無しに、自動で情報処理装置１０１と通信装置１５１との間におけるＢＬＥ接続を確立し、自動でサービスディスカバリを実行する。そして、情報処理装置１０１は、自動で、通信装置１５１のＧＡＴＴデータ構造に関する情報をキャッシュしておく。そのため本実施形態では、情報処理装置１０１と通信装置１５１との間のＧＡＴＴ通信を始めて指示した場合であっても、サービスディスカバリの少なくとも一部を省略させることができ、ユーザが指示するＧＡＴＴ通信を迅速に開始することができる。
【００７６】
なお印刷用アプリが自動で情報処理装置１０１と通信装置１５１との間におけるＢＬＥ接続を確立し、自動でサービスディスカバリを実行するタイミングは、上述の形態に限定されない。情報処理装置１０１と通信装置１５１との間におけるＢＬＥ接続を確立させるための指示（ハンドオーバーの指示等）をユーザが意図して行う前であれば、どのタイミングであってもかまわない。例えば、印刷用アプリに対して、印刷対象の画像を選択するための画面を表示するための指示が行われたことに応じて、上記の処理が自動で実行されても良い。
【００７７】
また情報処理装置１０１は、複数の装置からアドバタイズ情報を受信する場合は、複数の装置それぞれに対して、サービスディスカバリを行い、複数の装置それぞれのＧＡＴＴデータ構造に関する情報をキャッシュして良い。
【００７８】
また本実施形態では、Ｓ４０５〜Ｓ４０７の処理は、情報処理装置１０１のＯＳによって実行される処理であるものとする。すなわちＳ４０４にて、情報処理装置１０１のＯＳに対し、印刷用アプリによりＢＬＥ接続の確立が指示された場合、ハッシュ値の取得やサービスディスカバリを、ＯＳが自動で実行するものとする。しかしながらこの形態に限定されず、Ｓ４０５〜Ｓ４０７の処理が例えば印刷用アプリの指示のもと実行されても良い。
【００７９】
本実施形態では上述のようにして、印刷アプリが自動で、情報処理装置１０１にサービスディスカバリを実行させ、通信装置１５１のＧＡＴＴデータ構成に関する情報をキャッシュしておく。これにより、以後、ユーザによって情報処理装置１０１と通信装置１５１との間のＢＬＥ接続の確立が指示されたとしても、サービスディスカバリの実行を省略することができる。ひいては、ＢＬＥ接続の確立によって実行される処理を、迅速に開始することができる。
【００８０】
本実施形態では、ＢＬＥ接続の確立によって実行される処理の一例として、印刷アプリに対して通信装置１５１の情報を登録する登録機能が実行される。図１３は、情報処理装置１０１と通信装置１５１との間における、登録機能を示すシーケンス図である。なおこの処理シーケンスが示す通信装置１５１の処理は、ＣＰＵ１５４が、ＲＯＭ１５２又は通信装置１５１が備えるＨＤＤ（不図示）に記憶されている制御プログラムをＲＡＭ１５３にロードし、その制御プログラムを実行することで実現される。また、情報処理装置１０１の処理は、ＣＰＵ１０３が、ＲＯＭ１０４又は情報処理装置１０１が備えるＨＤＤ（不図示）に記憶されている制御プログラムや印刷用アプリをＲＡＭ１０５にロードし、その制御プログラムを実行することで実現される。また情報処理装置１０１の処理は、情報処理装置１０１において印刷用アプリが起動している状態で開始されるものとする。また本処理は、情報処理装置１０１と通信装置１５１との間でＢＬＥのペアリングが実行されていない状態で開始されるものとする。
【００８１】
以下の説明においても、通信装置１５１がアドバタイザであり、情報処理装置１０１がスキャナであるものとする。
【００８２】
Ｓ１３０１では、情報処理装置１０１は、ユーザから、登録機能の実行指示を受け付ける。具体的には例えば、印刷アプリによって表示される画面において、登録機能の実行指示のための操作（ボタン押下等）がユーザから受け付けられる。これにより、情報処理装置１０１は、印刷用アプリによるアドバタイズ情報の受信を開始する。
【００８３】
Ｓ１３０２〜Ｓ１３０４で、通信装置１５１内の近距離無線通信部１５７は、アドバタイズ情報の送信を行う。情報処理装置１０１は、近距離無線通信部１１０が近距離無線通信部１５７から送信されたアドバタイズ情報を受信することで、通信装置１５１の存在を認識する。なおこのとき、情報処理装置１０１は、通信装置１５１からだけでなく、通信装置１５１以外の装置からも、アドバタイズ情報を受信することがある。
【００８４】
Ｓ１３０５で情報処理装置１０１は、登録機能の対象となる装置の選択を受け付けるための選択画面を表示部１０８に表示する。具体的には情報処理装置１０１は、Ｓ１３０２〜Ｓ１３０４で受信したアドバタイズ情報の送信元の装置の識別情報のリストを表示部１０８に表示する。なお識別情報は、アドバタイズ情報に含まれているものであり、例えばＢＤアドレスやＭＡＣアドレス、ＩＰアドレス、型番、機種名である。そして、情報処理装置１０１は、登録機能の対象となる装置の選択を、選択画面を介してユーザから受け付け、選択された装置を登録機能の対象として特定する。以下では、登録機能の対象として、通信装置１５１が選択されたものとして説明する。なお情報処理装置１０１は、Ｓ１３０２〜Ｓ１３０４の間に、１つの装置からしかアドバタイズ情報を受信しなかった場合は、選択画面を表示部１０８に表示することなく、当該１つの装置を登録機能の対象として特定しても良い。
【００８５】
Ｓ１３０６で情報処理装置１０１は、通信装置１５１とＢＬＥによって接続するための処理を実行する。具体的には、近距離無線通信部１１０が、ＢＬＥによるネットワーク接続を確立する接続イベントに遷移するための要求であるＣＯＮＮＥＣＴ＿ＲＥＱを送信する。
【００８６】
その後、情報処理装置１０１及び通信装置１５１はそれぞれスキャナとアドバタイザからマスタとスレーブに遷移し、マスタである情報処理装置１０１とスレーブである通信装置１５１は、ＧＡＴＴ通信のための接続（ＢＬＥ接続）を確立する。
【００８７】
情報処理装置１０１は、Ｓ１３０６でＢＬＥ接続が確立された後に、Ｓ１３０７で、サービスディスカバリを開始する。具体的には情報処理装置１０１は、通信装置１５１のＧＡＴＴ構成データを要求するためのディスカバリ要求を通信装置１５１へと送信する。これにより、ディスカバリ要求の応答として、通信装置１５１は、情報処理装置１０１へＧＡＴＴ構成データの一部を送信する。情報処理装置１０１は、受信された一部のＧＡＴＴ構成データに基づき、通信装置１５１のＧＡＴＴデータ内の、ハッシュ値が格納されている領域を特定できるか否かを判定する。そして情報処理装置１０１は、ＹＥＳと判定した場合、特定した領域に含まれる情報を要求することで、ハッシュ値のリードを行う。一方、情報処理装置１０１は、ＮＯと判定した場合、ハッシュ値が格納されている領域を特定できるＧＡＴＴ構成データを受信するまで、ディスカバリ要求及び一部のＧＡＴＴ構成データの受信を繰り返す。
【００８８】
なお、情報処理装置１０１は、過去に情報処理装置１０１がＢＬＥによって接続したことがある端末から取得したハッシュ値を、情報処理装置１０１が備えるメモリ（ＲＯＭ１０４等）に格納している。そこでＳ１３０８で、情報処理装置１０１は、Ｓ１３０６でリードしたハッシュ値が、過去に取得したキャッシュ済みのハッシュ値（情報処理装置１０１が備えるメモリに格納されているハッシュ値）と一致するものがあるかを比較する。このとき情報処理装置１０１は、ハッシュ値だけでなく、通信装置１５１のＭＡＣアドレスなどの個体識別情報等の他の情報を判定条件に加えてもよい。
【００８９】
なお本実施形態では情報処理装置１０１は、図１２に示したように、自動で予めサービスディスカバリを行っている。そのため、登録対象の装置が登録機能の直前にＢＬＥを起動させた等のケースでなければ、情報処理装置１０１は、Ｓ１３０８の判定でＹＥＳと判定し、サービスディスカバリの後段の処理を省略することができる。ひいては、ＢＬＥ接続を用いた処理をユーザが意図して実行する時（ＢＬＥを用いた登録機能を実行する時）に、情報処理装置１０１は、ユーザを待たせることなく、当該処理を迅速に開始することができる。なお情報処理装置１０１は、Ｓ１３０８の判定でＮＯと判定された場合は、図１２に示すようにして残りのサービスディスカバリが実行し、サービスディスカバリを完了させた後、Ｓ１３０９の処理に進む。
【００９０】
なお上述では、情報処理装置１０１が、Ｓ１３０６でＢＬＥ接続が確立された後に、Ｓ１３０７で、サービスディスカバリを開始し、ハッシュ値の読み込みまでを行う形態を説明した。このように、サービスディスカバリを開始してハッシュ値の取得を試みる方法を、以下、第１取得方法という。しかしながら、第１取得方法を実行する形態に限定されない。他の取得方法（第２取得方法）でハッシュ値を取得する形態について以下に具体的に説明する。
【００９１】
情報処理装置１０１は、Ｓ１３０７で、サービスディスカバリを開始せず、キャッシュ済みのＧＡＴＴ構成データに基づいて、当該ＧＡＴＴ構成データに対応するＧＡＴＴデータのうちハッシュ値が含まれていた領域を特定するための識別子を特定する。当該識別子は例えば、ハンドル値である。そして情報処理装置１０１は、通信装置１５１に対し、特定した識別子に対応する領域に含まれる値を直接要求し、当該値を取得する。このようにして、サービスディスカバリを開始せずにハッシュ値の取得を試みる方法を、以下、第２取得方法という。このとき情報処理装置１０１は、情報処理装置１０１がキャッシュ済みのＧＡＴＴ構成データと同じＧＡＴＴ構成データを通信装置１５１が有する場合は、キャッシュ済みのハッシュ値と同じ値を取得することになる。一方、情報処理装置１０１は、情報処理装置１０１がキャッシュ済みのＧＡＴＴ構成データと同じでないＧＡＴＴ構成データを通信装置１５１が有する場合は、キャッシュ済みのハッシュ値と異なる値を取得することになる。なおこのとき取得される値は、ハッシュ値ではあるがキャッシュ済みのハッシュ値と異なる値である場合もあるし、そもそもハッシュ値でない場合もある。そして情報処理装置１０１は、Ｓ１３０８では、このとき取得された情報と、キャッシュ済みのハッシュ値とが一致するか否かを判定する。そして情報処理装置１０１は、ＹＥＳと判定された場合、サービスディスカバリを完全に省略する。一方、情報処理装置１０１は、ＮＯと判定された場合、サービスディスカバリを完了させた後、Ｓ１３０９の処理に進む。なお情報処理装置１０１は、キャッシュ済みのＧＡＴＴ構成データが複数ある場合、ＧＡＴＴ構成データに基づく識別子の特定や当該識別子による情報の取得を、ＹＥＳ判定となるまで、最大でキャッシュ済みのＧＡＴＴ構成データの数分、複数回行っても良い。あるいは情報処理装置１０１は、キャッシュ済みのＧＡＴＴ構成データが複数ある場合、キャッシュ済みの複数のＧＡＴＴ構成データのうちＢＬＥ接続した通信装置１５１に対応するＧＡＴＴ構成データのみに基づいて上述の特定と取得を行っても良い。ＢＬＥ接続した通信装置１５１に対応するＧＡＴＴ構成データとは、言い換えれば、ＢＬＥ接続した通信装置１５１のＧＡＴＴ構成データである可能性が高いＧＡＴＴ構成データである。具体的には例えば、ＢＬＥ接続した通信装置１５１と同じ識別子を有する装置から取得されたＧＡＴＴ構成データである。識別子は例えば、装置の名称や機種名、装置のベンダー、装置が提供するサービス等を示す情報である。この形態であれば、キャッシュ済みのＧＡＴＴ構成データを有する装置に対するサービスディスカバリを完全に省略することが可能である。なお第２取得方法において取得される情報は、ハッシュ値でなくとも良い。例えば情報処理装置１０１は、キャッシュ済みのＧＡＴＴ構成データに基づいて、当該ＧＡＴＴ構成データに対応するＧＡＴＴデータのうちハッシュ値と異なる特定の値が含まれていた領域を特定するための識別子を特定しても良い。そして情報処理装置１０１は、通信装置１５１に対し、特定した識別子に対応する領域に含まれる値を直接要求し、当該値を取得しても良い。そして情報処理装置１０１は、このとき取得された情報と、キャッシュ済みの特定の値とが一致するか否かを判定しても良い。しかしながら、ハッシュ値以外の値は、ＧＡＴＴデータの構成が変わっていないにもかかわらず変更される可能性があるため、正確な判定が実行されるためには、ハッシュ値が用いられることが好ましい。
【００９２】
通信装置１５１のＧＡＴＴ構成データを使用することにより、情報処理装置１０１は、通信装置１５１との任意のＧＡＴＴ通信を実行することが可能となる。そこで情報処理装置１０１は、Ｓ１３０９で、通信装置１５１のＧＡＴＴ構成データに基づくＧＡＴＴ通信により、各種情報の通信を行う。具体的には情報処理装置１０１は、ＡＰモード１として動作している通信装置１５１とＷｉ−Ｆｉ接続するための第１の接続情報や、ＡＰモード２として動作している通信装置１５１とＷｉ−Ｆｉ接続するための第２の接続情報、通信装置１５１の識別情報等を取得する。なおＡＰモードとは、情報処理装置１０１内の所定のアクセスポイント（ＡＰ）を有効化し、情報処理装置１０１がＡＰとして動作するモードである。接続情報とは、具体的には例えば、ＳＳＩＤやパスワードである。また、通信装置１５１の識別情報は、例えば、通信装置１５１のシリアルナンバーや、通信装置１５１のＭＡＣアドレス、通信装置１５１のＢｏｎｊｏｕｒ名等である。なお情報処理装置１０１は、第２の接続情報を、Ｓ１３０９におけるＢＬＥ通信ではなく、後述のＳ１３１３におけるＷｉ−Ｆｉ通信によって取得しても良い。なお情報処理装置１０１は、通信装置１５１とのペアリングをまだ行っていない場合は、上述の各種情報を取得する前に、通信装置１５１とのペアリングを行っても良い。また情報処理装置１０１は、上述の各種情報を取得した後、通信装置１５１をＡＰモード１として動作させるための指示を、ＧＡＴＴ通信により通信装置１５１に送信する。これにより、通信装置１５１は、ＡＰモード１としての動作を開始する。なお本実施形態では、通信装置１５１は、ＡＰモード１として動作する場合、Ｗｉ−Ｆｉ接続には２．４ＧＨｚの周波数帯を用いるものとするが、５ＧＨｚの周波数帯が用いても良い。
【００９３】
Ｓ１３１０では、情報処理装置１０１は、解放要求を送信する。解放要求を受け取った通信装置１５１は、Ｓ１３１１にて解放応答を送信し、装置間のＢＬＥ接続を終了する。装置間のＢＬＥ接続が終了すると、情報処理装置１０１と通信装置１５１はそれぞれスキャナとアドバタイザに戻り、通信装置１５１は、アドバタイズ情報の送信を再開する。なおここでは、ＧＡＴＴ通信後にＢＬＥ接続を解除する形態を説明したが、この形態に限定されない。このとき、Ｓ１３１０とＳ１３１１の処理が省略され、ＢＬＥ接続が維持されても良い。
【００９４】
Ｓ１３１２では、情報処理装置１０１は、Ｓ１３０９で取得した第１の接続情報を用いることで、ＡＰモード１として動作している通信装置１５１と情報処理装置１０１との間のＷｉ−Ｆｉ接続を確立する。なお、情報処理装置１０１は、ＡＰモード１として動作している通信装置１５１と情報処理装置１０１との間のＷｉ−Ｆｉ接続を確立する前に、当該Ｗｉ−Ｆｉ接続を確立する前の情報処理装置１０１のＷｉ−Ｆｉ設定を保存しておく。
【００９５】
Ｓ１３１３では、情報処理装置１０１は、通信装置１５１を印刷用アプリ上に登録するためのＷｉ−Ｆｉ通信を実行する。具体的にはまず、情報処理装置１０１は、通信装置１５１を印刷用アプリ上に登録するための情報を、Ｗｉ−Ｆｉ接続を介して通信装置１５１から取得する。通信装置１５１を印刷用アプリ上に登録するための情報とは、例えば、通信装置１５１のケーパビリティに関する情報や、通信装置１５１のシリアルナンバー、ＭＡＣアドレス等である。また、通信装置１５１のケーパビリティに関する情報とは、例えば、通信装置１５１が印刷に使用可能な記録媒体に関する情報や、通信装置１５１が両面印刷を実行可能か否かを示す情報、通信装置１５１がカラー印刷を実行可能か否かを示す情報である。印刷用アプリ上に通信装置１５１が登録されることで、ユーザからジョブの送信指示を受け付けるためのボタンが有効化される。すなわち、情報処理装置１０１は、印刷用アプリ上に登録された通信装置１５１に対し、印刷用アプリによってジョブを送信することができる。また、印刷用アプリは、受信された通信装置１５１のケーパビリティに関する情報に基づいて、印刷設定画面を表示することができる。そして、印刷用アプリは、印刷設定画面において入力された印刷設定に基づいて、印刷ジョブを生成することができる。
【００９６】
その後Ｗｉ−Ｆｉ通信において、情報処理装置１０１は、ＡＰモード１としての動作を停止させるための指示を、通信装置１５１に、Ｗｉ−Ｆｉ接続を介して送信する。通信装置１５１は、当該指示を受信することにより、ＡＰモード１としての動作を停止し、通信装置１５１のＷｉ−Ｆｉ設定を、ＡＰモード１として動作する前の状態に戻す。なおこのとき、情報処理装置１０１も、情報処理装置１０１のＷｉ−Ｆｉ設定を、Ｓ１３１２にてＷｉ−Ｆｉ接続を確立する前の状態に戻す。具体的には、ＣＰＵ１０３は、Ｓ１３１２で保存した情報に基づき、情報処理装置１０１のＷｉ−Ｆｉの接続先を、Ｓ１３１２にてＷｉ−Ｆｉ接続を確立する前の接続先に戻す。なお情報処理装置１０１は、Ｓ１３１２にてＷｉ−Ｆｉ接続を確立する前に他のＷｉ−Ｆｉ接続が確立されていなかった場合は、単に、通信装置１５１と情報処理装置１０１との間のＷｉ−Ｆｉ接続を切断する。
【００９７】
このようにして、印刷アプリ上に、通信対象の通信装置１５１を登録することで、以後、情報処理装置１０１は、通信対象の通信装置１５１に対して、ジョブを送信することが可能となる。なお登録機能によって、通信装置１５１はＡＰモード２としての動作を開始する。そのため情報処理装置１０１は、ユーザからジョブの送信が指示された場合、第２の接続情報を用いて、ＡＰモード２として動作する通信装置１５１とＷｉ−Ｆｉ接続し、当該Ｗｉ−Ｆｉ接続を介してジョブを通信装置１５１に送信する。
【００９８】
図５は、情報処理装置１０１が実行する登録機能を示すフローチャートである。本処理は、ＣＰＵ１０３が、ＲＯＭ１０４又は情報処理装置１０１が備えるＨＤＤ（不図示）に記憶されている制御プログラムや印刷用アプリをＲＡＭ１０５にロードし、それらのプログラムを実行することで実現される。また本処理は、情報処理装置１０１において印刷用アプリが起動している状態で開始されるものとする。また本処理は、情報処理装置１０１と通信装置１５１との間でＢＬＥのペアリングが実行されていない状態で開始されるものとする。
【００９９】
Ｓ５０１では、ＣＰＵ１０３は、ユーザから、登録機能の実行指示を受け付ける。本処理は、Ｓ１３０１の処理に対応する。
【０１００】
Ｓ５０２では、ＣＰＵ１０３は、アドバタイズ情報を受信する。なおこのとき、情報処理装置１０１は、通信装置１５１からだけでなく、通信装置１５１以外の装置からも、アドバタイズ情報を受信することがある。本処理は、Ｓ１３０２〜Ｓ１３０４の処理に対応する。
【０１０１】
Ｓ５０３では、ＣＰＵ１０３は、登録機能の対象となる装置の選択を受け付けるための選択画面を表示部１０８に表示する。本処理は、Ｓ１３０５の処理に対応する。
【０１０２】
Ｓ５０４では、ＣＰＵ１０３は、選択画面に対して行われた入力に基づき、登録機能の対象となる装置を特定する。
【０１０３】
Ｓ５０５では、ＣＰＵ１０３は、Ｓ５０４で特定された登録機能の対象となる装置とのＢＬＥ接続を確立し、サービスディスカバリを開始する。本処理は、Ｓ１３０６の処理に対応する。
【０１０４】
Ｓ５０６では、ＣＰＵ１０３は、Ｓ５０４で特定された登録機能の対象となる装置からハッシュ値の取得を行う。本処理は、Ｓ１３０７の処理に対応する。
【０１０５】
Ｓ５０７では、ＣＰＵ１０３は、Ｓ５０６で取得されたハッシュ値が、既に取得済みのハッシュ値と同じか否かを判定する。ＣＰＵ１０３は、ＮＯ判定の場合、Ｓ５０８に進み、ＹＥＳ判定の場合、Ｓ５０４で特定された登録機能の対象となる装置に対するサービスディスカバリを中断し、Ｓ５０９に進む。本処理は、Ｓ１３０８の処理に対応する。
【０１０６】
Ｓ５０８では、ＣＰＵ１０３は、サービスディスカバリを継続し、残りのＧＡＴＴ構成データを取得し、キャッシュする。
【０１０７】
Ｓ５０９では、ＣＰＵ１０３は、Ｓ５０４で特定された登録機能の対象となる装置のＧＡＴＴ構成データに基づき、登録機能を実行する。本処理は、Ｓ１３０９〜Ｓ１３１３の処理に対応する。
【０１０８】
このように本実施形態では、情報処理装置１０１が予め自動でサービスディスカバリを行っている。そのため、登録機能のようなＧＡＴＴ通信を含む機能において、情報処理装置１０１と通信装置１５１との間でＢＬＥのペアリングが実行されていない状態であっても、少なくとも一部のサービスディスカバリを省略できる。ひいては、ＧＡＴＴ通信を含む機能を迅速に進めることができる。
【０１０９】
なお上述では、ＧＡＴＴ通信を含む機能として、登録機能を説明したが、これに限定されない。ユーザの指示に応じてＧＡＴＴ通信が行われる機能であれば、いずれの機能であっても良い。
【０１１０】
例えば、ＧＡＴＴ通信を含む機能として、ハンドオーバー機能が実行されても良い。ハンドオーバー機能は、ユーザからジョブの送信が指示された場合に実行される処理である。ハンドオーバー機能において、情報処理装置１０１は、通信装置１５１とＢＬＥ接続を確立し、ＧＡＴＴ通信によって通信装置１５１とＷｉ−Ｆｉ接続するための情報（例えば上述の第１の接続情報）を受信する。そして情報処理装置１０１は、受信した情報を用いて、通信装置１５１とＷｉ−Ｆｉ接続し、当該Ｗｉ−Ｆｉ接続を介してジョブを通信装置１５１に送信する。このようにハンドオーバー機能においても、本発明を適用することで、サービスディスカバリを省略することができる。
【０１１１】
また例えば、ＧＡＴＴ通信を含む機能として、Ｗｉ−Ｆｉのセットアップ機能が実行されても良い。Ｗｉ−Ｆｉのセットアップ機能において、情報処理装置１０１は、通信装置１５１とＢＬＥ接続を確立し、ＧＡＴＴ通信によって通信装置１５１に対して、外部アクセスポイントとＷｉ−Ｆｉ接続するための情報を送信する。これにより、通信装置１５１は、当該情報を用いて、外部アクセスポイントとＷｉ−Ｆｉ接続する。このとき通信装置１５１に接続させる外部アクセスポイントは、情報処理装置１０１がＷｉ−Ｆｉ接続している外部アクセスポイントであっても良いし、通信装置１５１が接続可能な外部アクセスポイントのリストから選択されたアクセスポイントであっても良い。後者の場合、情報処理装置１０１は、ＧＡＴＴ通信によって、通信装置１５１が接続可能な外部アクセスポイントのリストを通信装置１５１から取得し、取得したリストを表示部に１０８に表示することで、選択を受け付ける。このようにＷｉ−Ｆｉのセットアップ機能においても、本発明を適用することで、少なくとも一部のサービスディスカバリを省略することができる。
【０１１２】
また本実施形態では、Ｓ５０６〜Ｓ５０８の処理は、情報処理装置１０１のＯＳによって実行される処理であるものとする。すなわちＳ５０５にて、情報処理装置１０１のＯＳに対し、印刷用アプリによりＢＬＥ接続の確立が指示された場合、ハッシュ値の取得やサービスディスカバリを、ＯＳが自動で実行するものとする。しかしながらこの形態に限定されず、Ｓ５０６〜Ｓ５０８の処理が例えば印刷用アプリの指示のもと実行されても良い。
【０１１３】
（第２実施形態）
上述したように情報処理装置１０１は、自動でＧＡＴＴ構成データを取得する処理においては、アドバタイズ情報を受信した場合、当該アドバタイズ情報の送信元の装置から既にＧＡＴＴ構成データを取得しているか否かを判定する。そして情報処理装置１０１は、当該アドバタイズ情報の送信元の装置から既にＧＡＴＴ構成データを取得している場合は、ハッシュ値やＧＡＴＴ構成データの取得を行わない。しかしながら、通信装置１５１において、例えばファームアップデート等により、ＧＡＴＴデータの構造が変更されることがある。ＧＡＴＴデータの構造が変更された場合、情報処理装置１０１においてキャッシュしていた情報が使えなくなってしまう。そして、ＧＡＴＴ構成データがキャッシュされてから時間が経過している場合、ＧＡＴＴデータの構造が変更されている可能性が高い。そこで本実施形態では、ＧＡＴＴ構成データをキャッシュしてから一定時間経過している場合、ハッシュ値の取得やＧＡＴＴ構成データのキャッシュを再度実行する形態について説明する。なお、特に記載しない限り、本実施形態の通信システムの構成は、第１実施形態の通信システムの構成と同様であるものとする。
【０１１４】
図６は、情報処理装置１０１が実行する、ＧＡＴＴ構成データをキャッシュするための処理を示すフローチャートである。本処理は、ＣＰＵ１０３が、ＲＯＭ１０４又は情報処理装置１０１が備えるＨＤＤ（不図示）に記憶されている制御プログラムや印刷用アプリをＲＡＭ１０５にロードし、それらのプログラムを実行することで実現される。また本処理は、情報処理装置１０１において印刷用アプリの起動が指示されたことに基づいて開始される。
【０１１５】
Ｓ６０１〜Ｓ６０８までの処理は、Ｓ４０１〜Ｓ４０８までの処理と同様であるため説明を省略する。なおＳ６０７では、ＧＡＴＴ構成データに加え、ＧＡＴＴ構成データを取得した時間に関する情報もキャッシュされるものとする。
【０１１６】
Ｓ６０３がＮＯ判定だった場合に実行されるＳ６０９では、ＣＰＵ１０３は、Ｓ６０２で受信されたアドバタイズ情報の送信元の装置からＧＡＴＴ構成データを取得してから、所定の時間が経過したか否かを判定する。所定の時間とは例えば、一か月に相当する時間等である。ＣＰＵ１０３は、ＹＥＳ判定の場合、Ｓ６０４以降の処理を実行する。すなわちＣＰＵ１０３は、Ｓ６０２で受信されたアドバタイズ情報の送信元の装置からハッシュ値を取得し、当該装置のＧＡＴＴ構成データを取得済みかどうかを詳細に確認する。そしてＣＰＵ１０３は、時間経過により当該装置のＧＡＴＴ構成データが変更されていたら、改めて当該装置からＧＡＴＴ構成データを取得する。なおこの時ＣＰＵ１０３は、当該装置から以前に取得されて（最新でない）ＧＡＴＴ構成データを破棄しても良い。一方、ＮＯ判定の場合、Ｓ６０２に進み、当該装置から新たにハッシュ値やＧＡＴＴ構成データを取得することなく、他の装置からのアドバタイズ情報の受信を待つ。
【０１１７】
このような形態とすることで、前回ＧＡＴＴ構成データを取得してから時間が経過しており、通信装置１５１のＧＡＴＴデータの構成が変化している場合に、ＧＡＴＴ構成データを取得し直すことができる。
【０１１８】
（第３実施形態）
上述したように情報処理装置１０１は、自動でＧＡＴＴ構成データを取得する処理においては、アドバタイズ情報を受信した場合、当該アドバタイズ情報の送信元の装置から既にＧＡＴＴ構成データを取得しているか否かを判定する。そして情報処理装置１０１は、当該アドバタイズ情報の送信元の装置から既にＧＡＴＴ構成データを取得している場合は、ハッシュ値やＧＡＴＴ構成データの取得を行わない。通信装置１５１において、例えばファームアップデート等により、ＧＡＴＴデータの構造が変更されることがある。ＧＡＴＴデータの構造が変更された場合、情報処理装置１０１においてキャッシュしていた情報が使えなくなってしまう。そして、通信装置１５１が送信するアドバタイズ情報が、ＧＡＴＴ構成データが取得されたときに送信されていたアドバタイズ情報から変更されていた場合、ＧＡＴＴデータの構造が変更されている可能性が高い。そこで本実施形態では、通信装置１５１が送信するアドバタイズ情報が、ＧＡＴＴ構成データが取得されたときに送信されていたアドバタイズ情報から変更されていた場合、ハッシュ値の取得やＧＡＴＴ構成データのキャッシュを再度実行する形態について説明する。なお、特に記載しない限り、本実施形態の通信システムの構成は、第１実施形態の通信システムの構成と同様であるものとする。
【０１１９】
図７は、情報処理装置１０１が実行する、ＧＡＴＴ構成データをキャッシュするための処理を示すフローチャートである。本処理は、ＣＰＵ１０３が、ＲＯＭ１０４又は情報処理装置１０１が備えるＨＤＤ（不図示）に記憶されている制御プログラムや印刷用アプリをＲＡＭ１０５にロードし、それらのプログラムを実行することで実現される。また本処理は、情報処理装置１０１において印刷用アプリの起動が指示されたことに基づいて開始される。
【０１２０】
Ｓ７０１〜Ｓ７０８までの処理は、Ｓ４０１〜Ｓ４０８までの処理と同様であるため説明を省略する。なおＳ７０７では、ＧＡＴＴ構成データの取得元の装置が送信していたアドバタイズ情報も、ＧＡＴＴ構成データに紐づけてキャッシュされるものとする。
【０１２１】
Ｓ７０３がＮＯ判定だった場合に実行されるＳ７０９では、ＣＰＵ１０３は、Ｓ７０２で受信されたアドバタイズ情報と、Ｓ７０２で受信されたアドバタイズ情報の送信元の装置から過去に受信したアドバタイズ情報とが一致するか否かを判定する。上述したように、キャッシュされているＧＡＴＴ構成データには、アドバタイズ情報が紐づけられている。そのため、Ｓ７０２で受信されたアドバタイズ情報の送信元の装置から過去に受信したアドバタイズ情報として、すでにキャッシュ済みのアドバタイズ情報が用いられる。ＣＰＵ１０３は、ＹＥＳ判定の場合、Ｓ７０４以降の処理を実行する。すなわちＣＰＵ１０３は、Ｓ６０２で受信されたアドバタイズ情報の送信元の装置からハッシュ値を取得し、当該装置のＧＡＴＴ構成データを取得済みかどうかを詳細に確認する。そしてＣＰＵ１０３は、時間経過により当該装置のＧＡＴＴ構成データが変更されていたら、改めて当該装置からＧＡＴＴ構成データを取得する。なおこの時ＣＰＵ１０３は、当該装置から以前に取得されて（最新でない）ＧＡＴＴ構成データを破棄しても良い。一方、ＮＯ判定の場合、Ｓ７０２に進み、当該装置から新たにハッシュ値やＧＡＴＴ構成データを取得することなく、他の装置からのアドバタイズ情報の受信を待つ。
【０１２２】
このような形態とすることで、前回ＧＡＴＴ構成データを取得した時に送信されていたアドバタイズ情報が変更されており、通信装置１５１のＧＡＴＴデータの構成が変化している場合に、ＧＡＴＴ構成データを取得し直すことができる。
【０１２３】
（第４実施形態）
第１実施形態において、ハッシュ値の確認方法として第１取得方法と第２取得方法の２つを説明した。本実施形態では、いずれの方法を用いるかを状況に応じて適切に制御する形態について説明する。なお、特に記載しない限り、本実施形態の通信システムの構成は、第１実施形態の通信システムの構成と同様であるものとする。
【０１２４】
図８は、情報処理装置１０１が実行する登録機能を示すフローチャートである。本処理は、ＣＰＵ１０３が、ＲＯＭ１０４又は情報処理装置１０１が備えるＨＤＤ（不図示）に記憶されている制御プログラムや印刷用アプリをＲＡＭ１０５にロードし、それらのプログラムを実行することで実現される。また本処理は、情報処理装置１０１において印刷用アプリが起動している状態で開始される。
【０１２５】
Ｓ８０１〜Ｓ８０５、Ｓ８０６〜Ｓ８０９までの処理は、Ｓ５０１〜Ｓ５０５、Ｓ５０６〜Ｓ５０９までの処理と同様であるため説明を省略する。
【０１２６】
Ｓ８０５の後に実行されるＳ８１０では、ＣＰＵ１０３は、Ｓ８０５で情報処理装置１０１とＢＬＥ接続した通信装置１５１が、情報処理装置１０１がキャッシュ済みのＧＡＴＴ構成データに対応する装置か否かを判定する。情報処理装置１０１がキャッシュ済みのＧＡＴＴ構成データに対応する装置とは、例えば、キャッシュ済みのＧＡＴＴ構成データの取得元の装置と同じ識別子を有する装置である。識別子は例えば、装置の名称や機種名、装置のベンダー、装置が提供するサービス等を示す情報である。本実施形態では情報処理装置１０１は、ＧＡＴＴ構成データのキャッシュ時に、キャッシュされるＧＡＴＴ構成データに紐づけて、ＧＡＴＴ構成データの取得元が有する識別子も保存するものとする。ＣＰＵ１０３は、ＮＯ判定の場合、Ｓ８１１に進み、ＹＥＳ判定の場合、Ｓ８１２に進む。なおＣＰＵ１０３は、キャッシュ済みのＧＡＴＴ構成データを複数有している場合、複数のキャッシュ済みのＧＡＴＴ構成データそれぞれを用いて、本判定を行う。そして、通信装置１５１が、複数のキャッシュ済みのＧＡＴＴ構成データのうちいずれか１つでも対応していた場合は、ＹＥＳ判定となり、通信装置１５１が、複数のキャッシュ済みのＧＡＴＴ構成データのうち全てに対応していない場合は、ＮＯ判定となる。
【０１２７】
情報処理装置１０１とＢＬＥ接続した通信装置１５１が、キャッシュ済みのＧＡＴＴ構成データの取得元の装置と同じ識別子を有しない装置である場合、情報処理装置１０１は、通信装置１５１のＧＡＴＴ構成データを既にキャッシュしていない可能性が高い。また情報処理装置１０１が複数のＧＡＴＴ構成データをキャッシュしている場合、情報処理装置１０１は、当該複数のＧＡＴＴ構成データのうち、通信装置１５１のＧＡＴＴ構成データである可能性が高いＧＡＴＴ構成データを特定できない。通信装置１５１のＧＡＴＴ構成データである可能性が高いＧＡＴＴ構成データを特定できない状態で、第２取得方法を実行する場合は、通信装置１５１のＧＡＴＴ構成データをキャッシュ済みかどうかの判定に時間がかかってしまう。これは、この形態ではＣＰＵ１０３は、いずれかのＧＡＴＴ構成データを用いてハッシュ値の取得を試みた結果、ハッシュ値が取得できなかった場合、他のＧＡＴＴ構成データを用いて再びハッシュ値の取得を試みる必要があるためである。そのため、最大で、情報処理装置１０１がキャッシュしているＧＡＴＴ構成データの数だけ、第２取得方法によるハッシュ値の取得の試みを繰り返さなければならないためである。
【０１２８】
そのためＳ８１０がＮＯ判定の場合に実行されるＳ８１１では、ＣＰＵ１０３は、第１取得方法によってハッシュ値を取得する。すなわちＣＰＵ１０３は、サービスディスカバリを実行し、サービスディスカバリによって取得された少なくとも一部のＧＡＴＴ構成データに基づきハッシュ値が含まれる領域を特定してから、ハッシュ値の取得を試みる。その後、Ｓ８０７に進み、Ｓ８１１で取得された値と、既にキャッシュ済みのハッシュ値とが一致するか否かを判定する。
【０１２９】
一方、情報処理装置１０１とＢＬＥ接続した通信装置１５１が、キャッシュ済みのＧＡＴＴ構成データの取得元の装置と同じ識別子を有する装置である場合、情報処理装置１０１は、通信装置１５１のＧＡＴＴ構成データを既にキャッシュしている可能性が高い。また情報処理装置１０１が複数のＧＡＴＴ構成データをキャッシュしている場合、情報処理装置１０１は、当該複数のＧＡＴＴ構成データのうち、通信装置１５１のＧＡＴＴ構成データである可能性が高いＧＡＴＴ構成データを特定可能である。通信装置１５１のＧＡＴＴ構成データである可能性が高いＧＡＴＴ構成データを特定できる状態で、第２取得方法を実行すると、通信装置１５１からハッシュ値を迅速に取得することができる。
【０１３０】
そのためＳ８１０がＮＯ判定の場合に実行されるＳ８１１では、ＣＰＵ１０３は、第２取得方法によってハッシュ値を取得する。すなわちＣＰＵ１０３は、サービスディスカバリを実行せず、通信装置１５１のＧＡＴＴ構成データである可能性が高いキャッシュ済みのＧＡＴＴ構成データに基づきハッシュ値が含まれる領域を特定してから、ハッシュ値の取得を試みる。その後、Ｓ８０７に進み、Ｓ８１１で取得された値と、既にキャッシュ済みのハッシュ値とが一致するか否かを判定する。
【０１３１】
Ｓ８０７以降の処理は、Ｓ５０７以降の処理と同様である。
【０１３２】
このような形態とすることで、ハッシュ値の取得をより適切な方法で実行することができる。
【０１３３】
なお、Ｓ８１０の判定は、第１取得方法を用いるか第２取得方法を用いるかの判定に相当するが、当該判定が実行されるタイミングは限定されない。具体的には例えば、Ｓ８０４とＳ８０５の処理の間に、当該判定が実行されても良い。この場合ＣＰＵ１０３は、Ｓ８０４で登録対象として特定された装置が、情報処理装置１０１がキャッシュ済みのＧＡＴＴ構成データに対応する装置か否かを判定する。そしてＣＰＵ１０３は、ＹＥＳ判定であれば、Ｓ８０５の後にＳ８１２を実行し、ＮＯ判定であれば、Ｓ８０５の後にＳ８１１を実行する。
【０１３４】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１３５】
１０１  情報処理装置
１５１  通信装置
【図１】
2020198504.tif 000003
【図２】
2020198504.tif 000004
【図３】
2020198504.tif 000005
【図４】
2020198504.tif 000006
【図５】
2020198504.tif 000007
【図６】
2020198504.tif 000008
【図７】
2020198504.tif 000009
【図８】
2020198504.tif 000010
【図９】
2020198504.tif 000011
【図１０】
2020198504.tif 000012
【図１１】
2020198504.tif 000013
【図１２】
2020198504.tif 000014
【図１３】
2020198504.tif 000015