CyberLinkのドキュメント適当訳

俺用適当訳
ライセンス的に問題があったらすぐ消します。コメントなりで連絡いただけると幸いです…。

1, はじめに

UPnPアーキテクチャは、自宅でメディアサーバやメディアプレイヤーのようなデバイスの発見や操作を可能とするための、オープンなネットワークづくりに基づいたアーキテクチャです。

UPnPアーキテクチャは、GENA、SSDPSOAP、HTTPU、HTTPのようなたくさんのスタンダードなプロトコルに基づいたアーキテクチャです。
従って、あなたのUPnPデバイスをつくるためにはこれらのプロトコルを理解し、実装しなければなりません。

CyberLink for C はUPnP開発者のための開発パッケージです。CyberLinkは自動的にこれらのプロトコルを操作し、デバイスとコントロールポイントを素早く作ることをサポートします。

UPnPの詳しいことを知るには下のサイトとドキュメントを見てください。

2. セットアップ

このパッケージを使うため、JDKJREライブラリディレクトリにパッケージをコピーします。
例えば

cp ~~~


現在のパッケージはXMLSOAPリクエストをパースするための以下のパッケージが必要です。CyberLinkは以下のXMLパッケージを自動的にロードします。もしXMLパッケージをもってなければ、パッケージをインストールして下さい。

3. デバイス

3.1 クラス概要

下のStatic structure diagramはUPnPデバイスを作るためのCyberLinkの関係クラスです。デバイスはいくつかのデバイスとサービスが組み込まれ、サービスはいくつかのアクションと状態変数を持ちます。

3.2 Description

まず、UPnPデバイスを作るならデバイスとサービスのいくつかのdescription fileをつくらなければなりません。

rootデバイスはdescriptionを用いて作られたデバイスなら、自動的に追加されるためURLBaseエレメントを作るべきではありません。

デバイスと作るにはservice descriptionが必要とされますが、presentationURLとiconListは推薦オプションです。詳細はUPnP仕様書のdescriptionフォーマットを見てください。

3.3 初期化

UPnPデバイスを作るため、root descriptionファイルと共にデバイスクラスのインスタンスを作ります。作成されたデバイスはルートデバイスで、Device::start()を用いることのみでアクティブにすることができます。デバイスがスタートされたら、デバイスがUPnPネットワークにアナウンスされます。以下はデバイスの初期化例です。


InvalidDescriptionExceptionはdescriptionが正しくないときに発生します。getMessage()を使うと、例外の理由の詳細を知ることができます。

もうひとつの方法として、下記のようにdescriptionファイルの代わりに Device::loadDescription() と Service::loadSCPD() を用いてdescriptionをロードすることができます。ロードが失敗したとき、ローディングメソッドは例外が発生します。


activeなrootデバイスはいくつかのサーバプロセスをもっており、コントロールポイントからリクエストが送られた時自動的にレスポンスを返します。例えば、コントロールポイントがdescriptionファイルを得たとき、デバイスはHTTPサーバでdescriptionfileを返します。デバイスがスタートしたとき、マシンのHTTPサーバに使用可能なポートを自動的に検索します。

rootデバイスは以下のデフォルトパラメータと共に生成されます。これは、デバイスがスタートされる前に以下のメソッドによって変更することができます。

3.4 Notify

Device::start()を用いてUPnPネットワークにデバイスがスタートしたとき、自動的に ssdp::alive と共のnotifyメッセージを用いてアナウンスされます。Device::stop()を用いてデバイスが停止したとき、ssdp:byebyeを用いてメッセージが告知されます。Device::announce()とDevice::byebye()を用いてnotify messageを告知することができます。

コントロールポイントがM-SEARCHを用いてUPnPネットワークに検索リクエストを送信したとき、自動的にコントロールポイントへ検索レスポンスを送信します。デバイスは自動的にリース時間の中で告知を再送します。

3.5 組み込みデバイス

デバイスはいくつかの組み込まれたデバイスをもってるかもしれません。Device::getDeviceList()を用いることで組み込まれたデバイスリストを得ることができます。以下の例ではデバイスの中の全ての組み込みデバイスのfriendly nameを出力します。

Device::getDevice()を用いてfriendly nameかUDNを用いて組み込みデバイスを探すことができます。以下の例はfriendly nameによって組み込みデバイスを得ます。


とりあえずここまで