(57)【要約】【課題】ディスクリプタの通知のために使用できるコマンドを提供しない規格によりセンサコントローラとホストプロセッサの間の通信を行う場合であっても、センサコントローラからホストプロセッサに対してディスクリプタを通知できるようにする。【解決手段】検出したアクティブスタイラスの座標を含むタッチデータをホストにレポートするデバイスと、ホストとの間のシリアル通信方法であって、ホストがデバイスに対し、ディスクリプタの要求を示すデータを含むライトコマンドを発行するステップＳ１４と、デバイスが、ライトコマンドに対して所定の処理を実行した後、ホストに対してインタラプトを送信するステップＳ１６と、ホストが、インタラプトを検出したことを契機に、デバイスに対してタッチデータの送信を要求するステップＳ１９と、デバイスが、タッチデータの送信の要求に応じてディスクリプタを送信するステップＳ２０と、を含む。【選択図】図３
2018003841.tif 000002
【特許請求の範囲】
【請求項１】
アクティブスタイラスの座標を検出し、検出した座標を含むタッチデータをホストにレポートするデバイスと、前記ホストとの間のシリアル通信方法であって、
前記ホストが前記デバイスに対し、ディスクリプタの要求を示すデータを含むライトコマンドを発行するライトコマンド発行ステップと、
前記デバイスが、前記ライトコマンドに対して所定の処理を実行した後、前記ホストに対してインタラプトを送信するインタラプト送信ステップと、
前記ホストが、前記インタラプトを検出したことを契機に、前記デバイスに対してタッチデータの送信を要求するタッチデータ要求ステップと、
前記デバイスが、前記タッチデータの送信の要求に応じて前記ディスクリプタを送信するディスクリプタ応答ステップと、
を含むシリアル通信方法。
【請求項２】
前記インタラプト送信ステップは、前記ライトコマンド発行ステップと前記ディスクリプタ応答ステップとの間に実行される、
請求項１に記載のシリアル通信方法。
【請求項３】
前記ディスクリプタ応答ステップは、前記タッチデータのフィールドを利用して前記ディスクリプタを送信する、
請求項１又は２に記載のシリアル通信方法。
【請求項４】
前記タッチデータ要求ステップは、前記インタラプトを検出したことを契機に、
前記ホストが、前記デバイスのレジスタから、タッチデータが送信可能になったことを示すレジスタ値をリードするステップと、
前記ホストが、タッチデータが送信可能になったことを示す前記レジスタ値がリードされたことに応じて、前記デバイスに対して前記タッチデータの送信を要求するステップと、を含む、
請求項１乃至３のいずれか一項に記載のシリアル通信方法。
【請求項５】
前記ディスクリプタは、前記タッチデータの構造を示すレポートディスクリプタを含む、
請求項１乃至４のいずれか一項に記載のシリアル通信方法。
【請求項６】
前記ディスクリプタは、１以上のレポートＩＤと、該１以上のレポートＩＤのそれぞれに対応する１以上の前記レポートディスクリプタとを含む、
請求項５に記載のシリアル通信方法。
【請求項７】
前記ディスクリプタ応答ステップの後、
前記デバイスが、前記アクティブスタイラスを検出し、検出した前記アクティブスタイラスの座標データを含む前記タッチデータ、及び、前記１以上のレポートＩＤのうちの第１のレポートＩＤを含む第１のレポートを、前記第１のレポートＩＤに対応する第１のレポートディスクリプタに従って生成するステップと、
前記デバイスが、前記レポートのサイズを示すデータを前記ホストに送信するサイズ指定ステップと、
前記デバイスが、前記第１のレポートを前記ホストに送信するレポート送信ステップと、
を含む、請求項６に記載のシリアル通信方法。
【請求項８】
前記ディスクリプタ応答ステップの後、前記サイズ指定ステップの前に、
前記デバイスが、前記ホストに対して再び前記インタラプトを送信するステップ、を含み、
前記サイズ指定ステップは、前記ホストが、前記デバイスのレジスタから、前記レポートのサイズを示すレジスタ値をリードすることによって実行される、
請求項７に記載のシリアル通信方法。
【請求項９】
前記ディスクリプタ応答ステップは、前記ディスクリプタとして、前記タッチデータの第１の構造を示す第１のレポートディスクリプタ、及び、前記第１の構造とは異なる前記タッチデータの第２の構造を示す第２のレポートディスクリプタを送信するものであり、
前記シリアル通信方法は、
検出された前記アクティブスタイラスの機能種別に応じて、前記デバイスが、前記第１の構造のタッチデータを含む第１のレポート又は前記第２の構造のタッチデータを含む第２のレポートのいずれか一方を前記ホストに送信するレポート送信ステップ、をさらに含む、
請求項１に記載のシリアル通信方法。
【請求項１０】
前記ディスクリプタは、前記第１のレポートディスクリプタに対応付けて第１のレポートＩＤを含むとともに、前記第２のレポートディスクリプタに対応付けて第２のレポートＩＤを含み、
前記第１のレポートは、前記第１のレポートＩＤを含み、
前記第２のレポートは、前記第２のレポートＩＤを含む、
請求項９に記載のシリアル通信方法。
【請求項１１】
前記ディスクリプタは、前記デバイスのフィーチャーの形式を示すデータを含む、
請求項１乃至１０のいずれか一項に記載のシリアル通信方法。
【請求項１２】
前記シリアル通信方法は、インタラプトを契機にタッチデータを送信する通信方法である、
請求項１乃至１１のいずれか一項に記載のシリアル通信方法。
【請求項１３】
アクティブスタイラスの座標を検出し、検出した座標を含むタッチデータをホストにレポートするセンサコントローラであって、
複数の電極に接続された端子と、
メモリと、
前記メモリに記憶されたプログラムに従い、
ディスクリプタの要求を示すデータを含むライトコマンドを前記ホストから受信するライトコマンド受信ステップと、
前記ライトコマンドの受信に応じて、前記ホストに対してインタラプトを送信するインタラプト送信ステップと、
前記インタラプトを送信した後、タッチデータ送信要求を前記ホストから受信するステップと、
前記タッチデータ送信要求の受信に応じて、前記ディスクリプタを前記ホストに対して送信するディスクリプタ応答ステップと、
前記ディスクリプタに従って生成された前記タッチデータを含むレポートを前記ホストに対して送信するレポート送信ステップと、
を実行するプロセッサと、
を含むセンサコントローラ。
【請求項１４】
前記レポート送信ステップは、前記レポートのサイズを示すデータを前記ホストに送信するサイズ指定ステップを含む、
請求項１３に記載のセンサコントローラ。
【請求項１５】
前記ディスクリプタ応答ステップは、前記ディスクリプタとして、前記タッチデータの第１の構造を示す第１のレポートディスクリプタ、及び、前記第１の構造とは異なる前記タッチデータの第２の構造を示す第２のレポートディスクリプタを送信するものであり、
前記レポート送信ステップは、検出された前記アクティブスタイラスの機能種別に応じて、前記第１の構造のタッチデータを含む第１のレポート又は前記第２の構造のタッチデータを含む第２のレポートのいずれか一方を前記ホストに送信する、
請求項１３又は１４に記載のセンサコントローラ。
【請求項１６】
前記ディスクリプタは、前記第１のレポートディスクリプタに対応付けて第１のレポートＩＤを含むとともに、前記第２のレポートディスクリプタに対応付けて第２のレポートＩＤを含み、
前記第１のレポートは、前記第１のレポートＩＤを含み、
前記第２のレポートは、前記第２のレポートＩＤを含む、
請求項１５に記載のセンサコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシリアル通信方法及びセンサコントローラに関し、特に、スタイラス及び／又は指タッチの位置を検出可能に構成されたセンサコントローラ、並びに、そのようなセンサコントローラとホストプロセッサとの間で実行されるシリアル通信方法に関する。
【背景技術】
【０００２】
近年、電子機器上で手書き入力するためのツールとして、様々な方式のスタイラスが利用可能になっている。中でもアクティブスタイラスと呼ばれるスタイラスは、電源部と信号処理回路とを備え、信号処理回路の生成する信号に応じた電荷をスタイラスの先端付近に設けられた電極に供給するように構成される。電極に供給された電荷はスタイラスの指示位置付近の空間に所定の電位（あるいは電界）を発生させ、任意の信号が送信される。こうして送信される信号には、スタイラスの位置を知らせるためのバースト信号である位置信号の他、スタイラスが検出した筆圧の値を示す筆圧データ、スタイラスの側面や末端に設けられる操作ボタンのオンオフ状態を示すデータ、スタイラスに予め書き込まれた固有ＩＤなどの各種データが含まれる。【０００３】
センサコントローラはタブレット端末などの電子機器に内蔵される装置であり、マトリクス状に配設された複数の電極からなる電極群を有するタッチセンサに接続される。スタイラスが指示位置付近の空間に所定の電位（あるいは電界）を発生させると、電極群には、その電位（あるいは電界）に応じて電荷が誘導される。センサコントローラは、こうして誘導された電荷量の変化を電極ごとに検出することによりスタイラスが送信した信号を検出し、信号が検出された電極の位置及び検出のレベルなどに基づいて、スタイラスの位置を導出する。また、検出した信号を復号することにより、スタイラスが送信したデータを受信する。【０００４】
また、センサコントローラは、電極群に指が接触することで生じる静電容量の変化を検出することで、指タッチの位置検出も行う。特にアクティブスタイラスの検出と指タッチの検出とは、同じ電極群を利用して実行される。【０００５】
スタイラス又は指タッチを検出したセンサコントローラは、検出したスタイラスや指タッチの位置を示す座標データやスタイラスが送信したデータを含むタッチデータを、ホストプロセッサに対して送信する。この送信は、例えばＵＳＢ(Universal Serial Bus)による通信を用いて実現される（非特許文献１を参照）。【０００６】
センサコントローラは、タッチデータの送信に先立ち、タッチデータの構造と、センサコントローラが対応しているフィーチャー（同時検出可能なタッチ数の最大数などのセンサコントローラの各種設定情報）の形式とを示すデータ（以下、「ディスクリプタ」という）を、ホストプロセッサに対して通知する必要がある。センサコントローラとホストプロセッサの間の通信にＵＳＢを用いる場合であれば、この通知は、エニュメレーションとよばれる一連のプロセスにより実行される。【０００７】
エニュメレーションによるディスクリプタの通知について概略を説明すると、ホストプロセッサとセンサコントローラの間で下位層による通信を確立した後、まずホストプロセッサがディスクリプタ取得コマンド（Ｇｅｔ＿Ｄｅｓｃｒｉｐｔｏｒ）を発行する。なお、ここでいう「ディスクリプタ」は周辺機器の設定情報等を示すもので、センサコントローラがホストプロセッサに送信する「ディスクリプタ」はその一種である。【０００８】
センサコントローラは、ディスクリプタ取得コマンドへの応答として、ディスクリプタを返信する。これにより、ホストプロセッサとセンサコントローラの間でディスクリプタの共有が実現され、その後のホストプロセッサは、共有したディスクリプタによって、センサコントローラが送信したタッチデータの解釈を行う。【０００９】
Ｇｅｔ＿Ｄｅｓｃｒｉｐｔｏｒのような、本願におけるディスクリプタの通知のために使用できるコマンドは、ＵＳＢ以外のインターフェイスにおいても提供される場合がある。例えば、非特許文献２に記載のＨＩＤ  ｏｖｅｒ  Ｉ２Ｃには、Ｉ２ＣにおいてもＵＳＢのようにホストがデバイスからディスクリプタを取得し利用することができるように、ディスクリプタの取得コマンドが用意されている。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】"ＨＩＤ  Ｉｎｆｏｒｍａｔｉｏｎ"、[online]、ＵＳＢ・インンプリメンターズ・フォーラム・インク、[平成29年6月27日検索]、インターネット<http://www.usb.org/developers/hidpage/>
【非特許文献２】"ＨＩＤ  ｏｖｅｒ  Ｉ２Ｃ"、[online]、平成29年4月20日、マイクロソフト・コーポレーション、[平成29年6月27日検索]、インターネット<https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/hid-over-i2c-guide>
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、センサコントローラとホストプロセッサの間の通信は必ずしもＵＳＢ又はＩ２Ｃで行われるわけではなく、使用する通信規格によっては、本願におけるディスクリプタの通知のために使用できるプロトコルが提供されない場合がある。そのような場合においても、センサコントローラからホストプロセッサに対しディスクリプタを通知できるようにすることが必要とされている。【００１２】
したがって、本発明の目的の一つは、ディスクリプタの通知のために使用できるコマンドを提供しない規格によりセンサコントローラとホストプロセッサの間の通信を行う場合であっても、センサコントローラからホストプロセッサに対してディスクリプタを通知できるシリアル通信方法及びセンサコントローラを提供することにある。【００１３】
また、タッチデータによってセンサコントローラからホストプロセッサに送信されるデータは、センサコントローラが検出中のスタイラスによって異なる。例えば、上述した位置信号のみを送信するスタイラスであればタッチデータには座標データのみが含まれることとなるし、複数の操作ボタンを有するスタイラスと１つの操作ボタンのみを有するスタイラスとでは、操作ボタンのオンオフ状態を示すデータの数が異なる。また、筆圧データや固有ＩＤのビット数はスタイラスによって異なるし、６軸又は１２軸の慣性センサを有するスタイラスでは、その出力値がタッチデータに含まれることになる。【００１４】
多様なスタイラスに対応するために、どのようなスタイラスにも対応できるタッチデータの構造をディスクリプタ内に予め定義しておくこととすると、スタイラスによっては、ほとんどのデータ項目がＮＵＬＬ値（あるいは初期値）のままでタッチデータの送信が行われることになる。これがセンサコントローラとホストプロセッサの間で行われる通信の帯域を圧迫する原因となっており、改善が求められていた。【００１５】
したがって、本発明の他の目的の一つは、タッチデータの容量を低減できるシリアル通信方法及びセンサコントローラを提供することにある。
【課題を解決するための手段】
【００１６】
本発明によるシリアル通信方法は、アクティブスタイラスの座標を検出し、検出した座標を含むタッチデータをホストにレポートするデバイスと、前記ホストとの間のシリアル通信方法であって、前記ホストが前記デバイスに対し、ディスクリプタの要求を示すデータを含むライトコマンドを発行するライトコマンド発行ステップと、前記デバイスが、前記ライトコマンドに対して所定の処理を実行した後、前記ホストに対してインタラプトを送信するインタラプト送信ステップと、前記ホストが、前記インタラプトを検出したことを契機に、前記デバイスに対してタッチデータの送信を要求するタッチデータ要求ステップと、前記デバイスが、前記タッチデータの送信の要求に応じて前記ディスクリプタを送信するディスクリプタ応答ステップと、を含む。【００１７】
上記シリアル通信方法において、前記ディスクリプタは、１以上のレポートＩＤと、該１以上のレポートＩＤのそれぞれに対応する１以上の前記レポートディスクリプタとを含む、こととしてもよい。【００１８】
本発明によるセンサコントローラは、アクティブスタイラスの座標を検出し、検出した座標を含むタッチデータをホストにレポートするセンサコントローラであって、複数の電極に接続された端子と、メモリと、前記メモリに記憶されたプログラムに従い、ディスクリプタの要求を示すデータを含むライトコマンドを前記ホストから受信するライトコマンド受信ステップと、前記ライトコマンドの受信に応じて、前記ホストに対してインタラプトを送信するインタラプト送信ステップと、前記インタラプトを送信した後、タッチデータ送信要求を前記ホストから受信するステップと、前記タッチデータ送信要求の受信に応じて、前記ディスクリプタを前記ホストに対して送信するディスクリプタ応答ステップと、前記ディスクリプタに従って生成された前記タッチデータを含むレポートを前記ホストに対して送信するレポート送信ステップと、を実行するプロセッサと、を含む。
【発明の効果】
【００１９】
本発明によれば、ホストがデバイスに対して発行するライトコマンド内にディスクリプタの要求を示すデータを配置し、それを受けたデバイスがタッチデータの送信手続きを利用してディスクリプタを送信するので、ディスクリプタの通知のために使用できるコマンドを提供しない規格によりセンサコントローラとホストプロセッサの間の通信を行う場合であっても、センサコントローラからホストプロセッサに対してディスクリプタを通知できる。【００２０】
また、本発明の一態様によれば、検出されたスタイラスに応じたレポートディスクリプタを使用することが可能になるので、タッチデータの容量を低減することが可能になる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施の形態によるシリアル通信システム１を示す図である。
【図２】本発明の実施の形態によるディスクリプタの構造を示す図である。
【図３】図１に示したシリアル通信システム１によって実行されるシリアル通信のシーケンス（ディスクリプタ通知シーケンス）を示す図である。
【図４】図２に示したステップＳ１４で送信されるライトコマンドの構造を示す図である。
【図５】図１に示したメモリ２２内に配置されるレジスタのデータ構造を示す図である。
【図６】図２に示したステップＳ２０で送信されるタッチデータの構造を示す図である。
【図７】図１に示したシリアル通信システム１によって実行されるシリアル通信のシーケンス（タッチデータ送信シーケンス）を示す図である。
【図８】図１に示したシリアル通信システム１によって実行されるシリアル通信のシーケンス（フィーチャー取得シーケンス）を示す図である。
【図９】図１に示したシリアル通信システム１によって実行されるシリアル通信のシーケンス（フィーチャー設定シーケンス）を示す図である。
【発明を実施するための形態】
【００２２】
以下、添付図面を参照しながら、本発明の実施の形態について詳細に説明する。
【００２３】
図１は、本発明の実施の形態によるシリアル通信システム１を示す図である。同図にしめすように、本実施の形態によるシリアル通信システム１は、タッチセンサ１０と、センサコントローラ２０と、ホストプロセッサ３０と、オペレーティングシステム４０と、指示体５０，５１とを含んで構成される。
【００２４】
タッチセンサ１０、センサコントローラ２０、ホストプロセッサ３０、及びオペレーティングシステム４０はそれぞれ、例えば１台のタブレットＰＣの構成要素である。典型的には、ホストプロセッサ３０の一部及びオペレーティングシステム４０はソフトウェアによって実現され、タッチセンサ１０、センサコントローラ２０、及びホストプロセッサ３０の残りの一部はハードウェアによって実現される。この場合、オペレーティングシステム４０は、ホストプロセッサ３０上で動作するよう構成される。
【００２５】
タッチセンサ１０は、マトリクス状に配置された複数の電極１１を有して構成される。複数の電極１１は、より具体的には、それぞれＸ方向に延在し、Ｘ方向と直交するＹ方向に等間隔で配置された複数の第１の線状電極と、それぞれＹ方向に延在し、Ｘ方向に等間隔で配置された複数の第２の線状電極とを含む。
【００２６】
センサコントローラ２０はタッチセンサ１０の制御を行うための集積回路であり、タッチセンサ１０の各電極１１に接続される端子２１と、メモリ２２とを有して構成される。センサコントローラ２０は、携帯機器内のデータ伝送の標準規格であるＵＳＢ又はＭＩＰＩ(Mobile Industry Processor Interface)等の規格でいうところの「デバイス」に相当する。
【００２７】
ホストプロセッサ３０は、ＵＳＢ又はＭＩＰＩ等の規格でいうところの「ホスト」に相当する構成要素であり、センサコントローラ２０とオペレーティングシステム４０との間の通信を中継する機能を実行可能に構成される。センサコントローラ２０とホストプロセッサ３０の間の通信は、シリアルバスを介するシリアル通信、例えば、ＭＩＰＩで規定される物理層の一種であるＤ−ＤＨＹを用いるシリアル通信によって実現される。
【００２８】
オペレーティングシステム４０は、プロセスのスケジューリングやメモリ管理などの機能とともに、ホストプロセッサ３０あるいはセンサコントローラ２０のドライバソフトウェアとしての機能も含んで構成される。オペレーティングシステム４０にはさらに、ＨＩＤ(Human Interface Device)スタックと呼ばれるようなソフトウェアや、デバイスドライバと呼ばれるソフトウェアも含まれる。
【００２９】
指示体５０は、具体的には人間の指である。また、指示体５１は、具体的にはスタイラスであり、例えば、タッチセンサ１０から送信される信号を受信し、それに応じた情報をタッチセンサ１０に対して送信する機能を有するアクティブスタイラスによって構成される。
【００３０】
タッチセンサ１０及びセンサコントローラ２０は、指示体５０と指示体５１の検出を時分割で実行するよう構成される。指示体５０を検出するタイミングでは、センサコントローラ２０は、複数の第１の線状電極に順次所定の指検出用信号を送出し、複数の第２の線状電極のそれぞれでこの指検出用信号を検出する。そして、この指検出用信号の検出レベルに基づいて、タッチセンサ１０上における指示体５０の座標を検出する。一方、指示体５１を検出するタイミングでは、指示体５１との間での信号の送受信の結果により、タッチセンサ１０上における指示体５１の座標を検出するとともに、指示体５１が送信したデータを受信する。
【００３１】
指示体５１の検出について詳しく説明すると、指示体５１は、信号の受信と送信を時分割で行うよう構成される。受信のタイミングでは、指示体５１は、センサコントローラ２０が複数の電極１１をアンテナとして利用して送信した信号を受信する。この信号には、指示体５１に対するコマンドが含まれる。一方、送信のタイミングでは、指示体５１は、バースト信号である位置信号と、受信したコマンドによって送信を指示されたデータによって変調されてなるデータ信号とを順次送信する。センサコントローラ２０は、複数の電極１１を介してこれらの信号を受信することにより、指示体５１の座標の検出と、指示体５１が送信したデータの受信とを行う。
【００３２】
センサコントローラ２０は、検出した指示体５０，５１の座標と、指示体５１から受信したデータとを、ホストプロセッサ３０を介してオペレーティングシステム４０に送信するよう構成される。以下、こうしてセンサコントローラ２０からオペレーティングシステム４０に送信されるデータを「タッチデータ」と称する。
【００３３】
また、センサコントローラ２０は、タッチデータの送信を行う前に、タッチデータの構造と、センサコントローラ２０が対応しているフィーチャー（同時検出可能なタッチ数の最大数などのセンサコントローラ２０の各種設定情報）の形式とを示すデータ（以下、「ディスクリプタ」という）を、ホストプロセッサ３０を介してオペレーティングシステム４０に通知するよう構成される。オペレーティングシステム４０は、こうして通知されたディスクリプタを用いて、センサコントローラ２０が送信したタッチデータの解釈を行うよう構成される。
【００３４】
図２は、本実施の形態によるディスクリプタ１００の構造を示す図である。同図に示すように、ディスクリプタ１００は、レポートＩＤごとにタッチデータの構造又はフィーチャーの形式を記述してなるテキストデータである。なお、実際のディスクリプタ１００は１６進表記で記述される。図２に例示した４つのレポートＩＤのうちレポートＩＤ＃１，＃２はタッチデータの構造に対応するもので、それぞれに対応付けて、定期的に送信される各種データ（Ｘ座標、Ｙ座標、筆圧値など）の形式（サイズ、データ型など）が規定される。一方、レポートＩＤ＃ｋ，＃ｋ＋１はフィーチャーに対応するもので、それぞれに対応付けてフィーチャーの形式（サイズ、データ型など）が規定される。以下、タッチデータの構造に対応するレポートＩＤを「入力レポートＩＤ」と称し、フィーチャーに対応するレポートＩＤを「フィーチャーレポートＩＤ」と称する場合がある。また、複数の入力レポートＩＤのそれぞれに対応するディスクリプタの部分を「レポートディスクリプタ」と称し、複数のフィーチャーレポートＩＤのそれぞれに対応するディスクリプタの部分を「フィーチャーディスクリプタ」と称する場合がある。
【００３５】
レポートディスクリプタに関して、センサコントローラ２０は、検出中の指示体に応じて一の入力レポートＩＤを選択し、選択した入力レポートＩＤに従ってタッチデータを生成する。そして、選択した入力レポートＩＤと、生成したタッチデータとを含むレポートという形式で、オペレーティングシステム４０に対するタッチデータの送信を行う。
【００３６】
一方、フィーチャーディスクリプタについては、オペレーティングシステム４０からセンサコントローラ２０に対し、ディスクリプタ通知後の任意のタイミングで、フィーチャーの具体的な内容の問い合わせが実行される。これにより、オペレーティングシステム４０に対してフィーチャーの具体的な内容が通知される。また、オペレーティングシステム４０は、フィーチャーの具体的な内容をセンサコントローラ２０内に設定する処理も行う。
【００３７】
以下、センサコントローラ２０とオペレーティングシステム４０の間で実行されるこれらの処理について、シリアル通信システム１のシーケンス図を参照しながら、より詳しく説明する。
【００３８】
図３は、シリアル通信システム１によって実行されるディスクリプタ通知シーケンスＳ１を示す図である。
【００３９】
まず初めに、センサコントローラ２０が自己のケイパビリティに応じて、ディスクリプタの内容を決定する（ステップＳ１０）。こうして決定されるディスクリプタの具体的な内容は、図２を参照して説明したとおりである。センサコントローラ２０のケイパビリティには、スタイラス検出機能、慣性センサなどのセンサ情報を含むスタイラスのセンサ情報を解釈できるか等の判定機能、ファームウェアで設定された（あるいは除外された）機能などが含まれる。
【００４０】
ディスクリプタの内容を決定したセンサコントローラ２０は続いて、決定したディスクリプタのサイズを取得し（ステップＳ１１）、ディスクリプタとともに、図１に示したメモリ２２に一時記憶する。
【００４１】
オペレーティングシステム４０は、任意のタイミング（例えば、センサコントローラ２０と接続された直後のタイミング）でディスクリプタ取得処理を開始する（ステップＳ１２）。この処理の中でオペレーティングシステム４０は、ディスクリプタ取得指示(Get Descriptor)をホストプロセッサ３０に向けて送信する（ステップＳ１３）。
【００４２】
ディスクリプタ取得指示を受けたホストプロセッサ３０は、センサコントローラ２０に対し、ディスクリプタの要求を示すデータを含むライトコマンドを発行する（ステップＳ１４。ライトコマンド発行ステップ）。ここでライトコマンドを使用するのは、ホストプロセッサ３０とセンサコントローラ２０の間での通信に使用する通信規格に、ディスクリプタのような大容量のデータをリードするためのコマンドが用意されていないためである（なお、詳しくは後述するが、小容量のレジスタ値をリードするためのコマンドは用意されている）。
【００４３】
図４は、ステップＳ１４で送信されるライトコマンドの構造を示す図である。同図に示すように、ライトコマンドは、ライトデータタイプＷ１、ライトデータサイズＷ２、及びライトデータペイロードＷ３という３つのフィールドを含んで構成される。ライトデータタイプＷ１は、書き込み対象のデータの種類を示す値を格納するフィールドであり、ライトデータペイロードＷ３は書き込み対象のデータを格納するフィールドであり、ライトデータサイズＷ２はライトデータペイロードＷ３のデータサイズを設定するフィールドである。
【００４４】
ライトデータタイプＷ１のサイズは１バイト（１つのデータに対して割り当てられる最低サイズ）であるが、書き込み対象のデータの種類を示す値としては１バイトすべてを用いる必要はない。そこで、本実施の形態では、ライトデータタイプＷ１内に設定可能な１バイト分の値（「０」〜「２５５」）のうちの未使用の値（例えば「７」）を、ディスクリプタ取得指示を示す値(GET_REPORT_DESCRIPTOR)として使用する。つまり、ホストプロセッサ３０は、ライトコマンド内のライトデータタイプＷ１内にこのディスクリプタ取得指示を示す値(GET_REPORT_DESCRIPTOR)を格納することにより、ディスクリプタの要求を示すデータを含むライトコマンドを発行する。なお、ステップＳ１４において、ライトデータペイロードＷ３の設定内容は任意である。これにより、ホストプロセッサ３０からセンサコントローラ２０に対し、本来はデータの書き込みに使用されるライトコマンドを用いて、ディスクリプタ取得指示を伝達することが実現される。
【００４５】
ただし、ステップＳ１４で送信するものはあくまでライトコマンドであるので、センサコントローラ２０からオペレーティングシステム４０に対してディスクリプタを送信する仕組みが伴わない。そこでセンサコントローラ２０は、以下で説明するステップＳ１５〜Ｓ２１において、タッチデータを送信するための仕組みを利用してディスクリプタの送信を行う。
【００４６】
具体的に説明すると、センサコントローラ２０はまず、ステップＳ１４で受信したライトコマンドに対して所定の処理を実行する（ステップＳ１５）。この処理は、図１に示したメモリ２２内に配置されるレジスタに対して実行される処理を含む。
【００４７】
図５は、メモリ２２内に配置されるレジスタのデータ構造を示す図である。同図に示すように、このレジスタは、インタラプトタイプを格納するフィールド（アドレスｋ〜ｋ＋３の４ビット分のフィールド）と、インタラプトに続いて送信するデータのサイズを格納するフィールド（アドレスｍ〜ｍ＋２３の２４ビット分のフィールド）とを含んで構成される。ステップＳ１５においてセンサコントローラ２０は、前者に「リードデータ利用可能(read_data_available)」を示す値（タッチデータが送信可能になったことを示すレジスタ値）を書き込むとともに、後者にステップＳ１１で取得したディスクリプタのサイズを書き込む。
【００４８】
次に、センサコントローラ２０は、ホストプロセッサ３０に対してインタラプトを送信する（ステップＳ１６。インタラプト送信ステップ）。これを受けたホストプロセッサ３０は、インタラプトを検出したことを契機として、センサコントローラ２０のレジスタからの読み出しを実行する（ステップＳ１７）。この処理で読み出されるデータは、図５に示したインタラクトタイプ及びデータサイズである。したがって、ステップＳ１７の処理の結果として、センサコントローラ２０からホストプロセッサ３０に対し、インタラクトタイプ及びデータサイズが送信される（ステップＳ１８）。
【００４９】
ステップＳ１８でインタラクトタイプ及びデータサイズを受信したホストプロセッサ３０は、センサコントローラ２０に対してタッチデータの送信を要求する（ステップＳ１９。タッチデータ要求ステップ）。ここでホストプロセッサ３０がタッチデータを要求するのは、インタラプトに始まる一連の処理がタッチデータを送信するために用意された処理だからである。別の言い方をすれば、ホストプロセッサ３０は、これから受信されるタッチデータの中身がディスクリプタかタッチデータであるかを確認せず、タッチデータの中継処理をしているに過ぎない。
【００５０】
次にセンサコントローラ２０は、ステップＳ１９でタッチデータの送信要求を受信したことに応じて、ステップＳ１０で決定しておいたディスクリプタを含むタッチデータを送信する（ステップＳ２０。ディスクリプタ応答ステップ）。
【００５１】
図６は、ステップＳ２０で送信されるタッチデータの構造を示す図である。同図に示すように、タッチデータは、タッチデータタイプＴ１、タッチデータサイズＴ２、及びタッチデータペイロードＴ３という３つのフィールドを含んで構成される。タッチデータタイプＴ１は、送信対象のタッチデータの種類を示す値を格納するフィールドであり、タッチデータペイロードＴ３は送信対象のデータを格納するフィールドであり、タッチデータサイズＴ２はタッチデータペイロードＴ３のデータサイズを設定するフィールドである。
【００５２】
センサコントローラ２０は、タッチデータペイロードＴ３にディスクリプタを格納し、タッチデータサイズＴ２にステップＳ１１で取得したディスクリプタのサイズを格納するよう構成される。また、タッチデータタイプＴ１には、ディスクリプタを送信するためのタッチデータであることを示す値(TOUCH_DATA_TYPE_REPORT_DESCRIPTOR)を格納する。
【００５３】
ステップＳ２０でタッチデータを受信したホストプロセッサ３０は、タッチデータサイズＴ２内に格納されたサイズに従ってタッチデータペイロードＴ３内のデータを取り出し、取り出したデータがディスクリプタであるか否かを確認することなく、オペレーティングシステム４０に転送する（ステップＳ２１）。これにより、センサコントローラ２０からオペレーティングシステム４０へのディスクリプタの送信が完了する。
【００５４】
以上説明したように、本実施の形態によれば、ホストプロセッサ３０がセンサコントローラ２０に対して発行するライトコマンド内にディスクリプタの要求を示すデータを配置し、それを受けたセンサコントローラ２０がタッチデータの送信手続きを利用してディスクリプタを送信するので、ディスクリプタの通知あるいはリードのために使用できるコマンドを提供しない規格によりセンサコントローラ２０とホストプロセッサ３０の間の通信を行う場合であっても、センサコントローラ２０からオペレーティングシステム４０に対して、非特許文献１及び非特許文献２のようにディスクリプタを通知することが可能になる。
【００５５】
図７は、シリアル通信システム１によって実行されるタッチデータ送信シーケンスＳ２を示す図である。同図に示すように、タッチデータ送信シーケンスＳ２は、図３に示したディスクリプタ通知シーケンスＳ１の終了後（すなわち、オペレーティングシステム４０がセンサコントローラ２０からディスクリプタの通知を受けた後）に実行される。また、タッチデータの送信は、定期的に実行される処理である。したがって、図示していないが、タッチデータ送信シーケンスＳ２は所定の時間間隔で繰り返し実行される。
【００５６】
センサコントローラ２０はまず、ディスクリプタ通知シーケンスＳ１でオペレーティングシステム４０に通知したディスクリプタに含まれる１以上の入力レポートＩＤの中から、検出中の指示体（例えば、図１に示した指示体５０又は指示体５１）に応じて、一の入力レポートＩＤを選択する（ステップＳ３０）。そして、選択した入力レポートＩＤに対応するレポートディスクリプタに従って、選択した入力レポートＩＤ及びタッチデータを含むレポートの生成を行う（ステップＳ３１）。
【００５７】
ここで、ステップＳ３０において選択される入力レポートＩＤは、同じ指示体の検出が継続している最中にも変化し得る。つまり、センサコントローラ２０は、ある指示体が検出され始めた当初、その指示体が対応しているデータの種類が分からないので、例えば、可能性のあるすべてのデータに対応するレポートディスクリプタの入力レポートＩＤを選択する。そして、指示体との通信を通じて指示体の対応しているデータが判明した後には、指示体が対応しているデータのみに対応するレポートディスクリプタの入力レポートＩＤを選択することができる。このようにすることで、同一の指示体に対しても、必要に応じて柔軟にタッチデータの容量を変更することが可能になる。
【００５８】
図７のシーケンスに戻る。レポートを生成したセンサコントローラ２０は、図５に示したインタラプトタイプを格納するフィールドに「リードデータ利用可能(read_data_available)」を示す値（タッチデータが送信可能になったことを示すレジスタ値）を書き込むとともに、データサイズを格納するフィールドに送信対象のレポートのサイズを書き込む（ステップＳ３２）。
【００５９】
続いてセンサコントローラ２０は、ホストプロセッサ３０に対してインタラプトを送信する（ステップＳ３３）。このステップＳ３３からホストプロセッサ３０によるタッチデータ要求（ステップＳ３６）までの処理（ステップＳ３３〜Ｓ３６）は、図３に示したステップＳ１７〜Ｓ１９と同様である。簡単に説明すると、インタラプトを受けたホストプロセッサ３０は、インタラプトを検出したことを契機として、センサコントローラ２０のレジスタからインタラクトタイプ及びデータサイズを読み出す（ステップＳ３４）。このステップＳ３４の処理の結果として、センサコントローラ２０からホストプロセッサ３０に対し、インタラクトタイプ及びデータサイズが送信される（ステップＳ３５。サイズ指定ステップ）。これらを受信したホストプロセッサ３０は、センサコントローラ２０に対してタッチデータの送信を要求する（ステップＳ３６）。
【００６０】
ステップＳ３６でタッチデータの送信の要求を受けたセンサコントローラ２０は、ステップＳ３１で生成したレポートの送信を実行する（ステップＳ３７。レポート送信ステップ）。具体的には、ステップＳ３１で生成したレポートを図６に示したタッチデータペイロードＴ３に格納するとともに、このレポートのサイズを図６に示したタッチデータサイズＴ２に格納し、さらに、タッチデータを含むレポートを送信するためのタッチデータであることを示す値(TOUCH_DATA_TYPE_HID_REPORT)を図６に示したタッチデータタイプＴ１に格納することによってタッチデータを生成し、ホストプロセッサ３０に対して送信する。
【００６１】
ステップＳ３７でタッチデータを受信したホストプロセッサ３０は、タッチデータサイズＴ２内に格納されたサイズに従ってタッチデータペイロードＴ３内のデータを取り出し、オペレーティングシステム４０に転送する（ステップＳ３８）。これにより、センサコントローラ２０からオペレーティングシステム４０に対し、入力レポートＩＤ及びタッチデータを含むレポートが送信される。
【００６２】
オペレーティングシステム４０は、受信した入力レポートＩＤに対応するレポートディスクリプタを、ディスクリプタ通知シーケンスＳ１で受信しておいたディスクリプタの中から読み出す。そして、読み出したレポートディスクリプタにより、受信したタッチデータの解釈(Decompose)を行う（ステップＳ３９）。
【００６３】
以上説明したように、本実施の形態によれば、センサコントローラ２０は、検出された指示体（又は、指示体が対応しているデータの把握状況）に応じたレポートディスクリプタを使用してレポートを生成できる。つまり、必要に応じてレポートサイズを変更できるので、タッチデータを含むレポートの容量を低減することが可能になる。また、タッチデータとともに入力レポートＩＤを送信しているので、オペレーティングシステム４０は、タッチデータを正しく解釈し、その中に含まれる個々のデータを抽出することが可能になる。
【００６４】
なお、ステップＳ３８では、ホストプロセッサ３０は、タッチデータサイズＴ２内に格納されたサイズに従ってタッチデータペイロードＴ３内のデータを取り出すこととしたが、ステップＳ３５で受信したデータサイズに従ってタッチデータペイロードＴ３内のデータを取り出すこととしてもよい。この場合、タッチデータサイズＴ２を省略できるので、タッチデータを含むレポートの容量をさらに低減することができる。この点は、図３に示したステップＳ２１及び後述する図８に示すステップＳ５０においても同様である。
【００６５】
ここで、センサコントローラ２０が行う処理について、２種類のレポートディスクリプタが存在する場合を挙げ、別の観点から再度説明する。
【００６６】
この場合、図３に示したステップＳ２０は、ディスクリプタとして、タッチデータの第１の構造を示す第１のレポートディスクリプタ、及び、第１の構造とは異なるタッチデータの第２の構造を示す第２のレポートディスクリプタを送信するものとなる。ディスクリプタには、これら第１及び第２のレポートディスクリプタの他、第１のレポートディスクリプタに対応する第１のレポートＩＤと、第２のレポートディスクリプタに対応する第２のレポートＩＤとが含まれる。
【００６７】
そして、図６に示したステップＳ３７は、センサコントローラ２０が、検出された指示体（例えば、アクティブスタイラス）の機能種別に応じて、第１の構造のタッチデータ及び第１のレポートＩＤを含む第１のレポート、又は、第２の構造のタッチデータ及び２１のレポートＩＤを含む第２のレポートのいずれか一方をホストプロセッサ３０に送信する処理となる。
【００６８】
このように、本実施の形態によれば、検出された指示体の機能種別に応じて、２種類のレポートディスクリプタを使い分けることが可能になる。より詳しく説明すると、ホストプロセッサ３０に接続されたことを検出し、ホストプロセッサ３０に対してレポートディスクリプタを送信する時点（エニュメレーションの時点）では、センサコントローラ２０は、将来、電極１１の上にスタイラス＃１とスタイラス＃２とのどちらが来るのか来ないのかわからない。そこでセンサコントローラ２０は、今後使用する可能性のある（自己のケイパビリティの全部に対応した）２種類のレポートディスクリプタ（すなわち、スタイラス＃１用の第１のレポートディスクリプタとスタイラス＃２用の第２のレポートディスクリプタ）の両方を、ホストプロセッサ３０に対して送信・通知する。その後、実際にスタイラスが検出されると、センサコントローラ２０は、その検出されたスタイラスがスタイラス＃１，＃２のいずれであるかを判定し、その結果に応じて第１及び第２のレポートディスクリプタのいずれかを選択し、選択した方のレポートＩＤを含むレポートを送信する。こうすることで、スタイラスの種別に応じて最適なレポートディスクリプタを使用することが可能になる。詳しい説明は省略するが、３種類以上のレポートディスクリプタを使い分ける場合についても同様である。
【００６９】
図８は、シリアル通信システム１によって実行されるフィーチャー取得シーケンスＳ３を示す図である。このフィーチャー取得シーケンスＳ３も、図３に示したディスクリプタ通知シーケンスＳ１の終了後（すなわち、オペレーティングシステム４０がセンサコントローラ２０からディスクリプタの通知を受けた後）に実行される。フィーチャー取得シーケンスＳ３は、典型的には、センサコントローラ２０からオペレーティングシステム４０に通知されたディスクリプタ内に含まれる１以上のフィーチャーレポートＩＤのそれぞれについて、１度ずつ実行される。
【００７０】
初めに、オペレーティングシステム４０により、フィーチャーの内容を取得する必要のあるフィーチャーレポートＩＤが決定される（ステップＳ４０）。この後の処理は、図３に示したディスクリプタ通知シーケンスＳ１のステップＳ１３以降の処理と基本的に同様である。そこで以下では、重複する説明は適宜省略しながら、ステップＳ４１以降の各処理について説明する。
【００７１】
オペレーティングシステム４０は、決定したフィーチャーレポートＩＤを含むフィーチャー取得指示(Get Features)をホストプロセッサ３０に向けて送信する（ステップＳ４１）。これを受けたホストプロセッサ３０は、センサコントローラ２０に対し、フィーチャーの取得要求を示すデータを含むライトコマンドを発行する（ステップＳ４２）。具体的には、ライトコマンド内のライトデータタイプＷ１内にフィーチャー取得指示を示す値(GET_FEATURES_DATA)を格納するとともに、オペレーティングシステム４０からのフィーチャー取得指示に含まれていたフィーチャーレポートＩＤをライトデータペイロードＷ３内に格納し、さらに、ライトデータペイロードＷ３のサイズをライトデータサイズＷ２内に格納することにより、フィーチャーの取得要求を示すデータを含むライトコマンドを発行する。これにより、ホストプロセッサ３０からセンサコントローラ２０に対し、本来はデータの書き込みに使用されるライトコマンドを用いて、フィーチャー取得指示を伝達することが実現される。
【００７２】
センサコントローラ２０は、ステップＳ４２で受信したライトコマンドに対して所定の処理を実行する（ステップＳ４３，Ｓ４４）。具体的には、まず、ライトデータペイロードＷ３内に含まれていたフィーチャーレポートＩＤと、そのフィーチャーレポートＩＤに対応するフィーチャーとを含むレポートを生成する（ステップＳ４３）。続いてセンサコントローラ２０は、図５に示したインタラプトタイプを格納するフィールドに「リードデータ利用可能(read_data_available)」を示す値を書き込むとともに、データサイズを格納するフィールドに送信対象のレポートのサイズを書き込む（ステップＳ４４）。
【００７３】
その後、センサコントローラ２０は、ホストプロセッサ３０に対してインタラプトを送信する（ステップＳ４５）。このステップＳ４５からホストプロセッサ３０によるタッチデータ要求（ステップＳ４８）までの処理（ステップＳ４５〜Ｓ４８）は、図３に示したステップＳ１７〜Ｓ１９と同様である。簡単に説明すると、インタラプトを受けたホストプロセッサ３０は、インタラプトを検出したことを契機として、センサコントローラ２０のレジスタからインタラクトタイプ及びデータサイズを読み出す（ステップＳ４６）。このステップＳ３４の処理の結果として、センサコントローラ２０からホストプロセッサ３０に対し、インタラクトタイプ及びデータサイズが送信される（ステップＳ４７）。これらを受信したホストプロセッサ３０は、センサコントローラ２０に対してタッチデータの送信を要求する（ステップＳ４８）。
【００７４】
ステップＳ４８でタッチデータの送信の要求を受けたセンサコントローラ２０は、ステップＳ４３で生成したレポートの送信を実行する（ステップＳ４９）。具体的には、ステップＳ４３で生成したレポートを図６に示したタッチデータペイロードＴ３に格納するとともに、このレポートのサイズを図６に示したタッチデータサイズＴ２に格納し、さらに、フィーチャーを含むレポートを送信するためのタッチデータであることを示す値(TOUCH_DATA_TYPE_GET_FEATURES)を図６に示したタッチデータタイプＴ１に格納することによってタッチデータを生成し、ホストプロセッサ３０に対して送信する。
【００７５】
ステップＳ４９でタッチデータを受信したホストプロセッサ３０は、タッチデータサイズＴ２内に格納されたサイズに従ってタッチデータペイロードＴ３内のデータを取り出し、オペレーティングシステム４０に転送する（ステップＳ５０）。これにより、センサコントローラ２０からオペレーティングシステム４０に対し、フィーチャーレポートＩＤ及びフィーチャーを含むレポートが送信される。オペレーティングシステム４０は、こうして受信したフィーチャーを、受信したフィーチャーレポートＩＤに対応するフィーチャーとして取得し、記憶する。
【００７６】
以上説明したように、本実施の形態によれば、ホストプロセッサ３０がセンサコントローラ２０に対して発行するライトコマンド内にフィーチャーの要求を示すデータを配置し、それを受けたセンサコントローラ２０がタッチデータの送信手続きを利用してフィーチャーを送信するので、フィーチャーの通知のために使用できるコマンドを提供しない規格によりセンサコントローラ２０とホストプロセッサ３０の間の通信を行う場合であっても、センサコントローラ２０からオペレーティングシステム４０に対してフィーチャーを送信することが可能になる。
【００７７】
図９は、シリアル通信システム１によって実行されるフィーチャー設定シーケンスＳ４を示す図である。このフィーチャー設定シーケンスＳ４も、図３に示したディスクリプタ通知シーケンスＳ１の終了後（すなわち、オペレーティングシステム４０がセンサコントローラ２０からディスクリプタの通知を受けた後）に実行される。
【００７８】
オペレーティングシステム４０はまず、設定する必要のあるフィーチャーを決定し、ディスクリプタ内に含まれる１以上のフィーチャーレポートＩＤの中からそのフィーチャーに対応するフィーチャーレポートＩＤを決定する（ステップＳ６０）。そして、決定したフィーチャーレポートＩＤ及び設定するフィーチャーの内容を含むフィーチャー設定指示(Set Features)を、ホストプロセッサ３０に向けて送信する（ステップＳ６１）。
【００７９】
このフィーチャー設定指示を受けたホストプロセッサ３０は、センサコントローラ２０に対し、フィーチャーの設定要求を示すデータを含むライトコマンドを発行する（ステップＳ６２）。具体的には、ライトコマンド内のライトデータタイプＷ１内にフィーチャー設定指示を示す値(SET_FEATURES_DATA)を格納するとともに、オペレーティングシステム４０からのフィーチャー設定指示に含まれていたフィーチャーレポートＩＤ及び設定するフィーチャーの内容をライトデータペイロードＷ３内に格納し、さらに、ライトデータペイロードＷ３のサイズをライトデータサイズＷ２内に格納することにより、フィーチャーの設定要求を示すデータを含むライトコマンドを発行する。これにより、ホストプロセッサ３０からセンサコントローラ２０に対し、フィーチャー設定指示を伝達することが実現される。この指示は、要するにフィーチャーのライト指示であるので、本来の使い方でライトコマンドを使用していると言える。
【００８０】
ステップＳ６２でライトコマンドを受信したセンサコントローラ２０は、その中に含まれるフィーチャーレポートＩＤに対応するフィーチャーを、受信したフィーチャーにより書き換える（ステップＳ６３）。これにより、オペレーティングシステム４０によるセンサコントローラ２０のフィーチャーの設定が完了する。
【００８１】
以上説明したように、本実施の形態によれば、オペレーティングシステム４０からセンサコントローラ２０のフィーチャーを設定することが可能になる。
【００８２】
以上、本発明の好ましい実施の形態について説明したが、本発明はこうした実施の形態に何等限定されるものではなく、本発明が、その要旨を逸脱しない範囲において、種々なる態様で実施され得ることは勿論である。本発明は、指またはスタイラス（アクティブスタイラスを含む）などの指示体の指示位置を検出するセンサコントローラとホストの間でタッチデータをシリアル通信するデバイスあるいは通信方法に広く適用可能である。
【符号の説明】
【００８３】
１          シリアル通信システム
１０        タッチセンサ
１１        電極
２０        センサコントローラ
２１        端子
２２        メモリ
３０        ホストプロセッサ
４０        オペレーティングシステム
５０，５１  指示体
１００      ディスクリプタ
【図１】
2018003841.tif 000003
【図２】
2018003841.tif 000004
【図３】
2018003841.tif 000005
【図４】
2018003841.tif 000006
【図５】
2018003841.tif 000007
【図６】
2018003841.tif 000008
【図７】
2018003841.tif 000009
【図８】
2018003841.tif 000010
【図９】
2018003841.tif 000011
【国際調査報告】
2018003841.tif 000012
2018003841.tif 000013