以下に、本願の開示する履歴記録装置及び履歴記録プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
まず、本実施例における履歴記録システムについて説明する。図1は、システムの全体構成の一例を示す図である。図1に示すように、履歴記録システム1は、履歴記録装置100と、IR受信部201を有するテレビ200と、テレビ200に近接して設置されるIR送受信器210とを含む。
履歴記録装置100は、テレビ200における視聴履歴を記録する装置である。履歴記録装置100は、例えばパーソナルコンピュータ(PC)である。履歴記録装置100は、テレビ200と、例えばUSB(Universal Serial Bus)やHDMI(登録商標)(High-Definition Multimedia Interface)を介して通信可能に接続される。また、履歴記録装置100は、IR送受信器210と、例えばUSBを介して通信可能に接続される。
テレビ200は、選択されたチャンネル(以下「CH」と表記する場合がある)の放送信号を受信する受信装置である。テレビ200は、例えば、受信した放送信号に基づく映像を画面上に表示するテレビ受信装置である。テレビ200は、IR受信部201を用いて、例えば図示しない視聴者により操作されるリモコン900から、テレビ用リモコン信号(以下「リモコン信号」と表記する場合がある)である赤外線(IR)信号を受信することにより、チャンネル選択指示を受信する。
IR送受信器210は、IR信号を送受信する。IR送受信器210は、例えばテレビ200に近接する位置など、リモコン900からテレビ200に送信されるIR信号を受信できる位置に設置される。IR送受信器210は、受信したIR信号を履歴記録装置100に出力する。また、IR送受信器210は、例えば履歴記録装置100から入力されたIR信号の送信指示に従い、IR信号を送信する。
本実施例において、履歴記録装置100は、IR送受信器210を通じて、リモコン信号を取得し、リモコン900において選択されたチャンネル番号等の情報を特定する。また、履歴記録装置100は、テレビ200から、テレビ200の電源ON/OFFに関する情報を取得する。これにより、履歴記録装置100は、テレビ200の電源がONである場合に限り、チャンネル番号等に基づき特定される視聴履歴を記録するので、誤った視聴履歴の記録を抑止できる。
[ハードウェア構成]
次に、図2を参照して、履歴記録装置100のハードウェア構成を説明する。図2は、履歴記録装置のハードウェア構成の一例を示す図である。本実施例にかかる履歴記録装置100は、CPU(Central Processing Unit)101と、メモリ102と、HDD(Hard Disk Drive)103と、無線LAN(Local Area Network)104とを備える。また、履歴記録装置100は、CEC(Consumer Electronics Control)マイコン106と、HDMIコネクタ107と、チップセット111と、IRマイコン113と、電源114とをさらに備える。なお、メモリ102及びHDD103は、記憶部の一例である。チップセット111は、CPU101と、CECマイコン106と、HDMIコネクタ107とを通信可能に接続する。
CPU101は、履歴記録装置100全体の処理を司る処理部であり、例えばプロセッサの一例である。このCPU101は、HDD103に記憶されるプログラムをメモリ102に展開して各種プロセスを実行する。また、CPU101は、無線LAN104を介して図示しない他の装置とのデータの送受信を行う。また、CPU101は、映像や音声などの情報(TMDS/DDC等)を、チップセット111及びHDMIコネクタ107を介してテレビ200との間で送受信する。
HDMIコネクタ107は、HDMIに対応した機器との接続端子である。本実施例では、テレビ200と履歴記録装置100とはこのHDMIコネクタ107を介して接続される。
CECマイコン106は、CPU101が出力したテレビ200の制御命令(CEC等)を、CECの規格に変換してHDMIコネクタ107を介してテレビ200へ出力する。また、CECマイコン106は、テレビ200からの制御信号(Hot Plug Detect信号等)を変換してCPU101へ出力する。また、CECマイコン106は、電源114の状態を検出し、検出結果に基づいた処理を行う。CECマイコン106は、図示しないプロセッサ、メモリ、I/O(Input/Output)ポート等を含む。
IRマイコン113は、IR送受信器210が受信したIR信号を、CECマイコン106に出力する。また、IRマイコン113は、CECマイコン106から出力された指示に基づいて、IR送受信器210にIR信号の送信を指示する。IRマイコン113は、図示しないプロセッサ、メモリ、I/Oポート等を含む。
[ソフトウェア構成]
次に、図2に示すハードウェアにおいて実行されるソフトウェアの構成について、図3を用いて説明する。図3は、ソフトウェア構成の一例を示す図である。図3において、ソフトウェア群300に示す各ソフトウェアはCPU101により実行され、ソフトウェア群400に示す各ソフトウェアはCECマイコン106により実行される。ソフトウェア群300のうち、「CEC Utility」(CECユーティリティ)は、チャンネル選択指示を受信した場合にテレビ200の電源状態を取得し、テレビ200の電源がONである場合に視聴履歴情報を記録するソフトウェアである。なお、本実施例において、電源状態を「電源ステート」と表記する場合がある。
[機能構成]
次に、図2に示すハードウェアにより実現される機能について、図4を用いて説明する。図4は、機能構成の一例を示す図である。図4に示すように、履歴記録装置100は、記憶部130と、PCアプリ制御部140と、CECマイコン部150と、IRマイコン部170とを有する。
記憶部130は、履歴記録装置100が使用するプログラムやデータを記憶する。記憶部130は、例えば、RAM(Random Access Memory)、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。そして、記憶部130は、PCアプリ制御部140が行う各処理に用いられる情報を適宜記憶する。本実施例において、記憶部130は、例えば、メモリ102及びHDD103により実現される。
図4に示すように、記憶部130は、管理DB131と、視聴履歴DB132とを有する。管理DB131は、PCアプリ制御部140における処理により取得又は生成された各種の情報を記憶する。管理DB131は、例えば、テレビ200のメーカに関する情報を示すメーカコードを記憶する。
視聴履歴DB132は、PCアプリ制御部140により取得された視聴履歴情報を記憶する。図5は、視聴履歴DBの一例を示す図である。図5に示すように、視聴履歴DB132は、「曜日」と、「番組開始」と、「番組終了」と、「CH」と、「番組名」と、「視聴回数」とを含む。「曜日」、「番組開始」及び「番組終了」は、「番組名」に記憶される番組が、何曜日の何時から開始し、何時に終了するかを記憶する。「CH」は、当該番組が放送されるチャンネルを記憶する。「視聴回数」は、当該番組が視聴された回数を記憶する。例えば、視聴履歴DB132には、「モーニング○○○」という番組が、「水曜日」の「5:30」に始まり、「8:00」に終了することが記憶される。また、視聴履歴DB132には、「モーニング○○○」という番組が、「14」チャンネルにて放送され、これまでに「23」回視聴されていることも記憶される。なお、視聴履歴DB132は、通算の視聴回数を記憶する構成であってもよく、例えば直近1年間の視聴回数を記憶する構成であってもよい。視聴履歴DB132は、所定の記憶部の一例である。
次に、PCアプリ制御部140の各機能について説明する。PCアプリ制御部140は、CPUやMPU(Micro Processing Unit)等によって、履歴記録装置100内部の記憶装置に記憶されている各種プログラムがRAMを作業領域として実行されることにより実現される。例えば、PCアプリ制御部140は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。本実施例において、PCアプリ制御部140は、図2に示すCPU101によって、HDD103に記憶されている各種プログラムがメモリ102を作業領域として実行されることにより実現される。PCアプリ制御部140は、チャンネル解析部141と、番組解析部142と、ユーザ設定部145と、CECマイコン通信部147と、CECマイコン制御部148と、IRマイコン制御部149とを有する。
チャンネル解析部141は、受信されたイベントに基づいて、チャンネルを解析する処理部である。チャンネル解析部141は、イベントを受信した場合、受信したイベントがチャンネル選択指示に関するものであるか否かを判定する。また、チャンネル解析部141は、受信したイベントがチャンネル選択指示に関するものである場合、管理DB131に記憶されたメーカコードを参照して、イベントに対応するチャンネル情報を特定する。
番組解析部142は、特定されたチャンネル情報に基づいて、受信される番組を特定する処理部である。例えば、番組解析部142は、図示しない番組表を参照して、チャンネル解析部141において特定されたチャンネル情報と、イベントが受信された日時とに基づいて、受信される番組を特定する。なお、番組解析部142が、図示しない無線通信部を通じて、履歴記録装置100の外部のコンピュータに記憶された番組表にアクセスするような構成であってもよい。また、番組解析部142は、特定された番組に関する情報を、視聴履歴DB132に記憶する。番組解析部142は、登録部の一例である。
チャンネル解析部141及び番組解析部142により解析され、図5に示す視聴履歴DB132に記憶される視聴情報について、図6を用いて説明する。図6は、視聴情報の一例を示す図である。例えば、チャンネル解析部141は、視聴情報601に示すように、管理DB131に記憶された「Preset」情報を参照して、「6:17」の時点で受信されたイベントが「13CH」を選択するイベントであることを特定する。次に、番組解析部142は、図示しない番組表を参照し、当該日時及びチャンネルに対応する番組が「おはよう○○○」であることを特定する。そして、番組解析部142は、「おはよう○○○」が、「月曜日から金曜日」において、「6:00」に開始し、「8:00」に終了すること、「13」チャンネルで放送されることを示すデータを視聴履歴DB132に設定する。
ユーザ設定部145は、PCアプリ制御部140において実行される処理に対するユーザによる設定を受け付ける処理部である。例えば、ユーザ設定部145は、テレビ200を起動させる日時や、視聴を希望する番組等の入力を受け付け、管理DB131又は視聴履歴DB132に記憶する。
CECマイコン通信部147は、CECマイコン部150との間で情報の送受信を行う処理部である。例えば、CECマイコン通信部147は、CECマイコン制御部148から出力される情報を、CECマイコン部150に送信する。また、CECマイコン通信部147は、CECマイコン部150から受信した情報を、CECマイコン制御部148に出力する。
CECマイコン制御部148は、CECマイコン部150に対する各種の制御を行うとともに、CECマイコン部150から取得された情報に関する処理を行う処理部である。例えば、CECマイコン制御部148は、履歴記録装置100がディスプレイに表示する情報が更新されたことを示す「WM_DISPLAYCHANGE」信号を受け取った場合に、テレビ200のメーカ情報を示す「VendorID」の取得を要求する。具体的には、CECマイコン制御部148は、「GetVendorID」コマンドを、CECマイコン通信部147を通じてCECマイコン部150に送信する。
また、CECマイコン制御部148は、取得されたVendorIDからメーカコードを判別する。CECマイコン制御部148は、判別されたメーカコードを管理DB131に記憶する。また、CECマイコン制御部148は、VendorIDをCECマイコン部150に設定する「SetVendorID」コマンドを、CECマイコン通信部147を通じてCECマイコン部150に送信する。
IRマイコン制御部149は、IRマイコン部170の動作を制御する処理部である。例えば、IRマイコン制御部149は、IRマイコン部170に対し、動作の開始又は終了の指示を、CECマイコン通信部147及びCECマイコン部150を経由して送信する。
次に、CECマイコン部150について説明する。CECマイコン部150は、CPUやMPU等によって、履歴記録装置100内部の記憶装置に記憶されている各種プログラムがRAMを作業領域として実行されることにより実現される。例えば、CECマイコン部150は、ASICやFPGA等の集積回路により実現される。本実施例において、CECマイコン部150は、図2に示すCECマイコン106のプロセッサによって、CECマイコン106内のメモリに記憶されている各種プログラムが当該メモリを作業領域として実行されることにより実現される。CECマイコン部150は、管理DB151と、PCアプリ通信部161と、制御部162と、CEC情報送受信部163と、CEC情報解析部164と、電源制御部166と、操作保存部167と、IRマイコン通信部168と、IR情報解析部169とを有する。
管理DB151は、CECマイコン部150における処理により取得又は生成された各種の情報を記憶する。例えば、管理DB151は、メーカコードや、IRマイコン部170から受信された操作情報を記憶する。本実施例において、管理DB151は、CECマイコン106が有する、図示しないメモリに記憶される。
PCアプリ通信部161は、PCアプリ制御部140との間で情報を送受信する処理部である。例えば、PCアプリ通信部161は、制御部162から出力される情報を、PCアプリ制御部140に送信する。また、PCアプリ通信部161は、PCアプリ制御部140から受信した情報を、制御部162に出力する。
制御部162は、CECマイコン部150に関する各種の制御を行う処理部である。例えば、制御部162は、PCアプリ通信部161を通じてPCアプリ制御部140から受信した情報を、CEC情報送受信部163又はIRマイコン通信部168に出力し、又は管理DB151に記憶する。具体的には、制御部162は、「GetVendorID」コマンドがPCアプリ制御部140から受信された場合、受信された「GetVendorID」コマンドを、CEC情報送受信部163を通じてテレビ200に送信する。また、制御部162は、「SetVendorID」コマンドがPCアプリ制御部140から受信された場合、受信された「SetVendorID」コマンドを、IRマイコン通信部168を通じてIRマイコン部170に送信する。さらに、制御部162は、「SetVendorID」コマンドにより受信されたVendorIDから判別されるメーカコードを管理DB151に記憶する。
また、制御部162は、CEC情報送受信部163、CEC情報解析部164、IRマイコン通信部168又はIR情報解析部169から出力された情報を、PCアプリ通信部161を通じてPCアプリ制御部140に送信する。具体的には、制御部162は、<Device Vendor ID>をCEC情報送受信部163を通じてテレビ200から受信した場合、取得したVendorIDを、PCアプリ通信部161を通じてPCアプリ制御部140に送信する。
CEC情報送受信部163は、テレビ200との間で、CEC信号を送受信する処理部である。例えば、CEC情報送受信部163は、HDMI Type Aのコネクタの13ピンにおいて送受信されるCEC信号を送受信する。具体的には、CEC情報送受信部163は、テレビ200の電源状態の情報を要求する<Give Device Power Status>コマンドを、テレビ200に送信する。また、CEC情報送受信部163は、テレビ200から、電源ONを示す<ON>、電源OFFを示す<Standby>等の電源状態を示すCEC信号である<Report Power Status>を受信する。さらに、CEC情報送受信部163が、テレビ200の電源ON/OFF等を指示するCEC信号を、テレビ200に送信するような構成であってもよい。CEC情報送受信部163は、検出部の一例である。
CEC情報解析部164は、CEC情報送受信部163が受信するCEC信号を解析する処理部である。例えば、<In Transition On to Standby>というCEC信号<Report Power Status>が受信された場合、CEC情報解析部164は、テレビ200の電源がONからOFFに移行中であることを特定する。同様に、<In Transition Standby to On>というCEC信号<Report Power Status>が受信された場合、CEC情報解析部164は、テレビ200の電源がOFFからONに移行中であることを特定する。CEC情報解析部164は、判定部の一例である。
電源制御部166は、履歴記録装置100の電源状態を取得する処理部である。例えば、電源制御部166は、図2に示す電源114において、履歴記録装置100の電源状態が変化したことを検出した場合、制御部162に電源状態を示す信号を出力する。
操作保存部167は、IRマイコン部170から受信された操作情報を記憶する処理部である。例えば、操作保存部167は、チャンネル選択指示等を示す操作情報が受信されると、管理DB151に選択されたチャンネル、指示を受け付けた日時等を記録する。
IRマイコン通信部168は、IRマイコン部170との間で情報を送受信する処理部である。例えば、IRマイコン通信部168は、IRマイコン部170からIR信号を取得し、IR情報解析部169に出力する。また、IRマイコン通信部168は、制御部162から出力された情報を、IRマイコン部170に送信する。
IRマイコン通信部168は、例えば図7に示すIR信号を送受信する。図7は、IR信号の一例を示す図である。図7のIR信号701は、IR信号の開始を示す「リーダーコード」信号と、IR信号の終了を示す「ストップビット」信号との間に、リモコン900において選択されたボタンに対応する操作内容を示す「データコード」信号を含む。各信号は、それぞれLEDのONとOFFとの組み合わせにより特定される。
IR情報解析部169は、IRマイコン部170から取得されたIR信号を解析する処理部である。例えば、IR情報解析部169は、図7のIR信号701から「データコード」信号を抽出して、対応する操作内容を特定し、制御部162に出力する。
次に、IRマイコン部170について説明する。IRマイコン部170は、CPUやMPU等によって、履歴記録装置100内部の記憶装置に記憶されている各種プログラムがRAMを作業領域として実行されることにより実現される。IRマイコン部170は、例えば、ASICやFPGA等の集積回路により実現される。
本実施例において、IRマイコン部170は、例えば、図2に示すIRマイコン113のプロセッサによって、IRマイコン113内のメモリに記憶されている各種プログラムが当該メモリを作業領域として実行されることにより実現される。IRマイコン部170は、プリセットDB171と、CECマイコン通信部181と、制御部182と、プリセット部183と、IR情報送受信部189とを有する。
プリセットDB171は、テレビ200のメーカ情報を記憶する。プリセットDB171は、IRマイコン113が有する、図示しないメモリに記憶される。
CECマイコン通信部181は、CECマイコン部150との間で情報を送受信する処理部である。例えば、CECマイコン通信部181は、IR情報送受信部189から出力されたIR信号を、CECマイコン部150に送信する。また、CECマイコン通信部181は、CECマイコン部150から受信した「SetVendorID」コマンドを、プリセット部183に出力する。
制御部182は、IRマイコン部170に関する各種の制御を行う処理部である。例えば、制御部182は、IR送受信器210を通じて受信したIR信号が、プリセットベンダーのリモコンコードに該当するか否かを判定する。そして、制御部182は、判定結果に応じて、プリセットされたイベントの情報及びキーの情報、又はプリセットされていないイベントであることを示す情報及びデータコードを、CECマイコン通信部181を通じてCECマイコン部150に送信する。
プリセット部183は、メーカコードを取得する処理部である。例えば、プリセット部183は、CECマイコン通信部181を通じてCECマイコン部150から「SetVendorID」コマンドを受信すると、通知されたVendorIDから判別されるメーカコードをプリセットDB171に記憶する。
IR情報送受信部189は、IR信号を送受信する処理部である。例えば、IR情報送受信部189は、図7に示すIR信号701を、IR送受信器210から受信し、CECマイコン通信部181又は制御部182に出力する。また、IR情報送受信部189は、制御部182から出力されたIR信号を、IR送受信器210に送信する。IR情報送受信部189は、取得部の一例である。
[処理の流れ]
次に、履歴記録装置100により実行される処理の流れについて、図8乃至図15を用いて説明する。まず、全体の処理の流れについて説明する。図8は、全体処理の一例を示すフローチャートである。まず、履歴記録装置100は、IR送受信器210からチャンネル選択イベントを取得したか否かを判定する(ステップS11)。チャンネル選択イベントを取得していない場合(ステップS11:No)、履歴記録装置100は、チャンネル選択イベントを取得するまで待機する。
一方、チャンネル選択イベントを取得した場合(ステップS11:Yes)、履歴記録装置100は、テレビ200の電源がONであるか否かを確認する(ステップS21)。例えば、履歴記録装置100は、テレビ200に、<Give Device Power Status>コマンドを送信し、テレビ200からの応答を待つ。
そして、履歴記録装置100は、テレビ200の電源がONであるか否かを判定する(ステップS23)。テレビ200の電源がONではない場合(ステップS23:No)、処理を終了する。一方、テレビ200の電源がONである場合(ステップS23:Yes)、履歴記録装置100は、チャンネル選択イベントを取得してからタイムアウトが発生したか否かを確認する(ステップS31)。具体的には、履歴記録装置100は、チャンネル選択イベントを取得してから、所定の時間が経過するまでの間に、新たなチャンネル選択イベントを取得したか否かを判定する(ステップS33)。
新たなチャンネル選択イベントを取得した場合(ステップS33:Yes)、履歴記録装置100は、ステップS31に戻り、新たなチャンネル選択イベントを取得してからタイムアウトが発生したか否かを確認する。一方、新たなチャンネル選択イベントを取得していない場合(ステップS33:No)、履歴記録装置100は、取得済みのチャンネル選択イベントに基づいて特定される番組を、視聴履歴情報として記録する(ステップS41)。
なお、当該全体処理に先立ち、履歴記録装置100は、予めテレビ200が受信するIR信号に対応するチャンネル情報をプリセットする。チャンネル情報をプリセットする処理は、CECユーティリティ(Utility)を実行するPCアプリ制御部140、CECマイコン部150及びIRマイコン部170がそれぞれ共働することにより実行される。履歴記録装置100におけるチャンネルプリセット処理について、図9を用いて説明する。図9は、チャンネルプリセット処理の一例を示すシーケンス図である。
まず、PCアプリ制御部140のCECマイコン制御部148は、「WM_DISPLAYCHANGE」信号を受け取る(ステップS101)。次に、CECマイコン制御部148は、VendorIDの取得を要求する「GetVendorID」コマンドを、CECマイコン通信部147を通じてCECマイコン部150に送信する(ステップS103)。
CECマイコン部150の制御部162は、PCアプリ通信部161を通じて「GetVendorID」コマンドを受信する。そして、制御部162は、テレビ200に対してVendorIDの取得を要求する<Give Device Vendor ID>コマンドを、CEC情報送受信部163を通じてテレビ200に送信する(ステップS113)。なお、制御部162が、例えば、テレビ200から<Give Device Vendor ID>コマンドに対する応答が得られない場合、応答が得られるまでコマンドを複数回再送するような構成であってもよい(ステップS115)。
次に、制御部162は、CEC情報送受信部163を通じて、テレビ200から<Give Device Vendor ID>コマンドに対する応答として、<Device Vendor ID>を受信する(ステップS123)。制御部162は、VendorIDを通知するコマンド「ReportVendorID」を、PCアプリ通信部161を通じてPCアプリ制御部140に送信する(ステップS133)。
PCアプリ制御部140のCECマイコン制御部148は、CECマイコン通信部147を通じて「ReportVendorID」コマンドを受信すると、VendorIDに基づいてメーカコードを判別する。また、CECマイコン制御部148は、判別されたメーカコードを管理DB131に記憶する(ステップS141)。さらに、CECマイコン制御部138は、「SetVendorID」コマンドを、CECマイコン通信部147を通じてCECマイコン部150に送信する(ステップS143)。
CECマイコン部150の制御部162は、PCアプリ通信部161を通じて「SetVendorID」コマンドを受信すると、通知されたVendorIDから判別されるメーカコードを管理DB151に記憶する(ステップS151)。また、制御部162は、IRマイコン通信部168を通じて、「SetVendorID」コマンドをIRマイコン部170に送信する(ステップS153)。
IRマイコン部170のプリセット部183は、CECマイコン通信部181を通じて「SetVendorID」コマンドを受信すると、通知されたVendorIDから判別されるメーカコードをプリセットDB171に記憶する(ステップS171)。また、制御部162は、メーカコードがプリセットDB171に記憶されたことを示す結果を、CECマイコン通信部181を通じてCECマイコン部150に送信する(ステップS173)。
次に、チャンネルプリセット処理においてプリセットされたチャンネル情報を用いた、視聴履歴記録処理について、図10を用いて説明する。図10は、視聴履歴記録処理の一例を示すシーケンス図である。まず、リモコン900から赤外線(IR信号)が送信されると(ステップS211)、IRマイコン部170はIR送受信器210を通じてIR信号を受信し、受信したIR信号がプリセットベンダーのリモコンコードであるか否かを判定する(ステップS221)。
制御部182は、プリセットベンダーのリモコンコードである場合(ステップS221:Yes)、プリセットされたイベントの情報とキーの情報とを、CECマイコン通信部181を通じてCECマイコン部150に送信する。一方、制御部182は、プリセットベンダーのリモコンコードではない場合(ステップS221:No)、プリセットされていないイベントであることを示す情報とデータコードとを、CECマイコン通信部181を通じてCECマイコン部150に送信する。
CECマイコン部150のIR情報解析部169は、IRマイコン通信部168を通じてイベントに関する情報を受信したか否かを判定する(ステップS231)。IR情報解析部169は、イベントに関する情報を受信しない場合(ステップS231:No)、イベントに関する情報を受信するまで待機する。
IR情報解析部169は、イベントに関する情報を受信した場合(ステップS231:Yes)、受信したイベントがプリセットされたイベントであるか否かを判定する(ステップS233)。IR情報解析部169は、プリセットされたイベントではない場合(ステップS233:Unpreset Event)、プリセットされていないイベントに関する情報をPCアプリ制御部140に送信する。
プリセットされたイベントである場合(ステップS233:Preset Event)、制御部162は、テレビ200におけるCECが有効であるか否かを判定する(ステップS241)。CECが有効ではない場合(ステップS241:No)、制御部162は、受信したプリセットされたイベントの情報を、PCアプリ制御部140に送信する。
CECが有効である場合(ステップS241:Yes)、制御部162は、<Give Device Power Status>コマンドを、CEC情報送受信部163を通じてテレビ200に送信する(ステップS243)。
テレビ200は、<Give Device Power Status>コマンドを受信して、電源状態を履歴記録装置100に送信する(ステップS261)。テレビ200からCEC情報送受信部163を通じて電源状態を受信したCEC情報解析部164は、管理DB151を参照して、テレビ200の電源がONであるか否かを判定する(ステップS271)。テレビ200の電源がOFFである場合(ステップS271:Standby)、制御部162は、ステップS231に戻って、イベントを受信するまで待機する。また、テレビ200の電源がONからOFFへ、又はOFFからONへ移行中である場合(ステップS271:Other)、制御部162は、ステップS241に戻って処理を繰り返す。
制御部162は、テレビ200の電源がONである場合(ステップS271:ON)、受信されたイベントに関する情報が、テレビ200のチャンネル選択指示に関する情報であるか否かを判定する(ステップS273)。チャンネル選択指示に関する情報ではない場合(ステップS273:No)、制御部162は、受信されたイベントに関する情報を、CECマイコン通信部181を通じてCECマイコン部150に送信する。一方、制御部162は、チャンネル選択指示に関する情報である場合(ステップS273:Yes)、イベントを受信してから、所定の時間(例えば30秒)が経過するまで待機する(ステップS281)。そして、制御部162は、所定の時間が経過するまでに、IRマイコン部170から新たなチャンネル選択指示に関する情報を受信したか否かを判定する(ステップS283)。所定の時間が経過するまでに新たなチャンネル選択指示に関する情報を受信した場合(ステップS283:Yes)、ステップS281に戻って処理を繰り返す。
所定の時間が経過するまでに新たなチャンネル選択指示に関する情報を受信しなかった場合(ステップS283:No)、制御部162は、チャンネルに関する情報をPCアプリ制御部140に送信する。具体的には、制御部162は、テレビ200に関する情報と、チャンネルの情報と、情報を取得した日時とを、PCアプリ通信部161を通じてPCアプリ制御部140に送信する。
PCアプリ制御部140のチャンネル解析部141は、テレビ200に関する情報と、チャンネルの情報と、情報を取得した日時とをCECマイコン通信部147を通じて受信すると、管理DB131を参照して、情報に該当するチャンネルを特定する。番組解析部142は、特定されたチャンネルと、受信した日時とに基づいて、図示しない番組表を参照し、該当する番組を特定する(ステップS311)。そして、番組解析部142は、特定された番組の放送開始時刻、放送終了時刻、チャンネル及び放送曜日を、視聴履歴DB132に記憶する(ステップS313)。また、番組解析部142は、特定された番組の放送開始時刻、放送終了時刻、チャンネル及び放送曜日を、CECマイコン通信部147を通じてCECマイコン部150に送信する。
CECマイコン部150の制御部162は、PCアプリ通信部161を通じて受信した、特定された番組の放送開始時刻、放送終了時刻、チャンネル及び放送曜日を、管理DB151に送信する(ステップS331)。以上の処理により、テレビ200の電源がONである状態に受信されたチャンネル選択指示に限り、対応する視聴履歴情報が記録される。
次に、PCアプリ制御部140、CECマイコン部150及びIRマイコン部170のそれぞれにおいて実行される処理について説明する。まず、PCアプリ制御部140における処理について、図11及び図12を用いて説明する。図11は、PCアプリ制御部におけるチャンネルプリセット処理の一例を示すフローチャートである。また、図12は、PCアプリ制御部における視聴履歴記録処理の一例を示すフローチャートである。
CECユーティリティにおける処理は、例えば、履歴記録装置100において、OS(Windows(登録商標)など)が起動したタイミングでスタートする。まず、PCアプリ制御部140のCECマイコン通信部147は、CECマイコン部150からイベントを受信したか否かを判定する(ステップS401)。CECマイコン部150からイベントを受信した場合(ステップS401:Yes)、端子Aを通じてCECユーティリティによる視聴履歴記録処理に移行する。
CECマイコン部150からイベントを受信しない場合(ステップS401:No)、CECマイコン制御部148は、CECマイコン部150から、テレビ200が接続されたことを示す信号を受信したか否かを判定する(ステップS403)。テレビ200が接続されたことを示す信号を受信した場合(ステップS403:Yes)、ステップS412に移行する。
テレビ200が接続されたことを示す信号を受信しない場合(ステップS403:No)、CECマイコン制御部148は、「WM_DISPLAYCHANGE」が発行されたか否かを判定する(ステップS410)。「WM_DISPLAYCHANGE」が発行されない場合(ステップS410:No)、ステップS401に戻る。
「WM_DISPLAYCHANGE」が発行された場合(ステップS410:Yes)、CECマイコン制御部148は、接続されているテレビ200のVendorIDを確認する(ステップS412)。具体的には、CECマイコン制御部148は、「GetVendorID」コマンドを、CECマイコン通信部147を通じてCECマイコン部150に送信する(ステップS414)。
次に、CECマイコン制御部148は、CECマイコン部150から「ReportVendorID」コマンドを受信したか否かを判定する(ステップS421)。コマンドを受信しない場合(ステップS421:No)、CECマイコン制御部148は、コマンドを受信するまで待機する。コマンドを受信した場合(ステップS421:Yes)、CECマイコン制御部148は、受信したVendorIDからメーカコードを判別する(ステップS429)。そして、CECマイコン制御部148は、管理DB131にメーカコードを記憶する(ステップS431)。また、CECマイコン制御部148は、CECマイコン通信部147を通じて、CECマイコン部150にVendorIDを通知する(ステップS433)。具体的には、CECマイコン制御部148は、「SetVendorID」コマンドをCECマイコン部150に送信する(ステップS435)。
次に、CECユーティリティにおいて実行される視聴履歴記録処理について、図12を用いて説明する。まず、CECマイコン制御部148は、CECマイコン通信部147を通じて、CECマイコン部150からイベントを受信する(ステップS501)。次に、CECマイコン制御部148は、受信したイベントが、IRイベントか否かを判定する(ステップS503)。
受信したイベントがIRイベントではない場合(ステップS503:No)、CECマイコン制御部148は、受信したイベントが、HDMI−CECイベントであるか否かを判定する(ステップS551)。HDMI−CECイベントではない場合(ステップS551:No)、端子Bを経由してステップS401に移行する。HDMI−CECイベントである場合(ステップS551:Yes)、CECマイコン制御部148は、受信したイベントに応じたHDMI−CECの処理を実行し(ステップS553)、その後端子Bを経由してステップS401に移行する。
受信したイベントがIRイベントである場合(ステップS503:Yes)、CECマイコン制御部148は、イベントがプリセットされたイベントである(Preset Eventに該当する)か否かを判定する(ステップS511)。プリセットされたイベントではない場合(ステップS511:Unpreset Event)、CECマイコン制御部148は、受信したイベントに対応する情報を管理DB151に記憶する。具体的には、CECマイコン制御部148は、受信したイベントに対応するリモコン900のボタン、テレビ200のVendorID及びイベントを受信した日時を、管理DB151に記憶する(ステップS531)。その後、端子Bを経由してステップS401に移行する。
一方、受信したイベントがプリセットされたイベントである場合(ステップS511:Preset Event)、チャンネル解析部141は、イベントがリモコン900のチャンネル選択ボタンに関するものであるか否かを判定する(ステップS515)。チャンネル選択ボタンに関するものではない場合(ステップS515:No)、ステップS531に移行する。
チャンネル選択ボタンに関するものである場合(ステップS515:Yes)、チャンネル解析部141は、管理DB131を参照して、チャンネル選択ボタンに対応するチャンネルを特定する。また、番組解析部142は、特定されたチャンネルとイベントが受信された日時とに基づいて、図示しない番組表を参照して番組を検索する(ステップS521)。そして、番組解析部142は、検索された番組に関する時刻、チャンネル及び曜日を、視聴履歴DB132に記憶する(ステップS523)。また、CECマイコン制御部148は、検索された番組に関する時刻、チャンネル及び曜日を、CECマイコン通信部147を通じてCECマイコン部150に送信する(ステップS525)。以上の処理により、視聴履歴DB132に視聴履歴情報が記録される。
次に、IRマイコン部170において実行される処理について、図13を用いて説明する。図13は、IRマイコン部における処理の一例を示すフローチャートである。まず、IRマイコン部170の制御部182は、IRマイコン部170に電源が通電されると、IRマイコン部170を初期化する(ステップS601)。次に、制御部182は、CECマイコン通信部181を通じて、CECマイコン部150から「SetVendorID」コマンドを受信したか否かを判定する(ステップS611)。コマンドを受信しない場合(ステップS611:No)、ステップS621に移行する。
コマンドを受信した場合(ステップS611:Yes)、プリセット部183は、受信したVendorIDにより特定されるメーカコードを、プリセットベンダーとしてプリセットDB171に記憶する(ステップS613)。次に、制御部182は、IR信号を、IR送受信器210からIR情報送受信部189を通じて受信したか否かを判定する(ステップS621)。IR信号を受信しない場合(ステップS621:No)、ステップS611に戻って処理を繰り返す。
IR信号を受信した場合(ステップS621:Yes)、制御部182は、プリセットDB171を参照し、プリセットベンダーが設定されているか否かを判定する(ステップS623)。プリセットベンダーが設定されていない場合(ステップS623:No)、プリセットされていないイベントであることを示す情報及びデータコードを、CECマイコン通信部181を通じてCECマイコン部150に送信する(ステップS641)。その後、制御部182は、ステップS621に戻って処理を繰り返す。
一方、プリセットベンダーが設定されている場合(ステップS623:Yes)、制御部182は、IR信号により特定されるイベントが、プリセットDB171に登録されているイベントであるか否かを判定する(ステップS631)。イベントがプリセットDB171に登録されていない場合(ステップS631:No)、ステップS611に戻って処理を繰り返す。
一方、イベントがプリセットDB171に登録されている場合(ステップS631:Yes)、プリセットされたイベントの情報とキーの情報とを、CECマイコン通信部181を通じてCECマイコン部150に送信する(ステップS633)。その後、制御部182は、ステップS621に戻って処理を繰り返す。
次に、CECマイコン部150において実行される処理について、図14及び図15を用いて説明する。図14及び図15は、CECマイコン部における処理の一例を示すフローチャートである。まず、CECマイコン部150の制御部162は、CEC情報送受信部163を通じて、テレビ200が接続されたか否かを判定する(ステップS701)。テレビ200が接続されていない場合(ステップS701:No)、ステップS721に移行する。
テレビ200が接続されている場合(ステップS701:Yes)、制御部162は、HDMI−CECの初期化が完了しているか否かを判定する(ステップS711)。初期化が完了していない場合(ステップS711:No)、制御部162は、HDMI−CECの初期化を実行する(ステップS713)。一方、初期化が完了している場合(ステップS711:Yes)、ステップS721に移行する。
次に、制御部162は、CEC Utilityからイベントを受信したか否かを判定する(ステップS721)。CEC Utilityからイベントを受信していない場合(ステップS721:No)、端子Cを通じてステップS801に移行する。
制御部162は、CEC Utilityからイベントを受信した場合(ステップS721:Yes)、CEC Utilityから受信したイベントが「GetVendorID」であるか否かを判定する(ステップS731)。受信したイベントが「GetVendorID」である場合(ステップS731:Yes)、制御部162は、<Give Device Vendor ID>コマンドを、CEC情報送受信部163を通じてテレビ200に送信する(ステップS733)。そして、制御部162は、テレビ200から<Device Vendor ID>を受信したか否かを判定する(ステップS741)。<Device Vendor ID>を受信しない場合(ステップS741:No)、制御部162は、ステップS733に戻り、<Give Device Vendor ID>コマンドを再送する。
<Device Vendor ID>を受信した場合(ステップS741:Yes)、制御部162は、「ReportVendorID」を、PCアプリ通信部161を通じてPCアプリ制御部140に送信する(ステップS743)。その後、ステップS701に戻って処理を繰り返す。
ステップS731に戻って、受信したイベントが「GetVendorID」ではない場合(ステップS731:No)、制御部162は、受信したイベントが「SetVendorID」であるか否かを判定する(ステップS751)。制御部162は、受信したイベントが「SetVendorID」でもない場合(ステップS751:No)、受信したイベントに応じた処理を実行し(ステップS761)、その後ステップS701に戻って処理を繰り返す。
一方、制御部162は、受信したイベントが「SetVendorID」である場合(ステップS751:Yes)、受信したVendorIDを管理DB151に記憶する(ステップS753)。次に、制御部162は、「SetVendorID」コマンドを、IRマイコン通信部168を通じてIRマイコン部170に送信する(ステップS755)。そして、制御部162は、IRマイコン部170から結果通知を受信すると(ステップS757)、その後ステップS701に戻って処理を繰り返す。
次に、端子Cを経由してステップS801に移行し、制御部162は、IRマイコン部170からイベントを受信したか否かを判定する(ステップS801)。制御部162は、IRマイコン部170からもイベントを受信していない場合(ステップS801:No)、テレビ200からCECイベントを受信したか否かを判定する(ステップS871)。CECイベントを受信していない場合(ステップS871:No)、制御部162は、端子Dを通じてステップS701に戻り、処理を繰り返す。
一方、制御部162は、テレビ200からCECイベントを受信した場合(ステップS871:Yes)、受信したCECイベントに対応するHDMI−CECの処理を実行する(ステップS873)。その後、制御部162は、端子Dを通じてステップS701に戻り、処理を繰り返す。
ステップS801に戻って、IR情報解析部169は、IRマイコン部170からイベントを受信した場合(ステップS801:Yes)、受信したイベントがプリセットされたイベントであるか否かを判定する(ステップS811)。IR情報解析部169は、プリセットされたイベントではない場合(ステップS811:Unpreset)、プリセットされていないイベントに関する情報をPCアプリ制御部140に送信する(ステップS881)。その後、制御部162は、端子Dを通じてステップS701に戻り、処理を繰り返す。
一方、プリセットされたイベントである場合(ステップS811:Preset)、制御部162は、テレビ200におけるCECが有効であるか否かを判定する(ステップS821)。CECが有効ではない場合(ステップS821:No)、制御部162は、受信したプリセットされたイベントの情報を、PCアプリ制御部140に送信する(ステップS891)。その後、制御部162は、端子Dを通じてステップS701に戻り、処理を繰り返す。
CECが有効である場合(ステップS821:Yes)、制御部162は、<Give Device Power Status>コマンドを、CEC情報送受信部163を通じてテレビ200に送信する(ステップS823)。そして、制御部162は、テレビ200の電源がONであるか否かを判定する(ステップS831)。テレビ200の電源がON以外である場合(ステップS831:ON以外)、制御部162は、端子Dを通じてステップS701に戻り、処理を繰り返す。
一方、制御部162は、テレビ200の電源がONである場合(ステップS831:ON)、受信されたイベントに関する情報が、テレビ200のチャンネル選択指示に関する情報であるか否かを判定する(ステップS841)。チャンネル選択指示に関する情報ではない場合(ステップS841:No)、制御部162は、受信されたイベントに関する情報を、CECマイコン通信部181を通じてCECマイコン部150に送信する(ステップS893)。その後、制御部162は、端子Dを通じてステップS701に戻り、処理を繰り返す。
一方、制御部162は、チャンネル選択指示に関する情報である場合(ステップS841:Yes)、イベントを受信してから、所定の時間(例えば30秒)が経過するまで待機する(ステップS851)。そして、制御部162は、所定の時間が経過するまでに、IRマイコン部170から新たなチャンネル選択指示に関する情報を受信したか否かを判定する(ステップS853)。所定の時間が経過するまでに新たなチャンネル選択指示に関する情報を受信した場合(ステップS853:Yes)、ステップS851に戻って処理を繰り返す。
所定の時間が経過するまでに新たなチャンネル選択指示に関する情報を受信しなかった場合(ステップS853:No)、制御部162は、チャンネルに関する情報を一時スタックに保存する(ステップS855)。次に、制御部162は、履歴記録装置100の電源がONであるか否かを判定する(ステップS861)。電源がONではない場合(ステップS861:No)、制御部162は、端子Dを通じてステップS701に戻り、処理を繰り返す。
一方、電源がONである場合(ステップS861:Yes)、制御部162は、CECUtilityにプリセットされたイベントを通知する(ステップS863)。具体的には、制御部162は、テレビ200に関する情報と、チャンネルの情報と、情報を取得した日時とを、PCアプリ通信部161を通じてPCアプリ制御部140に送信する。その後、制御部162は、一時スタックの情報をクリアし(ステップS865)、端子Dを通じてステップS701に戻り、処理を繰り返す。
上述してきたように、本実施例によれば、受信されたリモコン信号のうち、テレビ200の電源がONである時点において受信されたリモコン信号にかかる視聴履歴情報だけが記録される。これにより、テレビ200の電源が投入されていないときなど、テレビが放送を受信しない状態において誤ってリモコンが操作された場合に、当該操作により送信されたリモコン信号に基づいて誤った視聴履歴が記録されることを抑止することができる。
また、本実施例によれば、チャンネル選択指示を取得してから、所定期間が経過するまでの間に新たなチャンネル選択指示を取得しない場合に、取得済みのチャンネル選択指示に基づいて特定される視聴履歴情報が記録される。これにより、例えばザッピングや誤操作によりチャンネルが選択された場合には視聴履歴情報が記録されないので、視聴されていない番組に関して誤った視聴履歴が記録されることを抑止することができる。
さらに、本実施例によれば、履歴記録装置は、チャンネル選択指示が取得された場合に、放送受信装置に対して動作状態の取得要求を送信して、放送受信装置の動作状態を示す情報を受信する。これにより、チャンネル選択指示が取得されていない場合においては、放送受信装置の動作状態が取得されることがないので、履歴記録装置と放送受信装置との間における不要な情報の送受信を抑止することができる。