/sys/class/leds/red/brightness
他のデバイスでは、LED のオン/オフなど、LED 輝度制御インターフェイスに値を書き込むことができます。ただし、Nexus 5 では動作しません。
LEDの明るさを常に変更するアプリを書いているので、通知による設定は私にとってはオプションではありません。
カーネル ドライバー ソース leds-qpnp.c を読みました。Xperia Z2 とは少し異なります。
- duty_pcts の長さが 20 に増加しました。これは、LPG モードでの移行がスムーズになるのに適しています。
- 明るさを設定するコードに補間コードが表示されます。
- start、calibrated_max、on_ms、および off_ms in
rgb_config_data
: これは前に見たことがない。 - N5 には PWM_DIRECT_MODE と LPG_SYNC_MODE がありません。これにより、N5 には rgb_duration_config があり、Z2 には qpnp_rgb_set_direct があります。
- schedule_work は qpnp_rgb_set を呼び出しません! qpnp_rgb_start_set でのみ呼び出されます。LEDを起動させるトリガーのようです。
これらの情報から、私は次の計画を思いつきました。
- echo TARGET_BRIGHTNESS > 明るさ
- echo SOME_u8_VALUE > rgb_start
それでも、LEDの電源を入れることをまだ拒否しています。そして、私の rgb_start はクリアされて 0 に戻りました。
これを行うためのコードを見る:
/* Checking lut flags is used to glean if the led really was started */
if (!(led_array[i].rgb_cfg->pwm_cfg->lut_params.flags &
PM_PWM_LUT_RAMP_UP))
led_array[i].rgb_cfg->start = 0;
lut_params.flags はすでに LPG を活用するように設定されています。しかし、現時点では、カーネルに不正なハックを行わずに、クリーンな方法でフラグをクリアする方法がわかりません。
誰?