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