It was noted that we did not increment the return value bufflen when
adding zero. This is an ambiguity in the function declaration; if we
are told to add a zero should the return value be like strnlen (does not
include terminating null character) or read (includes all bytes used in
return buffer).
This PR makes it a non-issue by ensuring string null termination in the
caller and removing the append_zero parameter.
Checks for the highest cell for 15 seconds and then reduces the cell voltage calls to cover only those cells that actually exist
also renames SMBus _last_cell_update_us
Every backend stored a instance reference, which wasn't used in most locations
which is redundant given that the state already tracks the instance for us as
well.
Previously we checked PEC support continuously at 10hz. With this change PEC support (or lack of support) is determined first before we try to read from the battery. Once determined, we do not repeat the checks.
Also simplified logic to determine PEC support based on version (should have no functional effect)
Also renamed get_pec_support to check_pec_support
Also renamed _pec_confirm to _pec_confirmed