KURO-RS Daemon
玄人志向 KURO-RS(USB 接続 PC コントロール型赤外線学習リモコンキット)
玄箱/HG (Fedora12) ユーティリティプログラム

2011.03.06 by sirius



[はじめに]
 このプログラムは、玄人志向の赤外線学習リモコンキット KURO-RS を利用して機器をコントロールするための daemon プログラムです。
 同じハードウェアである Buffalo の PC-OP-RS1 でも使えます。
 GPL を回避するため、バイナリは含まずソースのみの配布となります。
 なぜこのプログラムを作成したのかというと、perl とかで作られたものはあるようでしたが、perl だとリソースを使いすぎたりするのでもっとコンパクトに作りたかったことや、自分の思ったとおりのものを作りたかったからです。

[概要]
 この daemon プログラムは、KURO-RS(または PC-OP-RS1)を使いサーバ本体や外部の機器をリモコン操作するためのプログラムです。
 また、サービスとして動き、外部からの要求にしたがってリモコン信号の送受信を行うことができます。他のクライアントマシンから送受信したり、cron を使い、指定時刻に機器の電源を操作したりできるようになります。ただし、他の機器のコントロールは、信号を受信してから送信なのでタイムラグが結構あります。

[免責]
 本ソフトウェアを使用した、あるいは使用しなかったことによって発生したいかなる事柄についても本ソフトウェアの製作者は責任を持ちません。本ソフトウェアを使用する、あるいは使用しないことは全て使用者の責任において行ってください。
 本ソフトウェアに瑕疵がないことを製作者は保障しません。完璧なソフトウェアを求める方は本ソフトウェアを使用しないでください。

 本ソフトウェアの保守を製作者は行いません。問い合わせや要望等に答えるつもりはありません。また、本ソフトウェアについて玄人志向へ問い合わせすることもおやめください。本ソフトウェアと玄人志向は何の関係もありません。

[警告]
 リモートで操作した場合、危険となる可能性のあるもののコントロールはしないようにしてください。人体あるいは財産に損害を与える可能性があります。

[動作環境]
KURO-RS(PC-OP-RS1) が認識していれば動くと思います。

  • 玄人志向 Kuro-Box/HG
    Fedora12 で動いています。
    動作確認まではしていませんがノーマルファームウェアでもコンパイルできました。
  • 自作機(Fedora12 x86 64bit)
    x86 の 64 ビット Fedora12 で動きました。
[ファイル構成]
・MakefileLinux 用 Make ファイル
・Readme.txt全体の説明
・kuro-rsd.txtdaemon プログラムの説明
・kuro-rs-gen.txt赤外線信号生成プログラム説明
・common.cKURO-RS に関係しない共通関数
・kuro-rs.cKURO-RS コントロール関数
・kuro-rsd.cKURO-RS Daemon ソース
・kuro-rsd-chkconf.c  KURO-RS Daemon 設定ファイルチェックツール
・kuro-rsd-config.cKURO-RS Daemon 設定ファイル読み込み関数
・kuro-rs-gen.c赤外線信号生成プログラム
・kuro-rs-rec.c赤外線信号保存プログラム
・kuro-rs-send.c赤外線信号送信プログラム
・kuro-rs-hash.c赤外線信号ハッシュ表示プログラム
・kuro-rs-reset.cデバイスリセットプログラム
・common.hKURO-RS に関係しない共通関数定義ヘッダファイル
・kuro-rs.h共通ヘッダファイル
・kuro-rsd.hKURO-RS Daemon ヘッダファイル
・scripts/kuro-rsdサービス起動用スクリプト

[ソースコードについて]
 kuro-rs.c が KURO-RS とやり取りします。このソースを利用して自分なりのアプリケーションが作成できると思います。そのために、コメントを詳しく書いています。
詳しくは、ソース中のコメントをご覧ください。その他のソースは一切コメントを書いていません。プログラムした sirius のみが理解していれば良いと考えています。
やりたいことがあれば、kuro-rs.c を使って各自プログラムを考えてください。
 手順としては、ヘッダファイル "kuro-rs.h" をインクルードして、
1、デバイスを開く。(open_rs関数)
2、データの送受信をする。(send_irdata関数、recive_irdata関数)
3、デバイスを閉じる。(close_rs関数)
となります。デバイスを開くときの block 引数は、1 なら入力があるまで読み取りをブロックする、0 ならブロックしない、という意味です。通常はブロックしてください。受信待ちになっているときに割り込み処理が必要な場合はブロックしない設定にして、割り込み処理の中で set_interrupt 関数を value に 1 を指定して呼び出してください。割り込み処理後に受信待ちの関数は失敗で戻ります。戻ったところで、set_interrupt 関数を呼び出してください。このとき、value は 0 にします。

[著作権について]
 著作権は sirius (http://sirius10.dip.jp) が保持します。個人利用である限り、sirius は著作権の行使は行いません。自由にお使いください。ソースコードの改変も自由に行っていただいてかまいません。ただし、改変したものを含め、再配布はご遠慮ください。再配布した場合、有償・無償を問わず個人利用とは認めません。改変部分のパッチ (差分) の公開は再配布とは考えられませんので公開していただいてかまいません。

 商用での利用は一切許可しません。ないとは思いますが、雑誌等への掲載も一切お断りします。問い合わせがあっても無視します。

 このソースは資料をみて sirius がゼロから書き起こしたものです。また、バイナリの配布ではなく、ソースのみの配布なので、GPL なソース/バイナリは含まれていません。よってこの配布物は GPL ではありません。*

* 標準的な C 言語のソースコードはコンパイル時に LGPL である glibc にリンクされる可能性があるが、これらのソースコードには LGPL の制限を適用しなくてよい。

[更新履歴]

  • 2011.03.06 Ver.1.00 公開版

[関連サイト]