4040
4141from micropython import const
4242
43+ try :
44+ from typing_extensions import Literal
45+ from busio import I2C , SPI
46+ except ImportError :
47+ pass
48+
49+
4350__version__ = "0.0.0+auto.0"
4451__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_LIS3DH.git"
4552
@@ -93,7 +100,9 @@ class LIS3DH:
93100 the LIS3DH INT2 interrupt pin
94101 """
95102
96- def __init__ (self , int1 = None , int2 = None ):
103+ def __init__ (
104+ self , int1 : digitalio .DigitalInOut = None , int2 : digitalio .DigitalInOut = None
105+ ) -> None :
97106 # Check device ID.
98107 device_id = self ._read_register_byte (_REG_WHOAMI )
99108 if device_id != 0x33 :
@@ -120,7 +129,11 @@ def __init__(self, int1=None, int2=None):
120129 self ._int1 .pull = digitalio .Pull .UP
121130
122131 @property
123- def data_rate (self ):
132+ def data_rate (
133+ self ,
134+ ) -> Literal [
135+ 0 , 0b0001 , 0b0010 , 0b0011 , 0b0100 , 0b0101 , 0b0110 , 0b0111 , 0b1000 , 0b1001
136+ ]:
124137 """The data rate of the accelerometer.
125138
126139 Could have the following values:
@@ -141,14 +154,19 @@ def data_rate(self):
141154 return (ctl1 >> 4 ) & 0x0F
142155
143156 @data_rate .setter
144- def data_rate (self , rate ):
157+ def data_rate (
158+ self ,
159+ rate : Literal [
160+ 0 , 0b0001 , 0b0010 , 0b0011 , 0b0100 , 0b0101 , 0b0110 , 0b0111 , 0b1000 , 0b1001
161+ ],
162+ ):
145163 ctl1 = self ._read_register_byte (_REG_CTRL1 )
146164 ctl1 &= ~ (0xF0 )
147165 ctl1 |= rate << 4
148166 self ._write_register_byte (_REG_CTRL1 , ctl1 )
149167
150168 @property
151- def range (self ):
169+ def range (self ) -> Literal [ 0b00 , 0b01 , 0b10 , 0b11 ] :
152170 """The range of the accelerometer.
153171
154172 Could have the following values:
@@ -163,14 +181,14 @@ def range(self):
163181 return (ctl4 >> 4 ) & 0x03
164182
165183 @range .setter
166- def range (self , range_value ):
184+ def range (self , range_value : Literal [ 0b00 , 0b01 , 0b10 , 0b11 ] ):
167185 ctl4 = self ._read_register_byte (_REG_CTRL4 )
168186 ctl4 &= ~ 0x30
169187 ctl4 |= range_value << 4
170188 self ._write_register_byte (_REG_CTRL4 , ctl4 )
171189
172190 @property
173- def acceleration (self ):
191+ def acceleration (self ) -> AccelerationTuple :
174192 """The x, y, z acceleration values returned
175193 in a 3-tuple and are in :math:`m / s ^ 2`"""
176194 divider = 1
@@ -193,7 +211,9 @@ def acceleration(self):
193211
194212 return AccelerationTuple (x , y , z )
195213
196- def shake (self , shake_threshold = 30 , avg_count = 10 , total_delay = 0.1 ):
214+ def shake (
215+ self , shake_threshold : int = 30 , avg_count : int = 10 , total_delay : float = 0.1
216+ ) -> bool :
197217 """Detect when the accelerometer is shaken. Optional parameters:
198218
199219 :param int shake_threshold: Increase or decrease to change shake sensitivity.
@@ -226,7 +246,7 @@ def shake(self, shake_threshold=30, avg_count=10, total_delay=0.1):
226246 total_accel = math .sqrt (sum (map (lambda x : x * x , avg )))
227247 return total_accel > shake_threshold
228248
229- def read_adc_raw (self , adc ) :
249+ def read_adc_raw (self , adc : Literal [ 1 , 2 , 3 ]) -> int :
230250 """Retrieve the raw analog to digital converter value. ADC must be a
231251 value 1, 2, or 3.
232252 """
@@ -237,7 +257,8 @@ def read_adc_raw(self, adc):
237257 "<h" , self ._read_register ((_REG_OUTADC1_L + ((adc - 1 ) * 2 )) | 0x80 , 2 )[0 :2 ]
238258 )[0 ]
239259
240- def read_adc_mV (self , adc ): # pylint: disable=invalid-name
260+ # pylint: disable=invalid-name
261+ def read_adc_mV (self , adc : Literal [1 , 2 , 3 ]) -> float :
241262 """Read the specified analog to digital converter value in millivolts.
242263 ADC must be a value 1, 2, or 3. NOTE the ADC can only measure voltages
243264 in the range of ~900-1200mV!
@@ -256,7 +277,7 @@ def read_adc_mV(self, adc): # pylint: disable=invalid-name
256277 return 1800 + (raw + 32512 ) * (- 900 / 65024 )
257278
258279 @property
259- def tapped (self ):
280+ def tapped (self ) -> int :
260281 """
261282 True if a tap was detected recently. Whether its a single tap or double tap is
262283 determined by the tap param on :attr:`set_tap`. :attr:`tapped` may be True over
@@ -284,14 +305,14 @@ def tapped(self):
284305
285306 def set_tap (
286307 self ,
287- tap ,
288- threshold ,
308+ tap : Literal [ 0 , 1 , 2 ] ,
309+ threshold : int ,
289310 * ,
290- time_limit = 10 ,
291- time_latency = 20 ,
292- time_window = 255 ,
293- click_cfg = None
294- ):
311+ time_limit : int = 10 ,
312+ time_latency : int = 20 ,
313+ time_window : int = 255 ,
314+ click_cfg : int = None
315+ ) -> None :
295316 """
296317 The tap detection parameters.
297318
@@ -338,17 +359,17 @@ def set_tap(
338359 self ._write_register_byte (_REG_TIMELATENCY , time_latency )
339360 self ._write_register_byte (_REG_TIMEWINDOW , time_window )
340361
341- def _read_register_byte (self , register ) :
362+ def _read_register_byte (self , register : int ) -> int :
342363 # Read a byte register value and return it.
343364 return self ._read_register (register , 1 )[0 ]
344365
345- def _read_register (self , register , length ) :
366+ def _read_register (self , register : int , length : int ) -> None :
346367 # Read an arbitrarily long register (specified by length number of
347368 # bytes) and return a bytearray of the retrieved data.
348369 # Subclasses MUST implement this!
349370 raise NotImplementedError
350371
351- def _write_register_byte (self , register , value ) :
372+ def _write_register_byte (self , register : int , value : int ) -> None :
352373 # Write a single byte register at the specified register address.
353374 # Subclasses MUST implement this!
354375 raise NotImplementedError
@@ -387,7 +408,14 @@ class LIS3DH_I2C(LIS3DH):
387408
388409 """
389410
390- def __init__ (self , i2c , * , address = 0x18 , int1 = None , int2 = None ):
411+ def __init__ (
412+ self ,
413+ i2c : I2C ,
414+ * ,
415+ address : int = 0x18 ,
416+ int1 : digitalio .DigitalInOut = None ,
417+ int2 : digitalio .DigitalInOut = None
418+ ) -> None :
391419 from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
392420 i2c_device ,
393421 )
@@ -396,14 +424,14 @@ def __init__(self, i2c, *, address=0x18, int1=None, int2=None):
396424 self ._buffer = bytearray (6 )
397425 super ().__init__ (int1 = int1 , int2 = int2 )
398426
399- def _read_register (self , register , length ) :
427+ def _read_register (self , register : int , length : int ) -> bytearray :
400428 self ._buffer [0 ] = register & 0xFF
401429 with self ._i2c as i2c :
402430 i2c .write (self ._buffer , start = 0 , end = 1 )
403431 i2c .readinto (self ._buffer , start = 0 , end = length )
404432 return self ._buffer
405433
406- def _write_register_byte (self , register , value ) :
434+ def _write_register_byte (self , register : int , value : int ) -> None :
407435 self ._buffer [0 ] = register & 0xFF
408436 self ._buffer [1 ] = value & 0xFF
409437 with self ._i2c as i2c :
@@ -442,7 +470,15 @@ class LIS3DH_SPI(LIS3DH):
442470
443471 """
444472
445- def __init__ (self , spi , cs , * , baudrate = 100000 , int1 = None , int2 = None ):
473+ def __init__ (
474+ self ,
475+ spi : SPI ,
476+ cs : digitalio .DigitalInOut ,
477+ * ,
478+ baudrate : int = 100000 ,
479+ int1 : digitalio .DigitalInOut = None ,
480+ int2 : digitalio .DigitalInOut = None
481+ ) -> None :
446482 from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
447483 spi_device ,
448484 )
@@ -451,7 +487,7 @@ def __init__(self, spi, cs, *, baudrate=100000, int1=None, int2=None):
451487 self ._buffer = bytearray (6 )
452488 super ().__init__ (int1 = int1 , int2 = int2 )
453489
454- def _read_register (self , register , length ) :
490+ def _read_register (self , register : int , length : int ) -> bytearray :
455491 if length == 1 :
456492 self ._buffer [0 ] = (register | 0x80 ) & 0xFF # Read single, bit 7 high.
457493 else :
@@ -461,7 +497,7 @@ def _read_register(self, register, length):
461497 spi .readinto (self ._buffer , start = 0 , end = length ) # pylint: disable=no-member
462498 return self ._buffer
463499
464- def _write_register_byte (self , register , value ) :
500+ def _write_register_byte (self , register : int , value : int ) -> None :
465501 self ._buffer [0 ] = register & 0x7F # Write, bit 7 low.
466502 self ._buffer [1 ] = value & 0xFF
467503 with self ._spi as spi :
0 commit comments