29
29
from collections import namedtuple
30
30
from adafruit_bus_device .i2c_device import I2CDevice
31
31
32
+ try :
33
+ from typing import Type
34
+ from busio import I2C
35
+ except ImportError :
36
+ pass
37
+
32
38
__version__ = "0.0.0-auto.0"
33
39
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_Nunchuk.git"
34
40
@@ -54,7 +60,9 @@ class Nunchuk:
54
60
_Buttons = namedtuple ("Buttons" , ("C" , "Z" ))
55
61
_Acceleration = namedtuple ("Acceleration" , ("x" , "y" , "z" ))
56
62
57
- def __init__ (self , i2c , address = 0x52 , i2c_read_delay = 0.002 ):
63
+ def __init__ (
64
+ self , i2c : I2C , address : int = 0x52 , i2c_read_delay : float = 0.002
65
+ ) -> None :
58
66
self .buffer = bytearray (8 )
59
67
self .i2c_device = I2CDevice (i2c , address )
60
68
self ._i2c_read_delay = i2c_read_delay
@@ -67,7 +75,7 @@ def __init__(self, i2c, address=0x52, i2c_read_delay=0.002):
67
75
i2c_dev .write (b"\xFB \x00 " )
68
76
69
77
@property
70
- def values (self ):
78
+ def values (self ) -> Type [ tuple ] :
71
79
"""The current state of all values."""
72
80
self ._read_data ()
73
81
return self ._Values (
@@ -77,33 +85,33 @@ def values(self):
77
85
)
78
86
79
87
@property
80
- def joystick (self ):
88
+ def joystick (self ) -> Type [ tuple ] :
81
89
"""The current joystick position."""
82
90
return self ._joystick ()
83
91
84
92
@property
85
- def buttons (self ): # pylint: disable=invalid-name
86
- """The current pressed state of button Z."""
93
+ def buttons (self ) -> Type [ tuple ] : # pylint: disable=invalid-name
94
+ """The current pressed state of buttons C and Z."""
87
95
return self ._buttons ()
88
96
89
97
@property
90
- def acceleration (self ):
98
+ def acceleration (self ) -> Type [ tuple ] :
91
99
"""The current accelerometer reading."""
92
100
return self ._acceleration ()
93
101
94
- def _joystick (self , do_read = True ):
102
+ def _joystick (self , do_read : bool = True ) -> Type [ tuple ] :
95
103
if do_read :
96
104
self ._read_data ()
97
105
return self ._Joystick (self .buffer [0 ], self .buffer [1 ]) # x, y
98
106
99
- def _buttons (self , do_read = True ):
107
+ def _buttons (self , do_read : bool = True ) -> Type [ tuple ] :
100
108
if do_read :
101
109
self ._read_data ()
102
110
return self ._Buttons (
103
111
not bool (self .buffer [5 ] & 0x02 ), not bool (self .buffer [5 ] & 0x01 ) # C # Z
104
112
)
105
113
106
- def _acceleration (self , do_read = True ):
114
+ def _acceleration (self , do_read : bool = True ) -> Type [ tuple ] :
107
115
if do_read :
108
116
self ._read_data ()
109
117
return self ._Acceleration (
@@ -112,10 +120,10 @@ def _acceleration(self, do_read=True):
112
120
((self .buffer [5 ] & 0x0C ) >> 2 ) | (self .buffer [4 ] << 2 ), # az
113
121
)
114
122
115
- def _read_data (self ):
123
+ def _read_data (self ) -> bytearray :
116
124
return self ._read_register (b"\x00 " )
117
125
118
- def _read_register (self , address ):
126
+ def _read_register (self , address ) -> bytearray :
119
127
with self .i2c_device as i2c :
120
128
i2c .write (address )
121
129
time .sleep (self ._i2c_read_delay ) # at least 200us
0 commit comments