32
32
import adafruit_bus_device .i2c_device as i2cdevice
33
33
from micropython import const
34
34
35
+ try :
36
+ from typing import Tuple
37
+ from busio import I2C
38
+ except ImportError :
39
+ pass
40
+
35
41
__version__ = "0.0.0+auto.0"
36
42
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_TLV493D.git"
37
43
@@ -102,7 +108,9 @@ class TLV493D:
102
108
"RES3" : (3 , 0x1F , 0 ),
103
109
}
104
110
105
- def __init__ (self , i2c_bus , address = _TLV493D_DEFAULT_ADDRESS , addr_reg = 0 ):
111
+ def __init__ (
112
+ self , i2c_bus : I2C , address : int = _TLV493D_DEFAULT_ADDRESS , addr_reg : int = 0
113
+ ) -> None :
106
114
self .i2c_device = i2cdevice .I2CDevice (i2c_bus , address )
107
115
self .read_buffer = bytearray (10 )
108
116
self .write_buffer = bytearray (4 )
@@ -119,36 +127,36 @@ def __init__(self, i2c_bus, address=_TLV493D_DEFAULT_ADDRESS, addr_reg=0):
119
127
self ._set_write_key ("LOWPOWER" , 1 )
120
128
self ._write_i2c ()
121
129
122
- def _read_i2c (self ):
130
+ def _read_i2c (self ) -> None :
123
131
with self .i2c_device as i2c :
124
132
i2c .readinto (self .read_buffer )
125
133
# self.print_bytes(self.read_buffer)
126
134
127
- def _write_i2c (self ):
135
+ def _write_i2c (self ) -> None :
128
136
with self .i2c_device as i2c :
129
137
i2c .write (self .write_buffer )
130
138
131
- def _setup_write_buffer (self ):
139
+ def _setup_write_buffer (self ) -> None :
132
140
self ._read_i2c ()
133
141
for key in ["RES1" , "RES2" , "RES3" ]:
134
142
write_value = self ._get_read_key (key )
135
143
self ._set_write_key (key , write_value )
136
144
137
- def _get_read_key (self , key ) :
145
+ def _get_read_key (self , key : str ) -> int :
138
146
read_byte_num , read_mask , read_shift = self .read_masks [key ]
139
147
raw_read_value = self .read_buffer [read_byte_num ]
140
148
write_value = (raw_read_value & read_mask ) >> read_shift
141
149
return write_value
142
150
143
- def _set_write_key (self , key , value ) :
151
+ def _set_write_key (self , key : str , value : int ) -> None :
144
152
write_byte_num , write_mask , write_shift = self .write_masks [key ]
145
153
current_write_byte = self .write_buffer [write_byte_num ]
146
154
current_write_byte &= ~ write_mask
147
155
current_write_byte |= value << write_shift
148
156
self .write_buffer [write_byte_num ] = current_write_byte
149
157
150
158
@property
151
- def magnetic (self ):
159
+ def magnetic (self ) -> Tuple [ float , float , float ] :
152
160
"""The processed magnetometer sensor values.
153
161
A 3-tuple of X, Y, Z axis values in microteslas that are signed floats.
154
162
"""
@@ -166,7 +174,8 @@ def magnetic(self):
166
174
self ._unpack_and_scale (z_top , z_bot ),
167
175
)
168
176
169
- def _unpack_and_scale (self , top , bottom ): # pylint: disable=no-self-use
177
+ @staticmethod
178
+ def _unpack_and_scale (top : int , bottom : int ) -> float :
170
179
binval = struct .unpack_from (">h" , bytearray ([top , bottom ]))[0 ]
171
180
binval = binval >> 4
172
181
return binval * 0.098
0 commit comments