BUTTON_1 BUTTON_POWER BUTTON_1 BUTTON_1 といったシーケンスは、 SONY の BS デジタルチューナ DST-BX500 に依存したもので、 他の BS デジタルチューナ であれば違うシーケンスかも知れない。
「延長対応 ハック de ダブルまる録!! 外部チューナコントロール付き」 (藁)を公開するなら、 SONY の BS デジタルチューナ DST-BX500 にできるだけ依存しないように しないといけない。
ハック de 録 !!スクリプト本体は、
その番組が BS デジタルの何チャンネルで放送されるかは知っているが、
BS デジタルチューナのチャンネルを合わせる方法は知らない。
/usr/local/bin/infrared_remocon は、
ハック de 録 !!スクリプト本体から BS デジタルの
チャンネル番号だけをもらって、
BS デジタルチューナに依存したシーケンスでリモコン操作をする。
たとえば、
/usr/local/bin/infrared_remocon BSD1
とすれば BS デジタル1チャンネルに合わせる。
将来的には、
/usr/local/bin/infrared_remocon GWD1
とすれば地上波(Ground Wave)デジタル1チャンネルに合わせる
とかもできればいいな。
yasunari@sil:/usr/local/bin$ cat infrared_remocon #!/bin/sh DATADIR=/usr/local/lib/kuro-rs MACHINE=DST-BX500 SEND=/usr/local/bin/rs_send PORT=1 case $1 in BSD1) # NHK 1 (BS1) set BUTTON_1 BUTTON_POWER BUTTON_1 BUTTON_1 ;; BSD2) # NHK 2 (BS2) set BUTTON_2 BUTTON_POWER BUTTON_2 BUTTON_2 ;; BSD3) # NHKハイビジョン set BUTTON_3 BUTTON_POWER BUTTON_3 BUTTON_3 ;; BSD4) # BS日テレ set BUTTON_4 BUTTON_POWER BUTTON_4 BUTTON_4 ;; BSD5) # BS朝日 set BUTTON_5 BUTTON_POWER BUTTON_5 BUTTON_5 ;; BSD6) # BS- i set BUTTON_6 BUTTON_POWER BUTTON_6 BUTTON_6 ;; BSD7) # BSジャパン set BUTTON_7 BUTTON_POWER BUTTON_7 BUTTON_7 ;; BSD8) # BSフジ set BUTTON_8 BUTTON_POWER BUTTON_8 BUTTON_8 ;; BSD9) # WOWOW set BUTTON_9 BUTTON_POWER BUTTON_9 BUTTON_9 ;; BSD10) # Star channel set BUTTON_10 BUTTON_POWER BUTTON_10 BUTTON_10 ;; BSDOFF) # OFF set BUTTON_POWER ;; esac while [ $# != 0 ] do FILE=$DATADIR/$MACHINE/$1 if [ ! -f $FILE ] then echo $FILE not found exit fi $SEND $FILE $PORT > /dev/null 2>&1 shift sleep 5 done yasunari@sil:/usr/local/bin$
今日のところはここまで。
実はこの infrared_remocon は、
(DST-BX500 への依存が残っているものの)
従前と互換性がある。
infrared_remocon BSD1 とすればもちろん BS デジタル1チャンネルにするし、
これまで通り
infrared_remocon BUTTON_1 BUTTON_POWER BUTTON_1 BUTTON_1 としても、
BS デジタル1チャンネルにする。
何せ、今、録画予約が at コマンドに登録されているので、 もうすぐ infrared_remocon BUTTON_1 BUTTON_POWER BUTTON_1 BUTTON_1 の類の シーケンスが実行される。 今日互換性を崩すわけにはいかないのである。
こういった風に、互換性(I/F)を崩さずに最適化していくのが リファクタリングの醍醐味(かぁ?)。
|
|
← ハック de 録 !!の修正(4)リモコンシーケンス変更 |
ハックの記録 LinkStation/玄箱 をハックしよう |
→ リファクタリング(2)ハック de 録 !!スクリプト本体の修正 |