Edge2にはIRコネクターが予約されています。赤外線リモコン(IR)を使用したい場合は、Edge2にIRレシーバーを接続する必要があります。参考図は以下の通りです:
アンドロイドのキー・バリュー・マッピング
このセクションでは、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を書き込みツールで書き込み、アップデートする。イメージを書き込むには ファームウェアの更新 の章で詳しく説明する。