Где iPhone хранит информацию о текущем проценте заряда батареи?

Интересно, как именно обстоит дело с подсчетом процента заряда батареи: начиная со 100% и ниже, программа подсчитывает, какие ресурсы использовались и как долго, и таким образом приблизительно оценивает текущее состояние батареи. Но где они хранятся — в журналах или в данных приложений? Я имею в виду, что происходит с этой информацией после хард ресета или режима DFU - в режиме DFU iOS не загружается, а этот софт все равно работает? Откуда он знает какой процент после повторного включения? Зарядка в режиме DFU по-прежнему заставляет программное обеспечение рассчитывать приблизительный процент?

Я обновил свой ответ, добавив дополнительную информацию, в том числе о том, где хранятся журналы использования батареи. Если мой ответ помог, пожалуйста, отметьте его как правильный ответ (рядом с ним есть галочка, которую вы можете нажать).
И если есть какая-либо информация, которую я могу добавить или пояснить, не стесняйтесь оставлять отзывы.
Спасибо за ответ и все такое, но как я могу знать, что это хорошо? В одном из подкастов я слышал, что Iphone рассчитывает использование на основе времени и мощности используемых ресурсов, как сообщается, поэтому есть необходимость в калибровке батареи, чтобы устройство знало, когда она действительно составляет 0%. Если бы он был основан на напряжении, нужна ли ему калибровка? Я с радостью приму ваш ответ, но я рассчитывал на большее количество ответов для сравнения или хотя бы на некоторые подсказки, где его найти в официальных документах Apple. Я ценю вашу помощь, но я хотел бы знать, это ваши догадки или вы знаете об этом откуда-то...
Были части, которые я знал, и части, которые были выводами, которые я сделал на основе того, как эти вещи обычно делаются. Я провел еще кучу исследований, потому что мне было любопытно, и я хотел доказать вам свой ответ. Я обновил свой ответ ниже, чтобы отразить мои новые выводы. Помните, однако, что в большинстве случаев я просто ссылаюсь на кого-то, кто ссылался на дизассемблированную версию iOS и код Apple, поэтому могут присутствовать интерпретации и дезинформация, и я не могу ничего доказать, потому что код Apple защищен законом об авторском праве, и поэтому не могут быть опубликованы.
Что касается калибровки батареи, я не верю, что код Apple где-либо использует такую ​​вещь. Я могу ошибаться, но им не нужно «перекалибровать», когда у них есть наука и известная статистика. Прочтите ссылку «Дополнительная информация об определении мощностей», чтобы понять, о чем я говорю.
И отказ от ответственности: у меня нет и я не видел код, который управляет процентом заряда батареи на iOS. Я только резюмирую то, что другие нашли и сообщили. Как риторический вопрос, даже если бы я дизассемблировал код Apple и описал его вам, имел бы я больше правды, чем сейчас?
Единственное, что я знаю точно и могу доказать, это то, что информация об использовании батареи хранится в файлах /var/mobile/Library/BatteryLife/CurrentPowerlog.PLSQL.
Нужна ли вам какая-либо другая информация?
@AndrewLarsson Я нашел объяснение Стива Гибсона об этих литий-ионных батареях. Это в Security Now, эпизод 322: youtube.com/watch?v=ktnxlQwaKdE , проверьте с 42:25 до 45:35. Расшифровка здесь: grc.com/sn/sn-322.htm , ищите «батарея». Он говорит, что он использует синхронизацию и расчет потребляемой мощности, потому что напряжение в батареях этого типа не является надежным.
Это именно то, что мой ответ говорит сейчас.
То же самое в 526 серии: grc.com/sn/sn-526.htm
Ваш третий абзац ответа говорит прямо противоположное о напряжении.
Мой третий абзац применяется только в режиме DFU, режиме восстановления и других режимах, отличных от iOS. Извините за путаницу.
В своем ответе я дополнительно пояснил, что третий абзац применяется только к таким режимам, как DFU и Recovery.

Ответы (1)

Вся информация об использовании батареи и энергии (в том числе приблизительное количество энергии, потребляемой приложениями и определенными системными процессами с течением времени) хранится в файлах /var/mobile/Library/BatteryLife/CurrentPowerlog.PLSQLи /var/mobile/Library/BatteryLife/Archives/powerlog_*.PLSQL. Эти данные используются как для помощи в расчете процента заряда батареи, так и для выявления энергоемких приложений.

Алгоритм Apple для расчета процента заряда батареи основан на ряде факторов: максимальной емкости батареи (известной на основе батареи, с которой было изготовлено устройство iOS), оставшейся емкости батареи (рассчитанной на основе напряжения), энергопотреблении в течение время (хранится в CurrentPowerlog) и текущее энергопотребление (рассчитывается на основе Draw ). Все эти данные объединяются для экстраполяции предполагаемой оставшейся емкости, которую iOS отображает в виде процента заряда батареи.

Когда устройство iOS находится в режиме, отличном от iOS (например, в режиме DFU или режиме восстановления ), оно не сохраняет и не считывает какую-либо информацию из CurrentPowerlogбазы данных; он использует прямой метод определения емкости своей литий-ионной батареи : просто напряжение, которое в данный момент выдает батарея. Взгляните на диаграмму зависимости напряжения от времени для литий-ионных аккумуляторов и, возможно, захотите прочитать дополнительную информацию об определении емкости литий-ионных аккумуляторов .