33
33
from adafruit_register .i2c_bit import RWBit , ROBit
34
34
from adafruit_register .i2c_bits import RWBits
35
35
36
+ try :
37
+ from busio import I2C
38
+ except ImportError :
39
+ pass
40
+
36
41
__version__ = "0.0.0-auto.0"
37
42
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_MAX1704x.git"
38
43
@@ -100,7 +105,7 @@ class MAX17048:
100
105
_reset_voltage = RWBits (7 , _MAX1704X_VRESET_REG , 1 )
101
106
comparator_disabled = RWBit (_MAX1704X_VRESET_REG , 0 )
102
107
103
- def __init__ (self , i2c_bus , address = MAX1704X_I2CADDR_DEFAULT ):
108
+ def __init__ (self , i2c_bus : I2C , address : int = MAX1704X_I2CADDR_DEFAULT ) -> None :
104
109
# pylint: disable=no-member
105
110
self .i2c_device = i2c_device .I2CDevice (i2c_bus , address )
106
111
@@ -110,7 +115,7 @@ def __init__(self, i2c_bus, address=MAX1704X_I2CADDR_DEFAULT):
110
115
self .enable_sleep = False
111
116
self .sleep = False
112
117
113
- def reset (self ):
118
+ def reset (self ) -> None :
114
119
"""Perform a soft reset of the chip"""
115
120
try :
116
121
self ._cmd = 0x5400
@@ -122,91 +127,91 @@ def reset(self):
122
127
self .reset_alert = False # clean up RI alert
123
128
124
129
@property
125
- def cell_voltage (self ):
130
+ def cell_voltage (self ) -> float :
126
131
"""The state of charge of the battery, in volts"""
127
132
return self ._cell_voltage * 78.125 / 1_000_000
128
133
129
134
@property
130
- def cell_percent (self ):
135
+ def cell_percent (self ) -> float :
131
136
"""The state of charge of the battery, in percentage of 'fullness'"""
132
137
return self ._cell_SOC / 256.0
133
138
134
139
@property
135
- def charge_rate (self ):
140
+ def charge_rate (self ) -> float :
136
141
"""Charge or discharge rate of the battery in percent/hour"""
137
142
return self ._cell_crate * 0.208
138
143
139
144
@property
140
- def reset_voltage (self ):
145
+ def reset_voltage (self ) -> float :
141
146
"""The voltage that will determine whether the chip will consider it a reset/swap"""
142
147
return self ._reset_voltage * 0.04 # 40mV / LSB
143
148
144
149
@reset_voltage .setter
145
- def reset_voltage (self , reset_v ) :
150
+ def reset_voltage (self , reset_v : float ) -> None :
146
151
if not 0 <= reset_v <= (127 * 0.04 ):
147
152
raise ValueError ("Reset voltage must be between 0 and 5.1 Volts" )
148
153
self ._reset_voltage = int (reset_v / 0.04 ) # 40mV / LSB
149
154
150
155
@property
151
- def voltage_alert_min (self ):
156
+ def voltage_alert_min (self ) -> float :
152
157
"""The lower-limit voltage for the voltage alert"""
153
158
return self ._valrt_min * 0.02 # 20mV / LSB
154
159
155
160
@voltage_alert_min .setter
156
- def voltage_alert_min (self , minvoltage ) :
161
+ def voltage_alert_min (self , minvoltage : float ) -> None :
157
162
if not 0 <= minvoltage <= (255 * 0.02 ):
158
163
raise ValueError ("Alert voltage must be between 0 and 5.1 Volts" )
159
164
self ._valrt_min = int (minvoltage / 0.02 ) # 20mV / LSB
160
165
161
166
@property
162
- def voltage_alert_max (self ):
167
+ def voltage_alert_max (self ) -> float :
163
168
"""The upper-limit voltage for the voltage alert"""
164
169
return self ._valrt_max * 0.02 # 20mV / LSB
165
170
166
171
@voltage_alert_max .setter
167
- def voltage_alert_max (self , maxvoltage ) :
172
+ def voltage_alert_max (self , maxvoltage : float ) -> None :
168
173
if not 0 <= maxvoltage <= (255 * 0.02 ):
169
174
raise ValueError ("Alert voltage must be between 0 and 5.1 Volts" )
170
175
self ._valrt_max = int (maxvoltage / 0.02 ) # 20mV / LSB
171
176
172
177
@property
173
- def active_alert (self ):
178
+ def active_alert (self ) -> bool :
174
179
"""Whether there is an active alert to be checked"""
175
180
return self ._alert_status
176
181
177
182
@property
178
- def alert_reason (self ):
183
+ def alert_reason (self ) -> int :
179
184
"""The 7 bits of alert-status that can be checked at once for flags"""
180
185
return self ._status & 0x3F
181
186
182
187
@property
183
- def activity_threshold (self ):
188
+ def activity_threshold (self ) -> float :
184
189
"""The absolute change in battery voltage that will trigger hibernation"""
185
190
return self ._hibrt_actthr * 0.00125 # 1.25mV per LSB
186
191
187
192
@activity_threshold .setter
188
- def activity_threshold (self , threshold_voltage ) :
193
+ def activity_threshold (self , threshold_voltage : float ) -> None :
189
194
if not 0 <= threshold_voltage <= (255 * 0.00125 ):
190
195
raise ValueError (
191
196
"Activity voltage change must be between 0 and 0.31875 Volts"
192
197
)
193
198
self ._hibrt_actthr = int (threshold_voltage / 0.00125 ) # 1.25mV per LSB
194
199
195
200
@property
196
- def hibernation_threshold (self ):
201
+ def hibernation_threshold (self ) -> float :
197
202
"""The absolute-value percent-per-hour change in charge rate
198
203
that will trigger hibernation"""
199
204
return self ._hibrt_hibthr * 0.208 # 0.208% per hour
200
205
201
206
@hibernation_threshold .setter
202
- def hibernation_threshold (self , threshold_percent ) :
207
+ def hibernation_threshold (self , threshold_percent : float ) -> None :
203
208
if not 0 <= threshold_percent <= (255 * 0.208 ):
204
209
raise ValueError (
205
210
"Activity percentage/hour change must be between 0 and 53%"
206
211
)
207
212
self ._hibrt_hibthr = int (threshold_percent / 0.208 ) # 0.208% per hour
208
213
209
- def hibernate (self ):
214
+ def hibernate (self ) -> None :
210
215
"""Setup thresholds for hibernation to go into hibernation mode immediately.
211
216
212
217
See datasheet: HIBRT Register (0x0A) To disable hibernate mode, set
@@ -217,7 +222,7 @@ def hibernate(self):
217
222
self ._hibrt_hibthr = 0xFF
218
223
self ._hibrt_actthr = 0xFF
219
224
220
- def wake (self ):
225
+ def wake (self ) -> None :
221
226
"""Setup thresholds for hibernation to leave hibernation mode immediately.
222
227
223
228
See datasheet: HIBRT Register (0x0A) To disable hibernate mode, set
0 commit comments