Estou escrevendo um programa C que calcula a vida útil restante da bateria ou o tempo de carga, dependendo se a bateria está carregando. A maneira de fazer isso é lendo alguns arquivos no formato /sys/class/power_supply/BAT0
. Para calcular a vida útil restante da bateria:
battery life = charge_now / current_now
Para calcular o tempo de carregamento:
charge time = (charge_full - charge_now) / current_now
As duas fórmulas acima produzem exatamente os mesmos resultados que a saída do acpi
comando. Porém, percebi que às vezes, por algum motivo, os arquivos charge_now
, charge_full
, e current_now
não estão presentes no diretório, mas outros arquivos como capacity
e status
ainda estão. Quando isso acontece, não consigo calcular a duração da bateria ou o tempo de carga. Mas acpi
ainda é capaz de calculá-lo. Por que esses arquivos às vezes desaparecem e como acpi
ainda é possível calcular a duração da bateria e o tempo de carga quando isso acontece?