49
49
50
50
# from adafruit_register.i2c_bit import RWBit
51
51
52
+ try :
53
+ from typing import Iterable , Optional , Tuple , Union
54
+ from busio import I2C
55
+ except ImportError :
56
+ pass
57
+
52
58
__version__ = "0.0.0+auto.0"
53
59
__repo__ = "https:#github.com/adafruit/Adafruit_CircuitPython_MLX90395.git"
54
60
@@ -87,7 +93,9 @@ class CV:
87
93
"""struct helper"""
88
94
89
95
@classmethod
90
- def add_values (cls , value_tuples ):
96
+ def add_values (
97
+ cls , value_tuples : Iterable [Tuple [str , int , Union [str , int ], Optional [float ]]]
98
+ ) -> None :
91
99
"creates CV entires"
92
100
cls .string = {}
93
101
cls .lsb = {}
@@ -99,7 +107,7 @@ def add_values(cls, value_tuples):
99
107
cls .lsb [value ] = lsb
100
108
101
109
@classmethod
102
- def is_valid (cls , value ) :
110
+ def is_valid (cls , value : int ) -> bool :
103
111
"Returns true if the given value is a member of the CV"
104
112
return value in cls .string
105
113
@@ -172,7 +180,7 @@ class MLX90395:
172
180
)
173
181
_reg2 = UnaryStruct (_REG_2 , ">H" )
174
182
175
- def __init__ (self , i2c_bus , address = _DEFAULT_ADDR ):
183
+ def __init__ (self , i2c_bus : I2C , address : int = _DEFAULT_ADDR ) -> None :
176
184
self .i2c_device = i2c_device .I2CDevice (i2c_bus , address )
177
185
self ._ut_lsb = None
178
186
self ._gain_val = 0
@@ -181,7 +189,7 @@ def __init__(self, i2c_bus, address=_DEFAULT_ADDR):
181
189
self .reset ()
182
190
self .initialize ()
183
191
184
- def reset (self ):
192
+ def reset (self ) -> None :
185
193
"""Reset the sensor to it's power-on state"""
186
194
187
195
self ._command (_REG_EX )
@@ -193,7 +201,7 @@ def reset(self):
193
201
194
202
sleep (0.10 )
195
203
196
- def initialize (self ):
204
+ def initialize (self ) -> None :
197
205
"""Configure the sensor for use"""
198
206
self ._gain_val = self .gain
199
207
if self ._gain_val == 8 : # default high field gain
@@ -202,37 +210,37 @@ def initialize(self):
202
210
self ._ut_lsb = 2.5 # medium field gain
203
211
204
212
@property
205
- def resolution (self ):
213
+ def resolution (self ) -> int :
206
214
"""The current resolution setting for the magnetometer"""
207
215
return self ._resolution
208
216
209
217
@resolution .setter
210
- def resolution (self , value ) :
218
+ def resolution (self , value : int ) -> None :
211
219
if not Resolution .is_valid (value ):
212
220
raise AttributeError ("resolution must be a Resolution" )
213
221
self ._resolution = value
214
222
215
223
@property
216
- def gain (self ):
224
+ def gain (self ) -> int :
217
225
"""The gain applied to the magnetometer's ADC."""
218
226
return self ._gain
219
227
220
228
@gain .setter
221
- def gain (self , value ) :
229
+ def gain (self , value : int ) -> None :
222
230
if not Gain .is_valid (value ):
223
231
raise AttributeError ("gain must be a valid value" )
224
232
self ._gain = value
225
233
self ._gain_val = value
226
234
227
- def _command (self , command_id ) :
235
+ def _command (self , command_id : int ) -> int :
228
236
229
237
buffer = bytearray ([0x80 , command_id ])
230
238
with self .i2c_device as i2c :
231
239
i2c .write_then_readinto (buffer , buffer , in_end = 1 )
232
240
return buffer [0 ]
233
241
234
242
@property
235
- def magnetic (self ):
243
+ def magnetic (self ) -> Tuple [ float , float , float ] :
236
244
"""The processed magnetometer sensor values.
237
245
A 3-tuple of X, Y, Z axis values in microteslas that are signed floats.
238
246
"""
@@ -245,7 +253,7 @@ def magnetic(self):
245
253
246
254
return res
247
255
248
- def _read_measurement (self ):
256
+ def _read_measurement (self ) -> Tuple [ float , float , float ] :
249
257
250
258
# clear the buffer
251
259
for i in range (len (self ._buffer )): # pylint: disable=consider-using-enumerate
@@ -264,12 +272,12 @@ def _read_measurement(self):
264
272
return (x_raw * scalar , y_raw * scalar , z_raw * scalar )
265
273
266
274
@property
267
- def oversample_rate (self ):
275
+ def oversample_rate (self ) -> int :
268
276
"""The number of times that the measurements are re-sampled and averaged to reduce noise"""
269
277
return self ._osr
270
278
271
279
@oversample_rate .setter
272
- def oversample_rate (self , value ) :
280
+ def oversample_rate (self , value : int ) -> None :
273
281
if not OSR .is_valid (value ):
274
282
raise AttributeError ("oversample_rate must be an OSR" )
275
283
self ._osr = value
0 commit comments