Skip to content

Commit 61ca587

Browse files
authored
Merge pull request #76 from jposada202020/type_annotations
Adding Type Annotations
2 parents c656fa9 + 59c6692 commit 61ca587

File tree

1 file changed

+61
-26
lines changed

1 file changed

+61
-26
lines changed

adafruit_lis3dh.py

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

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

Comments
 (0)