JP2012120240A - リモートコントロール・フレームワーク - Google Patents

リモートコントロール・フレームワーク Download PDF

Info

Publication number
JP2012120240A
JP2012120240A JP2012027286A JP2012027286A JP2012120240A JP 2012120240 A JP2012120240 A JP 2012120240A JP 2012027286 A JP2012027286 A JP 2012027286A JP 2012027286 A JP2012027286 A JP 2012027286A JP 2012120240 A JP2012120240 A JP 2012120240A
Authority
JP
Japan
Prior art keywords
bearer
client
api
command
remcon
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012027286A
Other languages
English (en)
Other versions
JP5479513B2 (ja
JP2012120240A5 (ja
Inventor
Turner John
ジョン ターナー,
Shang James
シャン ジェームズ,
Harris Neil
ニール ハリス,
Howes Tim
ティム ハウズ,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Oyj
Original Assignee
Nokia Oyj
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Oyj filed Critical Nokia Oyj
Publication of JP2012120240A publication Critical patent/JP2012120240A/ja
Publication of JP2012120240A5 publication Critical patent/JP2012120240A5/ja
Application granted granted Critical
Publication of JP5479513B2 publication Critical patent/JP5479513B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C17/00Arrangements for transmitting signals characterised by the use of a wireless electrical link
    • G08C17/02Arrangements for transmitting signals characterised by the use of a wireless electrical link using a radio link
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C23/00Non-electrical signal transmission systems, e.g. optical systems
    • G08C23/04Non-electrical signal transmission systems, e.g. optical systems using light waves, e.g. infrared
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/237Communication with additional data server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/422Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
    • H04N21/42204User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/422Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
    • H04N21/42204User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor
    • H04N21/42226Reprogrammable remote control devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/02Terminal devices
    • H04W88/06Terminal devices adapted for operation in multiple networks or having at least two operational modes, e.g. multi-mode terminals
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C2201/00Transmission systems of control signals via wireless link
    • G08C2201/40Remote control systems using repeaters, converters, gateways
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C2201/00Transmission systems of control signals via wireless link
    • G08C2201/40Remote control systems using repeaters, converters, gateways
    • G08C2201/41Remote control of gateways
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C2201/00Transmission systems of control signals via wireless link
    • G08C2201/90Additional features
    • G08C2201/93Remote control using other portable devices, e.g. mobile phone, PDA, laptop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/72409User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories
    • H04M1/72415User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories for remote control of appliances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/43615Interfacing a Home Network, e.g. for connecting the client to a plurality of peripherals

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Selective Calling Equipment (AREA)
  • Telephonic Communication Services (AREA)

Abstract

【課題】リモートコントロールフレームワークは、複数のターゲットデバイスがベアラの種類に関わらず複数のリモートコントロールデバイスにより制御されることを可能にする。
【解決手段】任意のターゲットデバイスがコントロールデバイスとしての役割を果たしてもよく、任意のコントロールデバイスがターゲットデバイスとしての役割を果たしてもよい。フレームワークは、任意のターゲットデバイス上で実行する任意のアプリケーションが任意のコントローラデバイスにより制御されることを可能にする。
【選択図】図3

Description

本発明は、デバイスのリモートコントロールを可能にする方法に関する。
本発明の以下の説明を明確にするため、デバイスという用語は、任意の種類の有線又は無線接続を介して任意の種類の外部デバイスによりリモートコントロールできるエンティティを示すために使用される。
無線リモートコントロールを最初に実証したのは、1898年にMadison Square Gardensの電気博覧会において特設された池で無線制御のボートを公開したNikola Teslaであった。特許文献1がその発明に関して発行された。
この素晴らしい歴史にも関わらず、家庭電気/電子機器に対してリモートコントロール技術が商業面で初めて本格的に利用されたのは、Zenithがテレビに関連してその技術を使用した約50年後であった。最初のテレビのリモートコントロール「Lazy Bones」は1950年に登場し、長い電線でテレビに接続されていた。テレビの有線リモートコントロールは寿命の短い技術であった(ユーザがコードにつまずくことが主な理由であった)が、スライド映写機及びディクタフォン用の有線リモート等の従来の有線リモートからSonyのRMVD1が最新の例であるデジタルカムコーダ等のより現代的な機器まで多くの他の種類の電子機器に対して製造し続けられている。
現在、そのようなデバイスの殆どを構成するのは無線リモートコントロールである。1955年、Zenithの「Flashmatic」が最初に登場した無線テレビリモートコントロールであり、テレビの光電セルに対して生成される可視光線信号により動作した。その翌年、Robert Adlerの「Space Commander」がZenithの最初の現実的な無線リモートコントロールとなった。それは機械的に動作する超音波装置であった。超音波は、1980年代に赤外線送信装置が開発されるまでリモートコントロール技術の基礎となっていた。赤外線により必要とされるLOS通信が非現実的である場合に一般にRF(無線周波数)が使用されるが、赤外線は依然として今日のリモートコントロールデバイスに対する選択肢となる技術である。
無線リモートは一般に多種多様であるが、特に電線が必要とされる機器において有線リモートが復活してきていることは明らかである。その最も分かりやすい例は、オーディオ機能性を有する機器である。これは、ハンズフリーヘッドセットのオーディオリードに挿入されたモジュールのボタン及び高性能デジタル音楽プレーヤ上のより複雑な形態のボタンを介して制御される移動電話を含む(AppleのiPod(登録商標)、Creative Zen(登録商標)及びiRiver(登録商標)等の全ての市場のリーダはオプションの又は一体型の有線リモートコントロールを有する)。
要約すると、現在の電気/電子機器のリモートコントロールは、今日、以下の状況において広く普及している。その状況では、機器を動作するユーザと機器自体とが物理的に近接することが、以下のいずれかの場合に該当する。
・不可能である場合;飛行機又は船等の乗り物の場合。
・困難である場合:通常、壁又は天井の高い位置に取り付けられる空調装置等の機器の場合。
・使用環境に不適切であると考えられる物理的変更又は努力を必要とするため不便である場合;テレビ、DVD及び音楽プレーヤ等の最近の音響映像機器及びオーディオ機器の場合。
近年まで、機器のリモートコントロール技術は多くの関連技術において制限されていた。
・リモートコントロールデバイスは、それらにより制御され、近接して接続される機器と共に製造・販売されていた。通信には、プロプライエタリ信号及びプロトコルが使用された。これは、赤外線装置にも当てはまる。赤外線データ協会(IrDA、非特許文献1を参照)により開発された赤外線通信に対する規格が存在するが、リモートコントロールはそれを利用していない。実際には、「種々の符号化システムが使用されており、一般に、異なる製造業者は異なるコード及び異なるデータ送信速度を使用する」とある(非特許文献2より)。
尚、この説明において、種々の製造業者の機器と共に使用されるプログラマブルリモートコントロールの存在は、それらリモートコントロールが共通の規格に準拠することの証明ではない。そのようなプログラマブルデバイスは、全ての状況で機能する単一モードで実行できるのではなく、種々の製造業者の各々の動作モード、送信プロトコル、データ転送速度及び制御コードをエミュレートできる。
・リモートコントロール機器が供給されたが、それらは全て専用の拡張不可能なデバイスであった。リモートコントロール機器は、固定の機能セットを有し、製造時に組み込まれた機能以外の機能を実行できなかった。
・同様に、リモートコントロールされる全ての機器は、特にそのために設計される必要があった。それら機器の機能は固定され、機器の製造時に組み込まれた機能以外の機能を実行できなかった。
しかし、電子機器は益々多機能でプログラマブルになってきている。電子機器は、汎用コンピュータで採用される同一種類の中央処理装置及びメモリを中心に構築される傾向にある。その場合に上述の制限を回避できるようになってきていることの実質的な証拠が存在する。
リモートコントロール技術の分野において、一般に、プログラマブルコンピュータで使用される同一のプロセッサ及びメモリ構成要素を中心に構築される機器は、規格化された通信技術を利用できる。それら規格には以下のものがある。
・Bluetooth(非特許文献3のBluetooth Special Interest Groupのウェブサイトを参照)。これは、特定の状況で使用されるように設計された種々のプロファイルにおいて実装される低電力の狭域無線ネットワーキングプロトコルである。Bluetoothの最も一般的な用途の1つは、移動電話の無線ヘッドセットにおいて、ヘッドセットが移動電話をリモートコントロールすることを可能にするハンズフリープロファイル又はヘッドセットプロファイルを利用することである。
・Firewire/IEEE1394(非特許文献4の1394 Trade Associationのウェブサイト又は非特許文献5のThe Institute of Electrical and Electronic Engineers High Performance Serial Bus Bridges Working Group P1394.1を参照)。これは、回線を介して実行する高速シリアルプロトコルであり、マルチメディア機器のリモートコントロールに益々使用されてきている。規格は、Digital Remote Control Command Setを含む。
・ANSI/CEA−2027;これは、比較的新しい規格であり、全米家電協会(CEA)により2004年7月に完成された。これは、IP(インターネットプロトコル)を使用してホームネットワークを介して相互接続されるオーディオ/ビデオ機器の制御に使用されるインタフェースを規定する。
それら規格の使用が増加しているが、多くの企業がそれら規格を十分に利用していないことが明らかである。例えば、AppleがFirewireを発明したにも関わらず、AppleはApple自体のリモートコントロールにおいてその技術を使用していない。iPodのリモートコントロールで使用される専用プロトコルを逆行分析するにはある程度の労力が必要であった。それについては、非特許文献6に説明されている。
上述の規格に基づく技術と同様に、機器がプログラム可能デジタルコンピュータを内蔵すると仮定すると、2つの機器が互換性のあるソフトウェアを実行している時、それら双方の機器をリンクすることにより一方が他方を制御できることが明らかとなった。従って、より大型の固定機器(パーソナルコンピュータ等)はより小型の移動機器(携帯電話等)により制御され、多くの場合、従来のリモートコントロールの機能性の上位セットを与える。この技術の例は多く存在し、それら技術により、Windows(登録商標)PCを制御するBemused(非特許文献7)及びBluetooth Remote Control(非特許文献8)等のBluetoothを介してパーソナルコンピュータ上でメディアプレーヤ及び他のアプリケーションを制御するために移動電話を使用できる。Salling Clickerは、移動電話がAppleのMacintosh(非特許文献9)を制御することを可能にし、Linuxに対する実現例が更に存在する(非特許文献10等)。
上述の従来技術は、専用の融通性のないプロプライエタリリモートコントロール解決策から汎用性があり融通性のある規格に基づくリモートコントロール解決策に徐々に進歩していることを示す。
しかし、上述の全ての規格に基づく解決策は、ベアラ技術特有の解決策であり、また、多くの場合にそのベアラと共に使用されるトランスポートプロトコル特有の解決策であるということにより制限される。リモートコントロール信号伝送用の多くの可能なベアラは、以下を含むがそれらに限定されないことが、当業者には認識されるだろう。
・Bluetooth(多くの可能なプロファイルのうちの任意の1つを使用する)。
・IPを使用する信号伝送方法を使用する無線イーサネット(登録商標、802.11)。
・赤外線(プロプライエタリ及びIrDA)。
・プロプライエタリRF解決策。
・IEEE1394コマンドセット又はANSI/CEA−2027を利用するIEEE1394(Firewire)。
・USB−OTG(On-The-Go)を含むUSB(Universal Serial Bus)。
・RS−232シリアルプロトコルを含む他の有線解決策。
現在、それらベアラのうち任意の1つを使用するリモートコントロールと協働するように設計される機器は、リモートコントロールが標準のプロトコルを使用するか否かに関わらず他の種類のベアラと協働できない。特定用途向け有線リモートコントロールと共に使用されるように設計されたMP3又は他の音楽プレーヤは、利用可能な業界標準のインタフェースを有するが、一般的なFirewire、USB、Bluetooth又は赤外線リモートコントロールデバイスと協働させられない。
リモートコントロールデバイスが同一のベアラを使用しても、互換性のないプロトコルが実装される場合、機器は動作できない。例えば、Bluetoothヘッドセット及びハンズフリープロファイルは非常に異なり、ヘッドセットプロファイルのみをサポートするBluetooth対応移動電話はハンズフリープロファイルのみをサポートするBluetooth周辺装置と協働しないことが周知である。この種の非互換性を容易に修正する方法がないため、そのような非互換性は多くの消費者の悩みの原因となっている。
米国特許第613,809号公報 インターネット〈http://www.irda.org/〉 インターネット〈http://www.epanorama.net/links/irremote.html〉 インターネット〈http://www.bluetooth.com/〉 インターネット〈http://www.1394ta.org/〉 インターネット〈http://grouper.ieee.org/groups/1394/1/index.html〉 インターネット〈http://www.maushammer.com/systems/ipod-remote/ipod-remote.html〉 インターネット〈http://www.compsoc.man.ac.uk/~ashley/bemused/〉 インターネット〈http://www.labtech.epitech.net/remotecontrol/〉 インターネット〈http://homepage.mac.com/jonassalling/Shareware/Clicker〉 インターネット〈http://www.iptel-now.de/HOWTO/BT_REMOTE/bt_remote.html〉
従って、本発明の目的は、コマンドを転送するのに使用されるプロトコル又はベアラに関わらず、任意の種類のリモートコントロールデバイスからそれらコマンドを受信するために機器上で実行するアプリケーションソフトウェアにより使用される一般的なリモートコントロール・インタフェースを提供することにより、リモートコントロール解決策と特定のベアラ技術との間の密接な結び付きが原因である上述の問題を少なくとも改善するリモートコントロール・インタフェースを提供することである。
同一の一般的なソフトウェアインタフェースは、プロトコル又はベアラに関わらず、リモートコントロールデバイスにより使用され、機器にコマンドを送出する。
更に、その一般的なソフトウェアインタフェースを実装するプログラマブル演算装置を内蔵する機器は、リモートコントロールデバイスから単にコマンドを受信するためにソフトウェアインタフェースを使用できるだけでなく、リモートコントロールデバイスとして動作するためにソフトウェアインタフェースを使用できる(適切なアプリケーションと共に)。
本発明の第1の側面によると、1つ以上のターゲットデバイスが任意のベアラを介して任意のコントローラデバイスからコマンドを受信できるようにする一般的なリモートコントロール・インタフェースを提供することにより、
・USB及び単純なシリアルを含む固定配線と、
・赤外線と、
・超音波と、
・Bluetooth及び802.11無線ネットワーキングを含むがそれらに限定されないRFと、
を含むがそれらに限定されない複数のベアラのうち少なくとも1つを介して送出されたコマンドを使用して、1つ以上のコントローラデバイスが前記1つ以上のターゲットデバイスをリモートコントロールできるようにする方法が提供される。
本発明の第2の側面によると、第1の面の方法に従って動作するように構成される演算装置が提供される。
本発明の第3の側面によると、第1の面の方法に従って演算装置を動作させるオペレーティングシステムが提供される。
次に添付の図面を参照し、更なる例として本発明の一実施形態を説明する。
以下の説明において、本発明の一般的なインタフェースをリモートコントロールフレームワークと呼ぶ。それは、機器上で実行する任意のアプリケーション又はソフトウェアにより使用される。しかし、リモートコントロールフレームワークは、外部リモートコントロールコマンドを送出又は受信するためにベアラプラグインモジュールを内部的に使用する。プラグインは、疎結合アプリケーションに特定のサービスを提供する実行可能コードの置き換え可能な項目、あるいは実行時にプラグインをロード又は開始できるサービスとして規定される。
特有の各ベアラは、それ自体のプラグインを必要とする。各ベアラプラグインは、同一の一般的なアプリケーション・プログラミング・インタフェース(API)を外部に実装するが、リモートコントロールデバイスに対してコマンドを送出及び受信するために関連するベアラ技術の特定の特徴及び必要条件を使用するように内部でカスタマイズされる。
ベアラプラグインの例には、ワイヤードヘッドセット、赤外線リモートコントロール及びBluetoothオーディオ・ビデオ・リモート・コントロール・プロファイル(AVRCP)がある。
図1は、リモートコントローラ及び被コントロール機器としての役割を果たせるデバイスに対して、そのアーキテクチャの1つの好適な実現例を示す図である。本発明の実現例は、離散的な信頼性の高い安全な方法で同時に実行される制御機能及び複数のコントローラをカプセル化する別のデバイスを更に含んでもよい。マルチメディア及びホームセキュリティは、制御の複雑さがその種のデバイスを保証するような技術分野である。しかし、この好適な実現例は、機器を制御でき、自身がリモートコントロールされ、本発明は、それら機能のいずれか1つが欠如しており、専用リモートコントローラに適するか又は制御を必要とする専用機器に適するバージョンにおいて実現される。
図1の矢印は、本発明に係る典型的なアーキテクチャに対する制御及びコマンドの流れを示す。
図1は、被コントロール機器として使用されている装置6上で実行するオーディオアプリケーション2及びビデオアプリケーション4を示す。それらアプリケーションは、リモートコントロールサーバ8からコマンドを受信する。リモートコントロールサーバ8は、コマンドの送信元であるリモートコントローラ又はコマンドを転送するのに使用されるベアラの種類に関わらず、そのようなコマンドを全てのアプリケーションに渡す安定したターゲットクライアントAPI10を提供する。
図1は、リモートコントローラとして使用される場合に装置上で実行可能なリモートコントローラアプリケーション12を更に示す。これは、それ自体のコントローラクライアントAPI14を使用してリモートコントロールサーバ8を介してコマンドを送出する。このAPIは、任意の送信先機器及びベアラの種類に対して安定している。
リモートコントロールサーバ8は、可能な拡張機能を有する利用可能なAVRCP、ワイヤードリモート及び赤外線に対するプラグイン14、16、18を有する。拡張機能の1つを図1のボックス20で示す。本実施形態において、リモートコントロールサーバはターゲットセレクタ22を含む。ターゲットセレクタは3つの役割を実行する。
1)入力コマンドに対して、コマンドを受信するべきターゲットアプリケーションを判定する。
2)出力コマンドに対して、リモートコントロールアプリケーションがベアラ及び機器の指定に失敗した場合に制御されるデフォルトベアラ及び機器を判定する。デフォルトベアラを判定するためにユーザ又は機器により使用される機構(例えば、ある種のControl Panel)が多く存在することは、当業者には認識されるだろう。
3)制御される機器を指定するリモートコントロールアプリケーションにより送出される出力コマンドに対して、ゲートキーパとして動作する。ベアラより上のレベルでの通信を許可又は拒否する。
図1の点線24は、本発明を実現する装置の境界を示す。装置が被コントロール機器として使用されている時、コマンドはその境界を越えて受信されるか又は「入力される」。装置がリモートコントロールとして使用されている時、コマンドはその境界を越えて渡されるか又は「出力される」。それらコマンドに対するベアラの特性は、リモートコントロールサーバ8内にカプセル化される。
尚、図1の下部に示す更なるデバイス26は、リモートコントロールフレームワークをデバイス自体で実行してもよいが、必ずしもその必要はない。サーバにプラグインするモジュールは、任意の種類のベアラを介して任意のプロトコルを実装するように設計される。
被コントロール機器に対して追加のリモートコントロールのサポートを追加することは、単にその機器のリモートコントロールフレームワークに追加のプラグインモジュールを追加することである。従って、USBリモートコントロールは、例えば図1の拡張ボックス20の代わりに、リモートコントロールサーバがUSBプラグイン(不図示)を利用できるようにすることを要求する。これは、オープンオペレーティングシステム上のインストール可能なソフトウェアモジュールとして提供されてもよい。あるいは、OTA(over-the-air)又はサービスセンターアップグレード等の手段によって、あるいはオペレーティングシステムにより認識されるEPROM等のユーザが挿入可能なモジュールによってハードウェアアップグレードとして提供される。
リモートコントロールにより追加の機器を制御する機能を追加することは、その機器自体のリモートコントロールフレームワークにプラグインモジュールを追加することによって同様に管理される。
次に説明する本発明の例は、Symbian Ltdにより製造される移動電話用の高度なオペレーティングシステムであるSymbian OS(登録商標)を実行する携帯電話における本発明の一実現例である。従って、Symbian OSに関する種々の教本(J.StichburyによるSymbian OS Explained、Wiley、2004年、ISBN 0470021306等)及びSymbian Ltdにより発表された種々の開発キット(http://www.symbian.com/developer/techlib/sdl.htmlにおいて見つけられる開発キット等)に説明されるように、そのオペレーティングシステムを有するデバイスを構築する当業者には周知の用語及び語法を使用する。本明細書において説明する実現例は、種々のオペレーティングシステム及び種々のデバイス上で実行するように適応されることが当業者には当然理解されるだろう。
このリモートコントロールシステム(RemCon)の例は、電話機及び特に電話機上で実行するMP3プレーヤ等の音楽アプリケーションをBluetoothステレオオーディオヘッドセットから制御するための本発明の使用方法を示す。制御されるアプリケーションをターゲットと呼ぶ。例えばこの例において、ユーザは再生、一時停止及び「次のトラック」等の機能を実行するためにヘッドセットと対話してもよい。実質上、ヘッドセットは電話機のリモートコントロールのために使用される。
更に一般的には、電話機は、任意の適切なベアラ又はプロトコルを介して別のデバイスにより制御されてもよい。従って、本発明の拡張性を実証するために、説明される別の最初の実装は、任意の単純なプロトコルを使用するシリアル転送を介して動作する相対的に基本的なプラグインの実装である。
本発明のリモートコントロールシステムにより、デバイスを他のデバイスに対するリモートコントロールとして使用できる。この機能性に対するデバイス上のアプリケーションをコントローラと呼ぶ。例えば、デバイスはテレビのリモートコントロールに使用されてもよい。
システムは、リモートコントロールメッセージを送信及び受信するために使用されるトランポート及びプロトコル(ベアラと総称される)に関して拡張可能である。本明細書において、ヘッドセットは一般にBluetoothヘッドセットと考えられるが、ワイヤードヘッドセット等の他の種類のヘッドセットをサポートできることも明らかである。
ベアラの拡張性に依存せず、システムは送出及び受信されるメッセージに関して拡張可能である。従って、新しいベアラプロトコルに準拠することは新しいメッセージをサポートすることを更に含んでもよい。
更にそのシステムにより、複数のクライアントアプリケーションが同時にシステムを使用することが可能になる。1つのコントローラ及び1つのターゲットではなく、複数のターゲットが複数のコントローラと同時に使用される。
コントローラクライアントは、コマンドを送出し且つ応答を受信する。ターゲットクライアントは、コマンドを受信し且つ応答を送出する。従って、コントローラAPIにより、コネクションレス動作(コマンドはデバイスの製造業者により決定されたようにシステムによりルーティングされる)及びコネクション指向動作(クライアントは相手側に対する任意の関連するアドレス指定情報及びベアラを指定する)が可能になる。クライアントは、任意の時点で存在する種々の接続の状態を監視できる。従って、システムはベアラアグノスティックである。
図2は、システムを概略的に示す図である。
図2に示すアーキテクチャの構成要素の一部は、当業者には周知の標準プロトコルを実装する。それらプロトコルは以下を含む。
・AVCTP(Audio Video Control Transmission Protocol)。
・AVDTP(Audio-Video Distribution Transport Protocol)。
・AVRCP(Audio Video Remote Control Profile)。
・L2CAP(Logical Link Controller and Adaptation Protocol)。
・RTP(Real Time Protocol)。
・SBC(Sub Band Codec)。
図2に示すアーキテクチャの他の構成要素は、本実現例に特有である。
・Media Player appは、マルチメディアフレームワーク(MMF)を使用してAVDTPを介してBluetoothヘッドセットにオーディオを送出する。MMFは、MMF Client API及びMMF Controller Plug-inにより表される。Media Player appはRemConターゲットであり、AVRCPを介してヘッドセットからリモートコントロールコマンド(次のトラック、一時停止等)を受信する。
・Remote Controller appはRemConコントローラであり、AVRCPを介してリモートデバイスにリモートコントロールコマンドを送出する。
・DevSoundは、RemConコントローラと考えられる。これは、Audio Policy Serverを介してリモートの音量を直接設定する方法である(すなわち、メディアの音量はシステムプロパティと考えられ、Media Player app毎に処理されない)。
・RemCon Target API及びRemCon Controller APIは上述のコマンド拡張性を含む。
・RemConサーバは、上述のメッセージルーティングポリシー及びベアラ拡張性フレームワークを含む。
設計の最も重要な構成要素の概要を次に説明する。
<RemCon>
デバイス上で実行するRemConサーバのインスタンスが最大1つ存在する。それは非常駐サーバである。すなわち、それは常に使用されているわけではなく、リソースを節約するためにクライアントがいない場合にはシャットダウンする。
<ベアラ>
ベアラはRemConに対するプラグインとして実装され、全てのベアラは標準インタフェースをインスタンス化する。
リモートコントロールシステムのこの特定の実現例は、BluetoothシステムのAVRCP及びAVCTP拡張機能の実現例と関連付けられる。従って、
・AVRCPはRemConに対するベアラプラグインとして配信される。
・AVCTPはBluetoothプロトコルモジュールの一部として配信される。
また、その特定の実現例は、上述の参照シリアルベアラと関連付けられる。
サーバは、
a)それら構成要素と協働し、
b)可能な限り、任意の他の考えられるベアラと協働するように、すなわちベアラアグノスティックの状態でいるように設計される。
コネクション指向及びコネクションレスの可能な2つの種類のベアラが存在するが、本実現例は、コネクションレスベアラがコネクション指向の挙動をエミュレートすることを必要とする。従って、AVRCPベアラプラグインと同様に、ベアラAPIはコネクション指向である。
コネクション指向ベアラのインスタンス化により、入力接続のリスニングが開始される。そのようなベアラは入力接続を受け付け、RemConサーバに通知する。
尚、RemConサーバは、特定のリモートデバイスへの接続を試みるためにベアラに命令できる。
<コントローラ>
コントローラエンティティは、リモートターゲットにメッセージを送出し、提供される応答に対応する。
コネクションレスモードのコントローラがコマンドを送出する場合、使用される実際のベアラ(及びベアラ内の特定の接続)は、通常デバイスに特有であり且つその製造業者により提供されるプラグイン、ここではTarget Selector Plug-In(TSP)として周知のプラグインにより指定される。これについては、ターゲットと関連して以下に更に詳細に説明する。コネクション指向モードのコントローラがコマンドを送出する時、使用される接続は、コントローラにより既に開かれている。しかし、そのコントローラがその時点で指定されたリモートにコマンドを送出してもよいかを制御できる。
ベアラは、コマンドを送信し且つ応答を受信するために使用される。サーバは、各コントローラにより送出されたコマンドの知識を保持する。サーバは、接続を介して適切な開始コマンドを送出したコントローラクライアントに接続を介して入力される応答を向ける。
コントローラAPIは、システムの全てのベアラを介して全ての接続に関する情報を配信するNotifyConnectionsChange APIを更に含む。
<ターゲット>
コントローラクライアントと同様に、同時に動作するターゲットクライアントが2つ以上存在する可能性がある。ベアラプロトコルが入力コマンドの対象となるターゲットを必ずしもカプセル化しないため、ターゲットの動作はコントローラの動作より不確実である。特定の入力コマンドに対応する必要があるターゲットは、実行時に変更されるだけでなく、ターゲット(クライアント)が制御又は知識さえも有さないように変更される。図示する目的で、ユーザがMP3プレーヤアプリケーションを使用して音楽を聴いており、電話がかかってきてユーザが電話をとる場合、ターゲットアプリケーション(ヘッドセットにより開始される音量制御変更のための)はMP3プレーヤアプリケーションから電話機アプリケーションに変更される。デバイスのユーザインタフェース(UI)が「マルチメディア音量」と「通話音量」との区別を保持する場合、それらアプリケーションの各々は、それ自体のスクリーン上の表示を更新するために音量制御変更をリスンする必要がある。
実質上、システムは、ユーザが常にリモートコントロールされると考えるものをモデル化しようとする。現在の実現例では、これは一般に非常に単純である。ユーザは、テレビを制御するためにテレビのリモートコントロールを使用し、ビデオレコーダを制御するためにビデオのリモートコントロールを使用する。これにより、物理コントローラとターゲットとの間のマッピングは明示的になる。
しかし、単一のリモートコントローラ(ヘッドセット)により制御される電話機上で実行する複数のターゲットアプリケーションを使用すると、このマッピングはより不明瞭になる。マッピングを確立するために使用される要素には以下の要素がある。
(a)デバイスの読み出し専用メモリ(ROM)におけるアプリケーションの順序。
(b)アプリケーションがフォアグラウンドであるか否か。
(c)ユーザ動作の最近の履歴。
(d)アプリケーションの相対的に考えられる重要さ(例えば、電話機アプリケーションの場合、通話がアクティブである時期が最も重要である)。
(e)音楽の大音量部分が開始されたことをMP3プレーヤが認識した場合、音量低下コマンドは他のアプリケーションではなくMP3プレーヤに命令した可能性が高い。
(f)一般にユーザが再生リストの特定のトラックの開始後すぐに「次のトラック」を実行したことをMP3プレーヤが記憶・認識した場合、ユーザは次のトラックもスキップすることを意図する可能性が高い。
(g)ユーザがトラックに対する「ユーザ評価」を提供するサービスのウェブからストリームされた音楽を聴いており、他のユーザがよくないと考えるトラックに対して「次のトラック」を選択する場合、そのユーザも同じように考えるだろう。
単に例である上述の可能性は、一般的なオペレーティングシステムがマッピングの問題に対して最終的な回答を提供することが不可能であることを明らかにする。従って、ユーザインタフェースを判定するデバイスの製造業者は、マッピングを決定するのに有利な立場にいる場合が多い。
従って、ユーザインタフェースシステムに従って最も理にかなう規則の1つの集合を実現するためにデバイスの製造業者により使用されるTarget Selector Plug-in(TSP)と呼ばれる機構が提供される。TSPは、現在のクライアントターゲットプロセスIDのリストを提供され、メッセージを受信するターゲットクライアントのリストをRemConに戻す(プロセスIDにより)と予想される。
ターゲットに対してコマンドを配信するベアラをターゲットが認識すると予想されないため、ターゲットクライアントがリモートコントロールシステムに接続する時は必ず、全ての入手可能なベアラはロードされ、入力接続のリスニングを開始する必要がある。尚、ターゲットクライアントはベアラに対してアグノスティックであるが、ベアラの存在に全く気付かないわけではない。ターゲットは、上述のNotifyConnectionsChange APIを入手できる。
<ターゲット・セレクタ・プラグイン(TSP:Target Selector Plug-in)>
TSPは、以下の3つの決定を担う。
1.各入力コマンドに対して、どのターゲットにコマンドを配信するか。
2.コネクションレスモードのコントローラに対して、どのリモートターゲットに出力コマンドを配信するか(すなわち、どのベアラ/ベアラリモートアドレスにコマンドを配信するか)。
3.コネクション指向モードのコントローラに対して、特定のコマンドを特定のリモートに送出するというコントローラの要求を許可するか又は拒否するか。
TSPインタフェースの単一の参照実装がRemConにより提供される。対象を絞る目的で、このインタフェースは潜在的な受信者の配列を提供される。このように、指定受信者の配列を示すことができ、メッセージは各々に配信される。
上述のように、TSPは特定のインタフェースポリシーに従って実装するめにデバイスの製造業者に提供される。
動作中のデバイスにおいて、単一のTSPは読み出し専用メモリ(ROM)の構築時に提供される。1つのUIを有するデバイス上の問題に応じる適切な方法は論理的に1つのみ存在するため、そのようなプラグインは論理的にシステムに1つのみ存在する。実際には、コマンドはRemConにより配信される。TSPはRemConによりクエリされるため、メッセージを配信すべき場所を認識している。
ターゲットクライアントは、それら目的のためにプロセスID及びセキュアIDにより識別される。RemConは、ターゲットクライアントがクライアントプロセス毎に1つのみ許可されるようにターゲットクライアントの確立を監視する。各コマンドに対して、TSPは現在開いているターゲットクライアントのIDのリストを提供されるため、利用可能なターゲットを認識している。TSPは、更なるターゲットクライアントアプリケーションを開くようにトリガすること及びそれらのIDを配列に追加することを自由に行なえる。
リモートターゲットは、ベアラの固有の識別子(UID)及びベアラ特有の接続情報パッケージの組合せにより識別される。コネクション指向コントローラが正確に機能できるように、ベアラ特有の接続パッケージの種類は既に第3者に公開されているべきである。
TSP APIは、その実装の際に最大限の融通性を得るために要求/コールバック機構を介して機能する。コールバックは、同期的又は非同期的であってもよい。TSPは、アドレス指定するためにRemConによりTSPに渡された任意のコマンドを理解できるように設計され、コマンドをアドレス指定する目的を達成するのに十分である。これは、Core APIコマンド及び拡張コマンドを含む。TSPがコマンドを「エラー」とする場合、そのコマンドは配信されない。
<ターゲット・リスニング機構>
システムには、TSPインスタンスが1つのみ存在する。従って、多くのベアラからの入力事象は、非同期APIを介してTSPに送出される前にRemConにキュー登録される。ターゲットに対しては、コマンドが「アドレス指定」されると、選択されたターゲットクライアントの各々が未解決の受信要求を有する場合、コマンドはそれら選択されたターゲットクライアントに提供される。
当該ターゲットの受信要求が完了した場合、ターゲットは提供されたデータを処理し、(通常)要求を再度通知する。ターゲットXがその時点で未解決の「Receive要求」を有していない時にターゲットXがコマンドを受信すべきであるとTSPが示す場合、そのコマンドは、ターゲットXがReceive要求を通知するまでキュー登録される。更に入力応答は、そのようにキュー登録される。
<拡張API>
フレームワークは、例えば種々のデバイス製造業者に特有のAPIをサポートするために、Core APIの拡張機能をサポートする。コントローラクライアントは、コマンドを送出する時にコマンドが送出される際に介するベアラを必ずしも認識しない。従って、ベアラ特有の形式へのコマンドのパッケージ化は「サーバ側」で実行される。
拡張APIは以下から構成される。
(a)「新しい」メッセージ、並びにそれらメッセージを送出及び受信するAPIに一意の識別子を提供するクライアント側DLL(ダイナミックリンクライブラリ)。
(b)既存の各ベアラプラグインに対する「コンバータ」プラグイン。サーバはそれらプラグインを管理し、ベアラ特有の形式に及びベアラ特有の形式からメッセージを変換するというベアラからの要求に対応する。
特定のベアラの形式と特定の拡張APIとの変換を行なうためのコンバータプラグインが見つからない場合、ベアラはAPIからのメッセージを処理できず、それらメッセージはドロップされる。
<コンバータ>
コンバータはプラグインであり、以下の2つの間の変換を担う。
(a)1つのクライアント側APIのメッセージ形式(Core APIであるか又は拡張機能である)。
(b)1つのベアラのメッセージ形式。
従って、システムには最も重要なN個のコンバータが存在する。Nはベアラの数とAPIの数との積である。実際には、Nはそれより小さくてもよい。その理由は、
a)拡張APIが複数のベアラをサポートしないことを選択し、
b)ベアラプロトコルが拡張機能をサポートできない可能性があるからである。
以下の説明において、特定のコンバータは、以下の規則に従って命名される。Converter(A, B)は、APIのAメッセージ形式とベアラのBメッセージ形式との変換を行なうコンバータである。例えば、RemConの動作はConverter(Core, Serial)及びConverter(ExtApi1, Serial)を提供し、AVRCPはConverter(Core, Avrcp)及びConverter(ExtApil, Avrcp)を提供する。
本発明の実用的な一実施形態を図3に示す。図中、以下の実行ファイルを示す。
(a)RemConサーバ。
(b)クライアント側APIの3つのダイナミックリンクライブラリ(DLL)。
・RemCon Core API。
・RemCon中間クライアント側(拡張機能に対するフレームワーク)。
・RemCon内部クライアント側。
(c)Song Title API及びAbsolute Volume APIを供給する拡張API(ExtraApi1)。
(d)TargetSelectorPlug-in TSPに対する基本DLL。
(e)参照TSP。
(f)BearerPlug-in ベアラプラグインに対する基本DLL、参照SerialBearer及びAVRCP Bearer。
(g)ConverterPlug-in コンバータプラグインに対する基本DLL。
・Converter(Core, Serial)。
・Converter(ExtApi1, Serial)。
・Converter(Core, AVRCP)。
・Converter(ExtApi1, AVRCP)。
一般に、それら構成要素に対するクラス定義は以下の通りである。
<RemCon>
●class CRemConServer : pulic CPolicyServer, public MRemConTargetSelectorPluginObserver
CRemConServerは、RemConサーバに対する具体的なサーバの種類である。
サーバは、コマンドキューを有し、制御する。サーバは、RemConの中心であり、全てのメッセージのルーティングを処理する。
●class CRemConSession : public CSession2
CRemConSessionは、具体的なサーバ側のセッションの種類である。
付加されたクライアント側RRemConハンドル毎に1つのインスタンスが作成される。
セッションは、クライアント側からの全てのIPCコールに対応する。
セッションは、クライアントのプロセスIDを保持するメンバを有する。これは、セッションにより使用され、ターゲットセッションの完全にインスタント化されたインスタンスがクライアントプロセス毎に最大1つ作成されることを保証する。
この種のオブジェクトはクライアントの要求に対応し、後で完了するために、そのような非同期API毎にRMessage2メンバを保持する。
●class CBearerManager : public CBase, public MRemConBearerObserver
CBearerManagerは1つであり、CRemConServerに所有される。
CBearerManagerは、インスタント化の際に全てのベアラプラグインをロードする。CBearerManagerは、ベアラに対するインタフェースである。
<ベアラ>
ここで、ベアラAPIの設計及び参照シリアルベアラの設計を説明する。尚、各ベアラは、可能な各APIにおいて全てのメッセージをサポートするように要求される。メッセージを送出しようとした場合にKErrNotSupportedを返すことによりそれを行なうことを許可されるが、単純にメッセージを無視又はドロップすることは許可されない。実際には、APIを識別するUIDはベアラにより使用され、適切なコンバータにメッセージを転送する。そのAPIに対するコンバータが存在しない場合、KErrNotSupportedが適切な応答である。コンバータが見つけられるが特定のメッセージをサポートしない(ベアラ固有の理由により)場合、KErrNotSupportedが応答として返される。
●ベアラAPI
概要
ベアラはプラグインとなる。ベアラはコンバータプラグイン(原則的に、各ベアラは拡張API毎に1つ及びCore APIに対して1つ有する)を使用して、ベアラプロトコル特有のメッセージ形式とクライアントが使用しやすいベアラアグノスティックのメッセージ形式との間で各メッセージを変換する。コンバータプラグインが特定の1組のベアラ/APIに供給されない場合、そのベアラはそのAPIに属するメッセージを送出又は受信できない。
RemConにより、ベアラは複数の同時接続をサポートできる。
ベアラは、サーバのスタートアップ時にインスタンス化される。ベアラのインスタンス化により、入力接続をリスンする。入力接続は、ベアラにより自動的に受け入れられ、ベアラのポリシーに準拠する。これは、プロトコル別のポリシー又は他のセキュリティポリシーを含む。RemComがセキュリティ保護されることを保証するのが望ましいことは明らかであるが、本発明は、任意の特定のセキュリティモデルを指定しないか又はそれに依存しない。
RemConは、新しい接続及び関連する(例えば、リモートアドレス)パラメータの存在を通知される。ベアラは、多重化又は複数の「リモートコントロールチャネル」をサポートできる。RemConは、任意のベアラ接続の状態をベアラにより通知される。
ベアラAPIは、同時に送出される複数のコマンド及び応答をサポートできる。ベアラがキュー登録をサポートできる場合、RemConは、1つ以上の接続においてそのベアラで同時に未解決である多くのSendコマンドを通知できる。ベアラがキュー登録をサポートしない場合、ベアラはRemConにエラーを返す必要があり、RemConは、それに従ってクライアントの元の要求を完了する。
送出要求の完了のタイミングの可能な例は以下を含む。
(a)ベアラがトランスポートを介して要求を送出しようとした後。
(b)ベアラがメッセージに対する責任があると仮定された時、すなわちベアラが要求を送出したか又は送出のために要求をキュー登録した時。
(c)応答が到着した時。
コネクションレスコントローラの場合、コマンドがTSPによりアドレス指定されると、結果として得られるアドレス指定されたメッセージは、関連するベアラ接続を介して送出される。いずれかが失敗した場合、特定の命令された動作は中止され、コントローラクライアントはそのエラーを通知される。
RemConは、入手可能なベアラプラグインをクエリするAPIを提供しない。これは、通常のオペレーティングシステム(OS)機能と共に使用される全てのプラグイン及びインタフェースの特性が公開情報であるため、必要に応じて通常のオペレーティングシステム(OS)機能を使用して達成される。
1度に1つの接続のみをサポートするコネクション指向ベアラは、作成された時にリスニングを開始する。ベアラが接続された場合(接続を受け入れることにより又はコネクション指向コントローラにより駆動された時)、ベアラは、RemConに接続の状態を通知する。何らかの理由により接続が終了した場合、ベアラはRemConに通知する。
複数の接続(例えば、ACRCP)をサポートするコネクション指向ベアラは、作成された時にリスニングを開始する。接続がリスナを使用して確立された場合、(更なる)入力接続をリスンし続ける。RemConは、接続の状態に関して最新情報を維持する。
コネクションレスベアラは、ベアラAPIのコネクション指向の挙動をエミュレートする必要がある。シリアルベアラは、コネクションレスの挙動をサポートし、COMポートが正常に開かれた場合にシリアルベアラが「接続されている」ことをRemConに示すことができる。ポートを開くのに問題があった場合、少しの間をおいてから接続を再試行する。
関連するAPI
(尚、「@」で開始する行はAPIパラメータを記録するか又は状態を返す。)
●class CRemConBearerPlug-in : public CBase
virtual void ConnectRequest(const TRemConAddress& aAddr) = 0;
RemConにより呼び出され、ベアラを別の相手に接続する。
@param aAddr リモートアドレス情報。
virtual void DisconnectRequest(const TRemConAddress& aAddr) = 0;
RemConにより呼び出され、ベアラを別の相手から切断する。
@param aAddr リモートアドレス情報。
メッセージの送出
virtual TInt SendCommand(TUid aInterfaceUid,
TUint aOperationId,
TUint aTransactionId,
RBuf8& aData,
const TRemConAddress& aAddr) = 0;
virtual TInt SendResponse(TUid aInterfaceUid,
TUint aOperationId,
TUint aTransactionId,
RBuf8& aData,
const TRemConAddress& aAddr) = 0;
RemConにより呼び出され、接続においてメッセージを送出する。ベアラは、返すことにより同期的に要求の完了(すなわち、メッセージを送出したか又は送出するためにメッセージをキュー登録したこと)を示す必要がある。
@param aInterfaceUid クライアントAPIインタフェースのUID。
@param aOperationId API内の動作ID。
@param aTransactionId そのコマンド又は応答が属するトランザクションの識別子。
@param aData API別のメッセージデータ。ベアラがKErrNoneを返す場合、RemConはベアラがその所有権を取得したと考える。
@param aAddr リモートアドレス情報。
@return Error。
尚、SendCommand要求を受け付けた後、ベアラは少なくとも1つの応答(本当に相手側からのものであるか否か)を生成する必要がある。
メッセージの受信
virtual TInt GetResponse(TUid& aInterfaceUid,
TUint& aTransactionId,
TUint& aOperationId,
RBuf8& aCommandData,
TRemConAddress& aAddr) = 0;
virtual TInt GetCommand(TUid& aInterfaceUid,
TUint& aTransactionId,
TUint& aOperationId,
RBuf8& aCommandData,
TRemConAddress& aAddr) = 0;
RemConにより呼び出され、NewCommand又はNewResponseを使用してベアラにより先に通知されたメッセージを取得する。
@param aInterfaceUid クライアントAPIインタフェースのUID。
@param aOperationId API内の動作ID。
@param aTransactionId コマンド又は応答のトランザクションID。
@param aData API別のメッセージデータ。所有権はベアラにより返される。
@param aAddr リモートアドレス情報。
virtual void Client Status(TBool aControllerPresent, TBool aTargetPresent) = 0;
これはRemConにより呼び出され、コントローラクライアントが存在するか(aControllerPresent)及びターゲットクライアントが存在するか(aTargetPresent)を示す。
これは、以下の時に呼び出される:
(a)コントローラクライアントの数が0から1に又は1から0に変更された時。
(b)ターゲットクライアントの数が0から1に又は1から0に変更された時。
aControllerPresentは、コントローラが存在する場合に真値であり、存在しない場合はEFalseである。作成者は、ETrueと比較しないことが分かる。このAPIは、AVRCPベアラによるサービス発見プロトコル(SDP)レコードの作成及び破壊を容易にするために提供される。RemConは失敗に関心がないため、戻り値の種類はvoidである。
virtual TSecurityPolicy SecurityPolicy() = 0;
@return トランスポートを使用(接続、送出、受信)する必要がある機能。
RemConは、任意の予想されるトランスポートを使用するのに十分な機能を有するが、コントローラクライアントが機能を有するかをチェックする必要がある。このAPIは、RemConがコントローラクライアントの要求を監視できるように呼び出される。コネクション指向コントローラの場合、クライアントが自身をベアラと関連付けようとした時にチェックが行なわれる。コネクションレスコントローラの場合、TSPがクライアントの送信のために特定のベアラを選択した後にチェックが行なわれる。
●class MRemConBearerObserver
CRemConBearerPlug-inは、この種のオブジェクトに対する参照を有する。その参照は、要求の完了をRemConに対して信号伝送するために使用される。
virtual TInt MrcboConnectIndicate(const TRemConAddress& aAddr) = 0;
入力接続が確立された時にベアラにより呼び出される。
@param aAddr リモートアドレス情報。
@return Error。
virtual void MrcboDisconnectIndicate(const TRemConAddress& aAddr) = 0;
接続がリモートエンドから切断された時にベアラにより呼び出される。
@param aAddr リモートアドレス情報。
virtual TInt MrcboConnectConfirm(const TRemConAddress& aAddr, TInt aError) = 0;
ベアラにより呼び出され、出力接続要求の完了を示す(CRemConBearerPlug-in::Connect)。
@param aAddr リモートアドレス情報。
@param aError エラー。
@return Error これがKErrNoneでない場合、ベアラは接続をドロップする。
virtual void MrcboDisconnectConfirm(const TRemConAddress& aAddr, TInt aError) = 0;
ベアラにより呼び出され、切断要求の完了を示す(CRemConBearerPlug-in::Disconnect)。
@param aAddr リモートアドレス情報。
@param aError エラー。
入力メッセージ
・virtual TInt MrcboNewResponse(const TRemConAddress& aAddr) = 0;
・virtual TInt MrcboNewCommand(const TRemConAddress& aAddr) = 0;
新しいメッセージがキューにおいて入手可能であり、RemConにより取得される時、ベアラにより呼び出される。RemConは、GetResponse又はGetCommandを呼び出す。
@param aAddr リモートアドレス情報。
virtual CRemConConverter& MrcboConverter(TUid aInterfaceUid, TUid aBearerUid) = 0;
コンバータのアクセス機構。与えられる2つのUIDは、コンバータを一意に識別するために使用される。コンバータは、RemConにより管理され、単にそのインタフェースを介してベアラによりアクセスされる。
@param aBearerUid ベアラの実装のUID。
@param aInterfaceUid インタフェースのUID。
●シリアルベアラ
シリアルベアラは、ベアラインタフェースの具象実装である。CRemConSerialBearerは、CRemConBearerPlug-inから派生する。CRemConSerialBearerは、シリアル回線でデータを受信及び送出するためにRComm::Read及びRComm::Writeを使用するActive Objectsを有する。それらは、観察者インタフェースを介して完了したことを通知する。
CRemConSerialBearerは、インスタンス化の際にcommポートを開き、すぐにRemConに対して「接続完了」を示す。CRemConSerialBearerは、RemConからコマンドを送出する要求を受信すると、API UID及び動作UIDを固定長バッファにパッケージ化し(適切なコンバータを使用して)、それを再試行せずにシリアル回線を介して送出する。RComm::Writeが完了した時、CRemConSerialBearerは通知され、観察者のSendCompleteを呼び出す。CRemConSerialBearerは、RemConからコマンドを受信する要求を受信した場合、固定バッファサイズのためにRComm::Readをキュー登録する。これが完了すると、ストリングは、適切なコンバータを使用してAPI UIDと動作IDとに分解され、ReceiveCompleteを介して観察者に通知される。
TSP
●概要
TSPはプラグインである。
class CRemConTargetSelectorPlug-in : public CBase
●virtual void AddressOutgoingCommand(TUid aInterfaceUid, TUint aOperationId, const TClientInfo& aSender, TSglQue<TRemConAddress>& aConnections, TSglQue<TBearerSecurity>& aBearerSecurity) = 0;
これはRemConにより呼び出され、所定の出力(すなわち、コネクションレスコントローラからの)コマンド(aInterfaceUid/aOperationId)をアドレス指定する。aConnectionsは、渡される時は空である。TSPは、0個以上のTRemoteAddressesを追加し、RemConのOutgoingCommandAddressedを呼び出す。TSPはこれを非同期的に行なってもよい。RemConは、関連する接続情報と共にコマンドを所定のベアラに向ける。
●virtual void PermitOutgoingCommand(TUid aInterfaceUid, TUint aOperationId, const TClientInfo& aSender, const TRemConAddress& aConnection) = 0;
これは、コネクション指向コントローラがコマンドを送出しようとした時にRemConにより呼び出される。TSPは、ETrue(送出可能)又はEFalse(送出不可能)を有するOutgoingCommandPermittedを呼び出す。
●virtual void AddressIncomingCommand(TUid aInterfaceUid, TUint aOperationId, TSglQue<TClientInfo>& aClients)= 0;
これはRemConにより呼び出され、所定の入力コマンドをアドレス指定する。aClientsは、渡される時、現在のターゲットクライアントの集合を含む。TSPは、0個以上の項目を追加又は0個以上の項目をその収集データから除去し、RemConのIncomingCommandAddressedを呼び出す。TSPは、これを非同期的に行なってもよい。TSPは、クライアントアプリケーションを自由に開始でき、適切なTClientInfo(少なくともクライアントアプリケーションのプロセスIDと共に読み込まれる)をその収集データに自由に追加できる。RemConは、所定のクライアントのいずれかが依然として存在することを仮定せずにそれら所定のクライアントにコマンドを向ける。
class MRemConTargetSelectorPluginObserver
RemConにより実装される。
●virtual void MrctspoOutgoingCommandAddressed(TInt aError) = 0;
TSPにより呼び出され、先のAddressOutgoingCommand要求が応じられたことを示す。(参照により渡された配列は、適切に読み込まれる。)1つのAddressOutgoingCommandのみが常に未解決であってもよいが、2つ以上のAddressOutgoingCommand及びAddressIncomingCommandが同時に未解決であってもよい。
●virtual void MrctspoOutgoingCommandPermitted(TBool alsPermitted) = 0;
TSPにより呼び出され、PermitOutgoingCommandの最新の呼び出しにより表されるコントローラの送出が許可されるか否かを決定したことを示す。
●virtual void MrctspoIncomingCommandAddressed(TInt aError) = 0;
TSPにより呼び出され、先のAddressIncomingCommand要求が応じられたことを示す(参照により渡された配列は、適切に読み込まれる)。尚、1つのAddressIncomingCommandのみが常に未解決であってもよいが、2つ以上のAddressOutgoingCommand及びAddressIncomingCommandが同時に未解決であってもよい。
TClientInfo
これは、クライアントセッションのプロセスID及び現在の送出メッセージをラップする単純な種類であり、セキュリティの目的で使用されてもよい。
クライアント側
●概要
RemConクライアント側は、コマンド及び応答の送出及び受信をサポートする。これは拡張可能である。図3に示すように3つの層を有する:
1.RRemConを含む単一のDLLから成るサーバに最近接する「内部」クライアント側
2.単一のDLLから成り、(a)内部クライアント側から適切な「外部」DLLに入力されるメッセージを渡し、(b)基本APIインターフェースに抽象インタフェースを提供し、(c)最後のクライアントに中央セッションの作成及び制御点を提供する「中間」層
3.実際のAPI DLLから成る「外部」層。Core API DLL及び「拡張API1」DLL(曲名及び絶対音量メッセージをサポートする)は、この層で提供される。第3者は、この層に更なるAPIを追加してもよい。この層の各DLLは、「API UID」により一意に識別される。
内部クライアント側は、一般的なデータを送出及び受信する。データは、インタフェースUID(特定の外部層DLLと関連付けられる)、そのインタフェース内の動作のID及び任意の関連するデータから成る。インタフェースUID及び動作IDは共に、一意のメッセージ識別子を構成する。
クライアントは、使用したい外部層DLL及び中間層に静的にリンクする。初期化の際、クライアントは、中間層DLLのメソッドを呼び出し、外部層DLLからのオブジェクトを中間層に登録する(インタフェースUIDにより)。中間層は、RemConセッションを開くメソッドを提供する。
メッセージがクライアントにより送出されると、外部層DLLはインタフェースUIDを追加し、中間層はそのデータ全体をRemConに単純に転送する。コマンドが受信されると、TSPは、そのコマンドが配信されるターゲットを決定する。応答が受信されると、RemConは元の要求を送出したコントローラクライアントにその応答を渡す。RemConサーバは、「内部」クライアント側の指示されたターゲットRRemConセッションにメッセージを配信し、そのセッションは中間層にメッセージを配信する。中間層は、メッセージのインタフェースUIDを解析し、そのUIDを有する登録された外部層オブジェクトを有する場合、その外部層オブジェクトにメッセージを渡す。外部層DLLは動作IDを解析し、関連する(記述子)データを任意で分解し、それ自体のAPIを介して最後のクライアントにメッセージを渡す。
●内部クライアント側(RRemCon)
「中間」クライアント側は、サーバに最近接する。「中間」クライアント側は、単一のRクラス、RRemCon及びいくつかの補助の種類から成る。
悪用又は誤用する可能性のあるエンティティが制御を行わないようにするために、この時点でRemConのアクセスを監視するある種のセキュリティを実現するのが好ましい。本発明は、任意の特定のセキュリティモデルに関してアグノスティックである。
クライアントは、このRemCon APIの内部層にアクセスできない。
class RRemCon : public RSessionBase
RRemConは、RemConサーバのクライアント側のセッションの種類に対する抽象ベースクラスである。これは、システムのデバッグビルドにのみサーバヒープ障害デバッグAPIを提供するために使用される。ここでは、それらについては詳細に示さない。以下のAPIは、派生した具象クラスのインスタンスから入手可能である。
●IMPORT_C TVersion Version() const;
RemConサーバのバージョンを返す。このAPIは、Connectの前に呼び出される唯一のAPI(Closeを除く)である。
●IMPORT_C TInt Connect();
これは、標準セッションハンドル接続メソッドである。ハンドルの作成が成功した場合、更なるIPCコールがRemConサーバに対して行なわれ、クライアントの「種類」をターゲット又はコントローラとして設定する。
●IMPORT_C void Send(TRequestStatus& aStatus, TUid aInterfaceUid, TUint aOperationId, TUint& aNumRemotes, const TDesC8& aData = KNullDesC8());
Sendは、コマンドに対する応答を送出するために「ターゲット」により使用され、コマンドを送出するために「コントローラ」により使用される。
ターゲットクライアントが応答を送出する時、応答は、元のコマンドを転送したベアラで送出される。このアドレス指定は、RemCon自体により実行される。aInterfaceUidは、メッセージが属するインタフェース(Core又は拡張機能)のUIDを含む。aOperationIDは、そのインタフェース内の動作のIDである。aDataは、任意の関連するデータである。クライアントがターゲットであり(すなわち、応答を送信する)、RemConサーバが対応するコマンドをそのクライアントに配信したことを記憶していない場合、クライアントは混乱する。
完了時、aNumRemotesは、メッセージが送出されたリモート数を含む。メッセージが応答であるか又はコネクション指向コントローラからのメッセージである場合、これは、成功時には1であり且つ失敗時には0になる。クライアントがコネクションレスコントローラである場合、aNumRemotesは、コマンドが送出されることをTSPが要求したリモートのうち成功した数(ベアラレベルで)を示す。尚、TSPはコマンドを0個のリモートに送出するようにしてもよい。これはエラーではなく成功したと考えられる。
●IMPORT_C TInt SendCancel();
非同期的なSend要求の完了に対するクライアントの関心を消去する。
●IMPORT_C void Receive(TRequestStatus& aStatus, TUid& aInterfaceUid, TUint& aOperationId, TDes8& aData);
Receiveは、コマンドを受信するためにターゲットにより使用され、コマンドに対する応答を受信するためにコントローラにより使用される。
ターゲットは、全てのベアラから効率的にコマンドを受信し、TSP機構に準拠する。コントローラクライアントは、各コマンドを発信したコントローラ及びコマンドが出力された際に介した接続を記憶するRemConにより応答を配信してもらう。
●IMPORT_C TInt ReceiveCancel();
非同期的なReceive要求の完了に対するクライアントの関心を消去する。
●IMPORT_C TInt GetConnections(TSglQue<TRemConAddress>& aConnections);
全てのベアラ上の現在存在する接続に対する同期ゲッタである。TRemConAddressは、ベアラ(実装UIDにより)及びベアラ別の接続情報を示す。接続が配列にある場合、接続はRemConのベアラレベルの接続として存在する。接続が配列に存在しない場合、接続はシステムのベアラレベルの接続として存在しない。他の状態は該当しない。成功時、クライアントはキュー中の項目を破壊する役割を果たす。
●IMPORT_C void NotifyConnectionsChange(TRequestStatus& aState);
ベアラ接続の状態の変化に対する通知。完了時、クライアントは、実際の接続を検査するためにGetConnectionsを使用するのが好ましい。
●IMPORT_C TInt NotifyConnectionsChangeCancel();
ベアラ接続状態変更通知の完了に対するクライアントの関心を消去する。
class RRemConController : public RRemCon
これは具体的なコントローラセッションの種類である。
●IMPORT_C TInt GoConnectionOriented(const TRemConAddress& aConnection);
所定のアドレスを使用してコントローラをコネクション指向にする。このアドレスはセッションから全てのコマンドを送出するために使用され、全ての応答はそのリモートから入力される(あるいは、対応するベアラにより生成される)。クライアントに関わるセキュリティ関連の問題が存在しないと仮定すると、RemConはそれに従ってGoConnectionOrientedを完了する。これは、RemCon自体が行なう唯一のセキュリティチェックであり、コネクション指向クライアントとベアラとの間にある全てのものである。各コマンドは、送出時にTSPにより「許可」される。
●IMPORT_C TInt GoConnectionless();
所定のリモートを使用してコントローラをコネクションレスにする。TSPは、送出される各コマンドをアドレス指定するために使用される。
●IMPORT_C void ConnectBearer(TRequestStatus& aStatus);
コントローラクライアントは、このAPIを呼び出し、GoConnectionOrientedに先に登録されたTRemConAddressを使用してベアラレベルの接続を作成しようとしてもよい。このAPIは、コネクション指向コントローラによってのみ使用される。
●IMPORT_C TInt ConnectBearerCancel();
「ベアラ接続」要求の完了に対するクライアントの関心を消去する。
●IMPORT_C void DisconnectBearer(TRequestStatus& aStatus);
コントローラクライアントは、このAPIを呼び出し、GoConnectionOrientedに先に登録されたTRemConAddressを使用してベアラレベルの接続を破壊しようとしてもよい。このAPIは、コネクション指向コントローラによってのみ使用される。
●IMPORT_C TInt DisconnectBearerCancel();
「ベアラ切断」要求の完了に対するクライアントの関心を消去する。
class RRemConTarget : public RRemCon
これは、具体的なターゲットセッションの種類である。
TRemConAddress
これは、UID(ベアラの実装UID)及び小さなバッファをラップする単純な種類であり、ベアラ別の接続情報を保持する。
●中間層
class CRemConInterfaceSelector : public CBase
これは具象クラスである。これは、RRemConController及びRRemConTargetセッションを所有し、各々に対してセッション上にReceive要求を保持するActive Objectを所有する。このクラスは、RemConとのクライアントの対話の中心である。クライアントは、CRemConInterfaceSelectorをインスタンス化する。所望のAPIインタフェースのインスタンスが作成され、CRemConInterfaceSelectorにより所有される。インスタンスは、コントローラとターゲットセッションとの少なくともいずれかを開き(セレクタのAPIを介して)、(a)インタフェースを使用してコマンドを送出し且つ応答を待つか又は(b)インタフェースを使用してコマンドを待ち且つ応答を送出する。
●IMPORT_C void OpenControllerL()
コントローラセッションを開くためにクライアントにより使用される。これは、デフォルトをコネクションレスにする。
●IMPORT_C void OpenTargetL();
ターゲットセッションを開くためにクライアントにより使用される。
RRemCon* APIをラップするために他のAPIが提供される。
class CRemConInterfaceBase : public CBase
これは、Core APIを含むAPIインタフェースに対するベースクラスである。
●メッセージの受信
virtual void MrcibNewResponse(TUint aOperationId, const TDesC8& aData) = 0;
virtual void MrcibNewCommand(TUint aOperationId, const TDesC8& aData) = 0;
これらは、適切な種類のメッセージがCRemConInterfaceBaseのインスタンス化に属するインタフェースUIDと共に入力された時に中間層により呼び出される。
外部層
提供される構成要素は、'Core' API外部層DLLを含む。これは、CRemConInterfaceBaseの実装を提供し、1つはコントローラクライアントに対するものであり、1つはターゲットクライアントに対するものである。また、Song Title/Absolute Volume APIを提供するためにテスト「拡張」外部層DLLを提供する。
コンバータ
コンバータは、インタフェースを実装するプラグインであり、ステートレスである。
APIは、実質的に以下の2つの機能から成る。
・ベアラ特有の形式からインタフェース特有の形式に変換する第1の機能。
・逆方向に変換する第2の機能。
尚、ベアラはコンバータを使用する義務がない。ベアラは、その全ての変換コードをハードコーディングできる。しかし、これは、ベアラが今後のAPI拡張機能の変換方法を理解していることを前提とする。これは、ベアラが既に存在するメッセージのセットのみをサポートする場合には十分に受け入れられるが、拡張性に対してはコンバータが使用されるのが好ましい。
●class CRemConConverterPlugin : public CBase
virtual TInt InterfaceToBearer(TUid aInterfaceUid, TUint aOperationId, const TDesC8& aData, TRemConMessageType aMsgType, TDes8& aBearerData) const = 0;
ベアラにより呼び出され、インタフェース特有のデータ(インタフェースUID、動作ID、メッセージの種類及びデータ)をベアラ特有の(パッケージ化)形式に変換する。
virtual TInt BearerToInterface(const TDesC8& aBearerData, TUid& aInterfaceUid, TUint& aOperationId, TRemConMessageType& aMsgType, TDes8& aData) const = 0;
ベアラにより呼び出され、ベアラ特有のデータ(パッケージ化された)をインタフェース特有のデータ(インタフェースUID、動作ID、メッセージの種類及びデータ)に変換する。
virtual TBool SupportedUids(const TUid& aInterfaceUid, const TUid& aBearerUid) const = 0;
RemConにより呼び出され、そのコンバータがそのインタフェースとそのベアラとの変換を行なうかを見つける。
virtual TBool SupportedInterface(const TDesC8& aInterfaceData, const TUid& aBearerUid) const = 0;
RemConにより呼び出され、そのコンバータがそのインタフェースとそのベアラとの変換を行なうかを見つける。aInterfaceDataは、ベアラ特有の形式のインタフェース識別子である。
サーバシステムに対する典型的な動作例は以下の通りである。
スタートアップ
●クライアントスタートアップコードの例
クライアントは以下を行なう義務がある:
CRemConInterfaceSelector* iInterfaceSelector = CRemConInterfaceSelector::NewL();
クライアントは、使用したいインタフェースのインスタンスを作成する必要がある。例えば、ターゲットとしての役割を果たし且つCore APIを使用したいアプリケーションの場合:
CRemConCoreApiTarget* iCoreIf = CRemConCoreApiTarget::NewL(*iInterfaceSelector, *this);
式中、「this」はMRemConCoreApiTargetObserverを実装する。iCoreIfはインタフェースセレクタにより所有されており、インタフェースセレクタはクライアントにより所有される。
MRemConCoreApiTargetObserverは、種々の入力Core APIコマンドが配信される時期を作成者に通知するために純粋仮想を有する。CRemConCoreApiTargetは、アプリケーションがそれらコマンドに対する応答を送出することを可能にするメソッドを更に有する。
クライアントは、コントローラ又はターゲットセッションを作成する必要がある。CRemConInterfaceSelectorのインスタンス毎にいずれか一方が作成されてもよい。1つのターゲットのみがクライアントプロセス毎に接続されてもよい。
コントローラセッションを作成する:
iInterfaceSelector->OpenControllerL();
コントローラセッションは、コネクションレスモードで開かれる(送出されるコマンドはTSPによりルーティングされる)。コントローラをコネクション指向にするために、以下が後続してもよい:
TRemConAddress addr;
addr.BearerUid() = TUid::Uid(0x1020453C);
//ベアラ特有の接続データ無し
iInterfaceSelector->GoConnectionOrientedL(addr);
クライアントはこの時点でベアラレベルの接続を確立し、第1のコマンドの送出を迅速にすることを要望する:
TRequestStatus stat;
iInterfaceSelector->ConnectBearer(stat);
User::WaitForRequest(stat);
上記例において、実装UID 0x1020453Cのベアラが使用される。これはテストシリアルベアラである。コネクション指向コントローラにより送出されるコマンドは、この呼出しにおいて与えられる特定の接続に向けられる。ターゲットセッションを開くために、以下が呼び出される:
iInterfaceSelector->OpenTargetL();
サーバ側
RemConサーバは、第1のセッション(コントローラ又はターゲット)の接続によりサーバ自体のプロセスにおいて開始される。サーバが既に実行している場合、単純にセッションが接続される。
第1に、CRemConServerの1つのインスタンスが作成される。このサーバがC++構築後にまず行なうことは、一意のサーバ名を使用してStartLを介してカーネルにサーバ自体を登録することである。実行しているサーバのインスタンスが既に存在する場合(接続を試みる2つ以上のクライアント側によりトリガされる競合条件のため)、StartLは終了し、初期のサーバは容易に破壊される。これにより、システムにおいて完全にインスタンス化されたRemConサーバは1つだけ存在することが保証される。
StartLの後、サーバは、関連する動作により以下のオブジェクトの作成に関して設定を行なう。
(a)任意の要求されたシステムロギングオブジェクト又はプラグイン(Symbianの共通オブジェクトモジュール等)のフレームワークオブジェクト等の必要とされる任意のオペレーティングシステムオブジェクト。
(b)シャットダウンタイマ。これは、接続されたセッションが存在しない時にサーバを終了するために使用される。これは、最後のセッションが閉じた時にのみ開始される。
(c)GetConnections及びNotifyConnectionsChange APIをサポートする1つの接続履歴オブジェクト。
(d)CBearerManagerの1つのインスタンス。ベアラマネージャの作成により、全てのベアラプラグインが列挙され且つインスタンス化される(ConstructLにおいて)。これにより、コネクション指向ベアラは入力接続のリスニングを開始する。テストシリアル(コネクションレス)ベアラは、COMポートを開き、出力接続を行なうのを要求されたかのように迅速にConnectCompleteにより呼び戻す。システムにベアラの実装が存在しない場合、RemConは混乱する。これは、有効なデバイス構成である場合にRemConが実装される必要がなかったからである。
(e)メッセージをログ記録するために使用されるCMessageQueueの5つのインスタンス。各々は、TSPによるアドレス指定又は許可の付与を保留する出力コマンド;送出された出力コマンド(リモートからの応答を保留にする);TSPによるアドレス指定を保留する入力コマンド;通知されるクライアントReceive要求を保留する入力メッセージ;コントローラセッションに配信された入力コマンド(コントローラからの応答を待つ)に対して存在する。
(f)コンバータマネージャの1つのインスタンス。これは、各コンバータの1つのインスタンスを作成する。
(g)TSPの1つのインスタンス。システムにおいて、TSPインタフェースの実装が正確に1つ存在しない場合、RemConは混乱する。TSPは、希望する任意のインスタンス化を実行してもよいが、RemConは、コマンドをアドレス指定するために使用されるオブジェクトを正常に返す以外のことを行なうことを予想していない。
上記動作の全ては同期して発生する。その後、システムは正常にインスタンス化される。このすぐ後、CActiveScheduler::Startはサーバスタートアップコードで呼び出され、任意の更なる動作は非同期的に発生する。それら動作は以下を含む。
(a)リモートエンドからのベアラを介する接続に対する変更。入力接続が発生した場合、RemConはベアラにより伝えられる。接続がリモートでドロップされた場合、RemConは伝えられる。RemConはその情報を使用してクライアント通知を完了する。
(b)特定の接続のベアラに対するRemConが開始した接続又は切断要求の完了。RemConは、リモートでトリガされた接続変更と同様の方法でそれらを処理する。接続及び切断要求は、クライアントにより開始される。RemConが特定の接続を介してメッセージを送出したい時、RemConは最初にそれが存在するかをチェックしない(ベアラが存在する場合)。すなわち、Remconはベアラにメッセージを提供し、そのメッセージを処理するためにベアラをそのままにしておく。
(c)ベアラからの入力メッセージ。
(d)入力クライアント要求。クライアントがセッションを閉じ、それが最後のセッションである場合、サーバはシャットダウンを開始する。通常の「シャットダウン」の例を以下に説明する。クライアントがメッセージを送信しようとする場合、メッセージは、TSPによりアドレス指定されるか又はクライアントにより明示的にアドレス指定される(コネクション指向である場合)。
シャットダウン
RemConから切断するために、クライアントは、インタフェースオブジェクト及びインタフェースセレクタを削除する必要がある。最後の開いているセッションを閉じることにより、サーバのシャットダウンがトリガされる。
セッションが閉じられると必ずデストラクタが呼び出される。これは、サーバにその事象を無条件に通知し、サーバは、そのセッションに属するコマンドをキューから除去し、開いているセッションの数を監視する。開いているセッションの数がゼロになった場合、シャットダウンタイマが開始される。シャットダウンタイマが終了した時、サーバはCActiveScheduler::Stopを呼び出すことにより終了する。任意の新しいセッションが到着した場合(随時)、シャットダウンタイマはキャンセルされ、セッションが要求された時にサーバが終了しないことを確実にする。
CActiveScheduler::Stopが呼び出された時、CActiveScheduler::Startを呼び出した後、実行はサーバスタートアップコードに戻る。サーバオブジェクトは、すぐに破壊される。以下の事象は以下の順番で発生する。
(a)ベアラマネージャが破壊される。これにより、ベアラ上の全ての未解決の要求が取り消され、同期をとって破壊される。ベアラの破壊は、容易に動作するように構成され、接続を閉じ、サービスプロバイダ上のそれ自体の要求を適切に取り消す。
(b)この時、シャットダウンタイマは安全に破壊される。
(c)メッセージの配列が破壊される。
(d)TSPが破壊される。しかし、TSPにより現在アドレス指定されている入力コマンドがある場合、TSPに未解決の要求が存在する可能性がある。従って、TSPは、未解決の要求を取り消し、同時にTSP自体を完全に除去するように構成される。
(e)コンバータマネージャが破壊される。これは全てのコンバータインスタンスを破壊する。
(f)接続履歴オブジェクトが破壊される。
(g)作成されたオペレーティングシステムオブジェクトが更に破壊される。
サーバの破壊は、開始されると取消しできない。サーバのシャットダウンが発生している間にクライアントが接続しようとする場合、カーネルはクライアントの接続の試みをエラーで完了する。この状況において、クライアント側はサーバを再起動し、接続を再度試みる。
出力コマンド及び入力応答
出力コマンドの例は、インスタンス化されたインタフェースにより提供されるAPIを使用して、コントローラクライアントがコマンドを送出することにより開始してもよい。例えば:
TRequestStatus stat;
iCoreIf->Play(stat);
User::WaitForRequest(stat);
Core APIは、Play(例えば)要求を一般的な「動作ID」及び関連するデータ(例えば、再生速度)に変換してもよい。Core APIは、そのインタフェースUIDを有する中間層にそのデータを渡す。中間層は、メッセージをサーバに送出するためにコントローラセッションを使用する。
サーバは、コントローラセッションを検査する。CRemConMessageは接続アドレス(コントローラがコネクション指向の場合)、インタフェースUID、動作ID、関連するデータ、メッセージの種類(コマンド又は応答)及び元のセッションのIDを含んで構成される。
セッションがコネクション指向コントローラの場合、このメッセージは「TSPへの出力保留アクセス」キューに配置され、許可付与のためにTSPに提供される。許可が与えられた場合、メッセージは「出力送出」キューに配置され、所定の接続アドレスを有する適切なベアラに配信される。ベアラは、その要求の受入れを同期をとって指示する。エラーの場合、メッセージは「出力送出」キューから除去される。クライアントの送出要求は、すぐに完了される。許可がTSPにより拒否された場合、クライアントの要求はKErrPermissionDeniedで完了される。
コントローラがコネクションレスである場合、メッセージは「TSPへの出力保留アクセス」キューに配置され、アドレス指定(可能性として非同期的な)のためにTSPに提供される。TSPがアドレス指定要求を完了した時、メッセージは、「TSPへの出力保留アクセス」キューから除去され、各々がTSPにより指示される各アドレスに対するものであるN個のコピーが「出力送出」キューに挿入され、関連するアドレス指定情報を有する適切なベアラにN回送出される。この時点までのエラーはキューをロールバックし、クライアントにエラーを返す。この例におけるTSPの目的は、実質的には、メッセージを送出するためにメッセージの接続アドレスフィールドを読み込むことである。
その後ある時点で、リモートは、送出されたコマンドに対する応答を送出してもよい。応答のリモートアドレス、インタフェースUID及び動作IDは、「出力送出」キューに対してチェックされる。一致した項目が見つけられた場合、元のコマンドの送信元セッションIDは、クライアントコントローラに対する入力応答をアドレス指定するために使用される。一致したコマンドが見つけられない場合、応答はドロップされる。応答は、クライアントReceive要求を完了するために使用され、「出力送出」キューから一致したコマンドが完全に除去される。尚、中間層(CRemConInterfaceSelector)は、中間層が有する任意の接続されたコントローラ又はターゲットに未解決のReceive要求を維持する。クライアントがReceive要求を未解決にしない場合、「入力保留Receive」キューは、応答及びコマンドの双方をキュー登録するために使用されてもよい。
クライアント側において、新しい応答は特定のコントローラセッションに対してサーバにより配信される。所有するインタフェースセレクタは、インタフェースUIDをオンにし、インタフェース上のNewResponseを呼び出す。インタフェースは、動作IDを検査し、関連するデータを任意で分解し、例えば、観察者(クライアント)のPlayResponseを呼び出す。
要約すると、クライアントはコマンドを送出する非同期要求を行なう。要求は完了し、クライアントは後でPlayResponseを呼び出してもらう。
TSPがPlayコマンドを複数のリモートに向け、複数のリモートがそれぞれ応答を生成する場合、PlayResponseはクライアントで複数回呼び出される。
入力コマンド及び出力応答
この例は、ベアラが入力コマンドをRemConに配信することにより開始する。RemConは、リモートアドレス、インタフェースUID、動作ID、関連するデータ及びメッセージの種類(コマンド又は応答)を含むCRemConMessageを作成する。このメッセージは、「入力保留アドレス」キューに配置され、アドレス指定のためにTSPに送出される。
本質的に、この例におけるTSPの目的は、アドレスのセッションIDフィールドを読み込むことである。これが行なわれると、メッセージは「入力保留アドレス」キューから除去され、N個のコピーは「入力配信」キューに追加され、各々は関連するターゲットクライアントに配信される。コマンドがセッションに到着した時、クライアントがReceive要求を未解決にしない場合、「入力保留Receive」キューが使用されてもよい。中間層はインタフェースUIDをチェックし、メッセージを適切なインタフェースオブジェクトに転送する。インタフェースはメッセージを分解し、例えばクライアント上のPlayを呼び出し、Playコマンドが受信されたことを示す。
クライアントは、応答を送出することを選択してもよい。クライアントはPlayResponseを呼び出し、PlayResponseは中間層のターゲットセッションを介してRemConにメッセージを送出する。サーバは、コマンドがセッションID、インタフェースUID及び動作IDと一致するか「入力配信」キューをチェックし、応答を適切なベアラにアドレス指定するために見つけられたコマンドのリモートアドレスを使用する。見つけられたコマンドは、キューから除去され且つ破壊される。
リモートコントロールクライアントアプリケーションは、以下のように実装されてもよい。この例は、既存のリモートコントロールAPIを使用してリモートコントロールシステムのクライアントを実現することを含む。
まず、アプリケーションがコントローラに対するものか又はターゲットに対するものかを決定する。他のデバイスをリモートコントロールする必要がある場合、コントローラのアプリケーションが必要とされる。リモートコントロールされる必要がある場合、ターゲットのアプリケーションが必要とされる。コントローラ及びターゲットの双方になることが常に許可される。
コントローラが必要とされる場合、通信するリモート及び通信の際に介するベアラを認識する必要がある。この情報が周知である場合、アプリケーションはコネクション指向モードで動作してもよい。ここで、リモートコントロールシステムはベアラ及びリモートのアドレスを明示的に示される。この情報が周知でない場合、アプリケーションはコネクションレスモード(デフォルト)で動作する必要がある。この場合、コマンドはシステムにより(特にデバイスの製造業者により提供されるTarget Selector Plug-inにより)ルーティングされる。
使用される必要のあるAPIを決定する必要がある。Play、Stop等を含む多くの基本動作を範囲に含むCore APIが提供される(TrackInfo API及びAbsolute Volume APIが提供されるが、そのようなメッセージをBluetoothを介して送出及び受信できる必要がある下位レベルの実装をしない。)。
次に、コントローラのセットアップについて説明する。
第1のステップは、CRemConInterfaceSelectorのインスタンスを作成することである。これは、クライアント側の中心であり、サーバ上のセッション及びインタフェースオブジェクトを所有し、それらの間でメッセージをルーティングする。
CRemConInterfaceSelector*sel = CRemConInterfaceSelector::NewL();
次に、所望のAPIのコントローラインタフェースのインスタンスが作成される(この例においては、Core API)。
CRemConCoreApiController* cont = CRemConCoreApiController::NewL(*this, *sel);
このコードは、これがMRemConCoreApiControllerObserverを実装する種類のオブジェクトであるのが前提である。このミックスインは、入力応答(コマンドに対する)が配信される方法を判定する。この時、contの所有権はselにある。
次に、インタフェースセレクタにコントローラセッションをサーバと接続するように伝える必要がある。
sel->OpenControllerL();
この時点で、コントローラセッションはコネクションレスである。送出されたコマンドはTSPによりアドレス指定される。制御されるベアラ及びリモートが周知である場合、次のコードが使用されてもよい:
TRemConAddress addr;
addr.BearerUid() = xxx; //xxx=ベアラのUID
addr.Addr() = yyy; //yyy=ベアラ特有の形式のリモートのアドレス
sel->GoConnectionOrientedL(addr);
GoConnectionOrientedLが成功すると、アプリケーションはコネクション指向になり、コントローラセッションは指定された単一のリモートとの通信専用になる。TSPは、特定のコマンドをアドレス指定をしないが、送出される各コマンドを依然として許可又は拒否する。尚、リモートとのベアラレベルの接続はこの動作により確立されない。
以下を使用して再びコネクションレスになることが可能である。
sel->GoConnecctionlessL();
コネクション指向になると、送出される第1のコマンドの待ち時間を短縮するために、以下のように、リモートとのベアラレベルの接続を明示的にセットアップできる:
TRequestStatus stat;
sel->ConnectBearer(stat);
User::WaitForRequest(stat);
これが行なわれない場合、第1の(及び任意の後続する)コマンドが送出された時、サーバは必要に応じて接続を確立しようとする。ConnectBearerは、待ち時間を短縮するために1つの能力として提供される。
ベアラレベルの接続は以下のように切断される:
TRequestStatus stat;
sel->DisconnectBearer(stat);
User::WaitForRequest(stat);
尚、ベアラレベルの接続は任意に制御されるべきではない。アプリケーションが現在「コネクション指向」であるベアラレベルの接続のみを制御できる。これは、ConnectBearer及びDisconnectBearerのTRemConAddressパラメータが欠如している理由である。
尚、リモートはリモート自体の命令でアプリケーション接続を確立又は切断してもよい。リモートが接続を切断する場合、送出される次のコマンドにより、サーバはその接続を再び確立しようとする。これは、不測の待ち時間を伴う可能性がある。再接続が失敗した場合、送出は失敗する。それにも関わらず、アプリケーションはコネクション指向のままである。接続の向きは、実際のベアラレベルの接続に依存しない。
ベアラレベルにおいて、接続の状態に関心があると考えられる場合、CRemConInterfaceSelectorの以下のAPIが使用されてもよい:
IMPORT_C TInt GetConnections(TSglQue<TRemConAddress>& aConnections);
IMPORT_C void NotifyConnectionsChange(TRequestStatus& aStatus);
IMPORT_C TInt NotifyConnectionsChangeCancel();
GetConnectionsは、システム中に現在存在する全ての接続を供給する。NotifyConnectionsChangeは、その設定が変更された時期のみを示す。
●コマンドの送出及び応答の受信
contは、以下のようにコマンドを送出するために使用される。
TRequestStatus stat;
cont->Play(stat);
User::WaitForRequest(stat);
応答はMRemConCoreApiControllerObserverインタフェースを介して配信される。
1つのコマンドの送出のみが常に未解決である。コネクションレスコントローラが実装される場合、TSPは複数のリモートに対してコマンドをアドレス指定した可能性がある。この場合、単一のコマンドの送出の結果として複数の応答を得てもよく、それら応答は、フィルタリングされるか又は適切な場合には使用される。
TSPが複数のリモートにコマンドを送出し、それら送出の1つ以上が失敗した場合、エラー値は失敗した送出のうちの1つから提供される。更に、コマンドが正常に送出されたリモート数が提供される。ベアラは、送出した各コマンドに対する応答を取り戻す義務がある。ベアラに依存して、その応答を実際にリモートから得ても得なくてもよい。送出は、ベアラレベルで成功するか又は失敗する。すなわち、ベアラは送出の管理をするか又は管理をしない。従って、「成功した」送出の結果、要求されたリモートへの送信を行なわない場合がある。
尚、リモートに送出された各コマンドには、サーバのヒープに割り当てられているメモリが関与し、これはクライアントの終了時又は応答の受信時にのみ解放される。通信を要求されないリモートが存在しないと考えられる適切な理由が存在する場合、リモートはサーバのメモリへの負荷を軽減するためにリモートへのコマンドの送出を停止するように構成されるのが好ましい。
●切断
リモートコントロールシステムの介入を無くすために、全ての未解決の非同期的な要求は取り消されるべきであり、インタフェースセレクタは削除されるべきである。
ターゲット
●セットアップ
これは、コネクション指向の概念がないこと以外はコントローラのセットアップに非常に類似する。ターゲットはミックスインを実装し、インタフェースセレクタは、そのミックスインを介して、入力コマンドを配信し且つ応答を送出するためのオブジェクトをインスタンス化する。全ての入力コマンドは、TSPによりアドレス指定される。出力応答は、元のコマンドを発信したリモートに対して明示的にアドレス指定される。
CRemConInterfaceSelector* sel = CRemConInterfaceSelector::NewL();
CRemConCoreApiTarget* targ = CRemConCoreApiTarget::NewL(*this, *sel);
この時、targの所有権はselにある。
次に、クライアントはサーバ上にターゲットセッションを開く。
sel->OpenTargetL();
●コマンドの受信及び応答の送出
入力コマンドは、MRemConCoreApiTargetObserverミックスインを介して(上記例においては)提供される。
コマンドを受信すると、応答の送出を要求される。
TRequestStatus stat;
cont->PlayResponse(stat, response);
User::WaitForRequest(stat);
常に、1つの応答のみが未解決である。コマンドが迅速に入力されると、それらコマンドに対する応答をキュー登録する必要がある。しかし、ターゲットに配信される各コマンドにはサーバのヒープに割り当てられたメモリが関与し、それはクライアントの終了時又は応答の送出時にのみ解放される。
●切断
リモートコントロールシステムの介入を無くすために、全ての未解決の非同期的な要求は取り消されるべきであり、インタフェースセレクタは削除されるべきである。
新しいリモートコントロールAPIは以下のように実装されてもよい。
新しいAPIを実装するために、外部層DLLの作成及びコンバータのグループの作成の2つの作業が行なわれる必要がある。
外部層DLL
外部層DLLのジョブは以下の通りである。
(a)使用し易いAPIをクライアントに提供すること。
(b)クライアントAPIのフィールド/項目とDLLの内部データ形式(動作ID及び動作別データのフィールドのレイアウトの双方を含む)との変換を行なうこと。
(c)必要なだけ上述のものを発表し、(i)クライアントにAPIを使用する権限を与え、(ii)コンバータの作成者に権限を与えること。
Core APIにおいて確立されたパターンに従って、以下のステップが後続してもよい。
・remconinterfacebase.libにリンクする静的DLLを作成する。
・APIに対して新しいUIDを割り当てる。
・CRemConInterfaceBaseから得られる新しいAPIのコントローラ及びターゲットの種類の各々に対してクラスを定義する。
・NewL及びデストラクタメソッド、並びにエクスポートされた公開メソッドを提供する−コントローラの場合はコマンドを送出し、ターゲットの場合は応答を送出する。
・入力応答及びコマンドのそれぞれを通知されるクライアントに対して、コントローラ及びターゲットの各々の観察者のミックスインを定義する。
・各インタフェースにおいて、CRemConInterfaceBase::MrcibNewMessageは、入力メッセージを復号化し且つ適切なミックスインメソッドを呼び出すために実装される。
・動作識別子及びAPIの各メッセージの形式を指定する。それらはコンバータを形成するために使用される。
<コンバータ>
クライアントが外部層DLLを使用してメッセージを送出する場合、ベアラは以下の情報を受信する。メッセージを発信したAPIのUID、メッセージの動作ID及び任意の動作別データを含む記述子である。動作別データのデータ形式とベアラにより要求される形式とを変換することがコンバータのジョブである。
コンバータAPIは、remotecontrol\converterplag-in\publicにある(しかし実際には、epoc32\include\remconの#includeである)。Core_Serialコンバータは、remotecontrol\test\converters\Core_Serialにある。
Core_Serialコンバータに確立されたパターンに従って、新しい実装UIDがコンバータに対して割り当てられるべきであり、ECOMプラグインとしてConverter APIを実装する。CRemConConverterPlug-in::SupportedUids(const TUid& aInterfaceUid, const TUid& aBearerUid)は、所定のAPIと所定のベアラとの間のメッセージ形式の変換がサポートされるか否かを判定するために実装されるべきである。
CRemConConverterPlug-in::SupportedInterface(const TDesC8& aInterfaceData, const TUid& aBearerUid)は、僅かに異なる方法で配置される以外は同一のサポート問題に応じるために実装される。この場合、APIは所定のベアラの形式でパッケージにより識別される。残りのコンバータの実装は相対的に単純である。
コンバータは、ステートレスな同期的なデータ処理マシンである。変換を行なうために、コンバータはAPIの動作ID及びAPIのUIDを認識する必要がある。
しかし、ベアラは、メッセージを「理解する」ためにコンバータの助けを明示的に要求する必要がある。ベアラが要求しない場合、コンバータは呼び出されない。すなわち、ベアラは、変換方法を既に認識しているAPI以外のAPIに対して実質的に閉じられている。これは、ベアラによっては完全に有効になる。
しかし、新しいAPIが実装される場合、コンバータは既存の各ベアラに提供される必要がある。この情報が提供されない場合、事実上、フレームワークはベアラの形式と新しいAPIの形式との間でメッセージを変換する方法をベアラに通知できない。実質上、これは、新しいAPIがその特定のベアラを介して使用されないのと同等である。これは、特定のフレームワークの必要条件によっては問題ない。
コンバータは、APIにより発表されるフォーマティング情報だけでなくベアラからのフォーマティング情報を必要とする。しかし、道理上、ベアラの形式はプロプライエタリリモートコントロールAPIである発表された仕様(例えば、AVRCP)として存在する可能性が高い。
TSPは以下のように実装されてもよい。
まず、TSP APIを実装するプラグインは、新しい実装UIDで実装される。
TSPは、以下の問題に応じることができるように準備すべきである。
(a)サーバは、現在接続されている(すなわち、サーバに接続されている)どのターゲットクライアントに対して、以下の入力コマンド(インタフェースUID及び動作ID、並びにターゲットクライアントのセキュアIDを含むターゲットクライアントに関する情報の集合を有する)を配信すべきか。
(b)サーバは、どのリモートに対して、以下の出力コマンド(インタフェースUID及び動作ID、セキュアID及びRMessage2を含んでコマンドを送出しようとするコントローラクライアントに関する情報、並びにベアラに対するTSecurityPolicyの集合を有する)を配信すべきか。
尚、TSPがクライアントXにコマンドを提供した場合、TSPは元のコマンドを配信したベアラを介して1つの応答を正確に送出する権限をクライアントXに効果的に与える。
そのようなDLLは、ROMに1つのみ存在する必要がある。
新しいリモートコントロールベアラは、以下のように実装される。
ベアラAPIを実装するプラグインは、新しい実装UIDで作成される。
ベアラAPIはコネクション指向である。送出及び配信される全てのメッセージは、特定の受信者アドレス又は特定の送信者アドレスと関連付けられる。サーバは、特定のリモートに対してベアラレベルの送出を発行する前にそのリモートに対するベアラレベルの接続を確立する役割を果たす。
実際のベアラは、実際にはコネクション指向でない可能性がある。例えば、テストシリアルベアラは、シリアルケーブルを介して単純に動作する。従って、(a)テストシリアルベアラは、ベアラ特有のリモートアドレス形式を有さず(そのため、「リモートアドレス」は単純にシリアルベアラのUIDから成る)、(b)最初にシリアルポートを開いた場合、スタートアップ時に入力接続を実質的に「示す」ことによりコネクション指向の挙動をエミュレートする必要がある。この「接続」は切断されることはない。
ベアラは、サーバスタートアップ時にインスタンス化され、すぐに入力接続のリスニングを開始する必要がある。各接続は、サーバまで示される。
本発明は、現在の非一般的なフレームワークを介して重要な利点を提供する一般的なリモートコントロールフレームワークを提供することが上述から分かる。利点は以下を含む。
・リモートコントロールされるアプリケーションの作成を容易にすること。既存のリモートコントロール解決策が1つのベアラ技術と常に結び付けられるため、従来、アプリケーションが関係する特定のベアラ技術を利用するように開発されない限り、一般的なリモートコントロールのためのアプリケーションを提供できなかった。
・デバイスの製造時には応じることができなかった新しい技術を使用するアフターマーケットアクセサリをリリースするというデバイスの製造業者の能力。本発明なしでは、そのようなアクセサリは新しいバージョンの制御可能なアプリケーションと共に出荷する必要があるだろう。
・複数の制御可能なアプリケーションをデバイス上で同時に実行する能力。2つ以上のアプリケーションが存在する場合、その能力は複数の可能なターゲットアプリケーションのうちの1つを選択する機構を提供する。
特定の実施形態を参照して本発明を説明したが、添付の請求の範囲により規定される本発明の範囲内で変更が行なわれてもよいことは理解されるだろう。
本発明のそのような変更の可能な一例は、複数のオーディオアプリケーションを有する演算装置に適用可能であり、全ての複数のオーディオアプリケーションはリモートコントロールコマンドを受信するように登録されている。複数のオーディオアプリケーションを有するそのようなデバイスは、インターネット、ボイスメモ又は音声入力アプリケーションからのストリームオーディオ及びローカルなボイスメールストアを再生できるMP3プレーヤ、ラジオ、ブラウザプラグイン等のオーディオデータを再生できる多くのマルチメディアアプリケーションを有する移動電話を含んでもよい。
全てのアプリケーションがリモートコントロールコマンドを受信するように登録されている場合、リモートコントロールマネージャがデバイス上のリモートコントロールコマンドを既にオーディオを再生している1つのアプリケーションに配信できるようにすることにより、アプリケーションが既にオーディオを再生していた場合、本実施形態はそのようなコマンドの正確な配信を可能にする。
本発明に係るリモートコントロールアーキテクチャを示す図である。 本発明に係るリモートコントロールアーキテクチャを概略的に示す図である。 本発明に係るリモートコントロールアーキテクチャの実際的な一実施形態を示す図である。

Claims (1)

  1. 1つ以上のターゲットデバイスが任意のベアラを介して任意のコントローラデバイスからコマンドを受信できるようにする一般的なリモートコントロール・インタフェースを提供することにより、
    ・USB及び単純なシリアルを含む固定配線と、
    ・赤外線と、
    ・超音波と、
    ・Bluetooth及び802.11無線ネットワーキングを含むがそれらに限定されないRFと、
    を含むがそれらに限定されない複数のベアラのうち少なくとも1つを介して送出されたコマンドを使用して、1つ以上のコントローラデバイスが前記1つ以上のターゲットデバイスをリモートコントロールできるようにする方法。
JP2012027286A 2005-06-29 2012-02-10 リモートコントロール・フレームワーク Expired - Fee Related JP5479513B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0513312.9 2005-06-29
GB0513312A GB2427733A (en) 2005-06-29 2005-06-29 Remote control

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008518964A Division JP5061360B2 (ja) 2005-06-29 2006-06-29 リモートコントロール・フレームワーク

Publications (3)

Publication Number Publication Date
JP2012120240A true JP2012120240A (ja) 2012-06-21
JP2012120240A5 JP2012120240A5 (ja) 2012-09-13
JP5479513B2 JP5479513B2 (ja) 2014-04-23

Family

ID=34856376

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008518964A Expired - Fee Related JP5061360B2 (ja) 2005-06-29 2006-06-29 リモートコントロール・フレームワーク
JP2012027286A Expired - Fee Related JP5479513B2 (ja) 2005-06-29 2012-02-10 リモートコントロール・フレームワーク

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008518964A Expired - Fee Related JP5061360B2 (ja) 2005-06-29 2006-06-29 リモートコントロール・フレームワーク

Country Status (7)

Country Link
US (4) US9406219B2 (ja)
EP (4) EP3680874A1 (ja)
JP (2) JP5061360B2 (ja)
CN (1) CN100580731C (ja)
GB (1) GB2427733A (ja)
HK (1) HK1199669A1 (ja)
WO (1) WO2007000605A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014072645A (ja) * 2012-09-28 2014-04-21 Daiwa House Industry Co Ltd エネルギー監視システム、エネルギー監視方法及び端末

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050015340A1 (en) * 2003-06-27 2005-01-20 Oracle International Corporation Method and apparatus for supporting service enablers via service request handholding
US7873716B2 (en) 2003-06-27 2011-01-18 Oracle International Corporation Method and apparatus for supporting service enablers via service request composition
US8321498B2 (en) * 2005-03-01 2012-11-27 Oracle International Corporation Policy interface description framework
US8966498B2 (en) * 2008-01-24 2015-02-24 Oracle International Corporation Integrating operational and business support systems with a service delivery platform
US9038082B2 (en) 2004-05-28 2015-05-19 Oracle International Corporation Resource abstraction via enabler and metadata
US8073810B2 (en) * 2007-10-29 2011-12-06 Oracle International Corporation Shared view of customers across business support systems (BSS) and a service delivery platform (SDP)
US9245236B2 (en) * 2006-02-16 2016-01-26 Oracle International Corporation Factorization of concerns to build a SDP (service delivery platform)
US7860490B2 (en) * 2004-12-01 2010-12-28 Oracle International Corporation Methods and systems for exposing access network capabilities using an enabler proxy
US8458703B2 (en) 2008-06-26 2013-06-04 Oracle International Corporation Application requesting management function based on metadata for managing enabler or dependency
US9565297B2 (en) 2004-05-28 2017-02-07 Oracle International Corporation True convergence with end to end identity management
US20060116912A1 (en) * 2004-12-01 2006-06-01 Oracle International Corporation Managing account-holder information using policies
US8032920B2 (en) * 2004-12-27 2011-10-04 Oracle International Corporation Policies as workflows
GB2427733A (en) 2005-06-29 2007-01-03 Symbian Software Ltd Remote control
US8914493B2 (en) 2008-03-10 2014-12-16 Oracle International Corporation Presence-based event driven architecture
US8103363B2 (en) * 2007-01-31 2012-01-24 Hewlett-Packard Development Company, L.P. Device control system
US8214503B2 (en) 2007-03-23 2012-07-03 Oracle International Corporation Factoring out dialog control and call control
JP4459253B2 (ja) * 2007-05-29 2010-04-28 株式会社東芝 通信端末
JP4978349B2 (ja) * 2007-07-10 2012-07-18 富士通東芝モバイルコミュニケーションズ株式会社 情報処理装置
US8472589B1 (en) * 2007-09-28 2013-06-25 Sprint Communications Company L.P. Locally storing voicemails and communicating them to other wireless mobile devices
US8539097B2 (en) * 2007-11-14 2013-09-17 Oracle International Corporation Intelligent message processing
US8161171B2 (en) 2007-11-20 2012-04-17 Oracle International Corporation Session initiation protocol-based internet protocol television
US20090181613A1 (en) * 2008-01-14 2009-07-16 Jyi-Yuan Chen Wireless control system and method thereof
US9654515B2 (en) 2008-01-23 2017-05-16 Oracle International Corporation Service oriented architecture-based SCIM platform
US8589338B2 (en) * 2008-01-24 2013-11-19 Oracle International Corporation Service-oriented architecture (SOA) management of data repository
US8401022B2 (en) * 2008-02-08 2013-03-19 Oracle International Corporation Pragmatic approaches to IMS
CN102067095A (zh) * 2008-06-17 2011-05-18 松下电器产业株式会社 服务器装置、服务器处理方法以及程序
US8090848B2 (en) * 2008-08-21 2012-01-03 Oracle International Corporation In-vehicle multimedia real-time communications
JP4883132B2 (ja) * 2009-04-28 2012-02-22 株式会社デンソー 音出力制御装置
US8879547B2 (en) * 2009-06-02 2014-11-04 Oracle International Corporation Telephony application services
US8583830B2 (en) * 2009-11-19 2013-11-12 Oracle International Corporation Inter-working with a walled garden floor-controlled system
US9269060B2 (en) * 2009-11-20 2016-02-23 Oracle International Corporation Methods and systems for generating metadata describing dependencies for composable elements
US20110125913A1 (en) * 2009-11-20 2011-05-26 Oracle International Corporation Interface for Communication Session Continuation
US8533773B2 (en) * 2009-11-20 2013-09-10 Oracle International Corporation Methods and systems for implementing service level consolidated user information management
US20110125909A1 (en) * 2009-11-20 2011-05-26 Oracle International Corporation In-Session Continuation of a Streaming Media Session
US9503407B2 (en) 2009-12-16 2016-11-22 Oracle International Corporation Message forwarding
US9509790B2 (en) * 2009-12-16 2016-11-29 Oracle International Corporation Global presence
US9519425B1 (en) * 2010-06-28 2016-12-13 EMC IP Holding Company, LLC Techniques for device user interfaces
US8631473B2 (en) 2011-07-06 2014-01-14 Symphony Advanced Media Social content monitoring platform apparatuses and systems
US20130210358A1 (en) * 2012-02-13 2013-08-15 Htc Corporation Application Control Method and Mobile Electronic Device thereof
US20180048750A1 (en) * 2012-06-15 2018-02-15 Muzik, Llc Audio/video wearable computer system with integrated projector
US20130339859A1 (en) 2012-06-15 2013-12-19 Muzik LLC Interactive networked headphones
CN102810247A (zh) * 2012-08-24 2012-12-05 贾琳 一种红外遥控模块及其遥控方法
KR101987226B1 (ko) 2012-11-20 2019-06-11 엘지이노텍 주식회사 통신 모듈을 포함하는 게이트웨이 시스템 및 게이트웨이 시스템의 구동방법
US11075996B2 (en) * 2013-10-15 2021-07-27 Red Hat Israel, Ltd. Remote dashboard console
CN104570967B (zh) * 2013-10-17 2017-06-20 北大方正集团有限公司 基于Android系统的远程控制方法及系统
KR101594874B1 (ko) 2014-07-16 2016-02-17 삼성전자주식회사 전자 장치, 외부 장치 및 전자 장치의 외부 장치 전원 제어방법
US10127240B2 (en) * 2014-10-17 2018-11-13 Zestfinance, Inc. API for implementing scoring functions
US10079797B2 (en) 2014-10-29 2018-09-18 Vmware, Inc. Methods, systems and apparatus to remotely start a virtual machine
WO2017093411A1 (en) * 2015-12-02 2017-06-08 Koninklijke Philips N.V. Control device for a domestic appliance system
CN105681878A (zh) * 2016-01-15 2016-06-15 南京熊猫电子股份有限公司 一种通过智能手机控制智能机顶盒的装置及其方法
US10810867B2 (en) * 2016-10-11 2020-10-20 Optim Corporation Remote control system, remote control method, and program
US11941650B2 (en) 2017-08-02 2024-03-26 Zestfinance, Inc. Explainable machine learning financial credit approval model for protected classes of borrowers
WO2019173734A1 (en) 2018-03-09 2019-09-12 Zestfinance, Inc. Systems and methods for providing machine learning model evaluation by using decomposition
WO2019212857A1 (en) 2018-05-04 2019-11-07 Zestfinance, Inc. Systems and methods for enriching modeling tools and infrastructure with semantics
JP2021530796A (ja) * 2018-07-17 2021-11-11 アイ・ティー スピークス エル・エル・シーiT SpeeX LLC 産業機械を、1セットの既定コマンドを有するインテリジェント産業アシスタントと協働させるための方法、システム、および、コンピュータプログラム製品
CN109040303A (zh) * 2018-09-07 2018-12-18 山东交通学院 一种基于物联网通信及控制装置、系统及方法
US11816541B2 (en) 2019-02-15 2023-11-14 Zestfinance, Inc. Systems and methods for decomposition of differentiable and non-differentiable models
CA3134043A1 (en) 2019-03-18 2020-09-24 Sean Javad Kamkar Systems and methods for model fairness
US10751612B1 (en) 2019-04-05 2020-08-25 Sony Interactive Entertainment LLC Media multi-tasking using remote device
CN111475318B (zh) * 2020-04-29 2021-02-23 中国人民解放军军事科学院国防科技创新研究院 一种支持多用户访问的串口通信装置、方法及系统
US11720962B2 (en) 2020-11-24 2023-08-08 Zestfinance, Inc. Systems and methods for generating gradient-boosted models with improved fairness

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08265856A (ja) * 1995-03-27 1996-10-11 Oki Electric Ind Co Ltd 無線インタフェースカード
JPH09259515A (ja) * 1996-03-19 1997-10-03 Fujitsu Ltd Avコントローラ
JPH1127761A (ja) * 1997-06-30 1999-01-29 Dainippon Printing Co Ltd リモートコントロール装置
JP2002051069A (ja) * 2000-08-07 2002-02-15 Nippon Telegr & Teleph Corp <Ntt> ゲートウェイ装置
JP2002101476A (ja) * 2000-09-25 2002-04-05 Toshiba Corp 情報処理装置
JP2004080085A (ja) * 2002-08-09 2004-03-11 Olympus Corp 制御装置

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US613809A (en) 1898-07-01 1898-11-08 Tesla Nikola Method of and apparatus for controlling mechanism of moving vessels or vehicles
US5650775A (en) 1989-07-06 1997-07-22 U.S. Philips Corporation Control system for controlling consumer apparatus
DE68927407T2 (de) * 1989-07-06 1997-04-30 Koninkl Philips Electronics Nv Steuerungssystem zur Steuerung von Konsumgeräten, insbesondere von Audio- und/oder Videogeräten, und Konsumgerät für Anwendung in solchem Steuerungssystem
US5650831A (en) * 1995-07-17 1997-07-22 Gateway 2000, Inc. Adjustable power remote control drive
US6144888A (en) * 1997-11-10 2000-11-07 Maya Design Group Modular system and architecture for device control
US7894474B1 (en) * 1999-09-10 2011-02-22 Koninklijke Philips Electronics N.V. Remote control of an electronic device through downloading of a control interface of the electronic device in a mobile station
US6498567B1 (en) * 1999-12-20 2002-12-24 Xerox Corporation Generic handheld remote control device
US6748278B1 (en) 2000-03-13 2004-06-08 Microsoft Corporation Remote controlled system with computer-based remote control facilitator
ES2240574T3 (es) * 2000-12-10 2005-10-16 Vkr Holding A/S Dispositivo de control remoto y procedimiento de configuracion de dicho dispositivo de control remoto.
CN1219361C (zh) * 2001-03-28 2005-09-14 国际商业机器公司 用于红外接口的蓝牙适配器及相关的通信方法
KR20020089631A (ko) 2001-05-23 2002-11-30 (주)오픈브레인테크 블루투스 헤드셋을 통한 온라인 음악 배포 시스템
US7536182B2 (en) * 2001-09-18 2009-05-19 Nec Corporation Method and system for extending the capabilities of handheld devices using local resources
JP4003474B2 (ja) * 2002-02-15 2007-11-07 松下電工株式会社 照明装置
JP2003347956A (ja) 2002-05-28 2003-12-05 Toshiba Corp オーディオ出力装置およびその制御方法
US7034713B2 (en) * 2002-07-08 2006-04-25 Yu-Chung Yang Autonomous and universal remote control scheme
US6998955B2 (en) * 2002-08-09 2006-02-14 Ballew Michael A Virtual electronic remote control device
JP3872052B2 (ja) * 2002-10-30 2007-01-24 埼玉日本電気株式会社 リモコン機能付き携帯電話機、そのリモートコントロール方法及びシステム
US7987489B2 (en) 2003-01-07 2011-07-26 Openpeak Inc. Legacy device bridge for residential or non-residential networks
US7325238B2 (en) * 2003-03-21 2008-01-29 Microsoft Corporation Interface for determining the source of user input
FR2857211A1 (fr) * 2003-07-04 2005-01-07 France Telecom Systeme de controle d'environnement et d'assistance pour habitation
SE528570C2 (sv) * 2004-04-08 2006-12-19 Abb Research Ltd Metod, anordning och system för att upprätta en trådlös förbindelse mellan en bärbar datoranordning med en första applikation till andra anordningar med hjälp av en andra applikation
KR100621593B1 (ko) * 2004-09-24 2006-09-19 삼성전자주식회사 다중양식의 입력을 이용하는 통합 원격 제어 장치 및 방법
KR100664925B1 (ko) * 2004-09-24 2007-01-04 삼성전자주식회사 다중 기기를 제어하는 통합 원격 제어 장치 및 방법
US7944470B2 (en) * 2005-03-04 2011-05-17 Armida Technologies Corporation Wireless integrated security controller
US20060224575A1 (en) * 2005-03-30 2006-10-05 Microsoft Corporation System and method for dynamic creation and management of lists on a distance user interface
GB2427733A (en) 2005-06-29 2007-01-03 Symbian Software Ltd Remote control
US20070258718A1 (en) * 2006-05-05 2007-11-08 Alcatel Method and system for extending internet protocol remote control to non-internet protocol devices
US7952467B2 (en) * 2006-09-29 2011-05-31 Sony Corporation System and method for informing user how to use universal remote control
WO2008056686A1 (en) * 2006-11-07 2008-05-15 Sony Corporation Communication system, transmitting device, receiving device, communication method, program and communication cable
US7788395B2 (en) * 2007-02-14 2010-08-31 Microsoft Corporation Adaptive media playback
WO2008134991A1 (de) * 2007-05-03 2008-11-13 Siemens Aktiengesellschaft Verfahren zum aufbau einer drahtlosen kommunikationsverbindung zwischen einer automatisierungskomponente und einem mobilen bedienterminal

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08265856A (ja) * 1995-03-27 1996-10-11 Oki Electric Ind Co Ltd 無線インタフェースカード
JPH09259515A (ja) * 1996-03-19 1997-10-03 Fujitsu Ltd Avコントローラ
JPH1127761A (ja) * 1997-06-30 1999-01-29 Dainippon Printing Co Ltd リモートコントロール装置
JP2002051069A (ja) * 2000-08-07 2002-02-15 Nippon Telegr & Teleph Corp <Ntt> ゲートウェイ装置
JP2002101476A (ja) * 2000-09-25 2002-04-05 Toshiba Corp 情報処理装置
JP2004080085A (ja) * 2002-08-09 2004-03-11 Olympus Corp 制御装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014072645A (ja) * 2012-09-28 2014-04-21 Daiwa House Industry Co Ltd エネルギー監視システム、エネルギー監視方法及び端末

Also Published As

Publication number Publication date
EP1899935A1 (en) 2008-03-19
US10607479B2 (en) 2020-03-31
US20170046946A1 (en) 2017-02-16
JP5479513B2 (ja) 2014-04-23
CN101213582A (zh) 2008-07-02
EP2752830A2 (en) 2014-07-09
JP2009500886A (ja) 2009-01-08
HK1199669A1 (en) 2015-07-10
EP3032512B1 (en) 2020-11-11
EP3680874A1 (en) 2020-07-15
GB0513312D0 (en) 2005-08-03
US9922550B2 (en) 2018-03-20
GB2427733A (en) 2007-01-03
CN100580731C (zh) 2010-01-13
US20090015433A1 (en) 2009-01-15
US9406219B2 (en) 2016-08-02
US20200184805A1 (en) 2020-06-11
US20190272740A1 (en) 2019-09-05
WO2007000605A1 (en) 2007-01-04
EP3032512A1 (en) 2016-06-15
EP1899935B1 (en) 2016-01-20
JP5061360B2 (ja) 2012-10-31

Similar Documents

Publication Publication Date Title
JP5479513B2 (ja) リモートコントロール・フレームワーク
US7257821B2 (en) Accessing an in home network through the internet
US9038061B2 (en) System and method for managing an application or software component for use in a device to be controlled in a home network
US20100229099A1 (en) Remote Audio
EP2314059B1 (en) Method and system for providing input in home network using upnp
WO2017165105A1 (en) Universal internet of things (iot) smart translator
WO2011095038A1 (zh) 实现终端间资源共享的方法、资源处理系统及终端
TW201502787A (zh) 使用配件協定經由無線傳輸之主機與配件裝置間之通信
MXPA01012451A (es) Sistema de comunicacion, dispositivo de control y dispositivo controlado.
US20020073244A1 (en) Method and an apparatus for the integration of IP devices into a HAVi network
US20090180398A1 (en) Method and apparatus for facilitating interaction between the services provided by respective networked devices
US8176343B2 (en) Method for providing information for power management of devices on a network
KR100498284B1 (ko) UPnP 기반 네트워크의 동기화 시스템 및 방법
CN108337306A (zh) 设备寻找方法、装置、系统、终端及存储介质
US20080229324A1 (en) System and method for sharing e-service resource of digital home
EP1734443A1 (en) Access to a mobile device from another device
JP3225101U (ja) 赤外線音声コントロールシステム及び赤外線音声コントロール装置
KR100578549B1 (ko) 유무선 네트워크 환경에서 복합 서비스 자동인식/수행시스템 및 그 방법
KR20050078548A (ko) 홈 네트워크 서빙 노드에서의 원격 소프트웨어 업그레이드방법

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20120417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120724

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A073

Effective date: 20120802

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20120820

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20120919

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130813

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131113

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140212

R150 Certificate of patent or registration of utility model

Ref document number: 5479513

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees