Skip to content

Commit 07670f2

Browse files
committed
Adding Type Annotations
1 parent 19bc378 commit 07670f2

File tree

1 file changed

+62
-26
lines changed

1 file changed

+62
-26
lines changed

adafruit_lis3dh.py

Lines changed: 62 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@
4040

4141
from 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

Comments
 (0)