2014年 秋期 応用情報技術者試験 問7

DVDレコーダ、ブルーレイディスクレコーダ用のリモートコントロールボックスの設計

U社は、タブレット、スマートフォン、PCなど(以下、端末という)から、家庭内の無線LAN(以下、無線LANという)を介してDVDレコーダ、ブルーレイディスクレコーダ(以下、これらを総称してレコーダという)を制御できるリモートコントロールボックス(以下、ボックスという)を設計した。

【システムの構成】

端末からボックスを介して、レコーダの番組録画予約と、録画された番組(以下、録画番組という)の視聴を行うことができる。端末とボックスはアクセスポイントを経由して無線LANで接続し、ボックスとレコーダは専用のケーブルで接続する。

システムの構成を図1に示す。

【レコーダの機能】

レコーダは、ボックスからのコマンドで番組録画予約を行い、録画番組を視聴の際には、録画番組の映像と音声のデータ(以下、録画データという)をボックスに送る。

【端末及びボックスの機能】

端末には、専用のアプリケーションシステム(以下、アプリという)をインストールしてある。このアプリはボックスと通信を行い、ボックスを介して、レコーダの番組録画予約と、録画番組の視聴を行うことができる。ただし、レコーダが出力する録画データは端末に保存できないようにしている。また、ボックスのタスクの制約から、同時に視聴できる端末は1台だけである。

録画データは、ボックスで端末用のデータに変換されて端末に送られる。また、端末とボックス間の通信は全て暗号化されている。

ボックスは無線LAN用にデータを送るために十分に大きな無線LAN用のバッファを備えており、バッファに格納したデータを自動的に無線LANに送る。

【ボックスで使用するOS】

ボックスは、独自のリアルタイムOSを使用する。このOSでは、タスクは、実行状態、実行待ち状態、待ち状態のいずれかとなる。タスクにはあらかじめ、高、中、低の3種類の優先度が付与され、変更されることはない。

・実行状態のタスクがあるとき、より優先度が高いタスクの実行要求があると、実行状態のタスクは実行待ち状態になり、優先度が高いタスクは実行状態になる。

・タスク間の通信にはメッセージキュー(以下、キューという)及びリングバッファを使用する。

【ボックスのタスク構成】

ボックスで使用するタスクの構成を、表1に示す。

表1 ボックスで使用するタスクの構成
タスク機能優先度
ボックス制御・無線LAN制御タスクからデータを受け取り、番組録画予約のデータなら番組録画予約情報に変換し、番組予約タスクに送る。視聴要求のデータなら視聴要求コマンドに変換し、レコーダ制御タスクに送る。
・番組予約タスクから番組録画予約の処理結果を受け取り、端末用の応答データに変換し、無線LAN制御タスクに送る。
レコーダ制御※1・各タスクから受け取ったコマンドをレコーダに送る。a
・レコーダから番組録画予約のレスポンスを受け取り、番組予約タスクに送る。
無線LAN制御※2・無線LANからデータを受け取り、ボックス制御タスクに送る。b
・各タスクからデータを受け取り、無線LAN用のバッファに格納する。
エンコーダ・レコーダ制御タスクから録画データを受け取り、端末用のデータに変換する。c
・変換したデータを暗号化し、無線LAN制御タスクに送る。
番組予約・ボックス制御タスクから番組録画予約情報を受け取り、番組予約コマンドを生成し、レコーダ制御タスクに送る。
・レコーダからのレスポンスをレコーダ制御タスクから受け取り、処理結果をボックス制御タスクに送る。番組の予約コマンドをレコーダ制御タスクに送ってから1分を経過してもレコーダ制御タスクからレスポンスが受け取れない場合、操作が失敗したものとみなし、処理結果をボックス制御タスクに送る。
注1) 録画データが消失してしまわないように、レコーダから受け取った録画データを直ちに処理する。
注2) 遅延が最小となり、かつ、レコーダ制御タスクの処理を妨げないように設計されている。

【タスク間通信】

タスク間の通信では、コマンドなどの短いデータはキューを使用し、サイズの大きい録画データはリングバッファを使用する。レコーダ制御タスクとエンコーダタスクの間にリングバッファA(以下、バッファAという)を、エンコーダタスクと無線LAN制御タスクの間にリングバッファB(以下、バッファBという)をそれぞれ割り当てる。

リングバッファは、書込みインデックスの値W、読出しインデックスの値R、及びデータを格納するバッファから成る。

リングバッファでは、データを書き込むと書き込んだデータ長が書込みインデックスに加算され、データを読み出すと読み出したデータ長が読出しインデックスに加算される。リングバッファではデータを全て読み出したとき、書込みインデックスの値Wと読出しインデックスの値Rの関係はdとなる。

【視聴時のタスクの動き】

録画番組を視聴するとき、ボックスはレコーダを制御して録画データを連続して受け取る。

端末から録画番組が指定されると、ボックスはレコーダにコマンドを送り、視聴を開始する。視聴を開始すると、各タスクが表2の処理を繰り返す。

1フレーム分の録画データが30ミリ秒周期でレコーダから送られ、ボックスで端末用のデータにブロック化され、ブロック単位で端末に送られる。

表2 処理一覧
タスク処理
レコーダ制御・レコーダから録画データを受け取り、バッファAに格納する。1フレーム分のデータをバッファAに格納すると、エンコーダタスクに通知する。
・1フレーム分のデータ処理時間は4ミリ秒である。1フレーム分のデータを受け取り、エンコーダタスクに通知する前に次のデータが届くと、データは上書きされて消失する。
・バッファAから1フレーム分のデータを取り出し、エンコード及び暗号化を行ったデータをバッファBに格納して無線LAN制御タスクに通知する。
エンコーダ・エンコーダタスクの1フレーム分のデータ処理時間は6ミリ秒である。ただし、4フレームごとに、さらにブロック化の処理として44ミリ秒が必要となる。
・バッファBからデータを取り出し、バッファBから送信すべきデータがなくなるまでデータを無線LAN用のバッファに格納する。
無線LAN制御・バッファBから1フレームのデータを取り出し、無線LAN用のバッファにデータを格納し終わるまでの時間は1ミリ秒である。

【インターネット経由の予約機能の追加】

インターネットを経由して番組録画予約を行う機能の追加を行うことになった。

端末が番組録画予約データを電子メール(以下、メールという)でボックス宛てに送ると、ボックスがメールを受信し、番組録画予約データを取り出して番組録画予約を行い、予約完了、予約エラーなどの処理結果をメールで端末に返信することにした。予約機能追加時のシステムの構成を図2に示す。

端末のアプリには、番組録画予約データを暗号化してメールで送信する機能と、ボックスで処理された結果をメールで受信する機能を追加した。

ボックスには、5分間隔でメールの有無をチェックする機能をeタスクに追加した。さらに、fタスクに、受信したメールから番組録画予約データを取り出して番組予約タスクに通知する機能及び処理結果のメールを生成して送信する機能を追加した。

出典:平成26年度 秋期 応用情報技術者試験 午後問題 問7