116116_LSM303ACCEL_MG_LSB = 16704.0
117117_GRAVITY_STANDARD = 9.80665 # Earth's gravity in m/s^2
118118_GAUSS_TO_MICROTESLA = 100.0 # Gauss to micro-Tesla multiplier
119+ # pylint: enable=bad-whitespace
120+
119121
120122class LSM303 (object ):
121123 """Driver for the LSM303 accelerometer/magnetometer."""
@@ -128,122 +130,111 @@ class LSM303(object):
128130 def __init__ (self , i2c ):
129131 self ._accel_device = I2CDevice (i2c , _ADDRESS_ACCEL )
130132 self ._mag_device = I2CDevice (i2c , _ADDRESS_MAG )
131- self ._write_u8 (self ._accel_device , _REG_ACCEL_CTRL_REG1_A , 0x27 ) # Enable the accelerometer
132- self ._write_u8 (self ._mag_device , _REG_MAG_MR_REG_M , 0x00 ) # Enable the magnetometer
133+ self ._write_u8 (self ._accel_device , _REG_ACCEL_CTRL_REG1_A , 0x27 ) # Enable the accelerometer
134+ self ._write_u8 (self ._mag_device , _REG_MAG_MR_REG_M , 0x00 ) # Enable the magnetometer
133135 self ._lsm303mag_gauss_lsb_xy = 1100.0
134136 self ._lsm303mag_gauss_lsb_z = 980.0
135137 self ._mag_gain = MAGGAIN_1_3
136138 self ._mag_rate = MAGRATE_0_7
137139
138140 @property
139- def raw_accelerometer (self ):
141+ def raw_acceleration (self ):
140142 """The raw accelerometer sensor values.
141143 A 3-tuple of X, Y, Z axis values that are 16-bit signed integers.
142144 """
143145 self ._read_bytes (self ._accel_device , _REG_ACCEL_OUT_X_L_A | 0x80 , 6 , self ._BUFFER )
144146 return struct .unpack_from ('<hhh' , self ._BUFFER [0 :6 ])
145147
146-
147148 @property
148- def accelerometer (self ):
149+ def acceleration (self ):
149150 """The processed accelerometer sensor values.
150151 A 3-tuple of X, Y, Z axis values in meters per second squared that are signed floats.
151152 """
152- raw_accel_data = self .raw_accelerometer
153- return [n / _LSM303ACCEL_MG_LSB * _GRAVITY_STANDARD for n in raw_accel_data ]
154-
153+ raw_accel_data = self .raw_acceleration
154+ return tuple ([n / _LSM303ACCEL_MG_LSB * _GRAVITY_STANDARD for n in raw_accel_data ])
155155
156156 @property
157- def raw_magnetometer (self ):
157+ def raw_magnetic (self ):
158158 """The raw magnetometer sensor values.
159159 A 3-tuple of X, Y, Z axis values that are 16-bit signed integers.
160160 """
161161 self ._read_bytes (self ._mag_device , _REG_MAG_OUT_X_H_M , 6 , self ._BUFFER )
162162 raw_values = struct .unpack_from ('>hhh' , self ._BUFFER [0 :6 ])
163- return [n >> 4 for n in raw_values ]
164-
163+ return tuple ([n >> 4 for n in raw_values ])
165164
166165 @property
167- def magnetometer (self ):
166+ def magnetic (self ):
168167 """The processed magnetometer sensor values.
169168 A 3-tuple of X, Y, Z axis values in microteslas that are signed floats.
170169 """
171- mag_x , mag_y , mag_z = self .raw_magnetometer
170+ mag_x , mag_y , mag_z = self .raw_magnetic
172171 return (mag_x / self ._lsm303mag_gauss_lsb_xy * _GAUSS_TO_MICROTESLA ,
173172 mag_y / self ._lsm303mag_gauss_lsb_xy * _GAUSS_TO_MICROTESLA ,
174173 mag_z / self ._lsm303mag_gauss_lsb_z * _GAUSS_TO_MICROTESLA )
175174
176-
177175 @property
178176 def mag_gain (self ):
179177 """The magnetometer's gain."""
180178 return self ._mag_gain
181179
182-
183180 @mag_gain .setter
184181 def mag_gain (self , value ):
185- # pylint: disable=line-too-long
186- assert value in (MAGGAIN_1_3 , MAGGAIN_1_9 , MAGGAIN_2_5 , MAGGAIN_4_0 , MAGGAIN_4_7 , MAGGAIN_5_6 , MAGGAIN_8_1 )
187- # pylint: enable=line-too-long
182+ assert value in (MAGGAIN_1_3 , MAGGAIN_1_9 , MAGGAIN_2_5 , MAGGAIN_4_0 , MAGGAIN_4_7 ,
183+ MAGGAIN_5_6 , MAGGAIN_8_1 )
188184
189185 self ._mag_gain = value
190186 self ._write_u8 (self ._mag_device , _REG_MAG_CRB_REG_M , self ._mag_gain )
191187 if self ._mag_gain == MAGGAIN_1_3 :
192188 self ._lsm303mag_gauss_lsb_xy = 1100.0
193- self ._lsm303mag_gauss_lsb_z = 980.0
189+ self ._lsm303mag_gauss_lsb_z = 980.0
194190 elif self ._mag_gain == MAGGAIN_1_9 :
195191 self ._lsm303mag_gauss_lsb_xy = 855.0
196- self ._lsm303mag_gauss_lsb_z = 760.0
192+ self ._lsm303mag_gauss_lsb_z = 760.0
197193 elif self ._mag_gain == MAGGAIN_2_5 :
198194 self ._lsm303mag_gauss_lsb_xy = 670.0
199- self ._lsm303mag_gauss_lsb_z = 600.0
195+ self ._lsm303mag_gauss_lsb_z = 600.0
200196 elif self ._mag_gain == MAGGAIN_4_0 :
201197 self ._lsm303mag_gauss_lsb_xy = 450.0
202- self ._lsm303mag_gauss_lsb_z = 400.0
198+ self ._lsm303mag_gauss_lsb_z = 400.0
203199 elif self ._mag_gain == MAGGAIN_4_7 :
204200 self ._lsm303mag_gauss_lsb_xy = 400.0
205- self ._lsm303mag_gauss_lsb_z = 355.0
201+ self ._lsm303mag_gauss_lsb_z = 355.0
206202 elif self ._mag_gain == MAGGAIN_5_6 :
207203 self ._lsm303mag_gauss_lsb_xy = 330.0
208- self ._lsm303mag_gauss_lsb_z = 295.0
204+ self ._lsm303mag_gauss_lsb_z = 295.0
209205 elif self ._mag_gain == MAGGAIN_8_1 :
210206 self ._lsm303mag_gauss_lsb_xy = 230.0
211- self ._lsm303mag_gauss_lsb_z = 205.0
212-
207+ self ._lsm303mag_gauss_lsb_z = 205.0
213208
214209 @property
215210 def mag_rate (self ):
216211 """The magnetometer update rate."""
217212 return self ._mag_rate
218213
219-
220214 @mag_rate .setter
221215 def mag_rate (self , value ):
222- # pylint: disable=line-too-long
223- assert value in (MAGRATE_0_7 , MAGRATE_1_5 , MAGRATE_3_0 , MAGRATE_7_5 , MAGRATE_15 , MAGRATE_30 , MAGRATE_75 , MAGRATE_220 )
224- # pylint: enable=line-too-long
216+ assert value in (MAGRATE_0_7 , MAGRATE_1_5 , MAGRATE_3_0 , MAGRATE_7_5 , MAGRATE_15 , MAGRATE_30 ,
217+ MAGRATE_75 , MAGRATE_220 )
225218
226219 self ._mag_rate = value
227220 reg_m = ((value & 0x07 ) << 2 ) & 0xFF
228221 self ._write_u8 (self ._mag_device , _REG_MAG_CRA_REG_M , reg_m )
229222
230-
231223 def _read_u8 (self , device , address ):
232224 with device as i2c :
233225 self ._BUFFER [0 ] = address & 0xFF
234226 i2c .write (self ._BUFFER , end = 1 , stop = False )
235227 i2c .readinto (self ._BUFFER , end = 1 )
236228 return self ._BUFFER [0 ]
237229
238-
239230 def _write_u8 (self , device , address , val ):
240231 with device as i2c :
241232 self ._BUFFER [0 ] = address & 0xFF
242233 self ._BUFFER [1 ] = val & 0xFF
243234 i2c .write (self ._BUFFER , end = 2 )
244235
245- # pylint: disable=no-self-use
246- def _read_bytes (self , device , address , count , buf ):
236+ @ staticmethod
237+ def _read_bytes (device , address , count , buf ):
247238 with device as i2c :
248239 buf [0 ] = address & 0xFF
249240 i2c .write (buf , end = 1 , stop = False )
0 commit comments