2

/sys/class/leds/red/brightness他のデバイスでは、LED のオン/オフなど、LED 輝度制御インターフェイスに値を書き込むことができます。ただし、Nexus 5 では動作しません。

LEDの明るさを常に変更するアプリを書いているので、通知による設定は私にとってはオプションではありません。

カーネル ドライバー ソース leds-qpnp.c を読みました。Xperia Z2 とは少し異なります。

  1. duty_pcts の長さが 20 に増加しました。これは、LPG モードでの移行がスムーズになるのに適しています。
  2. 明るさを設定するコードに補間コードが表示されます。
  3. start、calibrated_max、on_ms、および off_ms in rgb_config_data: これは前に見たことがない。
  4. N5 には PWM_DIRECT_MODE と LPG_SYNC_MODE がありません。これにより、N5 には rgb_duration_config があり、Z2 には qpnp_rgb_set_direct があります。
  5. schedule_work は qpnp_rgb_set を呼び出しません! qpnp_rgb_start_set でのみ呼び出されます。LEDを起動させるトリガーのようです。

これらの情報から、私は次の計画を思いつきました。

  1. echo TARGET_BRIGHTNESS > 明るさ
  2. 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 を活用するように設定されています。しかし、現時点では、カーネルに不正なハックを行わずに、クリーンな方法でフラグをクリアする方法がわかりません。

誰?

4

1 に答える 1

1

大丈夫。私はちょうど答えを見つけました。

単純に明るさを設定し、次に on_off_ms を設定し、rgb_start でトリガーします。2 つのトランザクションでは、rgb_start に異なる番号を送信する必要があることに注意してください。

于 2014-07-15T06:06:45.660 に答える