31
31
32
32
* Author(s): Tony DiCola
33
33
"""
34
- import ustruct
34
+ try :
35
+ import ustruct as struct
36
+ except ImportError :
37
+ import struct
35
38
36
39
import adafruit_bus_device .i2c_device as i2c_device
37
40
from micropython import const
@@ -146,9 +149,9 @@ def read_raw_accel_mag(self):
146
149
self ._BUFFER [0 ] = _FXOS8700_REGISTER_OUT_X_MSB
147
150
i2c .write (self ._BUFFER , end = 1 , stop = False )
148
151
i2c .readinto (self ._BUFFER , end = 6 )
149
- accel_raw_x = ustruct .unpack_from ('>H' , self ._BUFFER [0 :2 ])[0 ]
150
- accel_raw_y = ustruct .unpack_from ('>H' , self ._BUFFER [2 :4 ])[0 ]
151
- accel_raw_z = ustruct .unpack_from ('>H' , self ._BUFFER [4 :6 ])[0 ]
152
+ accel_raw_x = struct .unpack_from ('>H' , self ._BUFFER [0 :2 ])[0 ]
153
+ accel_raw_y = struct .unpack_from ('>H' , self ._BUFFER [2 :4 ])[0 ]
154
+ accel_raw_z = struct .unpack_from ('>H' , self ._BUFFER [4 :6 ])[0 ]
152
155
# Convert accelerometer data to signed 14-bit value from 16-bit
153
156
# left aligned 2's compliment value.
154
157
accel_raw_x = _twos_comp (accel_raw_x >> 2 , 14 )
@@ -160,38 +163,32 @@ def read_raw_accel_mag(self):
160
163
self ._BUFFER [0 ] = _FXOS8700_REGISTER_MOUT_X_MSB
161
164
i2c .write (self ._BUFFER , end = 1 , stop = False )
162
165
i2c .readinto (self ._BUFFER , end = 6 )
163
- mag_raw_x = ustruct .unpack_from ('>h' , self ._BUFFER [0 :2 ])[0 ]
164
- mag_raw_y = ustruct .unpack_from ('>h' , self ._BUFFER [2 :4 ])[0 ]
165
- mag_raw_z = ustruct .unpack_from ('>h' , self ._BUFFER [4 :6 ])[0 ]
166
+ mag_raw_x = struct .unpack_from ('>h' , self ._BUFFER [0 :2 ])[0 ]
167
+ mag_raw_y = struct .unpack_from ('>h' , self ._BUFFER [2 :4 ])[0 ]
168
+ mag_raw_z = struct .unpack_from ('>h' , self ._BUFFER [4 :6 ])[0 ]
166
169
return ((accel_raw_x , accel_raw_y , accel_raw_z ),
167
170
(mag_raw_x , mag_raw_y , mag_raw_z ))
168
171
169
- # pylint is confused and incorrectly marking this function as bad return
170
- # types. Perhaps it doesn't understand map returns an iterable value.
171
- # Disable the warning.
172
- # pylint: disable=inconsistent-return-statements
173
172
@property
174
173
def accelerometer (self ):
175
174
"""Read the acceleration from the accelerometer and return its X, Y, Z axis values as a
176
175
3-tuple in m/s^2.
177
176
"""
178
177
accel_raw , _ = self .read_raw_accel_mag ()
179
178
# Convert accel values to m/s^2
179
+ factor = 0
180
180
if self ._accel_range == ACCEL_RANGE_2G :
181
- return map (lambda x : x * _ACCEL_MG_LSB_2G * _SENSORS_GRAVITY_STANDARD ,
182
- accel_raw )
181
+ factor = _ACCEL_MG_LSB_2G
183
182
elif self ._accel_range == ACCEL_RANGE_4G :
184
- return map (lambda x : x * _ACCEL_MG_LSB_4G * _SENSORS_GRAVITY_STANDARD ,
185
- accel_raw )
183
+ factor = _ACCEL_MG_LSB_4G
186
184
elif self ._accel_range == ACCEL_RANGE_8G :
187
- return map (lambda x : x * _ACCEL_MG_LSB_8G * _SENSORS_GRAVITY_STANDARD ,
188
- accel_raw )
189
- # pylint: enable=inconsistent-return-statements
185
+ factor = _ACCEL_MG_LSB_8G
186
+ return [x * factor * _SENSORS_GRAVITY_STANDARD for x in accel_raw ]
190
187
191
188
@property
192
189
def magnetometer (self ):
193
190
"""Read the magnetometer values and return its X, Y, Z axis values as a 3-tuple in uTeslas.
194
191
"""
195
192
_ , mag_raw = self .read_raw_accel_mag ()
196
193
# Convert mag values to uTesla
197
- return map ( lambda x : x * _MAG_UT_LSB , mag_raw )
194
+ return [ x * _MAG_UT_LSB for x in mag_raw ]
0 commit comments