赤外線リモコンライブラリ(IRL)形式について

◎概要

IRL(IR data Library)は本サーバがデータをやりとりする際に用いる ライブラリデータの標準形式です。

IRLは大きく

(1)ヘッダ
ライブラリの名前、定義開始位置の指定等
(2)各種定義
IRD定義、機器定義、機能定義 の2つの領域からなります。

IRD定義部で定義されるIRDデータはそのライブラリ内で共通に使用されます。 サーバはこれを組み合わせて送信データにします。 IRD定義部で定義した部品を、IDOで書かれた設計図にしたがって組み立てて 送信データを生成するものだと思ってください。
機能定義では、この組み合わせをIDOという形式で記述して定義します。 機能定義は機器定義の下のに定義され、機器定義は複数の機能定義を持ちます

◎各部の構造

(1)ヘッダの構造

        IRLhead struc
            IRLkey      dw      'LO'    ; IRLであることを示すキーワード
            IRLversion  dw      ?       ; IRLのversion
            Start       dw      ?       ; 定義開始位置
            reserve     dw      ?       ;
            libname     db      ? dup(?); ライブラリ名(<256)
        IRLhead ends

ヘッダの終わりからStartで指定される定義開始位置まではどんなデータが あっても無視します。

(2)各種定義部の構造

各種定義部はその定義部が何の定義であるかを示すtype(word)と、 名前(可変長)、そしてそれぞれの定義部に固有のデータからなります。

IRD定義部はtype('IR')、名称に続き、IRDカウント、IRD dataがつづきます。
'IR', IRDname, Count, IRD.....
機器定義部はtype('IT')と名称だけからなります。
'IT', InstName
機能定義部はtype('FC')、名称に続き、IDOカウント、IDO dataがつづきます。
'FC', FuncName, Count, IDO.....
(機能はIDO(後述)を用いて定義されます)

IRLの名前定義部はすべて可変長ですが、NULL文字を含めて256文字までとします。

○機能定義部の中味, IDOについて

IDO(IR remote control system descript object)は機能定義部で使用される 一種の中間言語です。

以下の様な構造体の配列として定義します。
        IDO struc
          type  dw ?
          ext   dw ?
        IDO ends
実際のIDOはたとえば
{MN,3}, {DUP,22}, {IR,?}, {IR,?}, {RP,1}, {IR,?}, {EN,0}
のようなものになります。
注意: IDO には IRD そのものは含まれていない

○IDOのtype

DP, nl
以降の l(byte)個の IDO を n(byte)回繰り返す。
MN, n
以降 n カウントを main IRD とする
ED, n
〃 end IRD とする
RP, n
〃 repeat IRD とする
IR, n
そのライブラリ中で n番目に定義された IRDを送信
00,00
なにもしない

○実装上の癖

IDO中に
'MN' がないときにSend Mainが呼ばれたときは 'RP' を送信します
'RP' がないときにSend Repeatが呼ばれたときは 'MN' を送信します
'ED' がないときにSend Endが呼ばれたときはなにも送信しません


戻る
佐藤益弘 thomas@fenix.ne.jp