32
32
https://github.com/adafruit/Adafruit_CircuitPython_BusDevice
33
33
"""
34
34
35
+ try :
36
+ from typing import Tuple
37
+ from busio import I2C
38
+ except ImportError :
39
+ pass
40
+
35
41
try :
36
42
import struct
37
43
except ImportError :
38
44
import ustruct as struct
45
+
39
46
from micropython import const
40
47
from adafruit_bus_device .i2c_device import I2CDevice
41
48
@@ -125,7 +132,7 @@ class LSM303DLH_Mag:
125
132
# thread safe!
126
133
_BUFFER = bytearray (6 )
127
134
128
- def __init__ (self , i2c ) :
135
+ def __init__ (self , i2c : I2C ) -> None :
129
136
self ._mag_device = I2CDevice (i2c , _ADDRESS_MAG )
130
137
self ._write_u8 (
131
138
self ._mag_device , _REG_MAG_MR_REG_M , 0x00
@@ -136,7 +143,7 @@ def __init__(self, i2c):
136
143
self ._mag_rate = MAGRATE_0_7
137
144
138
145
@property
139
- def _raw_magnetic (self ):
146
+ def _raw_magnetic (self ) -> Tuple [ int , int , int ] :
140
147
"""The raw magnetometer sensor values.
141
148
A 3-tuple of X, Y, Z axis values that are 16-bit signed integers.
142
149
"""
@@ -145,7 +152,7 @@ def _raw_magnetic(self):
145
152
return (raw_values [0 ], raw_values [2 ], raw_values [1 ])
146
153
147
154
@property
148
- def magnetic (self ):
155
+ def magnetic (self ) -> Tuple [ float , float , float ] :
149
156
"""The processed magnetometer sensor values.
150
157
A 3-tuple of X, Y, Z axis values in microteslas that are signed floats.
151
158
"""
@@ -157,12 +164,12 @@ def magnetic(self):
157
164
)
158
165
159
166
@property
160
- def mag_gain (self ):
167
+ def mag_gain (self ) -> int :
161
168
"""The magnetometer's gain."""
162
169
return self ._mag_gain
163
170
164
171
@mag_gain .setter
165
- def mag_gain (self , value ) :
172
+ def mag_gain (self , value : int ) -> None :
166
173
assert value in (
167
174
MAGGAIN_1_3 ,
168
175
MAGGAIN_1_9 ,
@@ -198,12 +205,12 @@ def mag_gain(self, value):
198
205
self ._lsm303mag_gauss_lsb_z = 205.0
199
206
200
207
@property
201
- def mag_rate (self ):
208
+ def mag_rate (self ) -> int :
202
209
"""The magnetometer update rate."""
203
210
return self ._mag_rate
204
211
205
212
@mag_rate .setter
206
- def mag_rate (self , value ) :
213
+ def mag_rate (self , value : int ) -> None :
207
214
assert value in (
208
215
MAGRATE_0_7 ,
209
216
MAGRATE_1_5 ,
@@ -219,20 +226,22 @@ def mag_rate(self, value):
219
226
reg_m = ((value & 0x07 ) << 2 ) & 0xFF
220
227
self ._write_u8 (self ._mag_device , _REG_MAG_CRA_REG_M , reg_m )
221
228
222
- def _read_u8 (self , device , address ) :
229
+ def _read_u8 (self , device : I2CDevice , address : int ) -> int :
223
230
with device as i2c :
224
231
self ._BUFFER [0 ] = address & 0xFF
225
232
i2c .write_then_readinto (self ._BUFFER , self ._BUFFER , out_end = 1 , in_end = 1 )
226
233
return self ._BUFFER [0 ]
227
234
228
- def _write_u8 (self , device , address , val ) :
235
+ def _write_u8 (self , device : I2CDevice , address : int , val : int ) -> None :
229
236
with device as i2c :
230
237
self ._BUFFER [0 ] = address & 0xFF
231
238
self ._BUFFER [1 ] = val & 0xFF
232
239
i2c .write (self ._BUFFER , end = 2 )
233
240
234
241
@staticmethod
235
- def _read_bytes (device , address , count , buf ):
242
+ def _read_bytes (
243
+ device : I2CDevice , address : int , count : int , buf : bytearray
244
+ ) -> None :
236
245
with device as i2c :
237
246
buf [0 ] = address & 0xFF
238
247
i2c .write_then_readinto (buf , buf , out_end = 1 , in_end = count )
0 commit comments