(58)【調査した分野】(Int.Cl.,DB名)
請求項1に記載の方法であって、前記センサコントローラと前記ホストプロセッサとはユニバーサルシリアルバス(USB)インタフェースを介して接続されるように構成されている方法。
請求項1に記載の方法であって、前記センサコントローラと前記ホストプロセッサとは集積回路間(I2C)バスまたはシリアルペリフェラルインタフェース(SPI)バスを介して接続されるように構成されている方法。
請求項5に記載の方法であって、前記平滑化アルゴリズムは、前記第1のアクティブスタイラスまたは前記第2のアクティブスタイラスからレポートされた前記スタイラス属性のサブサンプリング、スーパーサンプリング、内挿、または外挿のうちの1つまたは複数を含む方法。
請求項1に記載の方法であって、前記第1のサブセットのスタイラス属性と前記第2のサブセットのスタイラス属性とは、前記第1のサブセットおよび前記第2のサブセットにそれぞれ含まれるスタイラス属性の種類、および/または前記第1のサブセットおよび前記第2のサブセットにそれぞれ含まれるスタイラス属性の数の点で異なる方法。
請求項1に記載の方法であって、前記第1のサブセットのスタイラス属性と前記第2のサブセットのスタイラス属性とは、前記デフォルトのディスクリプタ内の前記定義されたスタイラス属性セットが等しい方法。
請求項1に記載の方法であって、前記定義されたスタイラス属性セットは、i)スタイラス座標値、ii)先端圧力値およびバレルプレッシャ値のうちの少なくとも1つを含むスタイラス圧力値、iii)先端スイッチ値、第1のバレルスイッチ値、および第2のスイッチ値のうちの少なくとも1つを含むスタイラススイッチ値、iv)スタイラス反転インジケータ値、(v)スタイラスイレーサインジケータ、(vi)Xチルト値、Yチルト値、ツイスト値、高度値、方位角値、加速度計値、ジャイロスコープ値、および地磁気計値のうちの少なくとも1つを含むスタイラスオリエンテーション値、(vii)スタイラスバッテリステータス値、(viii)スタイラスID、(ix)スタイラス推奨色値、(x)スタイラス推奨線幅値、および(xi)スタイラス推奨線スタイル値を含む方法。
請求項1に記載の方法であって、前記定義されたスタイラス属性セットは、i)スタイラス座標値、ii)スタイラス圧力値、iii)スタイラススイッチ値、iv)スタイラスオリエンテーション値、(v)スタイラス推奨色値、(vi)スタイラス推奨線幅値、および(vii)スタイラス推奨線スタイル値を含む方法。
請求項11に記載の方法であって、前記スタイラス推奨色値は、前記第1のアクティブスタイラスまたは前記第2のアクティブスタイラスの揮発性メモリ内に元来設定された色を示す方法。
請求項18に記載のセンサコントローラであって、前記処理回路は動作中に、前記第1のアクティブスタイラスまたは前記第2のアクティブスタイラスからレポートされないスタイラス属性に対する前記第1のスタイラスレポートまたは前記第2のスタイラスレポート内のフィールドをデフォルト値で埋め込むことを含むセンサコントローラ。
請求項18に記載のセンサコントローラであって、前記定義されたスタイラス属性セットは、i)スタイラス座標値、ii)スタイラス圧力値、iii)スタイラススイッチ値、iv)スタイラスオリエンテーション値、(v)スタイラス推奨色値、(vi)スタイラス推奨線幅値、および(vii)スタイラス推奨線スタイル値を含むセンサコントローラ。
請求項24に記載のホストプロセッサであって、ユニバーサルシリアルバス(USB)インタフェースを介して前記センサコントローラに接続されるように構成されているホストプロセッサ。
請求項24に記載のホストプロセッサであって、集積回路間(I2C)バスまたはシリアルペリフェラルインタフェース(SPI)バスを介して前記センサコントローラに接続されるように構成されているホストプロセッサ。
請求項24に記載のホストプロセッサであって、前記定義されたスタイラス属性セットは、i)スタイラス座標値、ii)スタイラス圧力値、iii)スタイラススイッチ値、iv)スタイラスオリエンテーション値、(v)スタイラス推奨色値、(vi)スタイラス推奨線幅値、および(vii)スタイラス推奨線スタイル値を含むホストプロセッサ。
【発明を実施するための形態】
【0030】
図1は、アクティブスタイラス100および電子装置(例えば、PC、タブレットコンピュータ、スマートフォン)3を含むシステム全体を示す。電子装置3は、センサ201、センサ201に結合したセンサコントローラ200、およびセンサコントローラ200に結合した電子装置3のホストプロセッサ300を備える。
図1はセンサコントローラ200およびホストプロセッサ300を電子装置3に備えられるように示しているが、ホストプロセッサ300が、センサコントローラ200を含む電子装置3(例えば、タブレット周辺装置)に結合するように独立して備えられ得る種々の実施形態が挙げられる。
【0031】
PC、タブレットコンピュータ、スマートフォンなどの電子装置3は、典型的には、センサ201の下に存在する、または上に存在するスクリーンを備え、ユーザはアクティブスタイラス100を用いて該スクリーン上に文字および図形を手書きする。ここで用いるアクティブスタイラスは、電子回路、バッテリまたは内蔵のエネルギーコンジットなどの電源105を含むスタイラスである。センサ201は、容量性タッチ/スタイラスセンサ、抵抗式タッチ/スタイラスセンサ、電磁共鳴スタイラスセンサ、光学式スタイラスセンサ、超音波スタイラスセンサなどの任意の適当な公知のスタイラス検知センサからなり得る。スタイラスセンサもあれば、アクティブスタイラスおよび指タッチの両方を検出することが可能なセンサもある。以下で
図2Bを参照して詳述するセンサコントローラ200は、センサ201の動作を制御し、アクティブスタイラス100との双方向通信を実行し、さらにホストプロセッサ300と通信する。例えば、センサコントローラ200は、アクティブスタイラス100からの手書き入力データを処理してセンサ201上においてアクティブスタイラス100により示された(指し示された)位置の(X,Y)座標および色を判別し、該(X,Y)座標および色情報を電子装置3のホストプロセッサ300に転送する。ホストプロセッサ300は、典型的には、メモリを備えたコントローラまたはCPUなどからなる。センサコントローラ200およびホストプロセッサ300は、USBヒューマンインタフェース装置(HID)プロトコル(PTCL)などの適当なインタフェースを介して接続される。
図1〜10を参照して、まずアクティブスタイラス100とセンサコントローラ200との間の通信を概説し、その後に
図11〜16を参照して、ホストプロセッサ300と(アクティブスタイラス100との通信に代えて)センサコントローラ200との間の通信を概説する。
【0032】
以下で
図2Aを参照して詳述するアクティブスタイラス100は、例えばテーブル(TBL)の形態で該スタイラスのスタイラス機能情報を記憶するメモリ/キャッシュを有するスタイラス機能情報マネージャ110を備える。以下でより詳細に説明するように、スタイラス機能情報は、典型的には変更可能でない予め定義された(例えば、製造者により設定された)スタイラスの機能に関する機能情報と、ユーザにより調整可能なスタイラスの設定に関する設定情報とを含み得る。スタイラス機能情報マネージャ110は、ユーザが例えばスタイラス100に備えられたスイッチ(ボタン)111を用いてスタイラス色およびスタイラス線幅などのスタイラス設定を変更するたびに、設定情報を更新する。
図1に、1つのテイルボタン111Aおよび1つのサイドボタン111Bからなる、このような2つのボタンを示す。アクティブスタイラス100は、さらに、スタイラス(ペン)先端圧力データおよびスタイラスオリエンテーションデータ(例えば、センサ表面に対してスタイラスがどの程度ツイストまたはチルトしているか)などのアクティブスタイラスの動作状態を示す動作データを予め作成するデータマネージャ112を備える。
【0033】
スタイラス機能情報マネージャ110およびデータマネージャ112は、両方とも、送信(TX)回路および受信(RX)回路を備える通信モジュール130に結合している。通信モジュール130は、以下でより詳細に説明するように、アクティブスタイラス100のスタイラス機能情報および動作データをセンサコントローラ200に送信し、センサコントローラ200から(ビーコン信号内の)種々のコマンドおよび他の情報を受信する。本双方向通信プロトコルにおいて、センサコントローラ200はマスタ装置であり、アクティブスタイラス100はスレーブ装置である。本開示において、センサコントローラ200からアクティブスタイラス100への送信方向を「アップリンク(uplink)」と称し、アクティブスタイラス100からセンサコントローラ200への送信方向を「ダウンリンク(downlink)」と称する。
【0034】
図1に概略的に示すように、アクティブスタイラス100とセンサコントローラ200との間の典型的な双方向通信フローは、アクティブスタイラス100が下向き矢印によって示されるペンダウン動作の間にセンサコントローラ200の検知領域(SZ)に入ることによって開始される。アクティブスタイラス100が検知領域内に入ると、アクティブスタイラス100はセンサコントローラ200からセンサ201を介して周期的に送信されるビーコン信号を検出し得る。ビーコン信号を検出すると、アクティブスタイラス100は、スタイラス機能情報マネージャ110から受信したスタイラス機能情報を含む応答信号を送信する。以下で
図10を参照して詳述するように、アクティブスタイラス100の設定情報をハッシュ化して、1時間スロットでセンサコントローラ200に送信することができる利点がある、固定された(より小さい)サイズのハッシュ値(「ハッシュ#1(Hash#1)」)を生成し得る。ハッシュ#1には、対応する固定サイズのハッシュ値(「ハッシュ#2(Hash#2)」)が存在する。アクティブスタイラス100が以前にセンサコントローラ200とペアリングしたことがあれば、アクティブスタイラス100およびセンサコントローラ200の両方が、アクティブスタイラス100がセンサコントローラ200とペアリングしたときのアクティブスタイラス100の特定の設定情報から算出されるハッシュ#1およびハッシュ#2を有する。それゆえ、センサコントローラ200が受信したハッシュ#1を認識すれば、センサコントローラ200が以前にアクティブスタイラス100とペアリングしており、したがって特定の設定情報を含むアクティブスタイラス100のスタイラス機能情報が既知であることが、センサコントローラ200に分かる。センサコントローラ200は、次いで、以前にアクティブスタイラス100に割り当てられたのと同じダウンリンク時間スロット割当てを用いてアクティブスタイラス100との双方向通信を開始し得る。さらに、センサコントローラ200は、受信したハッシュ#1に対応するハッシュ#2をアクティブスタイラス100に返信してセンサコントローラ200がアクティブスタイラス100を正しく認識したことを検証し得る。以下でより詳細に説明するように、ハッシュ#1の使用によって、アクティブスタイラス100がセンサコントローラ200の検知領域に再入するたびに、アクティブスタイラス100とセンサコントローラ200との間のペアリング処理が迅速化され、このことはアクティブスタイラス100が繰り返し、検知領域から出て(「ペンアップ(Pen up)」矢印を参照)検知領域に再入する(「ペンダウン(Pen down)」矢印を参照)場合に特に有利な技術的特徴である。
【0035】
本明細書で用いる「ペアリング(pairing)」動作とは、センサコントローラ200からの開始(発見)ビーコン信号を検出したアクティブスタイラス100からの応答信号の送信によって開始され、センサコントローラ200からの、アクティブスタイラス100に対するダウンリンク時間スロット割当てを含む他のビーコン信号の送信によって終了する処理のことを指す。センサコントローラ200は、アクティブスタイラスのスタイラス機能情報に照らして対象としているアクティブスタイラスに対するダウンリンク時間スロット割当てを決定することによって、スタイラス機能情報を十分にサポートするアクティブスタイラスとの固有の通信リンクを確立する。こうして、ペアリング動作の終了時に、アクティブスタイラスは、新たに確立された固有の通信リンクを用いてセンサコントローラとの双方向通信を開始し得る。
【0036】
ハッシュ#1の使用は「迅速インキング(fast inking)処理」を達成することにも有利である。アプリケーションプログラムが描画を開始することが可能になるには、該アプリケーションプログラムがスクリーン上に描画しようとする線のパラメータを知る必要がある。これらのパラメータは、例えば、線の色またはブラシスタイル(エアブラシ、チョークなど)を含む。ハッシュ#1の使用によって、センサコントローラは、検知領域に入った特定のスタイラスに対するこれらのパラメータをセンサコントローラがキャッシュ済みであることを即座に認識し、アプリケーションプログラムがほぼ瞬時に描画、すなわち「インキング(inking)処理」を開始するのにこれらのパラメータを利用可能とすることができる。
【0037】
図2Aは、例としてのアクティブスタイラス100の機能ブロック図である。アクティブスタイラス100は、アクティブスタイラス100の先端において、TX/RX電極115、TX/RX電極115に結合したスイッチSW、受信回路117、送信回路119、およびマイクロコントローラユニット(MCU)120を備える。MCU120は、ROMおよびRAMを内蔵するマイクロプロセッサからなり、規定のプログラムに従って動作するように構成されている。スイッチSWは、MCU120からのスイッチ制御信号SWCにより指示されて、TX/RX電極115を受信端子Rと送信端子Tとのいずれかに結合させる。最初に、アクティブスタイラス100がセンサコントローラ200からのビーコン信号を待ち受ける間、スイッチSWはTX/RX電極115を受信端子Rに接続する。受信回路117は、TX/RX電極115からの信号を受信および処理してMCU120により使用可能なデジタル形式で出力するのに必要な電子構成部品を備える。MCU120がセンサコントローラ200からのビーコン信号を検出すると、MCU120は、送信回路119と協働して応答信号(例えば、ACK信号)を生成しておき、さらにスイッチ制御信号SWCをスイッチSWに送出してTX/RX電極115を送信端子Tに接続させることにより、該応答信号をTX/RX電極115を介してセンサコントローラ200に送信する。
【0038】
送信回路119は、MCU120からの信号を受信および処理してTX/RX電極115を介しセンサコントローラ200に送信されるように出力するのに必要な電子構成部品を備える。例えば、送信回路119は、MCU120により規定された周波数のキャリア信号を生成し、該キャリア信号を、センサコントローラ200がアクティブスタイラス100により示された位置を判別する(算出する)のに用いる「位置パケット(position packets)」として無変調で出力し得る。これに代えて、送信回路119は、PSK(位相偏移)、D−BPSK(差動二相PSK)、QAM(直交振幅変調)、およびDSSS(直接シーケンススペクトラム拡散)などの任意の適当な変調方式を用いて、設定情報を示すハッシュ#1などのアクティブスタイラス100のスタイラス機能情報によりキャリア信号を変調してもよい。次いで、スタイラス機能情報により変調された信号をTX/RX電極115を介してセンサコントローラ200に送信する。
【0039】
送信回路119は、アクティブスタイラス100の動作状態を示す動作データなどのスタイラス機能情報以外の情報によりキャリア信号を変調し得る。動作データは、例えば、スタイラス(ペン)先端圧力データ、スタイラスバレルプレッシャデータ、スタイラスオリエンテーション(例えば、ツイスト/チルト)データ、スタイラススイッチステータス、およびスタイラスバッテリレベルを含み得る。このような動作データを生成するために、アクティブスタイラス100は、スタイラス先端に加わる圧力を検知するように構成されたスタイラス(ペン)先端圧力センサ122a(例えば、可変キャパシタからなる)、スタイラスバレルに加わる圧力を検知するように構成されたバレルプレッシャセンサ、9軸以下の軸を有するIMU(内蔵計測ユニット)122b(3軸ジャイロスコープ、3軸加速度計、および3軸地磁気計のうちの1つまたは複数の組合せから構成される)、センサ201のX電極(またはY電極)の各々の方向に対するアクティブスタイラス100の軸の周りのアクティブスタイラス100のツイスト/回転を検知するように構成されたツイストセンサ122c、センサ201の表面に対するアクティブスタイラス100の軸のX方向チルトおよびY方向チルトを検知するように構成されたチルトセンサ122dなどの1つまたは複数のセンサ122を備える(スタイラス先端圧力センサ122a以外のセンサ122b〜122dの図を省略した)。MCU120および送信回路119は、これらのセンサからの出力を、TX/RX電極115を介してセンサコントローラ200に送信する「データパケット」に予め整える。該データパケットをセンサコントローラ200に送信するために、MCU120は、TX/RX電極115を送信端子Tに接続させるスイッチ制御信号SWCをスイッチSWに送出する。
【0040】
種々のアクティブスタイラスは種々の検知機能を有しており、多様なセンサを取りそろえるように装備したセンサが存在する一方で、スタイラス先端圧力センサ122aのみを備えたセンサも存在する。以下でより詳細に説明するように、本発明は、検知領域に入る、対象としているアクティブスタイラスの、個々の機能をセンサコントローラ200が即座に確認することを可能とするによって、スタイラスの機能をサポートする固有の通信リンクを(特定のダウンリンク時間スロット割当てに基づいて)構成する双方向通信プロトコルを提案する。
【0041】
図2Bは、例としてのセンサコントローラ200の機能ブロック図である。センサコントローラ200は電子装置3の一部であって(
図1を参照)、X電極201XおよびY電極201Yを備えるセンサ201に結合しており、センサ201上においてアクティブスタイラス100が様々な手書き動作を行う。センサコントローラ200は、さらに、電子装置3のホストプロセッサ300に結合している。
【0042】
センサコントローラ200は、送信回路210、セレクタ220、受信回路230、論理ユニット235、およびMCU(マイクロコントローラユニット)240を備える。MCU240は、ROMおよびRAMを内蔵するマイクロプロセッサからなり、規定のプログラムに従って動作するように構成されている。MCU240は、論理ユニット235に、送信回路210、セレクタ220、および受信回路230の動作を制御する制御信号伝達(ctr、sTRx、sTRy、selX、selYなど)を発するように指示する。MCU240は、受信回路230から受信したデジタルデータを処理して、センサ201のアクティブスタイラス100により示された位置のX座標およびY座標、色、不透明度(暗さ)などを判別/算出し、例えば、表示のために電子装置3のホストプロセッサ300に算出した位置データを出力する。
【0043】
送信回路210は、MCU240からの信号を、センサ201のマトリクス電極を介してアクティブスタイラス100に送信されるように受信および処理して出力するのに必要な電子構成部品を備える。具体的には、MCU240の制御下において、送信回路210は、周期的なビーコン信号を生成してセンサ201のマトリクス電極を介してアクティブスタイラス100に送信する。以下でより詳細に説明するように、ビーコン信号は、センサコントローラ200を発見するためにアクティブスタイラスの近傍で用いられ(検出され)、アクティブスタイラスがセンサコントローラ200と同期するタイミング基準として機能する。さらに、ビーコン信号は、上述のように、アクティブスタイラス100からハッシュ#1を受信したセンサコントローラ200が検証用にアクティブスタイラス100に返信するハッシュ#2を含み得る。ビーコン信号は、アクティブスタイラスに対して決定されるダウンリンク時間スロット割当てを含むことが可能であり、それによりどのようなダウンリンク時間スロットを用いてどのような種類のパケットをセンサコントローラに送信するかをアクティブスタイラスに通知する。またさらに、ビーコン信号は、アクティブスタイラス100の動作を制御する種々のコマンドを含み得る。例えば、ビーコン信号は、センサコントローラ200に(付加的な)スタイラス機能情報を送信するようにアクティブスタイラス100に要求する読出しコマンド、またはアクティブスタイラス100に関する機能情報を設定する(書き込む)書込みコマンドを含み得る。ビーコン信号は、さらに、アクティブスタイラスのバッテリレベルなどのアクティブスタイラスの動作データをセンサコントローラに送信するようアクティブスタイラスに要求する(ポーリングする)ポーリングコマンドを含み得る。送信回路210は、ビーコン信号を形成するキャリア信号を、PSK、D−BPSK、QAM、およびDSSSなどの任意の適当な変調方式を用い、ハッシュ#2によって、ダウンリンク時間スロット割当てによって、またはMCU240から受信したこれらの種々のコマンドによって変調し得る。
【0044】
受信回路230は、アクティブスタイラス100から受信した信号を処理してセンサ201のマトリクス電極を介しMCU240により使用可能なデジタル形式で出力するのに必要な電子構成部品を備える。例えば、受信回路230は、アクティブスタイラス100から受信した、(ビーコン信号に応答した)応答信号、(アクティブスタイラスの動作データを含む)データパケット、および位置パケットを処理してMCU240へと出力する。センサ201がアクティブスタイラス100に加えて指タッチを検出することが可能である場合、受信回路230は、アクティブスタイラス100から送信された信号に加えて指タッチを示す信号をセンサ201のマトリクス電極を介して受信および処理して、アクティブスタイラス100によって示された位置に加えて指タッチ位置を判別するMCU240へと出力する。
【0045】
セレクタ220は、論理ユニット235からの制御信号伝達に基づいて、送信モードと受信モードとの間でセンサ201の動作モードを切り替える。セレクタ220は、スイッチ222xおよび222yと電極選択回路224xおよび224yとを備える。論理ユニット235からの制御信号伝達sTRyおよびsTRxに基づいて、スイッチ222x、222yは、センサ201のX電極201XおよびY電極201Yをそれぞれ、送信回路210に結合した送信端子Tと受信回路230に結合した受信端子Rとのいずれかに接続する。送信モードでは送信回路210に結合した電極を用いてアクティブスタイラス100に信号を送信し、受信モードでは受信回路230に結合した電極を用いてアクティブスタイラス100からの信号を受信する。さらに、アクティブスタイラス100に信号を送信する、またはアクティブスタイラス100から信号を受信するために、制御信号伝達selX、selXに基づいて、電極選択回路224x、224yは、それぞれX電極201X、Y電極201Yを選択する。論理ユニット235は、さらに、MCU240に指示されて、送信回路210および受信回路230に制御信号伝達「ctr」を送出して送信回路210および受信回路230の動作を制御する。
【0046】
図3は、アクティブスタイラス100とセンサコントローラ200との間の双方向通信に用いられるフレームフォーマット例であり、双方向通信リソースは、時間軸に沿ってフレームに分割されると共に周波数軸に沿って異なる周波数に分割される。各フレームは、さらに、時間軸に沿って16個の(16)時間スロットs0〜s15に分割され、各時間スロットは、例えば20ビット(16情報ビットに4CRCビットが加わる)まで収容するサイズに定められている。一例として、フレーム長は16msecであり、時間スロット長は1msecである。なお、フレームを16より少ないまたは多い時間スロットに分割してもよく、本発明はここで説明する16時間スロットの例に限定されない。例えば、16msecのフレームを64時間スロットに分割して、各時間スロットを250μsecの長さとしてもよい。
【0047】
実施例として、各フレームの開始時における1つまたは複数の時間スロットは、センサコントローラ200によって、周期的なビーコン信号(BS)をアクティブスタイラス100に送信するのに「アップリンク(uplink)」において用いられる。したがって、フレームを、2つの連続するビーコン信号の開始時の間の間隔とみなし得る。各フレームにおける他の時間スロットは、以降で
図8A〜9Gの種々の例に示すように、アクティブスタイラス100によって、信号(例えば、ビーコン信号に対する応答信号)、データパケット、および位置パケットをセンサコントローラ200に送信するのに「ダウンリンク(downlink)」において用いられる。図示しないが、アップリンク時間スロット(
図3におけるs0)とダウンリンク時間スロット(
図3におけるs1〜s15)との間に、アップリンク送信とダウンリンク送信との間の衝突を避けるように、アップリンクにもダウンリンクにも送信がスケジューリングされない期間であるギャップ時間スロットを設けてもよい。
【0048】
ビーコン信号は、近傍のアクティブスタイラスがセンサコントローラ200を発見することができるように、またセンサコントローラ200とアクティブスタイラス100との間の双方向通信に用いられる時間スロットのタイミング基準として機能するようにセンサコントローラ200によって送信される周期信号である。したがって、通常の実施形態において、ビーコン信号は、すべてのアクティブスタイラスによって検出可能となるようにすべての周波数で送信される。各アクティブスタイラス100はビーコン信号を待ち受け、アクティブスタイラス100がビーコン信号を検出した後に、アクティブスタイラス100はビーコン信号に基づいてアクティブスタイラス100のタイミング基準を設定する。センサコントローラ200を発見するアクティブスタイラス100によって検出される最初のビーコン信号に続くビーコン信号は、アクティブスタイラス100が以前にセンサコントローラ200とペアリングしたことを検証するのに用いられるハッシュ#2などの種々の情報と、ペアリング動作中およびペアリング動作後にアクティブスタイラス100の動作を制御するコマンドとを含み得る。アクティブスタイラス100に宛てられたハッシュ#2またはコマンドを含むビーコン信号は、典型的には、いずれのビーコン信号が(存在し得る他のアクティブスタイラスにではなく)アクティブスタイラス100に宛てられているかをアクティブスタイラス100が識別することができるように、アクティブスタイラス100のスタイラスIDを含む。センサコントローラ200からのビーコン信号は、さらに、典型的には、センサコントローラ200のセンサコントローラIDを含む。
【0049】
種々の実施形態に従って、センサコントローラ200は、センサコントローラ200の検知領域に入りつつある各アクティブスタイラス100の機能情報を即座に確認し、確認した機能情報に基づいてアクティブスタイラス100のダウンリンク時間スロット割当てを決定する。アクティブスタイラス100は、次いで、アクティブスタイラス100の機能をサポートする決定したダウンリンク時間スロット割当てに従って、データパケットおよび/または位置パケットをセンサコントローラに送信することにより、センサコントローラとの双方向通信を開始する。例えば、対象としているアクティブスタイラスがスタイラスオリエンテーション検出機能を有するとセンサコントローラ200が判定する場合に、センサコントローラ200はアクティブスタイラス100がスタイラスオリエンテーションデータをセンサコントローラ200に送信するようにダウンリンク時間スロットを割り当てる一方、このようなスタイラスオリエンテーション検出機能を有していないアクティブスタイラスにはこのようなダウンリンク時間スロットを割り当てない。こうして、センサコントローラ200は、アクティブスタイラスの機能情報に応じて、異なるダウンリンク時間スロット割当てをアクティブスタイラスに割り当て得る。アクティブスタイラスがセンサコントローラ200の検知領域外に存在する間に、ユーザにより調整可能なアクティブスタイラスの設定に関する設定情報(例えば、スタイラス線幅)が変更され得るため、該センサコントローラは、該アクティブスタイラスが以前に該センサコントローラとペアリングしたことがある場合であっても、該アクティブスタイラスが検知領域に再入するたびに現在の設定情報を確認する必要がある。
【0050】
図4Aは、アクティブスタイラスのスタイラス機能情報の種類例を列挙したテーブルであり、機能情報および設定情報を含む。機能情報は、通常はスタイラスベンダ(製造者)により予め設定され、かつ通常はユーザにより変更可能でない、アクティブスタイラスの予め定義された機能に関連する。例えば、スタイラス上に備えられたバレルスイッチの数はユーザにより変更可能でない。機能情報は、さらに、アクティブスタイラスがいずれのバージョンの双方向通信プロトコルに準拠するかを示すバージョン番号(4ビット)を含み得る。機能情報は、さらに、センサ201の画面上に表示するアクティブスタイラスの推奨の、またはデフォルト色である「推奨色」(140CSS(カスケーディングスタイルシート)色のうちの1つを示す8ビット)を含み得る。機能情報は、さらに、
図4Bを参照して以下でより詳細に説明するように、ベンダによりアクティブスタイラスに対して設定され得る種々の他の機能に関連し得る。
【0051】
図4Aは、さらに、スタイラス線幅およびスタイラス先端タイプ(例えば、0=ペン、1=イレーサ、2=チゼル先端マーカ、3=エアブラシ、4=鉛筆、5〜7=カスタム/ベンダ仕様先端スタイル用に確保)を含む「ペンスタイル(pen style)」などのユーザにより調整可能なアクティブスタイラスの設定に関する設定情報と、アクティブスタイラスのテイル/バレルボタン(スイッチ)111A/111Bに割り当てられた機能とを記述する。例えば、ユーザは、ボタン(スイッチ)を操作することによってペンスタイルを変更し、またはボタン(スイッチ)に割り当てられた機能を変更し得る。設定情報は、アクティブスタイラスに対して設定され得るユーザにより変更可能な他の設定に関連し得る。アクティブスタイラスの固有の識別番号は、アクティブスタイラス上に配置された1つまたは複数のスイッチを用いてユーザにより変更可能とし得る。例えば、共に各スタイラスに対する64ビットグローバルIDを構成し得るベンダID(8ビット)およびシリアル番号(56ビット)は、ユーザにより変更可能とし得る。(グローバルIDがユーザにより変更可能でない実施形態が挙げられる。)さらに、機能情報の1つの種類として上述したアクティブスタイラスの「推奨色(preferred color)」は、ユーザにより調整可能な設定情報に変更し得るものであり、ユーザは例えばボタン(スイッチ)を用いて推奨(既定)色を自由に調整し得る。「推奨色(preferred color)」の例が示すように、機能情報と設定情報との差異は厳密でなく、ベンダごとに、またはスタイラスごとに変わり得る。さらに、機能情報として取り扱い得るといったように、ユーザによって一回のみ、または非常に低頻度で設定され得る設定情報も存在し得る。
【0052】
図4Bは、アクティブスタイラスによって該アクティブスタイラスの機能情報をセンサコントローラ200に送信するのに用いられるデータフォーマット例を列挙したテーブルである。機能情報は、
図4Cを参照して以下でより詳細に説明するように、例えば、いくつの異なる段階(例えば、256、512、1024など)のペン先端圧力を検出することが可能か、アクティブスタイラス上に備えられたバレルボタン数(例えば、111A/111B)の数値、バレルプレッシャを検出するスタイラスの機能(可不可であって、可であれば、いくつの異なる段階のバレルプレッシャを検出することが可能か)、およびスタイラスオリエンテーション(例えば、スタイラスツイストおよびチルト)を検出するスタイラスの機能に関する情報を含む。
【0053】
図4Bの機能情報は、さらに、データパケットに対してカスタム(カスタマイズされた)データサイズが設定されているか否か、そして設定されている場合はカスタムデータバイト数の数値、スタイラスのオリエンテーションを検出することが可能なオリエンテーション分解能(例えば、0は8ビット分解能を示し、1は9ビット分解能を示し、2は10ビット分解能を示す)、ペン先端圧力を検出することが可能な異なる段階の(デフォルト値とは異なって)カスタマイズされた値、アクティブスタイラスに設けられるバレルボタンの(デフォルト数とは異なって)カスタマイズされた数、およびオリエンテーションデータを送信するのに用いられる(デフォルトのデータバイト数とは異なって)カスタマイズされたデータバイト数に関する情報を含み得る。
【0054】
図4Cは、アクティブスタイラスによって該アクティブスタイラスのオリエンテーション検出機能に関する機能情報をセンサコントローラに送信するのに用いられるオリエンテーションコード例を列挙したテーブルである。オリエンテーションコード0は、アクティブスタイラスがオリエンテーション検出機能を有していないことを示し、1は、アクティブスタイラスがX方向およびY方向の両方におけるチルトを検出することが可能であること、および検出されたXチルトデータおよびYチルトデータをフレーム当たり2時間スロットで送信することが可能であることを示し、2は、アクティブスタイラスがXチルトおよびYチルトに加えてツイスト(回転)データをフレーム当たり3時間スロットで検出および送信することが可能であることを示し、3は、アクティブスタイラスがセンサ表面に対するアクティブスタイラスの高度データおよび方位角データをフレーム当たり2時間スロットで検出および送信することが可能であることを示し、4は、アクティブスタイラスが高度および方位角データならびにツイスト(回転)データをフレーム当たり3時間スロットで検出および送信することが可能であることを示し、5は、アクティブスタイラスが3軸ジャイロスコープおよび3軸加速度計の組合せからなる6軸IMU(内蔵計測ユニット)を備えること、および6軸IMUデータをフレーム当たり3時間スロットで送信することが可能であることを示し、6は、アクティブスタイラスが3軸ジャイロスコープ、3軸加速度計、および3軸地磁気計の組合せからなる9軸IMUを備えること、および9軸IMUデータをフレーム当たり3時間スロットで送信することが可能であることを示し、7は、アクティブスタイラスによって検出および送信され得るオリエンテーションデータのカスタマイズされた形式を示す。
【0055】
図4Cのオリエンテーションコードテーブルは異なる種類のオリエンテーションセンサを表す0〜7の異なる値を示すが、
図4Dに示すように、代替手法は、アクティブスタイラスが該アクティブスタイラスのオリエンテーション機能をセンサコントローラに通知するのに用い得る機能のビットフィールドを備えることである。機能情報において設定されるビットの各々は、スタイラスが該当するアイテムを計測することが可能であることを示す。機能情報フィールドにバレルプレッシャビットが設定される場合、そのことはスタイラスがバレルプレッシャを示すものを有することを示す。チルトビットが設定される場合、そのことはスタイラスがXチルトおよびYチルトを計測することが可能であることを示す。ツイストビットが設定される場合、そのことはスタイラスが軸の周りのツイストを計測することが可能であることを示す。高度および方位角ビットが設定される場合、そのことはスタイラスがスタイラスの高度および方位角を計測することが可能であることを示す。IMUhasAccelビットが設定される場合、そのことはスタイラスが3軸加速度計値を備えることを示す。IMUhasGryoフラグが設定される場合、そのことはスタイラスが3軸ジャイロスコープを備えることを示す。IMUhasMagnetビットが設定される場合、そのことはスタイラスが3軸地磁気計を備えることを示す。設定されるこれらのビットの各々は、そのデータに時間スロットを割り当てる必要性を示し、後述することであるが、IMUに関しては単一の時間スロットまたは時間スロットのセットにデータを多重させることが可能である。
【0056】
図4Eは、アクティブスタイラスの機能情報の3つの例を記述している。例1は、1024の異なる段階でスタイラス先端圧力を検出することが可能である第1のアクティブスタイラスの機能情報であり、1つのバレルボタンを有し、接線方向(バレル)圧力検知機能、スタイラスオリエンテーション検知機能、およびカスタム機能を有していない。例2は、2048の異なる段階でスタイラス先端圧力を検出することが可能である第2のアクティブスタイラスの機能情報であり、2つのバレルボタン、接線方向(バレル)圧力検知機能、および9軸IMU(
図4Cにおけるオリエンテーションコード6)に基づくスタイラスオリエンテーション検知機能を有し、カスタム機能を有していない。例3は、各圧力段階(値)が16ビットで表されるカスタマイズされた数値からなる異なる段階でスタイラス先端圧力を検出することが可能である第3のアクティブスタイラスの機能情報であり、バレルボタン、接線方向(バレル)圧力検知機能を有しておらず、アクティブスタイラスの高度および方位角データならびにツイスト(回転)データを検出およびレポートするスタイラスオリエンテーション検知機能を有する(
図4Cにおけるオリエンテーションコード4)。
【0057】
図5Aは、アクティブスタイラスに対してダウンリンク時間スロット割当てにより設定されたスケジュールに従って、アクティブスタイラスからセンサコントローラに送信され得るアクティブスタイラスの動作状態を示す動作データ例を列挙したテーブルである。スケジュールに従って送信される動作データが、センサコントローラがセンサコントローラとアクティブスタイラスとの間の適切なインタラクティブ動作を達成するのに必要とする動作データからなる、種々の実施形態が挙げられる。このような動作データは、例えば、先端圧力データ、接線方向(バレル)圧力データ、各バレルボタンのステータス(例えば、各バレルボタンのオン/オフ状態)、アクティブスタイラスが該アクティブスタイラスの所期のオリエンテーションから反転している(すなわち、スタイラス先端が上方を向く、つまりスタイラステイルがセンサ表面の方を向いて、およびセンサ表面と接触して、例えば「イレーサ(eraser)」として用いられる)か否かを示す反転データ、スタイラスオリエンテーションデータ、およびアクティブスタイラスの何らかの動作状態を示す任意の他のカスタマイズされた動作データを含む。
【0058】
場合によっては、スタイラス内のセンサからの動作データの量が多大となり得る。このことは特にIMUに当てはまる。これらのセンサは次のいずれかまたはすべて、すなわち1〜3軸を有する加速度計、1〜3軸を有するジャイロスコープ、および1〜3軸を有する地磁気計のいずれかまたはすべてを備え得る。これにより、最大で9軸のデータを送信する必要性が生じ得る。このデータを指定された種類(例えば、加速度計のX軸、Y軸、Z軸、ジャイロスコープのX軸、Y軸、Z軸、および地磁気計のX軸、Y軸、Z軸)からなる9時間スロットで送信することに代えて、1つまたは複数の時間スロットにデータを多重させ得る。
【0059】
多重を実現するために、いずれのセンサ(加速度計、ジャイロスコープ、または地磁気計)からデータが生じたかを示すフラグ(IMUフラグ)によってIMUデータをタグ付けする。
図5Bは、IMUデータを送信するデータパケット(またはレポート)の例である。
図5Bにおいて、「IMUデータ(IMU data)」フィールドは、IMUデータ自体を含み、「IMUフラグ(IMU Flag)」フィールドはいずれのセンサがIMUデータを生成したかを示す。例えば、IMUフラグがゼロである場合はそのことはデータが加速度計から生じたことを示し、IMUフラグが1である場合はそのことはデータがジャイロスコープから生じたことを示し、IMUフラグが2である場合はそのことはデータが地磁気計から生じたことを示し得る。IMUデータフィールドは、IMUフラグにより示されるセンサによって生成されたX軸データ、Y軸データ、Z軸データを含み得る。
【0060】
例えば、9軸のデータ(例えば、加速度計のX軸、Y軸、Z軸、ジャイロスコープのX軸、Y軸、Z軸、および地磁気計のX軸、Y軸、Z軸)を、共通のレポートフォーマット(またはデータパケット)の3時間スロット(または3つのデータフィールド)に多重させて、以下のように3つの異なる時点において3つのレポートを作成し得る。
(レポート1)
センサタグ−「加速度計(Accelerometer)」
X軸データフィールド−加速度計X軸データ
Y軸データフィールド−加速度計Y軸データ
Z軸データフィールド−加速度計Z軸データ
(レポート2)
センサタグ−「ジャイロスコープ(Gyroscope)」
X軸データフィールド−ジャイロスコープX軸データ
Y軸データフィールド−ジャイロスコープY軸データ
Z軸データフィールド−ジャイロスコープZ軸データ
(レポート3)
センサタグ−「地磁気計(Magnetometer)」
X軸データフィールド−地磁気計X軸データ
Y軸データフィールド−地磁気計Y軸データ
Z軸データフィールド−地磁気計Z軸データ
【0061】
他の例として、9軸のデータを共通のレポートフォーマット(またはデータパケット)の1時間スロット(または1つのデータフィールド)に多重させて、9つの異なる時点において9つのレポートを作成し得る。
(レポート1)
センサタグ−「加速度計(Accelerometer)」
軸タグ−「X」
データフィールド−加速度計X軸データ
(レポート2)
センサタグ−「加速度計(Accelerometer)」
軸タグ−「Y」
データフィールド−加速度計Y軸データ
(レポート3)
センサタグ−「加速度計(Accelerometer)」
軸タグ−「Z」
データフィールド−加速度計Z軸データ
(レポート4)
センサタグ−「ジャイロスコープ(Gyroscope)」
軸タグ−「X」
データフィールド−ジャイロスコープX軸データ
(レポート5)
センサタグ−「ジャイロスコープ(Gyroscope)」
軸タグ−「Y」
データフィールド−ジャイロスコープY軸データ
(レポート6)
センサタグ−「ジャイロスコープ(Gyroscope)」
軸タグ−「Z」
データフィールド−ジャイロスコープZ軸データ
(レポート7)
センサタグ−「地磁気計(Magnetometer)」
軸タグ−「X」
データフィールド−地磁気計X軸データ
(レポート8)
センサタグ−「地磁気計(Magnetometer)」
軸タグ−「Y」
データフィールド−地磁気計Y軸データ
(レポート9)
センサタグ−「地磁気計(Magnetometer)」
軸タグ−「Z」
データフィールド−地磁気計Z軸データ
【0062】
このようにしてIMUデータを1つまたは複数の時間スロット(1つまたは複数のデータフィールド)に多重させることには、各レポートにおいて必要とされる時間スロットの数が削減され、IMUデータを送信するのに必要なレポートの数が増加して全体のIMUデータレートを低下させずに済むという利点がある。
【0063】
複数のIMUセンサからのデータを「センサフュージョン(sensor fusion)」として知られる処理によって結合して所望の位置情報および動き情報を生成する実施形態が挙げられる。例えば、アクティブスタイラスのいずれの方向が「下方(down)」であるかを判定したい場合に、動きの方向を示すジャイロスコープデータを、動きの加速方向および重力の加速方向の両方を示す加速度計データから減算し得る。減算の結果は、重力のみに起因する加速方向、すなわち「下方」基準座標系を示す。
【0064】
「センサフュージョン(sensor fusion)」を実行するときに、極力正確な結果を与えるように、種々のIMUセンサからのデータを可能な限り互いに時間的に接近させて計測するとよい。
図5Bに示す「エンド(End)」ビットを用い、以下のようにして種々のIMUセンサからのデータ間の同期を達成し得る。複数のIMUセンサの計測値を取得してアクティブスタイラス内にバッファする。バッファされたデータを、エンドビットをクリアした(例えば、「0」)利用可能なIMU時間スロット割当てによって送信する。
図9Gは、IMUデータパケットの例および「エンドビット(End bit)」の用法を示す。最後のバッファされたデータ要素が時間スロット内に配置されると、エンドビットは複数のIMUセンサによって同時にまたは時間的に接近して取得されたIMUデータのセットにおける最後であることを示すように、エンドビットが(例えば、「1」に)設定される。センサコントローラにおいて、エンドビットがクリアされて受信した任意のIMUデータがバッファに追加される。センサコントローラがエンドビットセットを有するIMUデータを受信すると、センサコントローラは、次いでバッファ内のデータを複数のIMUセンサからのIMUデータの一式のセットとして用い、センサフュージョンを実行するホストプロセッサに転送し得る。
【0065】
図5Cは、アクティブスタイラスのバッテリレベルなどの、センサコントローラによってポーリングされる(要求される)とアクティブスタイラスがセンサコントローラに送信する、アクティブスタイラスの動作状態を示す動作データ例を列挙したテーブルである。したがって、この種類の動作データは、低頻度でしかセンサコントローラに送信されない。
【0066】
なお、
図4A〜4Eを参照して上述したスタイラス機能情報、および
図5A〜5Cを参照して上述した動作データは一例にすぎず、本発明は
図4A〜5Cに記載した特定の例を用いることに限定されない。
【0067】
図6は、アクティブスタイラスの処理フロー例を示すフローチャートである。ステップS601において、アクティブスタイラスは、例えばスタイラス機能情報マネージャ110(
図1)のテーブルTBLに格納されたアクティブスタイラス自体が有するスタイラス機能情報を決定する。ステップS603において、アクティブスタイラスの設定(例えば、スタイラス線幅、色など)を変更するユーザ操作をアクティブスタイラスが検出すると、ステップS605において、アクティブスタイラスはこれに応じて設定情報を更新する。
図6に示すように、ステップS601〜S605は、通常、アクティブスタイラス100がセンサコントローラ200の検知領域外に存在する間に生じる。ステップS611において、アクティブスタイラスはセンサコントローラ200からのビーコン信号を待ち受け、ビーコン信号が検出されない場合はステップS603に戻り、必要に応じて設定情報を更新することを継続し、ビーコン信号を待ち受ける。
【0068】
ステップS611において、アクティブスタイラスは、センサコントローラ200の検知領域に入るときに、センサコントローラ200からのビーコン信号を検出する。ステップS613において、アクティブスタイラスは、タイミング基準としてのビーコン信号を用いて、アクティブスタイラスのフレーム/時間スロット設定をセンサコントローラのものに同期させる。ステップS615において、アクティブスタイラスは、単一のダウンリンク時間スロットを用いて設定情報のハッシュ値(ハッシュ#1)を送信し、センサコントローラが該アクティブスタイラスをセンサコントローラが以前にペアリングしたことのあるアクティブスタイラスと認識するか否かをセンサコントローラに判定させる。センサコントローラがハッシュ#1に基づいてアクティブスタイラスを認識しない場合は、ステップS617において、アクティブスタイラスは、センサコントローラから受信した機能情報要求(読出し)コマンドに応答して、場合によっては複数のダウンリンク時間スロットを用い、アクティブスタイラスの(一式の)スタイラス機能情報をセンサコントローラに送信する。これに対して、センサコントローラがハッシュ#1に基づいてアクティブスタイラスを認識する場合は、ステップS619において、センサコントローラは、好ましくは単一のアップリンク時間スロットを用い、設定情報のハッシュ値(「ハッシュ#2(Hash#2)」)を検証のためにアクティブスタイラスに送信する。以下でさらに
図7および
図10を参照して、ハッシュ#1およびハッシュ#2を用いるアクティブスタイラスとセンサコントローラとの間のペアリング動作または「迅速インキング(fast inking)処理」の動作を説明する。
【0069】
ステップS617において非ハッシュ化スタイラス機能情報を送信した後、またはステップS619において設定情報のハッシュ#2を受信した後は、ステップS631において、アクティブスタイラスはセンサコントローラ200からのビーコン信号を再度待ち受ける。このときに検出されるビーコン信号は、センサコントローラがアクティブスタイラスのスタイラス機能情報に基づいてアクティブスタイラスに対して決定したダウンリンク時間スロット割当てを含む。ダウンリンク時間スロット割当てを含むビーコン信号が検出されると、アクティブスタイラスは、ステップS633においてカウンタを0にリセットし、ステップS635において検出されたビーコン信号に含まれるダウンリンク時間スロット割当てにより設定されたスケジュールに従ってセンサコントローラにパケットを送信し始める。送信するパケットは、アクティブスタイラスの位置、および/またはアクティブスタイラスの動作データ(例えば、送信された圧力データ、送信されたオリエンテーションデータなど)を含むデータパケットを判別するのにセンサコントローラによって用いられる位置パケットからなり得る。さらに、ステップS631において検出されるビーコン信号において、または続いて検出される任意のビーコン信号(
図6において不図示)においてセンサコントローラによりポーリングされる(要求される)と、ステップS637において、アクティブスタイラスは、アクティブスタイラスのバッテリレベルなどのポーリングされた動作データを含むデータパケットを、ダウンリンク時間スロット割当てに従ってセンサコントローラに送信する。例えば、アクティブスタイラスは、上述のステップS635においてスケジュールされたパケットを送信するのに用いられない任意の時間スロットを用い、ポーリングされた動作データを含むデータパケットを送信する。
【0070】
ステップS617において非ハッシュ化スタイラス機能情報を送信した後、またはステップS619において設定情報のハッシュ#2を受信した後に、ステップS631においてアクティブスタイラスが返信されるビーコン信号を検出しない場合は、ステップS641においてアクティブスタイラスはカウンタが閾値を超えたか否かを判定し、超えていなければステップS643においてカウンタ値をインクリメントする。ステップS641においてカウンタが閾値を超える場合は、アクティブスタイラスがセンサコントローラ200の検知領域から出ており(すなわち、ユーザがアクティブスタイラスをセンサ201から遠ざけるように移動させており)、アクティブスタイラスは該センサコントローラからのビーコン信号の圏外に存在するものとする。したがって、アクティブスタイラスはステップS603、S605、およびS611に戻り、必要に応じて設定情報を更新することを再開し、(開始)ビーコン信号を待ち受ける。
【0071】
図7は、センサコントローラの処理フロー例を示すフローチャートである。
図7は、さらに、センサコントローラとアクティブスタイラスとの間のペアリング動作例を示し、該ペアリング動作においてセンサコントローラはアクティブスタイラスからスタイラス機能情報(例えば、設定情報)を示すハッシュ値(「ハッシュ#1(Hash#1)」)を受信する。センサコントローラが受信したハッシュ#1を認識すると、それによってペアリング動作が迅速化され得る。
【0072】
ステップS711において、センサコントローラは、第1の時間スロット「s0」などの各フレームの開始時間スロットにおいて、ビーコン信号を送信する。ステップS714において、センサコントローラは、ビーコン信号を検出したアクティブスタイラスから返信された応答(例えば、ACK)信号から、スタイラス機能情報のハッシュ値(ハッシュ#1)を抽出する。ハッシュ#1は、機能情報および設定情報の両方を含む一式の形態をなすスタイラス機能情報のハッシュ値からなり得る、または設定情報のハッシュ値からなり得る。
【0073】
ステップS715において、センサコントローラは、抽出したハッシュ#1が、センサコントローラ内にキャッシュされたスタイラス機能情報(例えば、設定情報)のハッシュ値(ハッシュ#1)に一致するか否かを判定する。特に、ステップS715は、センサコントローラが該アクティブスタイラスをセンサコントローラが以前にペアリングしたことのあるアクティブスタイラスとして認識するか否かを判定するステップであり、認識する場合は、センサコントローラはアクティブスタイラスのスタイラス機能情報を既にそろえている。
【0074】
ステップS715においてセンサコントローラがハッシュ#1を認識しない場合は、ステップS717において、センサコントローラは、アクティブスタイラスにアクティブスタイラスのスタイラス機能情報を送信するように要求する読出しコマンドを含むビーコン信号を送信する。それに代えて、またはそれに追加して、センサコントローラは、アクティブスタイラスに対するある一定の設定を強制的に構成する(設定する)書込みコマンドを含むビーコン信号を送信し得る。例えば、センサコントローラは、アクティブスタイラスに対してある一定のデフォルト色を設定する書込みコマンドを発行し得る。
【0075】
ステップS719において、センサコントローラは、センサコントローラが複数のダウンリンク時間スロットを用いて一式の形態で受信した(
図6におけるステップS617を参照)アクティブスタイラスのスタイラス機能情報をセンサコントローラが有していることを確認する、またはハッシュ#1に基づいてセンサコントローラ内にキャッシュ済みであることを確認済みである。センサコントローラは、次いで、スタイラス機能情報に基づき、アクティブスタイラスに対するダウンリンク時間スロット割当てを決定する。ダウンリンク時間スロット割当ては、フレーム内のいずれのダウンリンク時間スロットがアクティブスタイラスに割り当てられるかを特定し、さらにアクティブスタイラスがいずれの種類のパケット(例えば、データパケットまたは位置パケット)をいずれのダウンリンク時間スロットにおいて送信すべきであるかを特定し得る。センサコントローラは、アクティブスタイラスの特定の機能情報に基づき、各アクティブスタイラスに対するダウンリンク時間スロット割当てを決定する。例えば、スタイラス先端圧力センサに加えてスタイラスオリエンテーションセンサおよびバレルプレッシャセンサを備えるアクティブスタイラスに対して、センサコントローラは、スタイラス先端圧力センサのみを備えるアクティブスタイラスと比較して、これらの種々のセンサからの出力を示す動作データを送信するための、より多くのダウンリンク時間スロットを割り当て得る。種々の機能および設定がなされた複数のアクティブスタイラスをセンサコントローラと共に使用する場合に、センサコントローラは、複数のアクティブスタイラス間におけるダウンリンク時間スロット衝突を回避しながら、各アクティブスタイラスに対するダウンリンク時間スロット割当てを決定する。すなわち、各時間スロットを1つのアクティブスタイラスに割り当て、複数のスタイラスによって共有しない実施形態が挙げられる。センサコントローラが、アクティブスタイラスに対するダウンリンク時間スロット割当ての一部として各アクティブスタイラスに特定の周波数を割り当てる実施形態も挙げられる。その場合に、複数の周波数が割り当てられる複数のアクティブスタイラスにそれぞれ同じ時間スロットを割り当て得る。ダウンリンク時間スロット割当ての種々の例を、
図8A〜9Gを参照して後述する。
【0076】
図7を再度参照し、ステップS731において、センサコントローラは、決定したダウンリンク時間スロット割当てを含むビーコン信号を、ACK信号を送信してきたアクティブスタイラスに返信する。次いで、ステップS732において、センサコントローラは、ダウンリンク時間スロット割当てに従って、アクティブスタイラスから送信されるパケットを待ち受ける。センサコントローラがアクティブスタイラスからのパケットを検出する場合は、ステップS733においてセンサコントローラはカウンタを0にリセットし、ステップS735においてセンサコントローラは、ダウンリンク時間スロット割当てにより設定されたスケジュールに従ってパケット(位置パケットおよび/または動作データを含むデータパケット)を受信し続ける。さらに、センサコントローラが、ビーコン信号のいずれかによって、アクティブスタイラスのバッテリレベルなどのある一定の動作データをレポートするようにアクティブスタイラスにポーリングすると、ステップS737において、センサコントローラは、アクティブスタイラスからのポーリングされた動作データを含むデータパケットを受信する。
【0077】
ステップS731においてダウンリンク時間スロット割当てを含むビーコン信号を送信した後に、ステップS732においてセンサコントローラが割り当てられたダウンリンク時間スロットにおいて返信されたパケットを全く検出しない場合は、ステップS741においてセンサコントローラは、カウンタが閾値を超えたか否かを判定し、越えなければ、ステップS743においてカウンタ値をインクリメントする。ステップS741においてカウンタが閾値を超えない場合は、アクティブスタイラスがセンサコントローラ200の検知領域から出ており(すなわち、ユーザがアクティブスタイラスをセンサ201から遠ざけるように移動させており)、アクティブスタイラスは該センサコントローラからのビーコン信号の圏外に存在するものとする。したがって、センサコントローラはステップS711およびS713に戻り、周期ビーコン信号を送信し続け、アクティブスタイラスからの応答信号を待つ。
【0078】
図8Aおよび8Bは、センサコントローラがアクティブスタイラスにビーコン信号(BS)を送信し、アクティブスタイラスがスタイラス機能情報(CPまたはハッシュ#1)を含む応答信号をセンサコントローラに返信するフレームフォーマット例を示す。
図8Aにおいて、第1のフレームFnの時間スロットs0において、センサコントローラはビーコン信号を送信し、次の時間スロットs1において、ビーコン信号を検出したアクティブスタイラスはアクティブスタイラスの非ハッシュ化スタイラス機能情報(「CP1」)を含む応答信号を返信する。本例において、アクティブスタイラスは該センサコントローラとペアリングしたことがなく、したがって該センサコントローラを認識しない(
図6のステップS615においてNO)。したがって、アクティブスタイラスは時間スロットs1において一式の(非ハッシュ化)スタイラス機能情報を送信し、これが該一式のスタイラス機能情報のサイズに応じた複数のフレームに亘り得る。
図8Aは、アクティブスタイラスが少なくとも2つのフレームFn、Fn+1の時間スロットs1において非ハッシュ化スタイラス機能情報をCP1、CP2として送信することを示す。
【0079】
図8Bにおいて、アクティブスタイラスは該センサコントローラと以前にペアリングしたことがあり、したがって該センサコントローラを認識する(
図6のステップS615においてYES)。したがって、アクティブスタイラスは、時間スロットs1において送信する応答信号において、アクティブスタイラスの設定情報(「ハッシュ#1(Hash#1)」)のハッシュ値を送信する。設定情報のハッシュ値が通常20ビット以下であって単一の時間スロットで送信し得る一定のデータサイズからなることは利点である。それゆえ、上述した
図8Aの例とは異なり、アクティブスタイラスの設定情報を表すハッシュ#1を、単一のフレーム(Fn)の時間スロットs1を用いてセンサコントローラに短時間で送信することができる。
【0080】
センサコントローラは、ハッシュ#1を受信および認識すると(
図7のステップS715においてYES)、アクティブスタイラスのスタイラス機能情報を既に有していること、したがってさらにはアクティブスタイラスに対するダウンリンク時間スロット割当てを認識する。こうして、次のフレームFn+1の時間スロットs0において、センサコントローラは、アクティブスタイラスによってセンサコントローラにパケットを送信するのに用いられるダウンリンク時間スロット割当てを含むビーコン信号を送信する。
【0081】
センサコントローラは、種々の方法によりアクティブスタイラスにダウンリンク時間スロット割当てを通知し得る。例えば、アクティブスタイラスから送信されたハッシュ#1を認識すると、センサコントローラはハッシュ#1に対応するハッシュ#2をアクティブスタイラスに返信し得る。センサコントローラから送信されたハッシュ#2がアクティブスタイラス内に記憶されたハッシュ#2に一致する(ハッシュ#2およびハッシュ#1は同じ設定情報から算出される)ことをアクティブスタイラスが確認すると、アクティブスタイラスは、アクティブスタイラスが以前にセンサコントローラとペアリングしたときに用いられたのと同じダウンリンク時間スロット割当てを用いることができると判定する。こうして、本例において、センサコントローラは、ハッシュ#1の受信に応答してビーコン信号によりハッシュ#2を送信することによって、アクティブスタイラスにダウンリンク時間スロット割当てを送信する。他の例として、センサコントローラは、特定のダウンリンク時間スロット割当てを示す予め定義されたコードをアクティブスタイラスに送信することが可能であり、この場合に、センサコントローラおよびアクティブスタイラスは、予め定められたコードと各コードがどのようなダウンリンク時間スロット割当てを示すかとのリストを共有する。本例において、センサコントローラは、ビーコン信号により予め定義されたコードの1つを送信することによって、アクティブスタイラスにダウンリンク時間スロット割当てを送信する。さらに他の例として、センサコントローラは、
図9A〜9Gを参照して以下でより詳細に説明するように、例えばフレーム当たりにアクティブスタイラスに割り当てられるダウンリンク時間スロットの位置を特定するオフセット値および間隔値を送信することによって、ダウンリンク時間スロット割当てを送信し得る。本例において、センサコントローラは、例えばビーコン信号によりオフセット値および間隔値を送信することによって、アクティブスタイラスにダウンリンク時間スロット割当てを送信する。
【0082】
図8Bにおいて、フレームFn+1の時間スロットs0におけるビーコン信号は、アクティブスタイラスに対して決定されたダウンリンク時間スロット割当てを含む。こうして、アクティブスタイラスはダウンリンク時間スロット割当てを決定するビーコン信号を読み取り、決定されたダウンリンク時間スロット割当てに従い、フレームFn+1の時間スロットs2において、スタイラスの動作データを含むデータパケット(DP)を送信することを開始する。
【0083】
図9A〜9Gは、センサコントローラによって特定された異なる7種類のダウンリンク時間スロット割当てに従ってアクティブスタイラスがセンサコントローラにパケットを送信するのにそれぞれ用いる、7つの異なるフレームフォーマットを示す。
図9A〜9Gの各々において、フレームFn+1の時間スロットs0におけるビーコン信号はアクティブスタイラスに対して決定されたダウンリンク時間スロット割当てを含み、これによりアクティブスタイラスは、決定されたダウンリンク時間スロット割当てに従い、フレームFn+1の時間スロットs1から開始してセンサコントローラにパケット(データパケットおよび/または位置パケット)を送信し得る。
【0084】
図9Aにおいて、ダウンリンク時間スロット割当ては、フレームFn+1の時間スロットs2から開始して等間隔(T)にある4つの(4)時間スロット、すなわちフレームFn+1における時間スロットs6、s10、およびs14、フレームFn+2における時間スロットs2、s6、s10、およびs14などにおいて、動作データ(例えば、14ビット)を含むデータパケットをアクティブスタイラスが送信することとすることを規定する。この場合に、センサコントローラは、i)アクティブスタイラスによってパケットを送信するのに用いられる開始時間スロットを示すオフセット値と、ii)開始時間スロットから開始されるアクティブスタイラスに割り当てられた時間スロット間の間隔を示す間隔値とを特定することによってダウンリンク時間スロット割当てを定義し得る。例えば、
図9Aの例のダウンリンク時間スロット割当ては、開始時間スロットがs2であることを示す「2」というオフセットと、等間隔(T)にある4時間スロットからなる後続の時間スロットがアクティブスタイラスによって用いられることを示す「4」という間隔値とによって規定され得る。センサコントローラは、これらの値(オフセット:2、間隔:4)をビーコン信号において符号化し、これによってアクティブスタイラスにダウンリンク時間スロット割当てを送信し得る。ダウンリンク時間スロット割当ては、さらに、例えば、送信するパケットの全数(例えば、
図9Aの例において「5」(DP1〜DP5))および/またはパケットのデータフォーマット(例えば、パケットごとの全ビット数はいくつであるか、そのうちの何ビットがペン圧力を示して何ビットがバレルプレッシャデータを示すかなど)を規定し得る。
【0085】
図9Aは、さらに、各フレームFn+1、Fn+2などの時間スロットs1を、必要に応じてセンサコントローラにアクティブスタイラスのスタイラス機能情報(CP)を送信するための、アクティブスタイラスに対するダウンリンク時間スロットとして確保することを示す。例えば、ユーザがセンサコントローラとの双方向通信セッション中にアクティブスタイラスの設定を調整する(例えば、ユーザがスタイラス線幅を変更する)場合に、アクティブスタイラスは、調整した設定情報を後続フレームの時間スロットs1においてセンサコントローラに送信し得る。それに追加して、またはそれに代えて、センサコントローラからのビーコン信号がアクティブスタイラスのスタイラス機能情報を要求する読出しコマンドを含む場合に、アクティブスタイラスは、後続フレームの時間スロットs1において、要求された機能情報および/または設定情報を応答に含める。
【0086】
図9Aは、さらに、センサコントローラからの前のビーコン信号においてポーリングされた(要求された)動作データを含むデータパケットを送信するために、フレームFn+1の時間スロットs15をアクティブスタイラスに対するダウンリンク時間スロットとして確保することを示す。例えば、フレームFn+1の時間スロットs0におけるビーコン信号がアクティブスタイラスにアクティブスタイラスのバッテリレベルをレポートするように要求する場合に、応答においてアクティブスタイラスは、フレームFn+1の時間スロットs15において、ポーリングされた動作データ(「ポーリングDP(Poll DP)」)を含むデータパケットを送信する。
【0087】
図9Bにおいて、ダウンリンク時間スロット割当ては、フレームFn+1の時間スロットs3から開始して等間隔(T)にある4つの(4)時間スロット、すなわちフレームFn+1における時間スロットs7、s11、およびs15、フレームFn+2における時間スロットs3、s7、s11、およびs15などにおいて、動作データ(例えば、14ビット)を含むデータパケットをアクティブスタイラスが送信することとすることを規定する。上述した
図9Aの例と同様に、
図9Bの例のダウンリンク時間スロット割当ては、開始時間スロットがs3であることを示す「3」というオフセットと、用いる後続の時間スロットが等間隔(T)にある4時間スロットからなることを示す「4」という間隔値とによって規定され得る。
図9Bは、さらに、各フレームFn+1、Fn+2などの時間スロットs1を、必要に応じてセンサコントローラにスタイラス機能情報(CP)を送信するための、アクティブスタイラスに対するダウンリンク時間スロットとして確保することを示す。さらに、フレームFn+1の時間スロットs0におけるビーコン信号が、スタイラスのバッテリレベルなどのアクティブスタイラスのある一定の動作データをレポートするようにアクティブスタイラスにポーリングする(要求する)場合に、応答においてアクティブスタイラスは、フレームFn+1の時間スロットs1において、ポーリングされた動作データ(「ポーリングDP(Poll DP)」)を含むデータパケットを送信する。
【0088】
各フレームにおけるビーコン信号時間スロット(s0)の後に、アクティブスタイラスが前の時間スロット(s0)におけるビーコン信号の受信を受諾する応答信号(例えば、ACK)を送信するのに1つまたは複数の時間スロット(例えば、s1)を確保する、種々の実施形態が挙げられる。したがって、ここで用いる「応答信号(response signal)」は、アクティブスタイラスが開始(発見)ビーコン信号に応答してセンサコントローラの検知領域に入るときに送信する第1の応答信号に限定されない。この代わりに、応答信号に、アクティブスタイラスがアクティブスタイラスに宛てられた種々のコマンドまたは他の情報を含む後続のビーコン信号に応答して送信する後続の応答信号が含まれてもよい。例えば、アクティブスタイラスは、変更されたアクティブスタイラスの設定に起因して双方向通信セッション中にセンサコントローラによって更新された新たなダウンリンク時間スロット割当てを含む後続のビーコン信号に応答する応答信号を送信し得る。他の例として、後続のビーコン信号がアクティブスタイラスにスタイラス機能情報を送信するように要求する読出しコマンドを含む場合に、アクティブスタイラスは、要求されたスタイラス機能情報を含む応答信号を送信する(
図9Aを参照すると、フレームFn+1およびFn+2の時間スロットs1において送信される「CP」は、要求されたスタイラス機能情報を含む応答信号であるとみなせる)。さらに他の例として、後続のビーコン信号がアクティブスタイラスにアクティブスタイラスのある一定の動作データ(例えば、スタイラスバッテリレベル)を送信するように要求するポーリングコマンドを含む場合に、アクティブスタイラスは、ポーリングされた動作データを含む応答信号を送信する(
図9Bを参照すると、フレームFn+1の時間スロットs1において送信される「ポーリングDP(Poll DP)」は、ポーリングされた動作データを含む応答信号であるとみなせる)。
【0089】
図9Cにおいて、ダウンリンク時間スロット割当ては、フレームFn+1の時間スロットs2から開始して2つの(2)時間スロットを単位として等間隔(T)にある4つの(4)時間スロット、すなわちフレームFn+1、フレームFn+2などにおける時間スロット[s2/s3]、[s6/s7]、[s10/s11]、および[s14/s15]において、(例えば、14ビットより多い)比較的大きいデータパケットをアクティブスタイラスが送信することとすることを規定する。
図9Cの例のダウンリンク時間スロット割当ては、開始時間スロットがs2であることを示す「2」というオフセットと、用いる後続の時間スロットが等間隔(T)にある4時間スロットからなることを示す「4」という間隔値とによって、またさらには、データパケットの各々(DP1、DP2、DP3、DP4、DP5など)を形成するのに2時間スロットからなる単位を用いることを示す「2」という単位サイズによって規定され得る。「2」という単位サイズは、アクティブスタイラスによって用いられるパケット長であるとみなせる。このような比較的大きいデータは、例えば、アクティブスタイラスのカスタマイズされた動作データ(CD)をセンサコントローラに送信するのに必要となり得る。
【0090】
図9Aおよび
図9Bにおけるように、
図9Cは、さらに、各フレームFn+1、Fn+2などの時間スロットs1を、必要に応じてセンサコントローラにスタイラス機能情報(CP)を送信するための、アクティブスタイラスに対するダウンリンク時間スロットとして確保することを示す。
図9Cは、さらに、フレームFn+1の時間スロットs0におけるビーコン信号がアクティブスタイラスにある一定の動作データ(例えば、スタイラスバッテリレベル)をレポートするようにポーリングする(要求する)場合に、応答においてアクティブスタイラスは、フレームFn+1の時間スロットs1において、ポーリングされた動作データ(「ポーリングDP(Poll DP)」)を含むデータパケットを送信することを示す。
【0091】
図9Dは、第1のアクティブスタイラスに周波数f0を割り当てる第1のダウンリンク時間スロット割当てと、第1のアクティブスタイラスと異なる第2のアクティブスタイラスに周波数f0と異なる周波数f1を割り当てる第2のダウンリンク時間スロット割当てとの組合せを示す。
【0092】
第1のダウンリンク時間スロット割当ては、フレームFn+1の時間スロットs2から開始して3つの(3)時間スロットを単位として等間隔(T)にある8つの(8)時間スロット、すなわちフレームFn+1、フレームFn+2などにおける時間スロット[s2/s3/s4]および[s10/s11/s12]において、比較的大きいデータパケット(例えば、フレーム当たり2時間スロットを占有するスタイラスオリエンテーションデータ(OR)を含むデータパケットであり、
図4CにおけるORC1またはORC3を参照)を第1のアクティブスタイラスが送信することとすることを規定する。第1のダウンリンク時間スロット割当ては、開始時間スロットがs2であることを示す「2」というオフセットと、用いる後続の時間スロットが等間隔(T)にある8時間スロットからなることを示す「8」という間隔値と、データパケットの各々(DP1、DP2、DP3など)を形成するのに3時間スロットからなる単位を用いることを示す「3」という単位サイズ値(またはパケット長)とによって規定され得る。
【0093】
第2のダウンリンク時間スロット割当ては、フレームFn+1の時間スロットs2から開始して4つの(4)時間スロットを単位として等間隔(T)にある8つの(8)時間スロット、すなわちフレームFn+1、フレームFn+2などにおける時間スロット[s2/s3/s4/s5]および[s10/s11/s12/s13]において、比較的大きいデータパケット(例えば、フレーム当たり3時間スロットを占有するスタイラスオリエンテーションデータ(OR)を含むデータパケットであり、
図4CにおけるORC2または4を参照)を、第1の周波数f1で動作する第2のアクティブスタイラスが同様に送信することとすることを規定する。第2のダウンリンク時間スロット割当ては、開始時間スロットがs2であることを示す「2」というオフセットと、用いる後続の時間スロットが等間隔(T)にある8時間スロットからなることを示す「8」という間隔値と、データパケットの各々(DP1、DP2、DP3など)を形成するのに4時間スロットからなる単位を用いることを示す「4」という単位サイズ値(またはパケット長)とによって規定され得る。
【0094】
図9Dにおいては、以前の例に示すように、各フレームFn+1、Fn+2などの時間スロットs1を、必要に応じてセンサコントローラにスタイラス機能情報(CP)を送信するための、周波数f0で動作する第1のアクティブスタイラスと周波数f1で動作する第2のアクティブスタイラスとの両方に対するダウンリンク時間スロットとして確保する。
図9Dは、さらに、フレームFn+1の時間スロットs0におけるビーコン信号が第1のアクティブスタイラスと第2のアクティブスタイラスとのいずれかにある一定の動作データ(例えば、スタイラスバッテリレベル)をレポートするようにポーリングする(要求する)場合に、応答においてアクティブスタイラスは、フレームFn+1の時間スロットs15において、ポーリングされた動作データ(「ポーリングDP(Poll DP)」)を含むデータパケットを送信することを示す。
図9Dの例において、フレームFn+1の時間スロットs0におけるビーコン信号は周波数f0で動作する第1のアクティブスタイラスにポーリングし、これにより第1のアクティブスタイラスは、フレームFn+1の時間スロットs15において、ポーリングされた動作データ(「ポーリングDP(Poll DP)」)を含むデータパケットを送信することによって応答する。
【0095】
センサコントローラが複数のアクティブスタイラスの各々に個々の周波数(例えば、f0、f1)を割り当てると、センサコントローラは、個々のアクティブスタイラスに宛てたコマンドを、そのアクティブスタイラスに割り当てたビーコン信号の周波数部分にのみ含め得る。
【0096】
図9Aと類似する
図9Eにおいて、ダウンリンク時間スロット割当ては、フレームFn+1の時間スロットs2から開始して等間隔(T)にある4つの(4)時間スロット、すなわちフレームFn+1における時間スロットs6、s10、およびs14、フレームFn+2における時間スロットs2、s6、s10、およびs14などにおいて、動作データ(例えば、16ビット)を含むデータパケットをアクティブスタイラスが送信することとすることを規定する。本例のダウンリンク時間スロット割当ては、開始時間スロットがs2であることを示す「2」というオフセットと、用いる後続の時間スロットが等間隔(T)にある4時間スロットからなることを示す「4」という間隔値とによって規定され得る。
図9Eは、さらに、各フレームFn+1、Fn+2などの時間スロットs1を、必要に応じてセンサコントローラにスタイラス機能情報(CP)を送信するための、アクティブスタイラスに対するダウンリンク時間スロットとして確保することを示す。
図9Eは、さらに、フレームFn+1の時間スロットs0におけるビーコン信号がアクティブスタイラスにある一定の動作データ(例えば、スタイラスバッテリレベル)をレポートするようにポーリングする(要求する)場合に、応答においてアクティブスタイラスは、フレームFn+1の時間スロットs15において、ポーリングされた動作データ(「ポーリングDP(Poll DP)」)を含むデータパケットを送信することを示す。
【0097】
図9A〜9Eのダウンリンク時間スロット割当て例は、すべて、アクティブスタイラスの動作データを含むデータパケット(DP1、DP2、DP3、DP4、DP5など)のダウンリンク送信を規定する。これに対して、
図9Fのダウンリンク時間スロット割当ては、フレームにおいていずれのダウンリンク時間スロットを用いるかのみならず、アクティブスタイラスがいずれのダウンリンク時間スロットにおいてどのような種類のパケット(データパケット(DP)または位置パケット(XY))を送信すべきであるかをも規定する。
【0098】
特に、
図9Fのダウンリンク時間スロット割当ては、フレームFn+1の時間スロットs2から開始して等間隔(T)にある4つの(4)時間スロット、すなわち各フレームにおける時間スロットs2、s6、s10、およびs14において、センサコントローラによってアクティブスタイラスがセンサ201上で指し示す位置を判別するのに用いることとなる位置パケット(XY)をアクティブスタイラスが送信することとすることを規定する。ダウンリンク時間スロット割当ては、さらに、各フレームの時間スロットs3、s7、s11、およびs15において送信されるデータパケット(DP1、DP2、DP3、DP4、DP5など)が各位置パケット(XY)の直後に続くことを規定する。したがって、2時間スロット[s2/s3]、[s6/s7]、[s10/s11]、および[s14/s15]からなる単位を用いて位置パケット(XY)およびデータパケット(DP)を送信する。
図9Fの例のダウンリンク時間スロット割当ては、開始時間スロットがs2であることを示す「2」というオフセットと、用いる後続の時間スロットが等間隔(T)にある4時間スロットからなることを示す「4」という間隔値と、連続する位置パケット(XY)およびデータパケット(DP)を送信するのに2時間スロットからなる単位を用いることを示す「2」という単位サイズと、各単位においてどのような種類のパケットを送信するかを示すパケットタイプ値とによって規定され得る。例えば、パケットタイプ値0は各単位(DP/DP)においてデータパケットのみを送信することを示し得るものであり、1は各単位(XY/XY)において位置パケットのみを送信することを示し得るものであり、2は
図9Fの例におけるように各単位(XY/DP)において位置パケットの直後にデータパケットが続くように送信することを示し得るものであり、3は各単位(DP/XY)においてデータパケットの直後に位置パケットが続くように送信することを示し得る。
【0099】
ダウンリンク時間スロット割当ての以前の例におけるように、
図9Fは、さらに、各フレームFn+1、Fn+2などの時間スロットs1を、必要に応じてセンサコントローラにスタイラス機能情報(CP)を送信するための、アクティブスタイラスに対するダウンリンク時間スロットとして確保することを示す。
【0100】
なお、
図8A〜9Gのダウンリンク時間スロット割当ては一例にすぎず、本発明は
図8A〜9Gの特定の例を用いることに限定されない。
【0101】
ホストコントローラ300側で動作するオペレーティングシステムおよびアプリケーションが、センサコントローラ200によって提供されるデータに対して平滑化を適用することがしばしばある。このことには、圧力またはチルトなどのスタイラスデータに加えてセンサコントローラ200によって生成される座標データに対する平滑化が含まれる。該アプリケーションのアルゴリズムは、平滑化を適用する場合にデータが均等に時間間隔をおいて計測されることを前提とする場合が多い。センサコントローラ200が、均等に隔てられた位置パケットまたは均等に隔てられたデータパケットを供給する時間スロット割当てを提供することができない場合がある。これらの場合に、センサコントローラ200は、データが均等に時間間隔をおいて出現するように、データをサブサンプリング、スーパーサンプリング、内挿、外挿、または何らかの手段によって調整する必要があり得る。
【0102】
本手法は、座標および/または動作データを時間スロット割当てに起因した異なるレートで計測する場合にも適する。センサコントローラ200からホストプロセッサ300へのデータパケットから欠落データを見出すすべはないため、欠落データを上述のように生成して(例えば、サブサンプリング、スーパーサンプリング、内挿、外挿などによって)、これらの中間パケットを有効なデータによって補充する必要がある。例えば、オリエンテーションデータが座標データの半分のレートで得られる場合に、オリエンテーションデータをスーパーサンプルまたは外挿して、データレートを座標データレートに一致させるように2倍する必要がある。
【0103】
図10は、アクティブスタイラスとセンサコントローラとの間のペアリング動作(および「迅速インキング(fast inking)」処理の動作)例を示すフローチャートであり、該動作においてアクティブスタイラスはアクティブスタイラスの設定情報を示すハッシュ値(「ハッシュ#1(Hash#1)」)をセンサコントローラに送信する。センサコントローラは、受信したハッシュ#1を認識した後に、センサコントローラが該アクティブスタイラスを以前にペアリングしたスタイラスであると正しく認識するさらなる検証として、アクティブスタイラスに第2のハッシュ値(「ハッシュ#2(Hash#2)」)を返信する。
【0104】
センサコントローラが受信したハッシュ#1を認識する(つまり、センサコントローラが以前にアクティブスタイラスとペアリングしたことがある)ならば、センサコントローラは、センサコントローラ内にキャッシュ済みであるアクティブスタイラスのスタイラス機能情報および/またはダウンリンク時間スロット割当てを用いてペアリング動作を迅速化し得る。
【0105】
ステップS301において、アクティブスタイラスはアクティブスタイラスの設定情報にハッシュ演算を適用し、例えば、典型的には20ビットまで収容する単一の時間スロットで送信することができる固定サイズ(例えば、16ビット)のハッシュ値(「ハッシュ#1(Hash#1)」)を算出する。ステップS302において、アクティブスタイラスは、以下でより詳細に説明するように、ハッシュ#1に対応し、したがってハッシュ#1を検証するのに用いることができる第2のハッシュ値(「ハッシュ#2(Hash#2)」)を算出する。ハッシュ#1およびハッシュ#2は、起動時に、およびユーザがアクティブスタイラスの設定(例えば、スタイラス線幅)を変更するときなどのハッシュ値に影響を与える変化が生じる任意の時点において算出し得る。ハッシュ#1およびハッシュ#2を算出するのに、任意の適当なハッシュ演算を用い得る。例えば、公知のMurmurHash3(商標)を用いて、任意長の機能情報に基づいて32ビットハッシュ値を算出し得る。その場合に、ハッシュ値の16LSBをハッシュ#1として用い、ハッシュ値の16MSBをハッシュ#2として用い得る。算出したハッシュ#1およびハッシュ#2は、アクティブスタイラス、例えばスタイラス機能情報マネージャ110(
図1を参照)のテーブル(TBL)内に格納される。
【0106】
ハッシュ演算を、アクティブスタイラスのスタイラス機能情報のいくつかまたはすべてに適用し得る。例えば、2つのアクティブスタイラスに対して、または1つのアクティブスタイラスの2つの異なる設定に対して同じハッシュ値が算出されるハッシュ衝突のおそれを低減するためには、同じベンダによって製造された複数のアクティブスタイラス間で機能情報が共通であり得ることから機能情報をハッシュ計算から除外することが望ましい場合がある。したがって、アクティブスタイラスがアクティブスタイラスのスタイラス機能情報の設定情報部分とアクティブスタイラスのグローバルIDとに基づいてハッシュ#1およびハッシュ#2を算出し、他のアクティブスタイラス、または異なる設定を有する同じアクティブスタイラスと衝突しにくいアクティブスタイラスの固有の「ハッシュID(Hash ID)」を生成する、種々の実施例が挙げられる。本発明の実施形態として、2つのハッシュ関数を用いてハッシュ#1およびハッシュ#2を算出し、それぞれハッシュ衝突のおそれを低減するものが挙げられる。例えば、13ビットのハッシュ値を生成するように適合されたCRC(巡回冗長検査)の変形などのアルゴリズム1をスタイラス機能情報に対して用いてハッシュ#1を算出し、16ビットのハッシュ値を生成するように適合されたFNV(Fowler−Noll−Vo)などのアルゴリズム2をスタイラス機能情報に対して用いてハッシュ#2を算出し得る。
【0107】
ステップS401において、センサコントローラはビーコン信号(BS)を送信する。ステップS303においてアクティブスタイラスがビーコン信号を検出する場合に、ステップS304において、アクティブスタイラスは上記のステップS301において算出したハッシュ#1を応答信号の一部としてセンサコントローラに送信する。
【0108】
ステップS403においてセンサコントローラがアクティブスタイラスからの応答信号を検出する場合に、ステップS405において、センサコントローラは、応答信号に含まれるハッシュ#1がセンサコントローラ内にキャッシュ済みであるか否かを判定する。キャッシュ済みでない場合は、ステップS407において、センサコントローラは、アクティブスタイラスに一式の(非ハッシュ化)スタイラス機能情報(CP)を送信するように後続のビーコン信号によって読出しコマンドを送信する。ステップS305において、アクティブスタイラスは、センサコントローラからの読出しコマンドに応答して、要求されたスタイラス機能情報(CP)をセンサコントローラに送信する。センサコントローラは、ステップS409において、受信したスタイラス機能情報(CP)に基づいてハッシュ#1およびハッシュ#2を算出して今後の使用に備えてキャッシュ内に記憶する。これに代わるものとして、ステップS409において、センサコントローラはハッシュ#2のみを算出し、算出したハッシュ#2を、上記のステップS405において受信および評価したハッシュ#1と共に記憶する。ステップS409において、センサコントローラは、アクティブスタイラスによってステップS301およびS302において用いられたのと同じハッシュ演算を用いてハッシュ#1およびハッシュ#2を算出する。
【0109】
ステップS405に戻り、センサコントローラがアクティブスタイラスからの応答信号に含まれるハッシュ#1がセンサコントローラ内にキャッシュ済みであると判定する場合に、ハッシュ#1に対応するハッシュ#2もセンサコントローラ内にキャッシュする(ステップS409を参照)。こうして、ステップS411において、センサコントローラは、ハッシュ#1に対応するハッシュ#2を、検証目的でアクティブスタイラスに返信する。特に、ステップS307において、アクティブスタイラスは、上記のステップS304においてアクティブスタイラスが送信したハッシュ#1に対応するセンサコントローラから返信されたハッシュ#2が、アクティブスタイラス内にキャッシュされたハッシュ#2に一致するか否かを判定する。一致する場合は、アクティブスタイラスは、センサコントローラが該アクティブスタイラスを以前にペアリングしたことのあるアクティブスタイラスであると正しく認識したことを確認する。その場合はステップS309において、アクティブスタイラスは、センサコントローラが既に(設定情報を含む)スタイラス機能情報および/またはアクティブスタイラスのダウンリンク時間スロット割当てを有していることを検証する応答信号をセンサコントローラに送信する。ステップS413において、センサコントローラはアクティブスタイラスから応答信号を受信して検証処理を終了する。この時点において、アクティブスタイラスおよびセンサコントローラは、それらが以前にペアリングしたときに用いたのと同じダウンリンク時間スロット割当てを用いて双方向通信を開始する準備ができている。またこの時点において、センサコントローラはアクティブスタイラスによって形成される線描画を開始するのにアプリケーションが必要とするアクティブスタイラスの設定情報をすべて有するため、センサコントローラはすぐに「インキング(inking)処理」動作を開始し得る。
【0110】
ステップS307において、センサコントローラから受信したハッシュ#2がアクティブスタイラスに記憶されたハッシュ#2に一致しないとアクティブスタイラスが判定する場合は、ステップS311においてアクティブスタイラスは検証失敗を示す失敗メッセージ(FAIL)をセンサコントローラに送信し、ステップS303に戻ってセンサコントローラからのビーコン信号を待ち受けることを再開する。
【0111】
ステップS413において、センサコントローラは、アクティブスタイラスから送信された失敗メッセージ(FAIL)(ステップS311)を受信することと、アクティブスタイラスから成功検証を示す応答信号(ステップS309)を受信しないこととのいずれかによって、検証失敗を知らされる。検証失敗の場合に、センサコントローラはステップS407に戻り、アクティブスタイラスにアクティブスタイラスの一式の(非ハッシュ化)スタイラス機能情報(CP)を送信するように要求する。
【0112】
図11は、アクティブスタイラス100および電子装置(例えば、PC、タブレットコンピュータ、スマートフォン)3を含むシステム全体を示す、
図1と同様の図である。
図11は、特に、電子装置3内でのセンサコントローラ200とホストプロセッサ300との間の双方向通信を示す。
【0113】
センサコントローラ200は処理回路202を備え、処理回路202にはセンサ受信(RX)回路、センサ送信(TX)回路、およびメモリ装置が結合されている。ホストプロセッサ300は処理回路301を備え、処理回路301はホスト受信(RX)回路およびホスト送信(TX)回路に結合されている。一方向においてホスト送信(TX)回路からセンサ受信(RX)回路へ向かい、他方向においてセンサ送信(TX)回路からホスト受信(RX)回路へ向かう双方向通信を、ユニバーサルシリアルバス(USB)インタフェース(USB HID−PTCL)によって、または集積回路間(I2C)バス、シリアルペリフェラルインタフェース(SPI)バス、もしくは他の適当なハードウェアによってサポートし得る。
【0114】
さらに
図12Aを参照すると、センサコントローラ200とホストプロセッサ300との間の通信に供される方法は、概して3つのステップを含む。まず、ステップS1202において、定義されたスタイラス属性セットからなるデフォルトのディスクリプタをサポートするセンサコントローラは、ホストプロセッサ300にデフォルトのディスクリプタを送信する。デフォルトのディスクリプタは、センサコントローラ200の処理回路202によって特定およびサポートされる。簡潔には、デフォルトのディスクリプタは、センサコントローラ200によってホストプロセッサ300に送信されるHID(ヒューマンインタフェースデバイス)クラスレポートのフォーマットを定義する。換言すれば、デフォルトのディスクリプタは、このようなレポートにどのような情報がどのようなフォーマットで含まれるかを定義する。デフォルトのディスクリプタ内の定義されたスタイラス属性セットが、異なる種類のアクティブスタイラスによってサポートされ得るすべての(存在し得る)スタイラス属性を含む、種々の実施形態が挙げられる。以下でより詳細に説明するように、このことによって、新たに発見されたスタイラス100が、アクティブスタイラスの機能および嗜好に依存するデフォルトのディスクリプタによってサポートされるすべての存在し得るスタイラス属性の最小セットまたは全範囲を提供することが可能となる。
【0115】
図13は、センサコントローラ200からホストプロセッサ300に送信されるスタイラスレポートのデフォルトのディスクリプタ例である。スタイラスレポートは、スタイラスの位置、先端圧力値、バレルプレッシャ値、スタイラスオリエンテーション(例えば、チルトおよび回転)などの、アクティブスタイラス100からレポートされたとおりのスタイラス属性を含む。
図14は、
図13のデフォルトのディスクリプタに含まれるスタイラス属性のテーブルである。
図14に示すように、スタイラス属性値は、スタイラス座標値(「X、Y」)、スタイラスがセンサの検知領域の範囲内にある間に各スタイラスに割り当てられるスタイラスロ−カルID(「トランスデューサインデックス(Transducer Index)」)、先端圧力値(「先端圧力(Tip Pressure)」)、およびバレルプレッシャ値(「バレルプレッシャ(Barrel Pressure)」)のうちの少なくとも1つを含むスタイラス圧力値、先端スイッチ値(「先端スイッチ(Tip Switch)」)、第1のバレルスイッチ値(「バレルスイッチ(Barrel Switch)」)、および第2のスイッチ値(「セカンダリバレルスイッチ(Secondary Barrel Switch)」)のうちの少なくとも1つを含むスタイラススイッチ(スイッチステータス)値、スタイラスがスタイラスの所期のオリエンテーションから反転している(すなわち、スタイラス先端が上方を向いている)か否かを示すスタイラス反転インジケータ値(「反転(Invert)」)、スタイラスの一方の先端(例えば、反転した先端)がイレーサとして機能しているか否かを示すスタイラスイレーサインジケータ(「イレース(Erase)」)、スタイラスがセンサ表面の検知領域内にあるか否かを示すスタイラスインレンジ値(「インレンジ(In Range)」)、Xチルト値(「Xチルト(X Tilt)」)、Yチルト値(「Yチルト(Y Tilt)」)、ツイスト値(「ツイスト(Twist)」)、高度値、方位角値、加速度計値、ジャイロスコープ値、および地磁気計値のうちの少なくとも1つを含むスタイラスオリエンテーション値、スタイラスバッテリステータス値(「バッテリ強度(Batery Strength)」)、スタイラスグローバルID(「トランスデューサシリアル番号(Transducer Serial Number)」)、(以下で説明するように、スタイラスユーザによって、またはセンサコントローラ/ホストプロセッサによって後に変更され得る)アクティブスタイラスのメモリ内に設定された元来セットされた色を示すスタイラス推奨色値(「推奨色(Preferred Color)」)、アクティブスタイラスがどのような線幅を描画するのが好ましいかを示すスタイラス推奨線幅値、アクティブスタイラスがどのようなどのようなスタイルで描画するのが好ましいか(例えば、インキングペン、鉛筆、ハイライタ、チゼル先端マーカ、ブラシなど)を示すスタイラス推奨線スタイル値、およびアクティブスタイラスベンダ/製造者によって設定され得るカスタム属性(「ベンダ使用(Vender Usage)」)を含む。
【0116】
推奨色値、推奨線幅値、および推奨線スタイル値の導入をアクティブスタイラス100内に設定することには技術的に利点があり、それは(ユーザによって例えばアクティブスタイラス100上に備えられたスイッチの1つを操作することによって)アクティブスタイラス100内で自由に設定および変更し得ることである。従来技術において、これらの値は、通常、ホストプロセッサ300上で動作するアプリケーション302(例えば、ドローイングアプリケーション)のみによって制御されていた。このように、従来技術においてアクティブスタイラス100は、大抵、入力位置座標および圧力データを入力装置として用いられ、アクティブスタイラス100の色、線幅、線スタイルなどを指定することができるようになっていなかった。スタイラスがより普及するにつれ、同じスタイラスが複数のアプリケーションにおいて、または複数のシステム上で使用される可能性が増大する。アプリケーション間またはシステム間で移動するときに、ユーザにとって、仮想オンスクリーンインクがこれらのアプリケーションおよびシステム間において持続しているかどうかは感覚によるところが大きいであろう。本発明の実施形態は、アクティブスタイラス100がアクティブスタイラス100の推奨の色、線幅、および/または線スタイルなどのアクティブスタイラス100の属性を示し得るようにすることによって、ホストプロセッサ300上で動作するアプリケーション302がユーザの嗜好に従って仮想オンスクリーンインクを持続的に描画することを容易にする。本発明の種々の実施形態によれば、以下で説明するように、アクティブスタイラス100に対するユーザ操作に基づいて、またはホストプロセッサ300上で動作するアプリケーション302からのコマンドに基づいて、仮想オンスクリーンインクの見栄えに影響を与えるこれらの値をアクティブスタイラス100内で自由に設定および調整することができる。
【0117】
一具体例によるデフォルトのディスクリプタ内に定義された17個の(17)スタイラス属性のさらなる詳細を以下に説明する。
【0118】
1.Report ID
[レポートID]:
・レポートID(Report ID)は適宜他のIDに変更することが可能である。
【0119】
2.Coodinates(Usage(X) and Usage(Y))
[座標(用法(X)および用法(Y))]:
・センサコントローラ200は付属のセンサについての全情報を有することから、物理的最大値(Phisycal Maximum)、ユニット(Unit)、およびユニットエクスポーネント(Unit Exponent)はセンサの実際のサイズおよび分解能を反映させるように変更されることとする。
・また、論理的最大値(Logical Maximum)はセンサのセンサコントローラ200によって出力される真の最大値を示すこととする。
・論理的最大値(Logical Maximum)が65535より大きい場合、レポートサイズを減少することがあり、必要に応じて補充分を追加する。
【0120】
3.Transducer Index(Usage(Transducer Index))
[トランスデューサインデックス(用法(トランスデューサインデックス))]:
・複数のスタイラスを同時に追跡する場合、トランスデューサインデックス(Transducer Index)はいずれのスタイラス100がレポートを生成したかを示す。
・スタイラス100が検出された場合にスタイラス100に固有のトランスデューサインデックス(Transducer Index)を割り当て、スタイラス100が範囲を外れるまで維持する。
・トランスデューサインデックス(Transducer Index)は任意である。値は再使用可能である。
【0121】
4.Tip Pressure(TiP)(Usage(Tip Pressure))
[先端圧力(TiP)(用法(先端圧力))]:
・スタイラス100によって出力される先端圧力(Tip Pressure)値は12ビットの値である。
【0122】
5.Barrel Pressure(Usage(Barrel Pressure))
[バレルプレッシャ(用法(バレルプレッシャ))]:
・スタイラス100によって出力されるバレルプレッシャ(Barrel Pressure)値は12ビットの値である。
・スタイラス100がバレルプレッシャ(Barrel Pressure)をサポートしない場合、レポートされる値は最大値(4095)に設定される。
・理由:バレルプレッシャ(Barrel Pressure)は不透明度などのブラシ動力を変化させるのに用いられる。バレルプレッシャ(Barrel Pressure)を最大値に設定することにより、ブラシ動力の最大の効果が適用される。
【0123】
6.Tip Switch(Usage(Tip Switch)
[先端スイッチ(用法(先端スイッチ))]:
・スタイラス100ではなくセンサコントローラ200が、以下のようにして先端スイッチ(Tip Switch)ビットを生成する。
・理由:スタイラス100が先端スイッチ(Tip Switch)ビットを送信する必要性を解消するために、センサコントローラ200は、
i).スタイラス100によってレポートされた先端圧力がゼロである場合は先端スイッチ(Tip Switch)を0に設定し、そうでない場合は先端スイッチ(Tip Switch)を1に設定し、
ii).(レポートされた先端圧力がゼロ以外である場合にイレーサ(Eraser)ビットが設定される代わりに)反転(Invert)ビットが設定されている場合は、先端スイッチ(Tip Switch)を設定しない。
【0124】
7.Barrel Switches(BB)(Usage(Barrell Switch) and Usage(Secondary Barrel Switch))
[バレルスイッチ(BB)(用法(バレルスイッチ)および用法(セカンダリバレルスイッチ)]:
・バレルスイッチのうちの1つがイレーサ分に指定された場合、そのことはスタイラス100によってバレルスイッチとしてレポートされない。代わりに、そのことは反転(Invert)ビットとしてレポートされる。これはスタイラス100内で行われる。
・セカンダリバレルスイッチ(Secondary Barrel Switch)は、オペレーティングシステムによって提供されるデータパーサにおいてサポートされない場合がある比較的新しいHID使用法である。
【0125】
8.Invert(Inv)(Usage(Invert))
[反転(Inv)(用法(反転))]:
・スタイラス100が反転(Invert)ビットを供給し、センサコントローラ200は供給しない。このビットはイレーサ分が使用中である場合に設定され、スタイラスのテイル端が表面に最も近いこと(テイルにイレーサスイッチおよびセンサがある場合)、またはイレースに指定されたバレルボタンが押下されたことのいずれかを意味する。
【0126】
9.Eraser(Usage(Eraser))
[イレーサ(用法(イレーサ))]:
・スタイラス100ではなくセンサコントローラ200が、以下の機能を扱う。
・理由:スタイラス100がイレース(Erase)ビットを送信する必要性を解消するために、センサコントローラ200は、
i)反転(Invert)ビットが0に設定されている場合はイレーサビットを0に設定し、
ii)反転(Invert)ビットが1に設定されており、かつスタイラス100によってレポートされた先端圧力(Tip Pressure)がゼロである場合は、イレーサビットを0に設定し、
iii)反転(Invert)ビットが1に設定されており、かつスタイラス100によってレポートされた先端圧力(Tip Pressure)がゼロでない場合は、イレーサビットを1に設定する。
【0127】
10.In Range(Usage(In Range))
[インレンジ(用法(インレンジ))]:
・センサコントローラ200はインレンジ(In Range)ビットを生成する。
・センサコントローラ200は、センサコントローラ200がスタイラス100を検出した後にレポートにおいてインレンジ(In Range)ビットを設定する。
・スタイラス100からデータを受信する間のすべての後続レポートはインレンジ(In Range)セットを有する。
・スタイラス100がそれ以上検出されないときにインレンジ(In Range)を消去した少なくとも1つのレポートが送信され得る。
【0128】
11.Orientation(OR)(Usage(X Tilt),Usage(Y Tilt), and Usage(Twist))
[オリエンテーション(OR)(用法(Xチルト)、用法(Yチルト)、および用法(ツイスト))]:
・スタイラス100によってレポートされないいずれのオリエンテーション値もゼロとしてレポートされる。
・スタイラス100からのオリエンテーションは高度(Altitude)および方位角(Azimuth)としてレポートされ、それらはセンサコントローラ200によってXチルト(X Tilt)およびYチルト(Y Tilt)に変換される。
・IMU値はセンサコントローラ200によってTilt値およびツイスト(Twist)値に変換されるようにする。
・Tilt値は−90〜90度の物理的な範囲を有するが、それらは好みに応じてラジアンでレポートされ得る。
・ツイスト(Twist)値は0〜360度の物理的な範囲を有するが、それらは好みに応じてラジアンでレポートされ得る。
・物理的な範囲および論理的な範囲は、度に関して小数点以下2桁の分解能を有し、またはラジアンに関して小数点以下4桁の分解能を有するものとし得る。
【0129】
12.Battery Level(BL)(Usage(Battery Strength))
[バッテリレベル(BL)(用法(バッテリ強度))]:
・バッテリレベル(Battery Level)はパーセントでレポートされる。
・スタイラスによってレポートされる当該レベルは16段階を有し得るものであり、調整する必要があり得る。
・バッテリレベル(Battery Level)は以下のように算出される。バッテリ強度(Battery Strength)=スタイラス100段階×(100/16)
【0130】
13.Serial Number(SN)(Usage(Tranceducer Serial Number))
[シリアル番号(SN)(用法(トランスデューサシリアル番号))]:
・シリアル番号(Serial Number)はスタイラス100の56ビットシリアル番号(Serial Number)であり、スタイラス100の8ビットベンダID(Vendor ID)が先頭に追加されて60ビット値をなす。
・シリアル番号(Serial Number)は、オペレーティングシステムによって提供されるデータパーサにおいてサポートされない場合がある比較的新しいHID使用法である。
【0131】
14.Preferred Color(Col)(Usage(Preferred Color))
[推奨色(Col)(用法(推奨色))]:
・スタイラス100の機能のうち推奨色はpreferred Color(Col)に配置される。スタイラス100に推奨色が存在しない場合は、用法に0xFF(推奨なし)が埋め込まれる。
・スタイラスダウンからスタイラスアップまで推奨色(preferred Color)はそれほど頻繁には変更されないため、この情報はフルレポート(Full Report)(
図14)に含めてショートレポート(Short Report)(
図14)には含めないことが好ましい。
【0132】
15.Preferred Line Width
[推奨線幅]:
・これはスタイラスの先端の物理的な幅を示すものであり得る。ディスクリプタは論理的および物理的な最小値および最大値を含むことになると考えられる。推奨の物理的な分解能は0.1mmである。ゼロ線幅は、(任意の拡大率における1画素幅などの)取り得る最小の幅を示し得る。
【0133】
16.Preferred Line Style
[推奨線スタイル]:
・スタイラスが描画するのにどのような線スタイルが好ましいかを示すもの。これはスタイラスの物理的特性を示すものであり得る。
【0134】
17.Vendor Defined Data and Usage(Usage Page(Vendor Defined Usage Page1)Usage(Vendor Usage2))
[ベンダ定義データおよび用法(用法ページ(ベンダ定義用法ページ1)用法(ベンダ用法2))]:
・スタイラスから受信した1または2カスタムバイトが、レポートの末尾におけるベンダ定義使用に配置される。
・使用されないバイトはゼロに設定される。
【0135】
図12Aを再度参照すると、ステップS1202において、センサコントローラ202はセンサTX回路によってデフォルトのディスクリプタを、ホストプロセッサ300にホストRX回路経由で送信する。センサコントローラ200とホストプロセッサ300との間の接続が確立されたときにホストプロセッサ300へのデフォルトのディスクリプタの送信が発生する、種々の実施例が挙げられる。ホストプロセッサ300は、デフォルトのディスクリプタを受信すると、その後、デフォルトのディスクリプタによってサポートされると共にセンサコントローラ200から送信されたスタイラスレポートを処理および受信し得る。
【0136】
ステップS1203において、センサコントローラ200は、定義されたスタイラス属性セットの第1のサブセットに関してレポートすることが可能な第1のアクティブスタイラス100A(
図11を参照)に結合している場合に、デフォルトのディスクリプタにより定義された第1のスタイラスレポートであって、第1のアクティブスタイラス100Aからレポートされた値113Aを埋め込んだスタイラス属性の第1のサブセットのフィールドを有する第1のスタイラスレポートを、ホストプロセッサ300に送信する。ステップS1204において、センサコントローラ200は、第1のサブセットと異なる定義されたスタイラス属性セットの第2のサブセットに関してレポートすることが可能な第2のアクティブスタイラス100Bに結合している場合に、デフォルトのディスクリプタにより定義された第2のスタイラスレポートであって、第2のアクティブスタイラス100Bからレポートされた値113Bを埋め込んだスタイラス属性の第2のサブセットのフィールドを有する第2のスタイラスレポートを、ホストプロセッサ300に送信する。例えば、第1のアクティブスタイラス100Aは、デフォルトのディスクリプタにおいて定義されたスタイラス属性のほぼすべてに関してレポートすることが可能であり得る一方、第2のアクティブスタイラス101Bは、僅かなスタイラス属性(例えば、位置およびペン圧力)に関してのみレポートすることが可能であり得る。第1のサブセットのスタイラス属性と第2のサブセットのスタイラス属性とは、第1のサブセットおよび第2のサブセットにそれぞれ含まれるスタイラス属性の種類、および/または第1のサブセットおよび第2のサブセットにそれぞれ含まれるスタイラス属性の数の点で異なり得る。センサコントローラ200と共に用いられるアクティブスタイラスの機能にかかわらず、センサコントローラ200は個々のアクティブスタイラス100からレポートされたスタイラス属性に基づいてスタイラスレポートを作成し、スタイラスレポートをホストプロセッサ300に送信することができる。センサコントローラ200から送信されるすべてのスタイラスレポートはデフォルトのディスクリプタによってサポートされるため、スタイラスからレポートされるスタイラス属性を他のレポートより多く含むレポートも存在するものの、デフォルトのディスクリプタを受信したホストプロセッサ300はこのようなスタイラスレポートをすべて解釈および処理することができる。
【0137】
場合によっては、アクティブスタイラス100は、デフォルトのディスクリプタにおいて定義された全スタイラス属性に関してレポートすることが可能であり得る。このような場合に、サブセットのスタイラス属性は、デフォルトのディスクリプタに含まれる定義されたスタイラス属性セットと同じである。異なるアクティブスタイラス(100A、100B)が、共々デフォルトのディスクリプタに含まれる定義されたスタイラス属性セットより少ない、異なるサブセットのスタイラス属性を尊重してサポートする場合もある。
【0138】
図12Bは、種々のスタイラス属性セットを含むスタイラスレポートの送信をサポートするデフォルトのディスクリプタに基づいた、センサコントローラ200とホストプロセッサ300との間の通信に供される方法を示す他のフローチャートである。ステップS1211において、センサコントローラ200は、定義されたスタイラス属性セットのデフォルトのディスクリプタをホストプロセッサ300に送信する。ステップS1212において、センサコントローラ200はアクティブスタイラス100からスタイラス属性を受信する。ステップS1213において、センサコントローラ200は、どのような(いずれの)サブセットのスタイラス属性を受信したかを判定する。第1のサブセットのスタイラス属性を受信した場合は、ステップS1214において、センサコントローラ200は、デフォルトのディスクリプタによってサポートされる、第1のサブセットのスタイラス属性の受信した値を埋め込んだ第1のスタイラスレポートを生成する。一方、(第1のサブセットと異なる)第2のサブセットのスタイラス属性を受信した場合は、ステップS1216において、センサコントローラ200は、デフォルトのディスクリプタによってサポートされる、第2のサブセットのスタイラス属性の受信した値を埋め込んだ第2のスタイラスレポートを生成する。以下でより詳細に説明するように、いずれの場合も、ステップS1215において、またはステップS1217において必要に応じ、センサコントローラ200は、アクティブスタイラス100からレポートされていないスタイラス属性に対するレポートにおける何らかのフィールドにデフォルトの値を埋め込むことによって、および/または適当な平滑化アルゴリズムを適用してそれらの(レポートされていない)フィールドに「平滑化された(smoothed)」データを埋め込むことによってレポートを完成させる。ステップS1218において、必要に応じてデフォルト値、および/または、平滑化されたデータが埋め込まれ得る、生成された第1または第2のスタイラスレポートは、ホストプロセッサ300に送信される。
【0139】
センサコントローラ200が、デフォルトのディスクリプタによって定義された、定義されたスタイラス属性セットのすべてに関してレポートすることは可能でないアクティブスタイラスと結合している場合に、センサコントローラ200は、スタイラスレポートを生成するときに、アクティブスタイラスからレポートされていないスタイラス属性に対するデフォルト値をレポート内のフィールドに埋め込み得る。デフォルト値は、予め定義され得るし、または予め定義されたアルゴリズムに従って算出され得る。例えば、デフォルトのディスクリプタにおいて定義されたスタイラス属性のいずれも特定のアクティブスタイラスによってサポートされず、したがってレポートもされない場合に、それらのスタイラス属性に対するレポートフィールドに、該特定のスタイラス属性がアクティブスタイラスによってサポート/レポートされないことを示すデフォルト値(例えば、最大値)を埋め込み得る。他の特定の例として、アクティブスタイラスが推奨色を有しない場合に、推奨色に対するレポートフィールドを、推奨色が存在しないことを示すデフォルト値に設定し得る。
【0140】
センサコントローラ200が、スタイラスレポート内のフィールドに埋め込む、アクティブスタイラス100からレポートされたスタイラス属性に対して平滑化アルゴリズムを適用する、種々の実施例が挙げられる。例えば、センサコントローラ200は、アクティブスタイラス100からレポートされたスタイラス属性に対して、サブサンプリング、スーパーサンプリング、内挿、または外挿処理のうちの1つまたは複数を適用し得る。このような平滑化は、アクティブスタイラス100からレポートされたスタイラス属性に加えて、センサコントローラ200によってアクティブスタイラス100からの信号に基づいて生成された座標データを平滑化することを含む。ホストプロセッサ300上において動作するオペレーティングシステムおよびアプリケーション(
図11における302)は、通常どおり、アクティブスタイラス100からセンサコントローラ200を介してレポートされたデータが等しい時間間隔で発生するものとする。したがって、センサコントローラ200がスタイラス属性を等間隔で受信しない場合は、センサコントローラ200は適当な平滑化アルゴリズムを適用して欠落データを生成し、ホストプロセッサ300にレポートするデータが等しい時間間隔をおいて現れるようにする。ホストコントローラ300上で動作するアプリケーション(
図11における302)によって平滑化アルゴリズムを代替的にまたは追加で適用する他の実施形態が挙げられる。
【0141】
センサコントローラ200は、スタイラスレポートを生成するときに、アクティブスタイラス100からレポートされる任意のスタイラス属性のフォーマットを、スタイラスレポートに含めるのに適したフォーマットに変換し得る。例えば、アクティブスタイラス100の推奨色(
図13における1300)が第1のフォーマット(例えば、65536RGBフォーマット色のうちの1つを示す16ビット)でレポートされた場合に、センサコントローラ200は第1のフォーマットをスタイラスレポートに適した第2のフォーマット(140CSS(カスケーディングスタイルシート)のうちの1つを示す8ビット)に変換し得る。センサコントローラ200は、その場合に、ホストプロセッサ300に送信するスタイラスレポートに第2のフォーマットで推奨色を含め得る。
【0142】
図14を再度参照すると、他の実施形態として、デフォルトのディスクリプタは、「フルレポート(Full Report)」をサポートする、定義されたスタイラス属性セットからなる第1の記述と、「ショートレポート(Short Report)」をサポートする、定義されたスタイラス属性セットのサブセットからなる第2の記述とを含み得る。
図15は、ショートレポート(Short Report)をサポートする、
図13のデフォルトのディスクリプタ内の定義されたスタイラス属性セットのサブセットの第2の記述例である。図示のように、第2の記述は、より少ない数のスタイラス属性を含む。
図14において、「X」は特定のスタイラス属性がフルレポート(Full Report)に含まれること、および/またはショートレポート(Short Report)に含まれることを示し、ショートレポート(Short Report)に含まれるスタイラス属性の数はフルレポート(Full Report)と比較して少ないことを示す。このように、種々の実施例において、ショートレポートはフルレポートより小さいデータサイズを有する。アクティブスタイラス100がショートレポート(Short Report)に含まれるスタイラス属性を提供するだけである場合は、センサコントローラ200はフルレポート(Full Report)の代わりにより小さいデータサイズを有するショートレポート(Short Report)を生成および送信し得る。アクティブスタイラス100がショートレポート(Short Report)に含まれない何らかのスイラス属性を提供する場合は、センサコントローラ200はフルレポート(Full Report)を生成および送信し得る。
【0143】
フルレポート(Full Report)およびショートレポート(Short Report)を用いる実施形態において、センサコントローラ200は、定義されたスタイラス属性セットに関して実質的にレポートすることが可能な第1のアクティブスタイラス100Aと結合している場合に、デフォルトのディスクリプタに含まれる第1の記述により定義されたフルレポート(Full Report)であって、第1のアクティブスタイラス100Bからレポートされた値を埋め込んだ定義されたスタイラス属性セットスタイラス属性のフィールドを実質的に有するフルレポート(Full Report)を、ホストプロセッサ300に送信する。センサコントローラ200は、スタイラス属性のサブセットに関して実質的にレポートすることが可能な第2のアクティブスタイラス100Bと結合している場合に、第2の記述により定義されたショートレポート(Short Report)であって、第2のアクティブスタイラス100Bからレポートされた値を埋め込んだスタイラス属性のサブセットのフィールドを実質的に有するショートレポート(Short Report)を、ホストプロセッサ300に送信する。本明細書では、属性セットに関して「実質的に(substantially)」レポートすることは、属性セットのすべてまたはほぼすべてに関してレポートすることを意味する。例えば、
図14において、フルレポート(Full Report)は18個のスタイラス属性を含み、ショートレポート(Short Report)は10個のスタイラス属性を含む。アクティブスタイラスが10個のショートレポート(Short Report)属性すべてと少なくとも1つの付加的な属性とをサポートする場合に、センサコントローラ200はアクティブスタイラスに対して11〜18個の属性を含むフルレポート(Full Report)を生成する。すなわち、アクティブスタイラスが11個の属性のみをサポートしていても、フルレポート(Full Report)を生成し、定義された属性セットを「実質的に」含むとみなす。本実施形態によれば、個々のアクティブスタイラス100の機能に応じて、センサコントローラ200はフルレポート(Full Report)とショートレポート(Short Report)とのいずれかを生成し、いずれにしてもアクティブスタイラスからレポートされたスタイラス属性を実質的にレポートするように適合させる。本実施形態においても、フルレポート(Full Report)とショートレポート(Short Report)とのいずれかに含めるスタイラス属性が必ずしもアクティブスタイラスからレポートされない場合があるため、センサコントローラ200は、アクティブスタイラスからレポートされないスタイラス属性に対する選択したレポート内のフィールドにデフォルト値を埋め込み得る。さらに、センサコントローラ200は、選択したレポート内のフィールドに埋め込むアクティブスタイラスからレポートされたスタイラス属性に対して平滑化アルゴリズム(サブサンプリング、スーパーサンプリング、内挿、外挿など)を適用し得る。センサコントローラ200は、アクティブスタイラス100からレポートされた、アクティブスタイラス100によってサポートされる属性を示すスタイラス機能情報を用いて、フルレポート(Full Report)とショートレポート(Short Report)とのいずれを用いるかを選択し得る。(
図11における114を参照)
【0144】
図11、12C、および16を参照して、概して5つのステップを含む、ホストプロセッサ300とセンサコントローラ200との間の他の通信方法を説明する。
図12CのステップS1205において、ホストプロセッサ300は、ホストプロセッサ300上で動作するアプリケーション(
図11における302)によって発行されるコマンド121をセンサコントローラ200に送信する。ステップS1206において、センサコントローラ200はコマンド121を受信してアクティブスタイラス100に転送する。例えば、センサコントローラ200は、センサコントローラ200がアクティブスタイラス100に送信する任意の信号(例えば、ビーコン信号)に該コマンドを含め得る。ステップS1207において、アクティブスタイラス100は、コマンド121に応答して、コマンド121に従って動作してセンサコントローラ200にコマンド応答123を送信する。例えば、アクティブスタイラス100は、アクティブスタイラス100がセンサコントローラ200に送信する任意の信号(例えば、応答信号)に該コマンド応答を含め得る。ステップS1208において、センサコントローラ200は、センサコントローラ200のメモリにコマンド応答123を記憶する。ステップS1209において、ホストプロセッサ300は、センサコントローラ200のメモリからコマンド応答123を読み出すように要求する。
図16のシーケンス図に本方法をさらに示す。ホストプロセッサ300とセンサコントローラ200との間におけるコマンド121およびコマンド応答123の交換は、ユニバーサルシリアルバス(USB)インタフェース、集積回路間(I2C)バス、シリアルペリフェラルインタフェース(SPI)バス、または他の適当なハードウェアインタフェースなどの任意の適当なインタフェースによってサポートされる。
【0145】
本方法によって、ホストプロセッサ300上で動作するアプリケーション302がスタイラス100にコマンドを発行し、スタイラス100から結果を受信することが可能となる。センサコントローラ200は、ホストプロセッサ300から受信したコマンドを、該コマンドの内容を解釈することなくアクティブスタイラス100に転送し、アクティブスタイラス100から返信されたコマンド応答を、ホストプロセッサ300上で動作するアプリケーション302による後の読出しに備えて受信および記憶する。センサコントローラ200が、ホストプロセッサ300から受信したコマンドを「そのまま(as is)」アクティブスタイラス100に転送する、種々の実施形態が挙げられる。例えば、センサコントローラ200がホストプロセッサ300からNビットからなるコマンドを受信する場合に、センサコントローラ200はNビットのコマンドを何らの変更または追加なしにアクティブスタイラス100に転送する。このことには、ホストプロセッサ300上で動作するアプリケーション302が、センサコントローラ200の機能(例えば、ファームウェア)にかかわらず、アクティブスタイラス100のためにコマンドを解釈/処理するように種々のコメントを発行することができることに技術的に利点があり得る。これらの実施形態において、コマンド100はアクティブスタイラス100によって動作可能/実施可能でありさえすればよい。このことは、アプリケーション302によって利用され得る種々の(追加の)コマンドを設計する際の自由度を、さらにはアクティブスタイラス100にアプリケーション302が利用することができる種々の(追加の)属性/特徴を導入する際の自由度をもたらし得る。
【0146】
ホストプロセッサ300上で動作するアプリケーション302からセンサコントローラ200に種々の種類のコマンドが送信されてアクティブスタイラス100へと転送され得る。
【0147】
コマンド121は、アクティブスタイラスの属性を特定する要求(または読出し)コマンドからなり得る。例えば、コマンドは、アクティブスタイラス100の推奨色値、推奨線幅値、または推奨線スタイル値などを特定するようにアクティブスタイラス100に要求し得る。アクティブスタイラス100からのコマンド応答123は、その場合に、アクティブスタイラスの推奨色値、推奨線幅値、または推奨線スタイル値を含む。コマンド応答123は、次いで、センサコントローラ200のメモリに記憶され得る。ホストプロセッサ300上で動作するアプリケーション302は、その後、センサコントローラ200のメモリから、記憶した属性(例えば、アクティブスタイラス100の推奨色、推奨線幅、および/または推奨線スタイル)を読み出し得る。スタイラスがより普及するにつれ、同じスタイラスが複数のアプリケーションにおいて、または複数のシステム上で使用される可能性が増大する。アプリケーション間またはシステム間で移動するときに、ユーザにとって、仮想オンスクリーンインクがこれらのアプリケーションおよびシステム間において持続しているかどうかは感覚によるところが大きくなるであろう。本発明の実施形態は、アクティブスタイラス100がアクティブスタイラス100の推奨の色、線幅、および/または線スタイルなどのアクティブスタイラス100の属性を示し得るようにすることによって、ホストプロセッサ300上で動作するアプリケーション302がユーザの嗜好に従って仮想オンスクリーンインクを持続的に描画することを容易にする。さらなる例として、要求コマンド121は、アクティブスタイラス100にバッテリレベル、ファームウェアバージョン、スタイラスバージョンなどを特定するように要求し得る。アクティブスタイラス100は、バッテリレベル、ファームウェアバージョン、スタイラスバージョンなどを示すデータを含むコマンド応答123を返信し、該データはホストプロセッサ300による読出しに備えてセンサコントローラ200のメモリに記憶される。
【0148】
アクティブスタイラスの推奨色、推奨線幅、および/または推奨線スタイルなどのアクティブスタイラスの属性がセンサコントローラ200によって読み出されるのみであって変更可能でない実施形態も挙げられる。このことは、例えば、アクティブスタイラスが、推奨色に適合する色を有する物理的なインクを備える場合、またはユーザによりセレクタスイッチを用いて推奨色が設定される場合に当てはまり得る。
【0149】
アクティブスタイラスの属性がセンサコントローラ200によって(強制的に)設定または構成され得る他の実施形態も挙げられる。これを達成するために、センサコントローラ200は、アクティブスタイラスの推奨色値、推奨線幅値、または推奨線スタイル値などの、アクティブスタイラスの属性を設定する設定コマンド121を送信し得る。ホストプロセッサ300上で動作するアプリケーション302はセンサコントローラ200に対して設定コマンド121を発行し、設定コマンド121は次いでアクティブスタイラス100に転送される。アクティブスタイラス100は、設定コマンド121を受信すると、設定コマンド121に従ってアクティブスタイラス100の属性を設定し、設定コマンド121によって要求された動作を実行することができた(すなわち、推奨色値、推奨線幅値、および/または推奨線スタイル値を設定することができた)ことを示すフラグを含むコマンド応答123を送信する。
【0150】
他の実施形態として、ホストプロセッサ300上で動作するアプリケーション302は、アクティブスタイラス100に規定のフォーマットで(例えば、スタイラス属性を含む)ダウンリンク信号を送信するように要求するコマンド121を発行し得る。デフォルトフォーマットは、アクティブスタイラス100がダウンリンク信号を送信するのに用いる送信周波数および送信時間長の少なくとも一方を指定し得る。センサコントローラ200はこのようなコマンド121をアクティブスタイラス100に転送し、アクティブスタイラス100は、コマンド応答123の一部として、またはコマンド応答123とは別に、コマンド121によって特定された規定のフォーマットでダウンリンク信号を送信する。例えば、アクティブスタイラス100は、コマンド121によって特定された送信周波数および/または送信時間長(所要時間)を用いてダウンリンク信号を送信する。
【0151】
さらに他の実施形態として、ホストプロセッサ300上で動作するアプリケーション302は、アクティブスタイラス100にデータを取得する規定の動作を実行するように要求するコマンド121を発行し得る。例えば、コマンド121はアクティブスタイラス100に診断テストを実行するように要求し得る。このような「診断(diagnostic)」コマンドは「要求」コマンドの一種とみなし得る。アクティブスタイラス100は、このようなコマンド121を受信すると、要求された診断テストを実行し、テスト結果データをコマンド応答123の一部として、またはコマンド応答123とは別にセンサコントローラ200に返信する。返信されたデータは、次いで、ホストプロセッサ300上で動作するアプリケーション302による読出しに備えて、センサコントローラ200のメモリに記憶される。
【0152】
他の実施形態として、ホストプロセッサ300上で動作するアプリケーション302は、アクティブスタイラス100の圧力曲線を、アクティブスタイラス100が模擬するように構成された線スタイルを有する既存のマーキングツール(例えば、鉛筆、ローラボールペン)の力応答曲線に接近させるようにアクティブスタイラス100に指示するコマンド121を発行し得る。
【0153】
スタイラス100によってレポートされた先端圧力データは、力センサによって計測された、スタイラス先端に加わる力の結果である。加わる力とレポートされた圧力値との間の関係は、「圧力曲線(pressure curve)」と呼ばれ、実際は通常、直線または対数である。
【0154】
鉛筆またはローラボールペンなどの既存のマーキングツールを用いる場合は、加わる力と視覚上の結果との間に、「力応答曲線(force response curve)」と呼ばれる関係が存在する。力応答曲線はマーキングツールごとに異なり、特定のスタイルのマーキングツール(例えば、鉛筆、ローラボールペン)を模擬するように構成されたスタイラスの圧力曲線と異なり得る。例えば、鉛筆は、明るい側の線および暗い側の線を伴う、加わる力の範囲に応答するより直線的な力応答曲線を有する一方、ローラボールペンは、追加で加わる力が描線にほとんど影響を与えない非常に急峻な力応答曲線を有する。したがって、スタイラスの圧力曲線を修正して、スタイラスが模擬するように構成された既存のマーキングツールの力応答曲線により適合させることは技術的に利点が存在し得る。
【0155】
スタイラス圧力曲線を既存のマーキングツールの力応答曲線に適合させるためには、ユーザがどのようなマーキングツールを使いたいかを知る必要がある。上述した本発明の種々の実施形態による推奨線スタイル値を導入するために、ホストプロセッサ300上で動作するアプリケーション302は、アクティブスタイラス100に対してユーザが意図する特定の線スタイルを判定し得る。例えば、アプリケーション302は、(例えば、ユーザによって)アクティブスタイラス100に設定された線スタイル値を返信するようにアクティブスタイラス100に要求する要求コマンド121を送信し得る。これに代えて、アプリケーション302は、アクティブスタイラス100に特定の線スタイルを強制的に設定する設定コマンド(線スタイルコマンド)121を送信してもよい。線スタイルコマンド121において特定されたマーキングツールに基づいて、アクティブスタイラスが(自動的に)圧力曲線を調整して、特定された線スタイル値に対応するマーキングツールの近似した力応答曲線に接近させる、種々の実施例が挙げられる。例えば、アクティブスタイラス100の線スタイル値が「鉛筆(pencil)」に設定される場合に、アクティブスタイラス100は、アクティブスタイラス100の圧力曲線を調整して鉛筆の力応答曲線に接近させるように指示される。これらの実施形態において、アクティブスタイラス100に対して特定の線スタイル値を(強制的に)設定する単一のコマンドは、さらに、アクティブスタイラス100の圧力曲線を調整して、設定された線スタイル値に対応する力応答曲線に合わせるように指示し得る。
【0156】
上述した種々の実施形態を組み合わせてさらなる実施形態を提供することが可能であり、上述の詳細な説明に基づいて実施形態の態様を変更することが可能である。一般に、以下の請求項において、用いられる用語は明細書および請求項において開示された特定の実施形態に限定されると解釈すべきではなく、このような請求項が該当する等価物の全範囲と共にすべての存在し得る実施形態を含むと解釈すべきである。