(本実施形態)
以下に、添付図面を参照しながら本実施形態について詳細に説明する。
[システム構成]
図1は、本実施形態に係る通信システムの全体構成図である。
この通信システム1は、第1の通信装置2、第2の通信装置3、及びデバイス5を有する。
このうち、第1の通信装置2と第2の通信装置3は、いずれも同一のユーザが所有しているスマートフォン、タブレット端末、及びパーソナルコンピュータ等の通信装置である。
この例では、ユーザが第1の通信装置2の操作を現に行っているものとする。また、第2の通信装置3は、他の通信装置の一例であって、ユーザが過去に電源を入れて操作をしたことのある通信装置である。
そして、第1の通信装置2と第2の通信装置3は、WLAN(Wave Local Area Network)、Wi-Fi Direct、及びBluetooth等の通信規格に従って相互に通信可能である。
一方、デバイス5は、第1の通信装置2と第2の通信装置3の各々に近距離無線通信で接続することが可能なデバイスである。デバイス5の種類は特に限定されない。例えば、キーボード、マウス、及びヘッドホン等をデバイス5として使用し得る。
また、近距離無線通信の例としては、Bluetooth、Wi-Fi Direct、及びMiracastがある。
以下では、近距離無線通信としてBluetoothを採用し、そのマルチペアリング機能によりデバイス5と各通信装置2、3とが予めペアリングされている場合を例にして説明する。
その場合、本実施形態では後述のような簡便な操作で各通信装置2、3のいずれか一方にデバイス5を接続する。
[ハードウェア構成]
図2は、第1の通信装置2のハードウェア構成図である。
なお、以下では第1の通信装置2と第2の通信装置3の各々のハードウェア構成が同じ場合を想定しているため、第2の通信装置3のハードウェア構成については省略する。
但し、後述の通信プログラムを起動することで同一の機能を実現できるのであれば、各通信装置2、3のハードウェア構成は異なっていてもよい。
図2に示すように、第1の通信装置2は、メインメモリ11、記憶部12、無線通信コントローラ13、近距離無線通信コントローラ14、タッチパネル15、ディスプレイ16、及びプロセッサ17を備える。
このうち、メインメモリ11は、例えばDRAM(Dynamic RAM)であって、その上に後述の通信プログラムが展開される。
また、記憶部12は、例えばeMMC(embedded Multi Media Card)等の不揮発性のストレージであり、通信プログラム20やOS(Operating System)プログラム30を記憶する。
なお、その通信プログラム20をコンピュータが読み取り可能な記録媒体18に記録させておき、プロセッサ17に記録媒体18の通信プログラム20を読み取らせるようにしてもよい。
そのような記録媒体18としては、例えばCD-ROM(Compact Disc - Read Only Memory)、DVD(Digital Versatile Disc)、及びUSB(Universal Serial Bus)メモリ等の物理的な可搬型記録媒体がある。また、フラッシュメモリ等の半導体メモリやハードディスクドライブを記録媒体18として使用してもよい。これらの記録媒体18は、物理的な形態を持たない搬送波のような一時的な媒体ではない。
更に、公衆回線、インターネット、及びLAN等に接続された装置に通信プログラム20を記憶させておき、プロセッサ17が通信プログラム20を読み出して実行するようにしてもよい。
上記した通信プログラム20とOSプログラム30の他に、記憶部12は、自装置とペアリング済のデバイス5の一覧を含む管理データ21を記憶する。
図3は、その管理データ21のデータ構造の一例について示す図である。
図3に示すように、管理データ21は、ユーザ識別子22、番号23、デバイス名24、接続先25、及びステータス26を有する。
このうち、ユーザ識別子22は、自装置を操作しているユーザを識別するための識別子であって、ユーザが任意に選んだ文字列を設定し得る。この例では、ユーザ識別子22として文字列「User A」がユーザ識別子22に設定されている。
また、デバイス名24は、自装置とペアリング済のデバイス5の名称である。デバイス5が複数存在する場合には、各デバイス5を一意に識別する文字列をそのデバイス名24として採用し得る。
図3の例では、デバイス5としてキーボードとマウスの二つが存在しており、その各々のデバイス名24が「Bluetooth keyboard 123456」、「Bluetooth mouse ABCD」である場合を例示している。
更に、各デバイス名24には、ペアリングが行われた順に番号23が付される。
そして、接続先25は、デバイス5とBluetoothで接続されている無線通信装置の名称である。図3の例では、自装置と接続されているデバイス(Bluetooth keyboard 123456)5の接続先25には文字列「自装置」が格納される。また、自装置とは異なる他の無線装置と接続されているデバイス(Bluetooth mouse ABCD)5の接続先25には、当該他の無線装置の名称である文字列「装置A」が格納される。
更に、ステータス26は、デバイス5と各無線通信装置とがBluetoothで接続されているか否かを示す情報であり、接続されている場合には文字列「接続済」が格納され、未接続の場合には何も格納されない。
再び図2を参照する。
無線通信コントローラ13は、プロセッサ17と第2の通信装置3との通信を制御するコントローラである。その通信の規格としては、前述のようにWLAN、Wi-Fi Direct、及びBluetoothがある。
そして、近距離無線通信コントローラ14は、プロセッサ17とデバイス5との間で行われるBluetoothによる通信を制御するコントローラである。
一方、タッチパネル15は、ユーザがタッチすることにより入力を行う入力デバイスである。入力デバイスはタッチパネル15に限定されない。タッチパネル15に代えてデジタイザを入力デバイスとして使用してもよいし、タッチパネル15とデジタイザの両方を入力デバイスとして使用してもよい。
更に、ディスプレイ16は、ユーザに各種の情報を表示する表示デバイスである。
また、プロセッサ17は、自装置の各部を制御したり、メインメモリ11と協働して通信プログラム20を実行したりするCPU(Central Processing Unit)である。
そのプロセッサ17には、グラフィックコントローラ17a、メモリコントローラ17b、ストレージコントローラ17c、USB(Universal Serial Bus)コントローラ17d、及びPCI (Peripheral Component Interconnect) Expressコントローラ17eが設けられる。
このうち、グラフィックコントローラ17aは、ディスプレイ16に表示されるグラフィック画像を制御するコントローラである。そのグラフィック画像は、メインメモリの一部に割り当てられたVRAM(Video RAM)領域を利用して表示され、グラフィックコントローラ17aはそのVRAM領域を管理する機能も有する。
また、メモリコントローラ17bは、メインメモリ11を制御するコントローラであって、通信プログラム20を実行する際にメインメモリ11に一時的にデータを書き込んだり、メインメモリ11からデータを読み出したりする。
そして、ストレージコントローラ17cは、記憶部12を制御するコントローラであって、記憶部12に対してデータの書き込みや読み出しを行う。
USBコントローラ17dは、USB規格に従って近距離無線通信コントローラ14とプロセッサ17との間のデータ転送を制御する。なお、タッチパネル15とプロセッサ17との間のデータ転送も、USBコントローラ17dによって制御される。
更に、PCI Expressコントローラ17eは、PCI Express規格に従って無線通信コントローラ13とプロセッサ17との間のデータ転送を制御する。
なお、この例ではプロセッサ17の内部に各コントローラ17a〜17eを設けたが、これらのコントローラ17a〜17eをプロセッサ17とは別のチップとして設けてもよい。
[機能構成]
図4は、第1の通信装置2と第2の通信装置3の各々において実行されるプログラムの構成とその機能を示す図である。
図4に示すように、各通信装置2、3においては、プロセッサ17とメインメモリ11とが協働することにより、通信プログラム20とOSプログラム30とが実行される。
このうち、OSプログラム30を実行することにより、各通信装置2、3には接続制御部31とデバイス情報格納部32が実現される。
接続制御部31は、近距離無線通信コントローラ14(図2参照)を介して自装置をBluetoothでデバイス5に接続する接続部31aと、その接続を解除する接続解除部31bとを有する。
そして、デバイス情報格納部32にはデバイス情報Dが格納される。デバイス情報Dは、管理データ21(図3参照)を作成するのに必要なデータであって、自装置とペアリング済のデバイス5のデバイス名と、自装置とBluetoothで現に接続しているデバイス5のデバイス名とが含まれる。
一方、通信プログラム20は、アプリケーションプログラム42とサービスプログラム43とを有する。
サービスプログラム43は、メインメモリ11(図2参照)の上に常駐しているプログラムであって、第1の通信装置2の電源を入れることにより起動する。
そして、このようにサービスプログラム43を起動することで、インターフェース部51、通信部52、及び要求部53の各機能が実現される。
インターフェース部51は、アプリケーションプログラム42との間でデータの受け渡しをするためのインターフェースである。
また、通信部52は、他の通信装置と通信を行う機能を有しており、送信部52a、受信部52b、及び応答部52cを備える。
このうち、送信部52aは、自装置の周囲に存在する他の通信装置を検出する検出信号SDをブロードキャストする。そのような検出信号SDとしては、例えばpingコマンドがある。
そして、その検出信号SDに対する応答が他の通信装置からあった場合には、送信部52aは、他の通信装置がBluetoothによりデバイス5と接続しているか否かを確認するための問い合わせSQを当該他の通信装置に送信する。
この問い合わせSQの結果、他の通信装置がデバイス5とBluetoothにより接続していることが判明した場合には、送信部52aは、当該他の通信装置に対してデバイス5との接続の解除を要求する解除要求SRを送信する。
一方、受信部52bは、他の通信装置から送信された前述の解除要求SRと検出信号SDとを受信する。
更に、応答部52cは、受信部52bが他の通信装置から検出信号SDを受信したときに、その検出信号SDを正しく受信できたことを示す応答を他の通信装置に返す。その応答を受信することにより、例えば第1の通信装置2が、自装置の周囲に存在する第2の通信装置3を検出することができる。
その他にも、応答部52cは、解除要求SRを受けて自装置とデバイス5との接続を解除したときに、接続を解除した旨の応答を他の通信装置に返す。
そして、要求部53は、OSプログラム30が提供するAPI(Application Programming Interface)を介して、自装置とデバイス5との接続を要求する接続要求RCや、その接続の解除を要求する接続解除要求RDを接続制御部31に通知する。
なお、接続制御部31は、接続要求RCや接続解除要求RDに従って自装置とデバイス5とを接続したりその接続を解除したりしたときは、その旨の応答を要求部53に返す。
一方、アプリケーションプログラム42は、ユーザが明示的に起動を指示することにより実行されるプログラムであって、受付部61、表示部62、データ格納部63、データ取得部64、及び接続指示部65の各機能を実現する。
このうち、受付部61は、ユーザがBluetoothで接続したいと希望するデバイス5がある場合に、ユーザからそのデバイス5の指定を受け付ける。
また、表示部62は、記憶部12に記憶されている管理データ21(図3参照)を利用して、自装置とペアリング済のデバイス5の一覧をディスプレイ16に表示する。
そして、データ格納部63は、前述のデバイス情報Dから管理データ21(図3参照)を作成してそれを記憶部12に格納する。
データ取得部64は、OSプログラム30が提供するAPIを介して、デバイス情報格納部32からデバイス情報Dを取得し、そのデバイス情報Dをデータ格納部63に渡す。
そして、接続指示部65は、受付部61がユーザからデバイス5の指定を受け付けたときに、そのデバイス5と自装置とをBluetoothで接続するように指示する接続指示SCを要求部53に通知する。
[表示例]
次に、表示部62がディスプレイ16に表示する情報について説明する。
図5は、ディスプレイ16の画面表示例を示す図である。
図5に示すように、ディスプレイ16にはウィンドウ34が表示される。
ウィンドウ34は、ユーザからデバイス5の指定を受け付けるユーザインターフェースであって、アプリケーションプログラム20を起動することによりディスプレイ16に表示される。
そのウィンドウ34には、自装置とペアリング済のデバイス5の一覧が表示される。
ウィンドウ34の構成は特に限定されない。この例では、チェックボックス35、デバイス名36、接続状態37、接続要求ボタン38、及び閉じるボタン39の各要素をウィンドウ34に表示させる。
このうち、デバイス名36は、自装置とペアリング済のデバイス5の名称であって、管理データ21(図3参照)におけるデバイス名24と同一である。
また、接続状態37は、デバイス名36に表示されているデバイス5と自装置とがBluetoothにより接続されているか否かを示し、接続されている場合には「接続済」と表示され、接続されていない場合には「未接続」と表示される。
「未接続」のデバイス5に自装置をBluetoothで接続したい場合には、ユーザは当該デバイス5の横のチェックボックス36をチェックする。この状態でユーザが接続要求ボタン38を押下すると、接続指示部65が、チェックが入ったデバイス5と自装置とをBluetoothで接続するように指示する接続指示SCを要求部53に通知する。
なお、ユーザがBluetoothで接続したいと希望するデバイス5が複数ある場合には、複数のデバイス5の横のチェックボックス36の各々にチェックを入れればよい。
また、アプリケーションプログラム20を終了したい場合には、ユーザは閉じるボタン39を押下すればよい。
[データフロー]
図6は、本実施形態におけるデータフローを模式的に示す図である。
図6に示すように、第1の通信装置2と第2の通信装置3の各々には同一の通信プログラム20が実装されており、これにより各通信装置2、3には同一のアプリケーションプログラム42と同一のサービスプログラム43が実行される。
なお、OSプログラム30については、前述の接続制御部31とデバイス格納制御部32の各機能が実現できるのであれば、各通信装置2、3が実装するOSプログラム30は同一でなくてもよい。
本実施形態には、アプリケーションプログラム42とサービスプログラム43との間の第1のデータフロー67と、OSプログラム30とサービスプログラム43との間の第2のデータフロー68と、各通信装置2、3間の第3のデータフロー69とがある。
このうち、第1のフロー67には、例えば、接続指示部65が要求部53に通知する接続指示SCが含まれる。
また、第2のデータフロー68には、例えば、要求部53が接続制御部53に通知する接続要求RCや接続解除要求RDが含まれる。
一方、第3のデータフロー69には、例えば、送信部52aが相手方の通信装置に対してデバイス5との接続の解除を要求する解除要求SRが含まれる。
[通信方法]
次に、本実施形態に係る通信方法について説明する。
<ユーザ処理>
まず、本実施形態に係る通信方法のうちユーザが関与する処理について説明する。
図7は、ユーザが関与する処理について説明するためのフローチャートである。
以下では、通信方法の説明に併せて、処理の進行に伴い管理データ21の内容がどのように変わっていくのかについても説明する。図8及び図9は、以下の各ステップにおける管理データ21の内容を模式的に示す図である。
まず、図7のステップS101において、ユーザが本実施形態に係る通信プログラム20を起動する。
この時点では、図8(a)に示すように、管理データ21は初期状態にあり、管理データ21には何も格納されていない。
次に、図7のステップS102に移り、ユーザがユーザ識別子を第1の通信装置2に入力する。
これにより、図8(b)に示すように、管理データ21のユーザ識別子22に、ユーザが入力した文字列「User A」が入力される。
続いて、図7のステップS103に移り、第1の通信装置2のデータ取得部64がデバイス情報格納部32からデバイス情報Dを取得する。前述のようにそのデバイス情報Dには自装置とペアリング済のデバイス5の名称が含まれる。
そして、データ格納部63が、そのデバイス情報Dに基づいて管理データ21の各要素にデータを格納する。
図9は、本ステップを終了した時点における管理データ21を模式的に示す図である。
図9に示すように、本ステップにより管理データ21のデバイス名24に自装置とペアリング済のデバイス5の名称が格納される。
また、そのデバイス5と自装置とがBluetoothで接続済の場合には、管理データ21の接続先25に文字列「自装置」が格納されると共に、ステータス26に文字列「接続済」が格納される。
図10(a)は、この時点におけるウィンドウ34の例を示す図である。
図10(a)に示すように、デバイス名36には、ペアリング済のデバイス5として「Bluetooth keyboard 123456」、「Bluetooth mouse ABCD」、及び「My headphone Ver 1.0」が表示されている。
また、この例では、「Bluetooth keyboard 123456」の接続状態37が「接続済」であり、「Bluetooth mouse ABCD」と「My headphone Ver 1.0」の接続状態37が「未接続」となっている。
次に、図7のステップS104に移り、ユーザがBluetoothで接続したいと希望するデバイス5の横のチェックボックス35にチェックを入れる。
図10(b)は、このようにチェックを入れた状態でのウィンドウ34の例を示す図である。
図10(b)に示すように、この例では、ユーザが「Bluetooth mouse ABCD」に接続したいと希望しており、その「Bluetooth mouse ABCD」の横のチェックボックス35にチェックが入っている。
そして、このようにチェックすることにより、第1の通信装置2の受付部61が、ペアリング済の複数のデバイス5のなかからユーザの指定を受け付けることになる。これにより、ユーザは複数のデバイス5のうち自分が接続を希望するものを簡単に選ぶことができ、ユーザの便宜に資することができる。
この後は、以下のようにして通信システム1の処理に移り、ユーザが指定したデバイス5に第1の通信装置2がBluetoothで接続する。
<通信システムの処理>
図11は、本実施形態に係る通信方法について説明するためのシーケンス図である。
以下では、通信方法の説明に併せて、処理の進行に伴い管理データ21の内容がどのように変わっていくのかについても説明する。図12(a)、(b)は、以下の各ステップにおける管理データ21の内容を模式的に示す図である。
以下に、図11の各ステップについて説明する。
(S111)
第1の通信装置2の送信部52aが検出信号SDをブロードキャストすることにより、第2の通信装置3の検出を試みる。
(S112)
第2の通信装置3の受信部52bが検出信号SDを受信する。そして、第2の通信装置3の応答部52cが、検出信号SDを正しく受信できたことを示す応答を第1の通信装置2に返す。
(S113)
第1の通信装置2の送信部52aが、第2の通信装置3に対して問い合わせSQを送信することにより、ユーザが指定したデバイス5と第2の通信装置3とがBluetoothで接続しているか否かを第2の通信装置3に問い合わせる。
このとき、第1の通信装置2の送信部52aは、自装置が記憶しているユーザ識別子22(図3参照)を問い合わせSQに含めて第2の通信装置3に送信する。
(S114)
第2の通信装置3の応答部52cが、問い合わせSQに含まれているユーザ識別子22が自装置に記憶されているのと同一である場合に、その問い合わせSQに対して応答する。
但し、問い合わせSQに含まれているユーザ識別子22が第2の通信装置3に記憶されているのと異なる場合には、第1の通信装置2と第3の通信装置3とを使用しているユーザが異なることになる。この場合にデバイス5の接続先を第1の通信装置2に変更すると、異なるユーザがデバイス5を奪い合うことになるので、この場合には第2の通信装置3の応答部52cは問い合わせSQに対して応答しない。
一方、各通信装置2、3のユーザ識別子が同一の場合には、応答部52cは、自装置がデバイス5と接続しているか否かに応じて、「接続している」と「接続していない」のいずれかの内容を第1の通信装置2に返す。
図12(a)は、「接続している」との応答を受けたときの第1の通信装置2の管理データ21を模式的に示す図である。
図12(a)の例では、「Bluetooth mouse ABCD」と接続している旨の応答を第2の通信装置3から受けた場合を示している。この場合は、第1の通信装置2のデータ格納部63が、第2の通信装置3の名称である「装置A」を「Bluetooth mouse ABCD」の接続先25に格納する。
(S115)
ステップS114において「接続している」との応答を受け、第2の通信装置3とデバイス5とがBluetoothで接続していることが判明した場合には、第1の通信装置2の送信部52aは、第2の通信装置3に対して解除要求SRを送信する。
このとき、送信部52aは、自装置が記憶しているユーザ識別子22を解除要求SRに含めて第2の通信装置3に送信する。
(S116)
解除要求SRを受けた第2の通信装置3の接続解除部31bが、接続を解除する旨の通知を当該デバイス5に通知することにより、自装置とデバイス5との接続を解除する。
但し、その接続要求SRに含まれるユーザ識別子22が自装置に記憶されているのと異なる場合には、異なるユーザがデバイス5を奪い合うのを防止するために、第2の通信装置3の接続解除部31bはデバイス5との接続を解除しない。
(S117)
第2の通信装置3の応答部52cが、第1の通信装置2の受信部52bに対してデバイス5との接続を解除した旨の応答を返す。
(S118)
その応答を第1の通信装置2の受信部52bが受け、更に第1の通信装置2の接続部31aがBluetoothにより自装置とデバイス5とを接続する。
図12(b)は、このように自装置とデバイス5とを接続したときの第1の通信装置2の管理データ21を模式的に示す図である。
図12(b)の例では、本ステップにより、デバイス5の「Bluetooth mouse ABCD」と自装置とが接続した場合を示している。
この場合は、データ格納部63が、「Bluetooth mouse ABCD」の接続先25に「自装置」を格納すると共に、「Bluetooth mouse ABCD」のステータス26に「接続済」を格納する。
一方、図13は、このように第1の通信装置2とデバイス5とを接続したときのディスプレイ16の画面表示例を示す図である。
図13に示すように、上記のように第1の通信装置2と「Bluetooth mouse ABCD」とを接続すると、その「Bluetooth mouse ABCD」の接続状態37が「接続済」となる。
以上により、本実施形態に係る通信方法の基本ステップを終了する。
上記した通信方法によれば、第1の通信装置2に接続させたいデバイス5をユーザが指定することにより、第1の通信装置2が第2の通信装置3に解除要求SRを送信してデバイス5との接続を解除させ、第1の通信装置2とデバイス5とが接続される。
そのため、第1の通信装置2とデバイス5とを接続させるためにユーザが第2の通信装置3を操作する必要がなく、簡便な操作で第1の通信装置2にデバイス5を接続することが可能となり、ユーザの利便性が向上する。
なお、この例では、ステップS113の問い合わせSQとは別のステップで解除要求SRを第2の通信装置3に送信したが、ステップS113において問い合わせSQと解除要求SRの両方の内容を含む指示を第2の通信装置3に送信し、処理の高速化を図ってもよい。
その指示においては、例えば、第2の通信装置3に対してデバイス5と接続しているかを問い合わせ、もし接続しているならばデバイス5との接続を解除するように指示すればよい。
<第1の通信装置2の処理>
次に、上記の図11で説明したシステム1の処理のうち、第1の通信装置2の処理について詳細に説明する。
その第1の通信装置2の処理には、以下のように第1例と第2例とがある。
・第1例
図14は、第1例に係る第1の通信装置の処理について説明するためのフローチャートである。
なお、図14において、図11のシーケンス図におけるのと同じステップには図11におけるのと同じステップ番号を付し、以下ではその説明を簡略化する。
まず、ステップS111において、送信部52aが検出信号SDをブロードキャストすることにより、第2の通信装置3の検出を試みる。
次に、ステップS121に移り、受信部52bが検出信号SDに対する応答を第2の通信装置3から受け取り、その応答を送信部52aに渡す。そして、送信部52aは、その応答を受け取ったときに第2の通信装置3を検出したと判断し、応答を受け取らなかったときに第2の通信装置3を検出しなかったと判断する。
なお、第2の通信装置3が複数存在する場合には、その各々に対して検出したかどうかを判断する。
ここで、検出されない(NO)と判断された場合には、第1の通信装置2の周囲に第2の通信装置3は存在しないことになる。このように第2の通信装置3が存在しない場合には、第2の通信装置3がデバイス5とBluetoothで接続しているとは考えられないため、第2の通信装置3に対してデバイス5との接続を解除するように要求する必要はない。
よって、この場合はステップS118に移り、第1の通信装置2の接続部31aがBluetoothにより自装置とデバイス5とを接続する。
一方、ステップS121で検出された(YES)と判断された場合には、第1の通信装置2の周囲に第2の通信装置3が存在しており、その第2の通信装置3がデバイス5とBluetoothで接続している可能性がある。
そこで、この場合にはステップS122のデバイスチェックループに入り、以下のようにして第2の通信装置3とデバイス5とが接続しているかどうかをチェックする。
まず、ステップS113において、ステップS121で存在が確認された各々の第2の通信装置3に対し、ユーザが指定したデバイス5とBluetoothで接続しているか否かの問い合わせSQを送信部52aが送信する。
次に、ステップS123に移り、受信部52bが問い合わせSQに対する応答(S114)を第2の通信装置3から受け取り、その応答を送信部52aに渡す。そして、送信部52aは、その応答の内容に応じて、ユーザが指定したデバイス5と第2の通信装置3とが接続しているか否かを判断する。
例えば、第2の通信装置3からの応答が「接続している」の場合には、送信部52aは第2の通信装置3とデバイス5とが接続していると判断する。また、その応答が「接続していない」の場合には、送信部52aは、第2の通信装置3とデバイス5とが接続していないと判断する。
そして、本ステップで接続されていない(NO)と判断された場合には、ステップS124に移る。
ステップS124では、デバイスチェックループを抜ける条件を満たしているか否かが送信部52aにより判断される。その条件は、ユーザが指定したデバイス5とBluetoothで接続されていない全ての第2の通信装置3に対してステップS113を行うことである。
ここで、デバイスチェックループを抜ける条件が満たされていると判断された場合には、ステップS121で存在が確認された全ての第2の通信装置3が、ユーザが指定したデバイス5とBluetoothで接続されていないということになる。
よって、この場合には、第2の通信装置3に対してデバイス5との接続を解除するように要求する解除要求SRを送信する必要がない。
そこで、ステップS118に移り、第1の通信装置2の接続部31aがBluetoothにより自装置とデバイス5とを接続する。
一方、ステップS123において接続されている(YES)と判断された場合には、ステップS115に移る。
ステップS115においては、前述のように送信部52aが第2の通信装置3に対して解除要求SRを送信する。
そして、ステップS125に移り、受信部52bが、デバイス5との接続を解除した旨の応答を第2の通信装置3から受信する。
その応答を受けて、前述のステップS118において自装置をデバイス5に接続する。
以上により、第1の通信装置の処理を終える。
・第2例
本例では、以下のようにして第1例よりも処理の高速化を図る。
図15は、第2例に係る第1の通信装置の処理について説明するためのフローチャートである。
なお、図15において、図11のシーケンス図や図14のフローチャートにおけるのと同じステップにはこれらの図におけるのと同じステップ番号を付し、以下ではその説明を簡略化する。
この例では、図14のステップS111の前に、以下のようにステップS131とステップS132とを行う。なお、ステップS111以降の処理は、図14の例と同じである。
まず、ステップS131において、受信部52bが、デバイス5が発信するアドバタイズメントパケットの検出を試みる。
アドバタイズメントパケットは、デバイス5がBluetoothで接続可能な状態にあることを通報する通報信号の一例であって、他の通信装置とBluetoothで接続されていないデバイス5がブロードキャストする。
そして、受信部52bは、アドバタイズメントパケットを検出できた場合にはそれを送信部52aに渡し、検出できなかった場合には送信部52bに何も渡さない。
次に、ステップS132に移り、送信部52aが、アドバタイズメントパケットが検出された否かを判断する。
ここで、検出された(YES)と判断された場合には、デバイス5は第2の通信装置3とBluetoothで接続可能な状態にあるので、デバイス5との接続の解除を要求する解除要求SRを第1の通信装置2が第2の通信装置3に送信する必要はない。
そこで、この場合には、ステップS111以降を行わず、解除要求SRを送信するステップS115をスキップする。
その後に、図14の例と同様にステップS118を行うことにより、接続部31aがBluetoothにより自装置とデバイス5とを接続する。
一方、ステップS132において検出されない(NO)と判断された場合には、デバイス5が第2の通信装置3とBluetoothで接続していることになる。
よって、この場合は、図14の例と同様にしてステップS111に移り、送信部52aが検出信号SDをブロードキャストすることにより第2の通信装置3の検出を試みる。
そして、ステップS121に移り、第1の通信装置2の送信部52aが、第2の通信装置3が検出されたか否かを判断する。
ここで、NOと判断された場合には、第1の通信装置2の周囲には接続可能なデバイス5も第2の通信装置3も存在しないことになる。よって、この場合には、第1の通信装置2がデバイス5と接続することができないので、処理を終了する。
一方、ステップS121においてYESと判断された場合には、第1例と同様にしてデバイスチェックループS122以降の処理を行う。
以上説明した本例によれば、ステップS132においてアドバタイズメントパケットを検出した場合には、ステップS115をスキップすることにより第2の通信装置2に解除要求SRを送信しないので、第1例よりも処理の高速化を図ることができる。
<第2の通信装置3の処理>
次に、上記の図11で説明したシステム1の処理のうち、第2の通信装置3の処理について詳細に説明する。
その処理には、問い合わせSQを受信したときの処理と、解除要求SRを受信した処理とがある。
・問い合わせSQを受信したとき
図16は、第1の通信装置2から問い合わせSQを受信したときの第2の通信装置3の処理について説明するためのフローチャートである。
まず、ステップS141において、問い合わせSQに含まれるユーザ識別子22が自装置に記憶されているのと同一であるか否かを受信部52bが判断する。
ここで、同一ではない(NO)と判断された場合には、第1の通信装置2と第2の通信装置3の各々のユーザが異なるということになる。
この場合に第1の通信装置2にデバイス5を接続させてしまうと、第2の通信装置3のユーザがデバイス5を使用できなくなってしまう。よって、この場合は、応答部52cが問い合わせSQに対して応答をすることなく処理を終える。
一方、同一である(YES)と判断された場合にはステップS142に移る。
ステップS142においては、データ取得部64が、デバイス情報格納部32からデバイス情報Dを取得することにより、自装置が現にBluetoothで接続しているデバイス5を特定する。
次に、ステップS143に移り、ステップS142で特定したデバイス5の中に問い合わせSQで接続の有無を確認されているデバイス5が含まれている否かを応答部52cが判断することで、問い合わせSQ中のデバイス5に自装置が接続されているかを判断する。
ここで、接続されている(YES)と判断したした場合にはステップS144に移る。
ステップS144においては、応答部52cが、問い合わせを受けたデバイス5と自装置とが「接続している」との応答を第1の通信装置2に返す。
一方、ステップS143において接続されていない(NO)と判断した場合には、ステップS145に移り、問い合わせを受けたデバイス5と自装置とが「接続していない」との応答を応答部52cが第1の通信装置2に返す。
以上により、問い合わせSQを受信したときの第2の通信装置3の処理を終える。
上記した第2の通信装置3の処理によれば、第1の通信装置2から受けた問い合わせSQに含まれるユーザ識別子22が自装置に記憶されているのと異なる場合には、第2の通信装置3は第1の通信装置2に応答をせずに処理を終了する。
そのため、第1の通信装置3と第2の通信装置5の各々のユーザが異なる場合に、デバイス5の接続先が第2の通信装置5から第1の通信装置3に変わることがなく、異なるユーザがデバイス5を奪い合うのを防止できる。
・解除要求SRを受信したとき
図17は、第1の通信装置2から解除要求SRを受信したときの第2の通信装置3の処理について説明するためのフローチャートである。
まず、ステップS151において、解除要求SRに含まれるユーザ識別子22が自装置に記憶されているのと同一であるか否かを受信部52bが判断する。
ここで、同一ではない(NO)と判断された場合には、第1の通信装置2と第2の通信装置3の各々のユーザが異なるということになる。
よって、この場合には、第2の通信装置3を使用しているのとは別のユーザによって第2の通信装置3とデバイス5との接続が解除されるのを防ぐために、接続解除部31bが自装置とデバイス5との接続を解除することなく処理を終える。
一方、同一である(YES)と判断された場合には、ステップS116に移り、要求部53が接続制御部31に接続解除要求RDを通知する。そして、その接続解除要求RDを受けた接続解除部31bが、接続を解除する旨の通知を当該デバイス5に通知することにより、自装置とデバイス5との接続を解除する。
次に、ステップS153に移り、自装置とデバイス5との接続を解除したことを示す接続制御部31からの応答を要求部53が待つ。
そして、その応答を受けた後に、ステップS117に移り、応答部52cが、第1の通信装置2に対してデバイス5との接続を解除した旨の応答を返す。
以上により、解除要求SRを受信したときの第2の通信装置3の処理を終える。
上記した第2の通信装置3の処理によれば、第1の通信装置2から受けた解除要求SRに含まれるユーザ識別子22が自装置に記憶されているのと異なる場合には、第2の通信装置3はデバイス5との接続を解除しない。
そのため、第2の通信装置3を使用しているのとは別のユーザによって第2の通信装置3とデバイス5との接続が解除されるのを防ぐことができる。
[シナリオ]
次に、本実施形態を適用し得る様々なシナリオについて説明する。
<第1のシナリオ>
図18(a)、(b)は、第1のシナリオについて模式的に説明するための図である。
このうち、図18(a)は、デバイス5の接続先を変更する前の図であり、図18(b)は、デバイス5の接続先を変更した後の図である。
図18(a)、(b)に示すように、この例では、第1の通信装置2がスマートフォンであり、第2の通信装置3としてタブレット端末とパーソナルコンピュータ(PC)の二つがある場合を想定している。
また、デバイス5としては、キーボード、マウス、及びヘッドホンの三つを想定している。
このシナリオでは、キーボードとマウスの各々をタブレット端末に接続したまま、ヘッドホンの接続先をパーソナルコンピュータ(PC)からヘッドホンに切り替える。このような状況は、例えば、自宅ではヘッドホンをパーソナルコンピュータ(PC)に接続して使用し、外出時にはスマートフォンで音楽を聴くためにスマートフォンにヘッドホンを接続する場合に想定される。
図19は、このシナリオを実現するための通信システム1のシーケンス図である。
なお、このシナリオは、既に図7のユーザ処理が終了しており、かつ図11のステップS111とS112が終了して第1の通信装置2が第2の通信装置3を既に検出していることを前提としている。これについては後述の第2のシナリオについても同様である。
以下に、図19のシーケンス図の各ステップについて説明する。
(S211)
第1の通信装置2の接続指示部65が、サービスプログラム43に対して、自装置とデバイス(ヘッドホン)5とをBluetoothで接続するように指示する接続指示SCを通知する。
(S212)
図11のステップS113と同様に、第1の通信装置2の送信部52aが、第2の通信装置(タブレット端末)3のサービスプログラム43に対して問い合わせSQを送信する。
その問い合わせSQは、デバイス(ヘッドホン)5と第2の通信装置(タブレット端末)3とがBluetoothで接続しているか否かについての問い合せである。
(S213)
図11のステップS114と同様に、第2の通信装置(タブレット端末)3の応答部52cが、問い合わせSQに対して応答する。
ここでは、第2の通信装置(タブレット端末)3はデバイス(ヘッドホン)5とBluetoothで接続していないので、その応答内容は「接続していない」となる。
(S214)
デバイス(ヘッドホン)5の接続先を探すため、ステップS212と同様に第1の通信装置2の送信部52aが第2の通信装置(PC)3のサービスプログラム43に対して問い合わせSQを送信する。
この問い合わせSQは、デバイス(ヘッドホン)5と第2の通信装置(PC)3とがBluetoothで接続しているか否かについての問い合せである。
(S215)
ステップS213と同様に、第2の通信装置(PC)3の応答部52cが、問い合わせSQに対して応答する。
ここで、第2の通信装置(PC)3はデバイス(ヘッドホン)5とBluetoothで接続しているので、その応答内容は「接続している」となる。
(S216)
図11のステップS115と同様に、第1の通信装置2の送信部52aが、第2の通信装置(PC)2のサービスプログラム43に対して解除要求SRを送信する。
(S217)
解除要求SRを受けた第2の通信装置(PC)2の要求部53が、自装置の接続制御部31に接続解除要求RDを通知する。
(S218)
図11のステップS116と同様に、第2の通信装置(PC)3の接続制御部31が、自装置とデバイス5との接続を解除する。
(S219)
第2の通信装置(PC)3の接続制御部31が、自装置の要求部53に対し、接続を解除するようデバイス5に通知した旨の応答を返す。
(S220)
図11のステップS117と同様に、第2の通信装置(PC)3の応答部52cが、第1の通信装置2の受信部52bに対してデバイス5との接続を解除した旨の応答を返す。
(S221)
第1の通信装置2の要求部53が、自装置の接続制御部31に対し、接続要求RCを通知する。
(S222)
図11のステップS118と同様にして、接続要求RCを受けた第1の通信装置2の接続部31aが、Bluetoothにより自装置とデバイス5とを接続する。
(S223)
第1の通信装置2の接続部31aが、自装置とデバイス5とを接続した旨の応答を要求部53に返す。
(S224)
接続部31aからの応答を受けた第1の通信装置2の要求部53が、自装置の接続指示部65に対して、自装置とデバイス5との接続が完了した旨の応答を返す。
以上により、第1のシナリオにおける基本ステップを終える。
上記した第1のシナリオによれば、デバイス(ヘッドホン)5の接続先を変更するに際し、デバイス(ヘッドホン)5がもともと接続していた第2の通信装置(PC)3をユーザが操作する必要がないため、ユーザの利便性が向上する。
<第2のシナリオ>
図20(a)、(b)は、第2のシナリオについて模式的に説明するための図である。
このうち、図20(a)は、デバイス5の接続先を変更する前の図であり、図20(b)は、デバイス5の接続先を変更した後の図である。
図20(a)、(b)に示すように、この例では、第1の通信装置2がパーソナルコンピュータ(PC)であり、第2の通信装置3としてタブレット端末とスマートフォンの二つがある場合を想定している。
また、デバイス5としては、第1のシナリオと同様にキーボード、マウス、及びヘッドホンの三つを想定している。
このシナリオでは、切換え前(図20(a))にタブレット端末とスマートフォンの各々に接続されていたマウスとヘッドホンを、それぞれパーソナルコンピュータ(PC)に接続する。
このような状況は、例えば、図18(b)の例でユーザが外出した後、ユーザが帰宅してヘッドホンをパーソナルコンピュータ(PC)に接続し直し、更にタブレット端末に接続していたマウスもそのパーソナルコンピュータ(PC)で使用する場合に想定される。
図21及び図22は、このシナリオを実現するための通信システム1のシーケンス図である。
以下に、このシーケンス図の各ステップについて説明する。
(S311)
第1の通信装置2の接続指示部65が、サービスプログラム43に対して、自装置とデバイス(ヘッドホン)5とをBluetoothで接続するように指示する接続指示SCを通知する。
(S312)
図11のステップS113と同様に、第1の通信装置2の送信部52aが、第2の通信装置(スマートフォン)3のサービスプログラム43に対して問い合わせSQを送信する。
その問い合わせSQは、デバイス(ヘッドホン)5と第2の通信装置(スマートフォン)3とがBluetoothで接続しているか否かについての問い合せである。
(S313)
図11のステップS114と同様に、第2の通信装置(スマートフォン)3の応答部52cが、問い合わせSQに対して応答する。
ここでは、第2の通信装置(スマートフォン)3はデバイス(ヘッドホン)5とBluetoothで接続しているので、その応答内容は「接続している」となる。
(S314)
図11のステップS115と同様に、第1の通信装置2の送信部52aが、第2の通信装置(スマートフォン)3のサービスプログラム43に対して解除要求SRを送信する。
(S315)
解除要求SRを受けた第2の通信装置(スマートフォン)3の要求部53が、自装置の接続制御部31に接続解除要求RDを通知する。
(S316)
図11のステップS116と同様に、第2の通信装置(スマートフォン)3の接続制御部31が、自装置とデバイス(ヘッドホン)5との接続を解除する。
(S317)
第2の通信装置(スマートフォン)3の接続制御部31が、自装置の要求部53に対し、接続を解除するようデバイス(ヘッドホン)5に通知した旨の応答を返す。
(S318)
図11のステップS117と同様に、第2の通信装置(スマートフォン)3の応答部52cが、第1の通信装置2の受信部52bに対してデバイス(ヘッドホン)5との接続を解除した旨の応答を返す。
(S319)
第1の通信装置2とデバイス(マウス)5とをBluetoothで接続するために、第1の通信装置2の送信部52aが、第2の通信装置(タブレット端末)3のサービスプログラム43に対して問い合わせSQを送信する。
その問い合わせSQは、デバイス(マウス)5と第2の通信装置(タブレット端末)3とがBluetoothで接続しているか否かについての問い合せである。
(S320)
ステップS313と同様に、第2の通信装置(タブレット端末)3の応答部52cが、問い合わせSQに対して応答する。
ここでは、第2の通信装置(タブレット端末)3はデバイス(マウス)5とBluetoothで接続しているので、その応答内容は「接続している」となる。
(S321)
ステップS314と同様に、第1の通信装置2の送信部52aが、第2の通信装置(タブレット端末)3のサービスプログラム43に対して解除要求SRを送信する。
(S322)
解除要求SRを受けた第2の通信装置(タブレット端末)3の要求部53が、自装置の接続制御部31に接続解除要求RDを通知する。
(S323)
ステップS316と同様に、第2の通信装置(タブレット端末)3の接続制御部31が、自装置とデバイス(マウス)5との接続を解除する。
(S324)
第2の通信装置(タブレット端末)3の接続制御部31が、自装置の要求部53に対し、接続を解除するようデバイス(マウス)5に通知した旨の応答を返す。
(S325)
図11のステップS117と同様に、第2の通信装置(タブレット端末)3の応答部52cが、第1の通信装置2の受信部52bに対してデバイス(マウス)5との接続を解除した旨の応答を返す。
(S326)
第1の通信装置2の要求部53が、自装置の接続制御部31に対し、接続要求RCを通知する。
(S327)
図11のステップS118と同様にして、接続要求RCを受けた第1の通信装置2の接続部31aが、Bluetoothにより自装置とデバイス(ヘッドホン)5とを接続する。
(S328)
ステップS327と同様にして、第1の通信装置2の接続部31aが、Bluetoothにより自装置とデバイス(マウス)5とを接続する。
(S329)
第1の通信装置2の接続部31aが、自装置とデバイス(ヘッドホン、マウス)5とを接続した旨の応答を要求部53に返す。
(S330)
接続部31aからの応答を受けた第1の通信装置2の要求部53が、自装置の接続指示部65に対して、自装置と各デバイス(ヘッドホン、マウス)5との接続が完了した旨の応答を返す。
以上により、第2のシナリオにおける基本ステップを終える。
上記した第2のシナリオによれば、二つのデバイス(ヘッドホン、マウス)5が第2の通信装置3に接続されていても、ユーザが第2の通信装置3を操作することなく各デバイス5の接続先を第1の通信装置2に変更でき、ユーザの利便性が向上する。
以上説明した各実施形態に関し、更に以下の付記を開示する。
(付記1) ユーザからデバイスの指定を受け付ける受付部と、
近距離無線通信により前記デバイスと接続している他の通信装置が存在するときに、前記他の通信装置に対して前記デバイスとの接続の解除を要求する解除要求を送信する送信部と、
前記解除要求を送信した後に、前記近距離無線通信により前記デバイスに自装置を接続する接続部と、
を有する通信装置。
(付記2) 前記送信部は、
前記他の通信装置を検出する検出信号をブロードキャストし、
前記検出信号に対する応答が前記他の通信装置からあったときに、前記他の通信装置が前記近距離無線通信により前記デバイスと接続しているか否かの問い合わせを前記他の通信装置に送信し、
前記問い合わせの結果、前記他の通信装置が前記デバイスと接続していることが判明した場合に、前記他の通信装置に前記解除要求を送信することを特徴とする付記1に記載の通信装置。
(付記3) 前記送信部は、自装置と前記デバイスとが前記近距離無線通信により接続可能な状態にあることを通報する通報信号を前記デバイスから受信したときは、前記解除要求の送信をスキップすることを特徴とする付記1に記載の通信装置。
(付記4) 前記近距離無線通信により自装置とペアリング済の複数の前記デバイスの一覧を含むデータを記憶する記憶部を更に有し、
前記受付部は、前記一覧に含まれる前記複数のデバイスのなかから前記指定を受け付けることを特徴とする付記1に記載の通信装置。
(付記5) 第1の通信装置、第2の通信装置、及び前記第1の通信装置と前記第2の通信装置の各々に近距離無線通信で接続可能なデバイスを有する通信システムであって、
前記第1の通信装置は、
ユーザからデバイスの指定を受け付ける受付部と、
前記第2の通信装置と前記デバイスとが前記近距離無線通信により接続しているときに、前記第2の通信装置に対して前記デバイスとの接続の解除を要求する解除要求を送信する送信部と、
前記解除要求を送信した後に、前記近距離無線通信により前記デバイスに自装置を接続する接続部と有し、
前記第2の通信装置は、
前記第1の通信装置から前記解除要求を受けたときに、自装置と前記デバイスとの接続を解除する接続解除部を有することを特徴とする通信システム。
(付記6) 前記送信部は、前記第2の通信装置を検出する検出信号をブロードキャストし、
前記第2の通信装置は、前記検出信号に対して応答する応答部を有することを特徴とする付記5に記載の通信システム。
(付記7) 前記送信部は、前記検出信号に対する応答が前記応答部からあったときに、前記第2の通信装置が前記近距離無線通信により前記デバイスと接続しているか否かの問い合わせを前記第2の通信装置に送信し、
前記問い合わせを受けて、前記応答部は、前記第2の通信装置が前記デバイスと接続しているか否かについて前記第1の通信装置に応答し、
前記送信部は、前記応答によって前記第2の通信装置が前記デバイスと接続していることが判明した場合に、前記第2の通信装置に前記解除要求を送信することを特徴とする付記6に記載の通信システム。
(付記8) 前記第2の通信装置は、前記ユーザを識別するユーザ識別子を記憶した記憶部を更に有し、
前記送信部は、前記ユーザ識別子を前記問い合わせに含めて前記第2の通信装置に送信し、
前記応答部は、前記記憶部に格納されている前記ユーザ識別子と、前記問合わせに含まれる前記ユーザ識別子が一致しないときは、前記問い合わせに対して応答をしないことを特徴とする付記7に記載の通信システム。
(付記9) 前記第2の通信装置は、前記ユーザを識別するユーザ識別子を記憶した記憶部を更に有し、
前記送信部は、前記ユーザ識別子を前記解除要求に含めて前記第2の通信装置に送信し、
前記接続解除部は、前記記憶部に格納されている前記ユーザ識別子と、前記解除要求に含まれる前記ユーザ識別子が一致しないときは、自装置と前記デバイスとの接続を解除しないことを特徴とする付記5に記載の通信システム。
(付記10) 通信装置に、
ユーザからデバイスの指定を受け付け、
近距離無線通信により前記デバイスと接続している他の通信装置が存在するときに、前記他の通信装置に対して前記デバイスとの接続の解除を要求する解除要求を送信し、
前記解除要求を送信した後に、前記近距離無線通信により前記デバイスに自装置を接続する処理を実行させるための通信プログラム。