4040
4141from micropython import const
4242
43+ try :
44+ from typing import Optional
45+ from typing_extensions import Literal
46+ from busio import I2C , SPI
47+ except ImportError :
48+ pass
49+
50+
4351__version__ = "0.0.0+auto.0"
4452__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_LIS3DH.git"
4553
@@ -93,7 +101,11 @@ class LIS3DH:
93101 the LIS3DH INT2 interrupt pin
94102 """
95103
96- def __init__ (self , int1 = None , int2 = None ):
104+ def __init__ (
105+ self ,
106+ int1 : Optional [digitalio .DigitalInOut ] = None ,
107+ int2 : Optional [digitalio .DigitalInOut ] = None ,
108+ ) -> None :
97109 # Check device ID.
98110 device_id = self ._read_register_byte (_REG_WHOAMI )
99111 if device_id != 0x33 :
@@ -120,7 +132,9 @@ def __init__(self, int1=None, int2=None):
120132 self ._int1 .pull = digitalio .Pull .UP
121133
122134 @property
123- def data_rate (self ):
135+ def data_rate (
136+ self ,
137+ ) -> int :
124138 """The data rate of the accelerometer.
125139
126140 Could have the following values:
@@ -141,14 +155,17 @@ def data_rate(self):
141155 return (ctl1 >> 4 ) & 0x0F
142156
143157 @data_rate .setter
144- def data_rate (self , rate ):
158+ def data_rate (
159+ self ,
160+ rate : int ,
161+ ):
145162 ctl1 = self ._read_register_byte (_REG_CTRL1 )
146163 ctl1 &= ~ (0xF0 )
147164 ctl1 |= rate << 4
148165 self ._write_register_byte (_REG_CTRL1 , ctl1 )
149166
150167 @property
151- def range (self ):
168+ def range (self ) -> Literal [ RANGE_2_G , RANGE_4_G , RANGE_8_G , RANGE_16_G ] :
152169 """The range of the accelerometer.
153170
154171 Could have the following values:
@@ -163,14 +180,14 @@ def range(self):
163180 return (ctl4 >> 4 ) & 0x03
164181
165182 @range .setter
166- def range (self , range_value ):
183+ def range (self , range_value : Literal [ RANGE_2_G , RANGE_4_G , RANGE_8_G , RANGE_16_G ] ):
167184 ctl4 = self ._read_register_byte (_REG_CTRL4 )
168185 ctl4 &= ~ 0x30
169186 ctl4 |= range_value << 4
170187 self ._write_register_byte (_REG_CTRL4 , ctl4 )
171188
172189 @property
173- def acceleration (self ):
190+ def acceleration (self ) -> AccelerationTuple :
174191 """The x, y, z acceleration values returned
175192 in a 3-tuple and are in :math:`m / s ^ 2`"""
176193 divider = 1
@@ -193,7 +210,9 @@ def acceleration(self):
193210
194211 return AccelerationTuple (x , y , z )
195212
196- def shake (self , shake_threshold = 30 , avg_count = 10 , total_delay = 0.1 ):
213+ def shake (
214+ self , shake_threshold : int = 30 , avg_count : int = 10 , total_delay : float = 0.1
215+ ) -> bool :
197216 """Detect when the accelerometer is shaken. Optional parameters:
198217
199218 :param int shake_threshold: Increase or decrease to change shake sensitivity.
@@ -226,7 +245,7 @@ def shake(self, shake_threshold=30, avg_count=10, total_delay=0.1):
226245 total_accel = math .sqrt (sum (map (lambda x : x * x , avg )))
227246 return total_accel > shake_threshold
228247
229- def read_adc_raw (self , adc ) :
248+ def read_adc_raw (self , adc : Literal [ 1 , 2 , 3 ]) -> int :
230249 """Retrieve the raw analog to digital converter value. ADC must be a
231250 value 1, 2, or 3.
232251 """
@@ -237,7 +256,8 @@ def read_adc_raw(self, adc):
237256 "<h" , self ._read_register ((_REG_OUTADC1_L + ((adc - 1 ) * 2 )) | 0x80 , 2 )[0 :2 ]
238257 )[0 ]
239258
240- def read_adc_mV (self , adc ): # pylint: disable=invalid-name
259+ # pylint: disable=invalid-name
260+ def read_adc_mV (self , adc : Literal [1 , 2 , 3 ]) -> float :
241261 """Read the specified analog to digital converter value in millivolts.
242262 ADC must be a value 1, 2, or 3. NOTE the ADC can only measure voltages
243263 in the range of ~900-1200mV!
@@ -256,7 +276,7 @@ def read_adc_mV(self, adc): # pylint: disable=invalid-name
256276 return 1800 + (raw + 32512 ) * (- 900 / 65024 )
257277
258278 @property
259- def tapped (self ):
279+ def tapped (self ) -> int :
260280 """
261281 True if a tap was detected recently. Whether its a single tap or double tap is
262282 determined by the tap param on :attr:`set_tap`. :attr:`tapped` may be True over
@@ -284,14 +304,14 @@ def tapped(self):
284304
285305 def set_tap (
286306 self ,
287- tap ,
288- threshold ,
307+ tap : Literal [ 0 , 1 , 2 ] ,
308+ threshold : int ,
289309 * ,
290- time_limit = 10 ,
291- time_latency = 20 ,
292- time_window = 255 ,
293- click_cfg = None
294- ):
310+ time_limit : int = 10 ,
311+ time_latency : int = 20 ,
312+ time_window : int = 255 ,
313+ click_cfg : Optional [ int ] = None
314+ ) -> None :
295315 """
296316 The tap detection parameters.
297317
@@ -338,17 +358,17 @@ def set_tap(
338358 self ._write_register_byte (_REG_TIMELATENCY , time_latency )
339359 self ._write_register_byte (_REG_TIMEWINDOW , time_window )
340360
341- def _read_register_byte (self , register ) :
361+ def _read_register_byte (self , register : int ) -> int :
342362 # Read a byte register value and return it.
343363 return self ._read_register (register , 1 )[0 ]
344364
345- def _read_register (self , register , length ) :
365+ def _read_register (self , register : int , length : int ) -> None :
346366 # Read an arbitrarily long register (specified by length number of
347367 # bytes) and return a bytearray of the retrieved data.
348368 # Subclasses MUST implement this!
349369 raise NotImplementedError
350370
351- def _write_register_byte (self , register , value ) :
371+ def _write_register_byte (self , register : int , value : int ) -> None :
352372 # Write a single byte register at the specified register address.
353373 # Subclasses MUST implement this!
354374 raise NotImplementedError
@@ -387,7 +407,14 @@ class LIS3DH_I2C(LIS3DH):
387407
388408 """
389409
390- def __init__ (self , i2c , * , address = 0x18 , int1 = None , int2 = None ):
410+ def __init__ (
411+ self ,
412+ i2c : I2C ,
413+ * ,
414+ address : int = 0x18 ,
415+ int1 : Optional [digitalio .DigitalInOut ] = None ,
416+ int2 : Optional [digitalio .DigitalInOut ] = None
417+ ) -> None :
391418 from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
392419 i2c_device ,
393420 )
@@ -396,14 +423,14 @@ def __init__(self, i2c, *, address=0x18, int1=None, int2=None):
396423 self ._buffer = bytearray (6 )
397424 super ().__init__ (int1 = int1 , int2 = int2 )
398425
399- def _read_register (self , register , length ) :
426+ def _read_register (self , register : int , length : int ) -> bytearray :
400427 self ._buffer [0 ] = register & 0xFF
401428 with self ._i2c as i2c :
402429 i2c .write (self ._buffer , start = 0 , end = 1 )
403430 i2c .readinto (self ._buffer , start = 0 , end = length )
404431 return self ._buffer
405432
406- def _write_register_byte (self , register , value ) :
433+ def _write_register_byte (self , register : int , value : int ) -> None :
407434 self ._buffer [0 ] = register & 0xFF
408435 self ._buffer [1 ] = value & 0xFF
409436 with self ._i2c as i2c :
@@ -442,7 +469,15 @@ class LIS3DH_SPI(LIS3DH):
442469
443470 """
444471
445- def __init__ (self , spi , cs , * , baudrate = 100000 , int1 = None , int2 = None ):
472+ def __init__ (
473+ self ,
474+ spi : SPI ,
475+ cs : digitalio .DigitalInOut ,
476+ * ,
477+ baudrate : int = 100000 ,
478+ int1 : Optional [digitalio .DigitalInOut ] = None ,
479+ int2 : Optional [digitalio .DigitalInOut ] = None
480+ ) -> None :
446481 from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
447482 spi_device ,
448483 )
@@ -451,7 +486,7 @@ def __init__(self, spi, cs, *, baudrate=100000, int1=None, int2=None):
451486 self ._buffer = bytearray (6 )
452487 super ().__init__ (int1 = int1 , int2 = int2 )
453488
454- def _read_register (self , register , length ) :
489+ def _read_register (self , register : int , length : int ) -> bytearray :
455490 if length == 1 :
456491 self ._buffer [0 ] = (register | 0x80 ) & 0xFF # Read single, bit 7 high.
457492 else :
@@ -461,7 +496,7 @@ def _read_register(self, register, length):
461496 spi .readinto (self ._buffer , start = 0 , end = length ) # pylint: disable=no-member
462497 return self ._buffer
463498
464- def _write_register_byte (self , register , value ) :
499+ def _write_register_byte (self , register : int , value : int ) -> None :
465500 self ._buffer [0 ] = register & 0x7F # Write, bit 7 low.
466501 self ._buffer [1 ] = value & 0xFF
467502 with self ._spi as spi :
0 commit comments