def _init_gyroscope(self): """Initialize the gyroscope according to the settings document sent in.""" # TODO: Better init handling! reg1_value = ( LSM9DS0.get_gyroscope_data_rate_bits(self._gyro_setup.get('data_rate')) + LSM9DS0.get_gyroscope_bandwidth_bits(self._gyro_setup.get('bandwidth_level')) + ('0' if self._gyro_setup.get('powerdown_mode') else '1') + ('1' if self._gyro_setup.get('enabled_z') else '0') + ('1' if self._gyro_setup.get('enabled_y') else '0') + ('1' if self._gyro_setup.get('enabled_x') else '0') ) self._write(LSM9DS0.GYR_ADDRESS, LSM9DS0.CTRL_REG1_G, int(reg1_value, 2)) # TODO: Add setup for high-pass filter, LSM9DS0.CTRL_REG2_G and LSM9DS0.CTRL_REG5_G reg4_value = ( ('0' if self._gyro_setup.get('continuous_update') else '1') + ('1' if self._gyro_setup.get('little_endian') else '0') + LSM9DS0.get_gyroscope_full_scale_bits(self._gyro_setup.get('full_scale')) + '0' + # Unused bit. LSM9DS0.get_gyroscope_self_test_bits(self._gyro_setup.get('self_test')) + '0' # SPI Serial Interface Mode selection ) self._write(LSM9DS0.GYR_ADDRESS, LSM9DS0.CTRL_REG4_G, int(reg4_value, 2))
def _init_magnetometer(self): """Initialize the magnetometer according to the settings document sent in.""" reg5_value = ( ('1' if self._mag_setup.get('enabled_temp') else '0') + ('11' if self._mag_setup.get('high_resolution') else '00') + LSM9DS0.get_magnetometer_data_rate_bits(self._mag_setup.get('data_rate')) + '00' # Latch interrupts disabled right. ) self._write(LSM9DS0.MAG_ADDRESS, LSM9DS0.CTRL_REG5_XM, int(reg5_value, 2)) reg6_value = ( '0' + # Unused bits LSM9DS0.get_magnetometer_full_scale_bits(self._mag_setup.get('full_scale')) + '00000' # Unused bits ) self._write(LSM9DS0.MAG_ADDRESS, LSM9DS0.CTRL_REG6_XM, int(reg6_value, 2)) reg7_value = ( '00' + # Accelerometer high-pass filter disabled. '0' + # Filtered acceleration data selection bypassed. '00' + # Unused bits ('1' if self._mag_setup.get('lowpower_mode') else '0') + LSM9DS0.get_magnetometer_sensor_mode_bits(self._mag_setup.get('sensor_mode')) ) self._write(LSM9DS0.MAG_ADDRESS, LSM9DS0.CTRL_REG7_XM, int(reg7_value, 2))
def _init_accelerometer(self): """Initialize the accelerometer according to the settings document sent in.""" # TODO: Better init handling! reg1_value = ( LSM9DS0.get_accelerometer_data_rate_bits(self._acc_setup.get('data_rate')) + ('0' if self._acc_setup.get('continuous_update') else '1') + ('1' if self._acc_setup.get('enabled_z') else '0') + ('1' if self._acc_setup.get('enabled_y') else '0') + ('1' if self._acc_setup.get('enabled_x') else '0') ) # Write data rate, enabled axes and block data update. self._write(LSM9DS0.ACC_ADDRESS, LSM9DS0.CTRL_REG1_XM, int(reg1_value, 2)) reg2_value = ( LSM9DS0.get_accelerometer_anti_alias_filter_bits(self._acc_setup.get('anti_alias')) + LSM9DS0.get_accelerometer_full_scale_bits(self._acc_setup.get('full_scale')) + LSM9DS0.get_accelerometer_self_test_bits(self._acc_setup.get('self_test')) + '0' # SPI Serial Interface Mode selection ) # Write anti-alias filter bandwidth, acceleration full scale and self-test mode. self._write(LSM9DS0.ACC_ADDRESS, LSM9DS0.CTRL_REG2_XM, int(reg2_value, 2))