赤外線レシーバーのカスタマイズ

Edge2にはIRコネクターが予約されています。赤外線リモコン(IR)を使用したい場合は、Edge2にIRレシーバーを接続する必要があります。参考図は以下の通りです:

ir-connection

アンドロイドのキー・バリュー・マッピング

このセクションでは、Linuxで取得したキー値をAndroidの対応するキー値にマッピングする。

アンドロイド・システムに関わるファイル:

device/rockchip/rk356x/mixtile_edge2/fe6e0030_pwm.kl

ファイルの内容は以下の通り:

key 28    ENTER
key 116   POWER
key 158   BACK
key 139   MENU
key 217   SEARCH
key 232   DPAD_CENTER
key 108   DPAD_DOWN
key 103   DPAD_UP
key 102   HOME
key 105   DPAD_LEFT
key 106   DPAD_RIGHT
key 115   VOLUME_UP
key 114   VOLUME_DOWN
key 113   VOLUME_MUTE

IRコントロールの設定

[]:MixtileがリリースしたAndroid / Debianは、すでにカーネルでIRドライバ機能を有効にしているので、以下の命令は無視してかまいません。もし、あなたのAndorid / Debianシステムをコンパイルするつもりなら、以下のようにIRコントロールの設定を忘れないでください。

この章では、主にEdge 2のIRコントロールの設定方法について説明します。設定手順は2つに分けられます:

  • ステップ1:カーネル空間を修正することによって、カーネルドライバを修正する(LinuxもAndroidもこの部分を修正する必要がある)。
  • ステップ2:ユーザー空間を修正することによって、キーと値のマッピングを修正する(Androidだけがこの部分を修正する必要がある)。

カーネル・ドライバの変更

Linuxカーネルでは、IRドライバはNECエンコーディング形式のみをサポートしています。以下は、カーネルでIR制御を設定する方法です。

カーネルに関係するファイル:

kernel/arch/arm64/boot/dts/rockchip/mixtile-edge2-evb.dtsi
kernel/drivers/input/remotectl/rockchip_pwm_remotectl.c

関連するデータ構造の定義

DTSファイルにサポートされているIRコントロールのキーバリューを追加する。 kernel/arch/arm64/boot/dts/rockchip/mixtile-edge2-evb.dtsi.

キー・バリュー関連のデータ構造を設定する:

&pwm7 {
        status = "okay";
        compatible = "rockchip,remotectl-pwm";
        remote_pwm_id = ;
        handle_cpu_id = ;
        remote_support_psci = ;
        pinctrl-names = "default";
        pinctrl-0 = ;

        ir_key4 {
          rockchip,usercode = ;
          rockchip,key_table =
            ,
            ,
            ,
            ,
            ,
            ,
            ,
            ,
            ,
            ,
            ;
        };
};

注 ロックチップ,キーテーブル はキー値、2列目は応答すべきキーコードである。

ユーザーコードとIRキーの取得

ドライバーを参照してください: kernel/drivers/input/remotectl/rockchip_pwm_remotectl.c

からユーザーコードとキー値を取得する。 remotectl_do_something

case RMC_USERCODE:{
                if ((RK_PWM_TIME_BIT1_MIN period) && (ddata->period period scandata |= (0x01 <count);
                ddata->count++;
                if (ddata->count == 0x10) { (ddata->count == 0x10)
                        DBG_CODE("USERCODE=0x%xn", ddata->scandata);
                        if (remotectl_keybd_num_lookup(ddata)) { ddata->state = 0x10
                                ddata->state = RMC_GETDATA;
                                ddata->scandata = 0;
                                ddata->count = 0;
                        } else {
                                if (rk_remote_print_code){
                                        ddata->state = RMC_GETDATA;
                                        ddata->scandata = 0;
                                        ddata->count = 0;
                                } else
                                        ddata->state = RMC_PRELOAD;
                        }
                
        }

注:ユーザーは DBG_CODE() 関数を使用してユーザーコードを印刷する。

エッジ2は以下のコマンドでDBG_CODEを印刷させることができる:

echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print

IRドライバーのカーネルへのコンパイル

IRドライバーは rockchip_pwm_remotectl.c SDKにはすでにIRドライバが存在するので、あとはIRドライバをカーネルにコンパイルするだけです。カーネル・ソース・コードでは、以下の2つのステートメントを kernel/arch/arm64/configs/mixtile-edge2_defconfig ファイル。

CONFIG_ROCKCHIP_REMOTECTL=y
CONFIG_ROCKCHIP_REMOTECTL_PWM=y

カーネル(boot.img)をコンパイルするには、以下を参照してください。 カーネルのコンパイル の章で詳しく説明する。

Androidをコンパイルするには カーネルのコンパイル の章で詳しく説明する。

boot.imgとsuper.imgを書き込みツールで書き込み、アップデートする。イメージを書き込むには ファームウェアの更新 の章で詳しく説明する。

この記事は役に立ちましたか?

関連記事