36
36
from micropython import const
37
37
from adafruit_register .i2c_struct import Struct
38
38
39
+ try :
40
+ from typing import Tuple
41
+ from digitalio import DigitalInOut
42
+ from busio import I2C , SPI
43
+ except ImportError :
44
+ pass
45
+
39
46
__version__ = "0.0.0+auto.0"
40
47
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_L3GD20.git"
41
48
@@ -88,12 +95,13 @@ class L3GD20:
88
95
Defaults to :const:`L3DS20_RATE_100HZ`
89
96
"""
90
97
91
- def __init__ (self , rng = L3DS20_RANGE_250DPS , rate = L3DS20_RATE_100HZ ):
98
+ def __init__ (
99
+ self , rng : int = L3DS20_RANGE_250DPS , rate : int = L3DS20_RATE_100HZ
100
+ ) -> None :
92
101
chip_id = self .read_register (_ID_REGISTER )
93
102
if chip_id not in (_L3GD20_CHIP_ID , _L3GD20H_CHIP_ID ):
94
103
raise RuntimeError (
95
- "bad chip id (%x != %x or %x)"
96
- % (chip_id , _L3GD20_CHIP_ID , _L3GD20H_CHIP_ID )
104
+ f"bad chip id ({ chip_id :#x} != { _L3GD20_CHIP_ID :#x} or { _L3GD20H_CHIP_ID :#x} )"
97
105
)
98
106
99
107
if rng not in (L3DS20_RANGE_250DPS , L3DS20_RANGE_500DPS , L3DS20_RANGE_2000DPS ):
@@ -185,7 +193,7 @@ def __init__(self, rng=L3DS20_RANGE_250DPS, rate=L3DS20_RATE_100HZ):
185
193
# ------------------------------------------------------------------
186
194
187
195
@property
188
- def gyro (self ):
196
+ def gyro (self ) -> Tuple [ float , float , float ] :
189
197
"""
190
198
x, y, z angular momentum tuple floats, rescaled appropriately for
191
199
range selected in rad/s
@@ -233,8 +241,12 @@ class L3GD20_I2C(L3GD20):
233
241
"""Gives the raw gyro readings, in units of rad/s."""
234
242
235
243
def __init__ (
236
- self , i2c , rng = L3DS20_RANGE_250DPS , address = 0x6B , rate = L3DS20_RATE_100HZ
237
- ):
244
+ self ,
245
+ i2c : I2C ,
246
+ rng : int = L3DS20_RANGE_250DPS ,
247
+ address : int = 0x6B ,
248
+ rate : int = L3DS20_RATE_100HZ ,
249
+ ) -> None :
238
250
from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
239
251
i2c_device ,
240
252
)
@@ -243,7 +255,7 @@ def __init__(
243
255
self .buffer = bytearray (2 )
244
256
super ().__init__ (rng , rate )
245
257
246
- def write_register (self , register , value ) :
258
+ def write_register (self , register : int , value : int ) -> None :
247
259
"""
248
260
Update a register with a byte value
249
261
@@ -255,7 +267,7 @@ def write_register(self, register, value):
255
267
with self .i2c_device as i2c :
256
268
i2c .write (self .buffer )
257
269
258
- def read_register (self , register ) :
270
+ def read_register (self , register : int ) -> int :
259
271
"""
260
272
Returns a byte value from a register
261
273
@@ -303,14 +315,14 @@ class L3GD20_SPI(L3GD20):
303
315
304
316
"""
305
317
306
- def __init__ (
318
+ def __init__ ( # pylint: disable=too-many-arguments
307
319
self ,
308
- spi_busio ,
309
- cs ,
310
- rng = L3DS20_RANGE_250DPS ,
311
- baudrate = 100000 ,
312
- rate = L3DS20_RATE_100HZ ,
313
- ): # pylint: disable=too-many-arguments
320
+ spi_busio : SPI ,
321
+ cs : DigitalInOut ,
322
+ rng : int = L3DS20_RANGE_250DPS ,
323
+ baudrate : int = 100000 ,
324
+ rate : int = L3DS20_RATE_100HZ ,
325
+ ) -> None :
314
326
from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
315
327
spi_device ,
316
328
)
@@ -320,7 +332,7 @@ def __init__(
320
332
self ._spi_bytearray6 = bytearray (6 )
321
333
super ().__init__ (rng , rate )
322
334
323
- def write_register (self , register , value ) :
335
+ def write_register (self , register : int , value : int ) -> None :
324
336
"""
325
337
Low level register writing over SPI, writes one 8-bit value
326
338
@@ -331,7 +343,7 @@ def write_register(self, register, value):
331
343
with self ._spi as spi :
332
344
spi .write (bytes ([register , value & 0xFF ]))
333
345
334
- def read_register (self , register ) :
346
+ def read_register (self , register : int ) -> int :
335
347
"""
336
348
Low level register reading over SPI, returns a list of values
337
349
@@ -346,7 +358,7 @@ def read_register(self, register):
346
358
# print("$%02X => %s" % (register, [hex(i) for i in self._spi_bytearray1]))
347
359
return self ._spi_bytearray1 [0 ]
348
360
349
- def read_bytes (self , register , buffer ) :
361
+ def read_bytes (self , register : int , buffer : bytearray ) -> None :
350
362
"""
351
363
Low level register stream reading over SPI, returns a list of values
352
364
@@ -360,7 +372,7 @@ def read_bytes(self, register, buffer):
360
372
spi .readinto (buffer )
361
373
362
374
@property
363
- def gyro_raw (self ):
375
+ def gyro_raw (self ) -> Tuple [ int , int , int ] :
364
376
"""Gives the dynamic rate raw gyro readings, in units rad/s."""
365
377
buffer = self ._spi_bytearray6
366
378
self .read_bytes (_L3GD20_REGISTER_OUT_X_L_X40 , buffer )
0 commit comments