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