nns779/px4_drv

multi_device_power_controlの拡張版が欲しい

scimmia9286 opened this issue · 2 comments

解決したい課題

PX-Q3U4では2台目の内部デバイスをPower-ONしたタイミングで、受信中のSチューナーでドロップが発生する。
これを回避する目的で実装されている機能がmulti_device_power_controlであると認識しているが、PX-Q3U4は2チューナー共にPower-ONしている間は常に冷却ファンが回り続け、騒音に悩まされる。

提案内容

2台目デバイスの電源をONにしても受信中のTチューナーではドロップが発生しないことから、新たな電源管理モードを設けてSチューナーにのみ注目した電源連動制御を行い未使用デバイスの電源ONを極力減らす。

具体的には、以下の状態を作りたい

  • Tチューナーは電源連動制御の対象としない
  • Sチューナーを1つでも使用している間は2台の内部デバイスは電源ONの状態を維持
  • 最後のSチューナの使用を終えると、未使用デバイスの電源をOFF

全てのケースを網羅しているわけではありませんが、いくつかケースを列挙してみます。
イメージが伝われば良いのですが。

*以下のOpen/Close処理は、px4_device->open_count==0の状態を前提としています。

ケース1

  1. デバイス1のTチューナーOpen --> デバイス1の電源ON
  2. デバイス2のTチューナーOpen --> デバイス2の電源ON
  3. デバイス1のTチューナーClose --> デバイス2のSチューナーが未使用なのでデバイス1の電源OFF
  4. デバイス2のTチューナーClose --> デバイス1のSチューナーが未使用なのでデバイス2の電源OFF

ケース2

  1. デバイス1のSチューナーOpen --> デバイス1とデバイス2の電源ON
  2. デバイス2のSチューナーOpen --> すでに電源ONなので何もしない
  3. デバイス1のSチューナーClose --> デバイス2でSチューナーが使用中なのでデバイス1の電源OFFしない。デバイス2は使用中なのでデバイス2の電源OFFしない
  4. デバイス2のSチューナーClose --> デバイス1のSチューナーが未使用なのでデバイス2の電源OFF。デバイス1は未使用状態なのでデバイス1の電源OFF

ケース3

  1. デバイス1のSチューナーOpen --> デバイス1とデバイス2の電源ON
  2. デバイス2のTチューナーOpen --> すでに電源ONなので何もしない
  3. デバイス1のSチューナーClose --> デバイス2のSチューナーが未使用なのでデバイス1の電源OFF。デバイス2は使用中なのでデバイス2の電源OFFしない
  4. デバイス2のTチューナーClose --> デバイス1のSチューナーが未使用なのでデバイス2の電源OFF

ケース4

  1. デバイス1のTチューナーOpen --> デバイス1の電源ON
  2. デバイス1のSチューナーOpen --> デバイス1はすでに電源ONなので何もしない。デバイス2の電源ON
  3. デバイス1のSチューナーClose --> デバイス2は未使用なのでデバイス2の電源OFF
  4. デバイス1のTチューナーClose --> デバイス2のSチューナーが未使用なのでデバイス1の電源OFF

ご提案ありがとうございます。

おっしゃる通りTチューナーを電源連動の対象とする理由はなく、Sチューナーのみ対象とすることで消費電力の削減にも繋がるだろうということで、電源連動制御の対象となるチューナーオープンを指定するmulti_device_power_control_modeパラメータを追加いたしました。
このモジュールパラメータが受け入れる値は以下の通りです。

  • all: いずれかのチューナーが開かれた状態 (従来通りの挙動)
  • s-only: S0・S1いずれかのチューナーが開かれた状態 (ご提案頂いた内容)
  • s0-only: S0チューナーが開かれた状態
  • s1-only: S1チューナーが開かれた状態

私が実施した過去の検証では、別デバイスの電源ONによる影響があるのはS1チューナーのみでしたので、S0・S1どちらかのチューナーのみを電源連動制御の対象とするオプションも追加いたしました。

早速実装していただきありがとうございます。
検証してみたところ、私が欲しかった機能を満たしていることが確認できましたので、当issueはクローズさせていただきます。

ちなみに、私が保有しているPX-Q3U4では、S0,S1共に別デバイスの電源ONによる影響を受けるようです。