Hi, Thank you for the Japanese subtitle. It helps me. :)
On Thu, 17 Aug 2023 17:10:51 +0900 "lain." <l...@fair.moe> wrote: > If I understand correctly, you want to check the battery level, and give > you a notification when battery is low, right? > 正しく理解しているなら、YASUOKAさんはバッテリーのレベルを確認し、 > バッテリーが低くなったら通知を受け取りたい、ということですよね? No, I'd like to fix hw_power (hw.power in sysctl) variable to be changed properly. On my vaio it doesn't change when the AC is plugged or unplugged. What I actually want to fix is a problem of "apm -A". "Performance adjustment mode" uses "hw_power" variable. For example, hw.set_perf is always 100 if the vaio booted with the AC connected because hw_power is always 1. I suppose that hw.set_perf should be lower when the PC is idle and the AC is unplugged. > In this case, you can use apm for that. > その場合、それには「apm」を使うことができます。 > > Battery level (percent) checking/バッテリーのレベル(パーセント)を確認するため:apm -l > Estimated battery duration (minutes)/バッテリーが持つ予定の時間まで(分)を確認するため:apm -m > > On 2023年08月17日 16:12, YASUOKA Masahiko wrote: >> Hi, >> >> Update the AC status when the battery notification is happened. >> Because the AC status notification doesn't happen on some machines. >> My vaio actually has this problem. >> >> Also Linux is doing the same thing >> >> https://github.com/torvalds/linux/blob/v6.4/drivers/acpi/ac.c#L165-L183 >> >> ok? comments? >> >> Index: sys/dev/acpi/acpiac.c >> =================================================================== >> RCS file: /cvs/src/sys/dev/acpi/acpiac.c,v >> retrieving revision 1.36 >> diff -u -p -r1.36 acpiac.c >> --- sys/dev/acpi/acpiac.c 6 Apr 2022 18:59:27 -0000 1.36 >> +++ sys/dev/acpi/acpiac.c 17 Aug 2023 06:57:44 -0000 >> @@ -140,6 +140,8 @@ acpiac_getpsr(struct acpiac_softc *sc) >> return (0); >> } >> >> +static int acpiac_notify_triggered = 0; >> + >> int >> acpiac_notify(struct aml_node *node, int notify_type, void *arg) >> { >> @@ -148,6 +150,8 @@ acpiac_notify(struct aml_node *node, int >> dnprintf(10, "acpiac_notify: %.2x %s\n", notify_type, >> DEVNAME(sc)); >> >> + acpiac_notify_triggered = 1; >> + >> switch (notify_type) { >> case 0x00: >> case 0x01: >> @@ -164,4 +168,22 @@ acpiac_notify(struct aml_node *node, int >> break; >> } >> return (0); >> +} >> + >> +void >> +acpiac_battery_notify(void) >> +{ >> + struct acpi_softc *sc = acpi_softc; >> + struct acpi_ac *ac; >> + >> + if (acpiac_notify_triggered) >> + return; >> + /* >> + * On some machines (vaio VJPK23 at least) AC status notifications >> + * are not triggered. Update the AC status when battery notifications. >> + */ >> + SLIST_FOREACH(ac, &sc->sc_ac, aac_link) { >> + acpiac_refresh(ac->aac_softc); >> + acpi_record_event(sc, APM_POWER_CHANGE); >> + } >> } >> Index: sys/dev/acpi/acpibat.c >> =================================================================== >> RCS file: /cvs/src/sys/dev/acpi/acpibat.c,v >> retrieving revision 1.70 >> diff -u -p -r1.70 acpibat.c >> --- sys/dev/acpi/acpibat.c 6 Apr 2022 18:59:27 -0000 1.70 >> +++ sys/dev/acpi/acpibat.c 17 Aug 2023 06:57:45 -0000 >> @@ -536,5 +536,7 @@ acpibat_notify(struct aml_node *node, in >> acpibat_refresh(sc); >> acpi_record_event(sc->sc_acpi, APM_POWER_CHANGE); >> >> + acpiac_battery_notify(); >> + >> return (0); >> } >> Index: sys/dev/acpi/acpidev.h >> =================================================================== >> RCS file: /cvs/src/sys/dev/acpi/acpidev.h,v >> retrieving revision 1.44 >> diff -u -p -r1.44 acpidev.h >> --- sys/dev/acpi/acpidev.h 29 Jun 2018 17:39:18 -0000 1.44 >> +++ sys/dev/acpi/acpidev.h 17 Aug 2023 06:57:45 -0000 >> @@ -306,6 +306,8 @@ struct acpiac_softc { >> struct ksensordev sc_sensdev; >> }; >> >> +void acpiac_battery_notify(void); >> + >> struct acpibat_softc { >> struct device sc_dev; >> >> > > -- > lain.