ノートブック電源の開発タイプとサブシステムの決定

ノートブック電源の開発タイプとサブシステムの決定

私はUbuntuシステムでlibudev電源の変更を監視する小さなCプログラムを書いています。この段階では、ACアダプターがアクティブになった時期とバッテリーがアクティブになった時期を正常に検出したいと思います。以下を処理するためにここにあるコードを適用していますlibudevhttp://www.signal11.us/oss/udev/

リンクされたコードサンプルはUSBデバイス用で、問題の(udev_device_get_parent_with_subsystem_devtype(dev, "usb", "usb_device");)機能が私が現在変更したい機能です。シェルudevadm info /sys/class/power_supply/BAT0(バッテリー)で実行した後、次の出力を取得します。

P: /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:18/PNP0C09:00/PNP0C0A:00/power_supply/BAT0
E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:18/PNP0C09:00/PNP0C0A:00/power_supply/BAT0
E: POWER_SUPPLY_CAPACITY=61
E: POWER_SUPPLY_CAPACITY_LEVEL=Normal
E: POWER_SUPPLY_CHARGE_FULL=3850000
E: POWER_SUPPLY_CHARGE_FULL_DESIGN=3950000
E: POWER_SUPPLY_CHARGE_NOW=2365000
E: POWER_SUPPLY_CURRENT_NOW=916000
E: POWER_SUPPLY_CYCLE_COUNT=0
E: POWER_SUPPLY_MANUFACTURER=LGC-LGC3.95
E: POWER_SUPPLY_MODEL_NAME=DELL 92NCT556
E: POWER_SUPPLY_NAME=BAT0
E: POWER_SUPPLY_PRESENT=1
E: POWER_SUPPLY_SERIAL_NUMBER= 5359
E: POWER_SUPPLY_STATUS=Discharging
E: POWER_SUPPLY_TECHNOLOGY=Li-ion
E: POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11100000
E: POWER_SUPPLY_VOLTAGE_NOW=11339000
E: SUBSYSTEM=power_supply

したがって、サブシステムのパラメータが "power_supply"でなければならないことがわかりますが、 "devtype"に何を入力するのかわかりません。 「BAT0」と「Power」を試してみましたが、成功しませんでした。

コードは次のとおりです。

Device Node Path: (null)
Unable to find parent power supply device.

上記の関数を使用して設定を試みた(!dev)後にtrueと評価されたときに実行する操作は、次のとおりです。dev

誰かが開発の種類を把握するために正しい方向を教えてもらえますか?リンクされたコードを引用すると役に立ちますが、このライブラリのドキュメントは...制限的であることがわかりました。

ベストアンサー1

このsubsystem行には以下がリストされます。

E: SUBSYSTEM=power_supply

ただし、バッテリーとACアダプターにはないようであるため、関数にパラメータを渡すことはdevtype完全に許可されています。NULLdevtype

この場合、関数呼び出しは次のようになります。

udev_device_get_parent_with_subsystem_devtype(dev, "power_supply", NULL);

これらの機能を使用すると、次のようにイベントをudev_monitor*より簡単にpower_supplyフィルタリングできます。

udev_monitor_filter_add_match_subsystem_devtype(mon, "power_supply", NULL);

おすすめ記事