36
36
from adafruit_register .i2c_bit import RWBit
37
37
from adafruit_register .i2c_bits import RWBits
38
38
39
+ try :
40
+ from typing import Tuple
41
+ from typing_extensions import Literal
42
+ from busio import I2C
43
+ except ImportError :
44
+ pass
39
45
40
46
__version__ = "0.0.0+auto.0"
41
47
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_LIS2MDL.git"
@@ -158,15 +164,15 @@ class LIS2MDL: # pylint: disable=too-many-instance-attributes
158
164
_y_offset = UnaryStruct (OFFSET_Y_REG_L , "<h" )
159
165
_z_offset = UnaryStruct (OFFSET_Z_REG_L , "<h" )
160
166
161
- def __init__ (self , i2c ) :
167
+ def __init__ (self , i2c : I2C ) -> None :
162
168
self .i2c_device = I2CDevice (i2c , _ADDRESS_MAG )
163
169
164
170
if self ._device_id != 0x40 :
165
171
raise AttributeError ("Cannot find an LIS2MDL" )
166
172
167
173
self .reset ()
168
174
169
- def reset (self ):
175
+ def reset (self ) -> None :
170
176
"""Reset the sensor to the default state set by the library"""
171
177
self ._soft_reset = True
172
178
sleep (0.100 )
@@ -183,7 +189,7 @@ def reset(self):
183
189
sleep (0.030 ) # sleep 20ms to allow measurements to stabilize
184
190
185
191
@property
186
- def magnetic (self ):
192
+ def magnetic (self ) -> Tuple [ float , float , float ] :
187
193
"""The processed magnetometer sensor values.
188
194
A 3-tuple of X, Y, Z axis values in microteslas that are signed floats.
189
195
"""
@@ -195,12 +201,12 @@ def magnetic(self):
195
201
)
196
202
197
203
@property
198
- def data_rate (self ):
204
+ def data_rate (self ) -> Literal [ 0x00 , 0x01 , 0x02 , 0x03 ] :
199
205
"""The magnetometer update rate."""
200
206
return self ._data_rate
201
207
202
208
@data_rate .setter
203
- def data_rate (self , value ) :
209
+ def data_rate (self , value : Literal [ 0x00 , 0x01 , 0x02 , 0x03 ]) -> None :
204
210
if not value in (
205
211
DataRate .Rate_10_HZ ,
206
212
DataRate .Rate_20_HZ ,
@@ -211,31 +217,31 @@ def data_rate(self, value):
211
217
self ._data_rate = value
212
218
213
219
@property
214
- def interrupt_threshold (self ):
220
+ def interrupt_threshold (self ) -> float :
215
221
"""The threshold (in microteslas) for magnetometer interrupt generation. Given value is
216
222
compared against all axes in both the positive and negative direction"""
217
223
return self ._interrupt_threshold * _MAG_SCALE
218
224
219
225
@interrupt_threshold .setter
220
- def interrupt_threshold (self , value ) :
226
+ def interrupt_threshold (self , value : float ) -> None :
221
227
if value < 0 :
222
228
value = - value
223
229
self ._interrupt_threshold = int (value / _MAG_SCALE )
224
230
225
231
@property
226
- def interrupt_enabled (self ):
232
+ def interrupt_enabled (self ) -> bool :
227
233
"""Enable or disable the magnetometer interrupt"""
228
234
return self ._int_enable
229
235
230
236
@interrupt_enabled .setter
231
- def interrupt_enabled (self , val ) :
237
+ def interrupt_enabled (self , val : bool ) -> None :
232
238
self ._x_int_enable = val
233
239
self ._y_int_enable = val
234
240
self ._z_int_enable = val
235
241
self ._int_enable = val
236
242
237
243
@property
238
- def faults (self ):
244
+ def faults (self ) -> Tuple [ bool , bool , bool , bool , bool , bool , bool ] :
239
245
"""A tuple representing interrupts on each axis in a positive and negative direction
240
246
``(x_hi, y_hi, z_hi, x_low, y_low, z_low, int_triggered)``"""
241
247
int_status = self ._int_source
@@ -250,31 +256,31 @@ def faults(self):
250
256
return (x_hi , y_hi , z_hi , x_low , y_low , z_low , int_triggered )
251
257
252
258
@property
253
- def x_offset (self ):
259
+ def x_offset (self ) -> float :
254
260
"""An offset for the X-Axis to subtract from the measured value to correct
255
261
for magnetic interference"""
256
262
return self ._x_offset * _MAG_SCALE
257
263
258
264
@x_offset .setter
259
- def x_offset (self , value ) :
265
+ def x_offset (self , value : float ) -> None :
260
266
self ._x_offset = int (value / _MAG_SCALE )
261
267
262
268
@property
263
- def y_offset (self ):
269
+ def y_offset (self ) -> float :
264
270
"""An offset for the Y-Axis to subtract from the measured value to correct
265
271
for magnetic interference"""
266
272
return self ._y_offset * _MAG_SCALE
267
273
268
274
@y_offset .setter
269
- def y_offset (self , value ) :
275
+ def y_offset (self , value : float ) -> None :
270
276
self ._y_offset = int (value / _MAG_SCALE )
271
277
272
278
@property
273
- def z_offset (self ):
279
+ def z_offset (self ) -> float :
274
280
"""An offset for the Z-Axis to subtract from the measured value to correct
275
281
for magnetic interference"""
276
282
return self ._z_offset * _MAG_SCALE
277
283
278
284
@z_offset .setter
279
- def z_offset (self , value ) :
285
+ def z_offset (self , value : float ) -> None :
280
286
self ._z_offset = int (value / _MAG_SCALE )
0 commit comments