<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.maemo.org/skins/common/feed.css?207"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.maemo.org/index.php?action=history&amp;feed=atom&amp;title=User%3AKerio%2Fbq27k.py</id>
		<title>User:Kerio/bq27k.py - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.maemo.org/index.php?action=history&amp;feed=atom&amp;title=User%3AKerio%2Fbq27k.py"/>
		<link rel="alternate" type="text/html" href="http://wiki.maemo.org/index.php?title=User:Kerio/bq27k.py&amp;action=history"/>
		<updated>2026-10-06T12:10:19Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.15.5-7</generator>

	<entry>
		<id>http://wiki.maemo.org/index.php?title=User:Kerio/bq27k.py&amp;diff=51393&amp;oldid=prev</id>
		<title>kerio at 19:22, 22 April 2013</title>
		<link rel="alternate" type="text/html" href="http://wiki.maemo.org/index.php?title=User:Kerio/bq27k.py&amp;diff=51393&amp;oldid=prev"/>
				<updated>2013-04-22T19:22:39Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:22, 22 April 2013&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This script provides details regarding bq27k registers; it also doubles as a python library to access bq27k registers in a programmatic way.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This script provides details regarding bq27k registers; it also doubles as a python library to access bq27k registers in a programmatic way.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;As it is, it will only work if the bq27x00_battery module is loaded; i.e. if Pali's BME replacement is installed. It should be possible to change Bq27kAuto._read_ram() and Bq27kAuto._read_all(), even by subclassing, to allow for other ways to get the bq27k register data.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;#!/usr/bin/env python&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;#!/usr/bin/env python&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-10-06 12:10:19 --&gt;
&lt;/table&gt;</summary>
		<author><name>kerio</name></author>	</entry>

	<entry>
		<id>http://wiki.maemo.org/index.php?title=User:Kerio/bq27k.py&amp;diff=51391&amp;oldid=prev</id>
		<title>kerio at 19:20, 22 April 2013</title>
		<link rel="alternate" type="text/html" href="http://wiki.maemo.org/index.php?title=User:Kerio/bq27k.py&amp;diff=51391&amp;oldid=prev"/>
				<updated>2013-04-22T19:20:43Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:20, 22 April 2013&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;This script provides details regarding bq27k registers; it also doubles as a python library to access bq27k registers in a programmatic way.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;#!/usr/bin/env python&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;#!/usr/bin/env python&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-10-06 12:10:19 --&gt;
&lt;/table&gt;</summary>
		<author><name>kerio</name></author>	</entry>

	<entry>
		<id>http://wiki.maemo.org/index.php?title=User:Kerio/bq27k.py&amp;diff=51390&amp;oldid=prev</id>
		<title>kerio:&amp;#32;Created page with &quot;&lt;pre&gt;#!/usr/bin/env python  import time import struct  RS = 20  # nominal, but sometimes 21 or 22 give more accurate results  class Bitstring(long):     &quot;&quot;&quot;Number with an easy wa…&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.maemo.org/index.php?title=User:Kerio/bq27k.py&amp;diff=51390&amp;oldid=prev"/>
				<updated>2013-04-22T19:19:01Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt;#!/usr/bin/env python  import time import struct  RS = 20  # nominal, but sometimes 21 or 22 give more accurate results  class Bitstring(long):     &amp;quot;&amp;quot;&amp;quot;Number with an easy wa…&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
import time&lt;br /&gt;
import struct&lt;br /&gt;
&lt;br /&gt;
RS = 20  # nominal, but sometimes 21 or 22 give more accurate results&lt;br /&gt;
&lt;br /&gt;
class Bitstring(long):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Number with an easy way to access single bits or ranges of bits.&lt;br /&gt;
&lt;br /&gt;
    b[n] is the n-th bit of b, as a bool&lt;br /&gt;
    b[a:b] is the bits from the a-th to the (b-1)th&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    def __getitem__(self, item):&lt;br /&gt;
        # something that's not enough like a slice...&lt;br /&gt;
        try:&lt;br /&gt;
            start, stop = item.start, item.stop&lt;br /&gt;
        except AttributeError:&lt;br /&gt;
            return bool(self &amp;amp; 1 &amp;lt;&amp;lt; item)&lt;br /&gt;
&lt;br /&gt;
        # ...or something that is&lt;br /&gt;
        if start is None: start = 0&lt;br /&gt;
&lt;br /&gt;
        if stop is None:&lt;br /&gt;
            return Bitstring(self &amp;gt;&amp;gt; start)&lt;br /&gt;
        else:&lt;br /&gt;
            return Bitstring((self &amp;gt;&amp;gt; start) % (1 &amp;lt;&amp;lt; (stop - start)))&lt;br /&gt;
&lt;br /&gt;
class MODE(Bitstring):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Device Mode Register&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def SHIP(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Ship mode&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[0]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def FRST(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Full reset&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[1]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def POR(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Power on Reset&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[2]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def PRST(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Partial reset&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[3]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def DONE(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Write LMD to NAC&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[4]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def WRTNAC(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Write AR to NAC&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[5]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def GPSTAT(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;GPIO pin&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[6]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def GPIEN(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;State of the GPIO pin&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[7]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def CIO(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Calibrate internal offset&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[4]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def CEO(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Calibrate external offset&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[5]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class FLAGS(Bitstring):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Status Flags&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def EDVF(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Final End-of-Discharge-Voltage&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[0]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def EDV1(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;First End-of-Discharge-Voltage&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[1]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def VDQ(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Valid Discharge&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[2]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def CALIP(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Calibration-In-Progress&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[3]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def CI(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Capacity Inaccurate&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[4]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def IMIN(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Li-ion taper current detection&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[5]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def NOACT(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;No Activity&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[6]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def CHGS(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Charge State&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[7]&lt;br /&gt;
&lt;br /&gt;
class DMFSD(Bitstring):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Digital Magnitude Filter and Self-Discharge Rate Constants&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def SD(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Self-Discharge Rate (%)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return 1.61 / self[:4]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def DMF(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Digital Magnitude Filter (mA)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[4:] * 4.9 / RS&lt;br /&gt;
&lt;br /&gt;
class TAPER(Bitstring):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Aging Estimate Enable, Charge Termination Taper Current&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def TAPER(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Charge Termination Taper Current (mA)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[:7] * 228.48 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def AEE(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Aging Estimate Enable&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[7]&lt;br /&gt;
&lt;br /&gt;
class PKCFG(Bitstring):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Pack Configuration Values&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def TCFIX(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Fixed temperature compensation&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[0]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def DCFIX(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Fixed discharge compensation&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[1]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def BOFF(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Board offset value (uV)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        # 3-bit two's complement&lt;br /&gt;
        return ((self[2:5] + 2) % 4 - 2) * 2.45&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def QV(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Qualification voltage for charge termination (mV)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return 3968 + 48 * self[5:7]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def GPIEN(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;State of the GPIO pin on initial power up&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[7]&lt;br /&gt;
&lt;br /&gt;
class DCOMP(Bitstring):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Discharge Rate Compensation Constants&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def DCOFF(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Discharge rate compensation threshold&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return [0, 0.5, 0.25, 0.125][self[:2]]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def DCGN(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Discharge rate compensation gain (%)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[2:] / 2.56&lt;br /&gt;
&lt;br /&gt;
class TCOMP(Bitstring):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Temperature Compensation Constants&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def TOFF(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Temperature compensation offset (C)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[:4]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def TCGN(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Temperature compensation gain (%)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[4:] / 10.24&lt;br /&gt;
&lt;br /&gt;
class Bq27kData(object):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Class that provides data descriptors to fetch converted bq27k register&lt;br /&gt;
    data from an indexable object. The underlying object must return bytes&lt;br /&gt;
    curresponding to the bq27k registers on item access; alternatively, known&lt;br /&gt;
    two-byte registers might be stored on the &amp;quot;low&amp;quot; register - the &amp;quot;high&amp;quot; one&lt;br /&gt;
    must be 0, in this case.&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    @property&lt;br /&gt;
    def CTRL(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Device Control Register&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[0x00]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def MODE(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Device Mode Register&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return MODE(self[0x01])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def AR(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;At-Rate (mA)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x02:0x04]) * 3.57 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def ARTTE(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;At-Rate Time-to-Empty (min)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x04:0x06])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def TEMP(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Reported Temperature (C)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x06:0x08]) * 0.25 - 273.15&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def VOLT(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Reported Voltage (mV)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x08:0x0a])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def FLAGS(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Status Flags&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return FLAGS(self[0x0a])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def RSOC(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Relative State-of-Charge (%)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[0x0b]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def NAC(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Nominal Available Capacity (mAh)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x0c:0x0e]) * 3.57 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def CACD(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Discharge Compensated NAC (mAh)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x0e:0x10]) * 3.57 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def CACT(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Temperature Compensated CACD (mAh)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x10:0x12]) * 3.57 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def LMD(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Last Measured Discharge (mAh)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x12:0x14]) * 3.57 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def AI(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Average Current (mA)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x14:0x16]) * 3.57 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def TTE(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Time-to-Empty (min)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x16:0x18])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def TTF(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Time-to-Full (min)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x18:0x1a])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def SI(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Standby Current (mA)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x1a:0x1c]) * 3.57 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def STTE(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Standby Time-to-Empty (min)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x1c:0x1e])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def MLI(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Max Load Current (mA)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x1e:0x20]) * 3.57 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def MLTTE(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Max Load Time-to-Empty (min)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x20:0x22])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def SAE(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Available Energy (mWh)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x22:0x24]) * 29.2 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def AP(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Average Power (mW)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x24:0x26]) * 29.2 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def TTECP(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Time-to-Empty At Constant Power (min)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x26:0x28])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def CYCL(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Cycle Count Since Learning Cycle&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x28:0x2a])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def CYCT(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Cycle Count Total&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return word(self[0x2a:0x2c])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def CSOC(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Compensated State-of-Charge (%)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[0x2c]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def CRES(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Calibration Result (uV)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        # 16-bit two's complement&lt;br /&gt;
        return ((word(self[0x5e:0x60]) + 0x8000) % 0x10000 - 0x8000) * 1.225&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def EE_EN(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;EEPROM Program Enable&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[0x6e]&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def ILMD(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Initial Last Measured Discharge (mAh)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[0x76] * 913.92 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def EDVF(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;EDVF Threshold (mV)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return (self[0x77] + 256) * 8&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def EDV1(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;EDV1 Threshold (mV)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return (self[0x78] + 256) * 8&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def ISLC(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Initial Standby Load Current (mA)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[0x79] * 7.14 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def DMFSD(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Digital Magnitude Filter and Self-Discharge Rate Constants&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return DMFSD(self[0x7a])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def TAPER(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Aging Estimate Enable, Charge Termination Taper Current&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return TAPER(self[0x7b])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def PKCFG(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Pack Configuration Values&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return PKCFG(self[0x7c])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def IMLC(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Initial Max Load Current (mA)&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return self[0x7d] * 456.96 / RS&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def DCOMP(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Discharge Rate Compensation Constants&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return DCOMP(self[0x7e])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def TCOMP(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Temperature Compensation Constants&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return TCOMP(self[0x7f])&lt;br /&gt;
&lt;br /&gt;
    @property&lt;br /&gt;
    def ID(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Identification Bytes&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        return struct.pack(&amp;quot;3B&amp;quot;, *self[0x7f:0x7c:-1])&lt;br /&gt;
&lt;br /&gt;
class Bq27kAuto(Bq27kData):&lt;br /&gt;
    def __init__(self, grace=5):&lt;br /&gt;
        if grace &amp;lt; 5: raise ValueError(&amp;quot;grace must be at least 5 seconds&amp;quot;)&lt;br /&gt;
        self.grace = grace&lt;br /&gt;
        self._cache = [0] * 128&lt;br /&gt;
        self.refresh(refresh_all=True, force=True)&lt;br /&gt;
&lt;br /&gt;
    def __getitem__(self, item):&lt;br /&gt;
        return self._cache[item]&lt;br /&gt;
&lt;br /&gt;
    def wait(self, minimum=0, refresh_all=False):&lt;br /&gt;
        time.sleep(max(self._expire - time.time(), minimum))&lt;br /&gt;
        self.refresh(refresh_all=refresh_all, force=True)&lt;br /&gt;
&lt;br /&gt;
    def refresh(self, refresh_all=False, force=False):&lt;br /&gt;
        if not force and time.time() &amp;lt; self._expire:&lt;br /&gt;
            return&lt;br /&gt;
        if refresh_all:&lt;br /&gt;
            self._read_all()&lt;br /&gt;
        else:&lt;br /&gt;
            self._read_ram()&lt;br /&gt;
        self._expire = time.time() + self.grace&lt;br /&gt;
&lt;br /&gt;
    def _read_all(self, stop=0x80):&lt;br /&gt;
        for line in open(&amp;quot;/sys/class/power_supply/bq27200-0/registers&amp;quot;, &amp;quot;rt&amp;quot;):&lt;br /&gt;
            addr, _, val = line.strip().partition(&amp;quot;=&amp;quot;)&lt;br /&gt;
            addr, val = int(addr, base=16), int(val, base=16)&lt;br /&gt;
            if addr &amp;gt;= stop: break&lt;br /&gt;
            self._cache[addr] = val&lt;br /&gt;
&lt;br /&gt;
    def _read_ram(self):&lt;br /&gt;
        self._read_all(stop=0x2d)&lt;br /&gt;
&lt;br /&gt;
class Bq27kList(list, Bq27kData):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;A list with data descriptors to convert bq27k register data.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def read_registers(path=&amp;quot;/sys/class/power_supply/bq27200-0/registers&amp;quot;):&lt;br /&gt;
    reg = [0] * 128&lt;br /&gt;
    for line in open(path, &amp;quot;rt&amp;quot;):&lt;br /&gt;
        addr, _, val = line.strip().partition(&amp;quot;=&amp;quot;)&lt;br /&gt;
        addr, val = int(addr, base=16), int(val, base=16)&lt;br /&gt;
        reg[addr] = val&lt;br /&gt;
    return reg&lt;br /&gt;
&lt;br /&gt;
def word(pair):&lt;br /&gt;
    return pair[1] &amp;lt;&amp;lt; 8 | pair[0]&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    import sys&lt;br /&gt;
    if len(sys.argv) &amp;gt; 1:&lt;br /&gt;
        RS = int(sys.argv[1])&lt;br /&gt;
    reg = Bq27kAuto()&lt;br /&gt;
    mode, flags, pkcfg = reg.MODE, reg.FLAGS, reg.PKCFG&lt;br /&gt;
    print(&amp;quot;Sense resistance (RS): %s mohm&amp;quot; % RS)&lt;br /&gt;
    print(&amp;quot;Device Control Register (CTRL): 0x%02x&amp;quot; % reg.CTRL)&lt;br /&gt;
    print(&amp;quot;Device Mode Register (MODE):&amp;quot;)&lt;br /&gt;
    print(&amp;quot;    Ship mode (SHIP): %s&amp;quot; % mode.SHIP)&lt;br /&gt;
    print(&amp;quot;    Full reset (FRST): %s&amp;quot; % mode.FRST)&lt;br /&gt;
    print(&amp;quot;    Power on Reset (POR): %s&amp;quot; % mode.POR)&lt;br /&gt;
    print(&amp;quot;    Partial reset (PRST): %s&amp;quot; % mode.PRST)&lt;br /&gt;
    print(&amp;quot;    Write LMD to NAC (DONE): %s&amp;quot; % mode.DONE)&lt;br /&gt;
    print(&amp;quot;    Write AR to NAC (WRTNAC): %s&amp;quot; % mode.WRTNAC)&lt;br /&gt;
    print(&amp;quot;    GPIO pin (GPSTAT): %s&amp;quot; % mode.GPSTAT)&lt;br /&gt;
    print(&amp;quot;    State of the GPIO pin (GPIEN): %s&amp;quot; % mode.GPIEN)&lt;br /&gt;
    print(&amp;quot;    Calibrate internal offset (CIO): %s&amp;quot; % mode.CIO)&lt;br /&gt;
    print(&amp;quot;    Calibrate external offset (CEO): %s&amp;quot; % mode.CEO)&lt;br /&gt;
    print(&amp;quot;At-Rate (AR): %s mA&amp;quot; % reg.AR)&lt;br /&gt;
    print(&amp;quot;At-Rate Time-to-Empty (ARTTE): %s min&amp;quot; % reg.ARTTE)&lt;br /&gt;
    print(&amp;quot;Reported Temperature (TEMP): %s C&amp;quot; % reg.TEMP)&lt;br /&gt;
    print(&amp;quot;Reported Voltage (VOLT): %s mV&amp;quot; % reg.VOLT)&lt;br /&gt;
    print(&amp;quot;Status Flags (FLAGS):&amp;quot;)&lt;br /&gt;
    print(&amp;quot;    Final End-of-Discharge-Voltage (EDVF): %s&amp;quot; % flags.EDVF)&lt;br /&gt;
    print(&amp;quot;    First End-of-Discharge-Voltage (EDV1): %s&amp;quot; % flags.EDV1)&lt;br /&gt;
    print(&amp;quot;    Valid Discharge (VDQ): %s&amp;quot; % flags.VDQ)&lt;br /&gt;
    print(&amp;quot;    Calibration-In-Progress (CALIP): %s&amp;quot; % flags.CALIP)&lt;br /&gt;
    print(&amp;quot;    Capacity Inaccurate (CI): %s&amp;quot; % flags.CI)&lt;br /&gt;
    print(&amp;quot;    Li-Ion taper current detection (IMIN): %s&amp;quot; % flags.IMIN)&lt;br /&gt;
    print(&amp;quot;    No Activity (NOACT): %s&amp;quot; % flags.NOACT)&lt;br /&gt;
    print(&amp;quot;    Charge State (CHGS): %s&amp;quot; % flags.CHGS)&lt;br /&gt;
    print(&amp;quot;Relative State-of-Charge (RSOC): %s%%&amp;quot; % reg.RSOC)&lt;br /&gt;
    print(&amp;quot;Nominal Available Capacity (NAC): %s mAh&amp;quot; % reg.NAC)&lt;br /&gt;
    print(&amp;quot;Discharge Compensated NAC (CACD): %s mAh&amp;quot; % reg.CACD)&lt;br /&gt;
    print(&amp;quot;Temperature Compensated CACD (CACT): %s mAh&amp;quot; % reg.CACT)&lt;br /&gt;
    print(&amp;quot;Last Measured Discharge (LMD): %s mAh&amp;quot; % reg.LMD)&lt;br /&gt;
    print(&amp;quot;Average Current (AI): %s mA&amp;quot; % reg.AI)&lt;br /&gt;
    print(&amp;quot;Time-to-Empty (TTE): %s min&amp;quot; % reg.TTE)&lt;br /&gt;
    print(&amp;quot;Time-to-Full (TTF): %s min&amp;quot; % reg.TTF)&lt;br /&gt;
    print(&amp;quot;Standby Current (SI): %s mA&amp;quot; % reg.SI)&lt;br /&gt;
    print(&amp;quot;Standby Time-to-Empty (STTE): %s min&amp;quot; % reg.STTE)&lt;br /&gt;
    print(&amp;quot;Max Load Current (MLI): %s mA&amp;quot; % reg.MLI)&lt;br /&gt;
    print(&amp;quot;Max Load Time-to-Empty (MLTTE): %s min&amp;quot; % reg.MLTTE)&lt;br /&gt;
    print(&amp;quot;Available Energy (SAE): %s mWh&amp;quot; % reg.SAE)&lt;br /&gt;
    print(&amp;quot;Average Power (AP): %s mW&amp;quot; % reg.AP)&lt;br /&gt;
    print(&amp;quot;Time-to-Empty At Constant Power (TTECP): %s min&amp;quot; % reg.TTECP)&lt;br /&gt;
    print(&amp;quot;Cycle Count Since Learning Cycle (CYCL): %s cycles&amp;quot; % reg.CYCL)&lt;br /&gt;
    print(&amp;quot;Cycle Count Total (CYCT): %s cycles&amp;quot; % reg.CYCT)&lt;br /&gt;
    print(&amp;quot;Compensated State-of-Charge (CSOC): %s%%&amp;quot; % reg.CSOC)&lt;br /&gt;
    print(&amp;quot;Calibration Result: %s uV&amp;quot; % reg.CRES)&lt;br /&gt;
    print(&amp;quot;EEPROM Program Enable (EE_EN): 0x%02x&amp;quot; % reg.EE_EN)&lt;br /&gt;
    print(&amp;quot;Initial Last Measured Discharge (ILMD): %s mAh&amp;quot; % reg.ILMD)&lt;br /&gt;
    print(&amp;quot;EDVF Threshold (EDVF): %s mV&amp;quot; % reg.EDVF)&lt;br /&gt;
    print(&amp;quot;EDV1 Threshold (EDV1): %s mV&amp;quot; % reg.EDV1)&lt;br /&gt;
    print(&amp;quot;Initial Standby Load Current (ISLC): %s mA&amp;quot; % reg.ISLC)&lt;br /&gt;
    print(&lt;br /&gt;
        &amp;quot;Digital Magnitude Filter and Self-Discharge Rate Constants (DMFSD):&amp;quot;)&lt;br /&gt;
    print(&amp;quot;    Self-Discharge Rate (SD): %s%%&amp;quot; % reg.DMFSD.SD)&lt;br /&gt;
    print(&amp;quot;    Digital Magnitude Filter (DMF): %s mA&amp;quot; % reg.DMFSD.DMF)&lt;br /&gt;
    print(&lt;br /&gt;
        &amp;quot;Aging Estimate Enable, Charge Termination Taper Current (TAPER):&amp;quot;)&lt;br /&gt;
    print(&amp;quot;    Charge Termination Taper Current (TAPER): %s mA&amp;quot;&lt;br /&gt;
          % reg.TAPER.TAPER)&lt;br /&gt;
    print(&amp;quot;    Aging Estimate Enable (AEE): %s&amp;quot; % reg.TAPER.AEE)&lt;br /&gt;
    print(&amp;quot;Pack Configuration Values (PKCFG):&amp;quot;)&lt;br /&gt;
    print(&amp;quot;    Fixed temperature compensation (TCFIX): %s&amp;quot; % pkcfg.TCFIX)&lt;br /&gt;
    print(&amp;quot;    Fixed discharge compensation (DCFIX): %s&amp;quot; % pkcfg.DCFIX)&lt;br /&gt;
    print(&amp;quot;    Board offset value (BOFF): %s uV&amp;quot; % pkcfg.BOFF)&lt;br /&gt;
    print(&amp;quot;    Qualification voltage for charge termination (QV): %s mV&amp;quot;&lt;br /&gt;
          % pkcfg.QV)&lt;br /&gt;
    print(&amp;quot;    State of the GPIO pin on initial power up (GPIEN): %s&amp;quot;&lt;br /&gt;
          % pkcfg.GPIEN)&lt;br /&gt;
    print(&amp;quot;Initial Max Load Current (IMLC): %s mA&amp;quot; % reg.IMLC)&lt;br /&gt;
    print(&amp;quot;Discharge Rate Compensation Constants (DCOMP):&amp;quot;)&lt;br /&gt;
    print(&amp;quot;    Discharge rate compensation threshold (DCOFF): %s&amp;quot;&lt;br /&gt;
          % reg.DCOMP.DCOFF)&lt;br /&gt;
    print(&amp;quot;    Discharge rate compensation gain (DCGN): %s%%&amp;quot;&lt;br /&gt;
          % reg.DCOMP.DCGN)&lt;br /&gt;
    print(&amp;quot;Temperature Compensation Constants (TCOMP):&amp;quot;)&lt;br /&gt;
    print(&amp;quot;    Temperature compensation offset (TOFF): %s C&amp;quot;&lt;br /&gt;
          % reg.TCOMP.TOFF)&lt;br /&gt;
    print(&amp;quot;    Temperature compensation gain (TCGN): %s%%&amp;quot;&lt;br /&gt;
          % reg.TCOMP.TCGN)&lt;br /&gt;
    print(&amp;quot;Identification Bytes (ID): %r&amp;quot; % reg.ID)&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>kerio</name></author>	</entry>

	</feed>