def write_measurement_mode( self, drive_mode: int, enable_data_ready_interrupt: bool, enable_threshold_interrupt: bool, retry: bool = True, ) -> None: """Writes measurement mode to the sensor.""" self.logger.debug("Writing measurement mode") # Initialize bits bits = {7: 0, 1: 0, 0: 0} # Set drive mode if drive_mode == 0: bits.update({6: 0, 5: 0, 4: 0}) elif drive_mode == 1: bits.update({6: 0, 5: 0, 4: 1}) elif drive_mode == 2: bits.update({6: 0, 5: 1, 4: 0}) elif drive_mode == 3: bits.update({6: 0, 5: 1, 4: 1}) elif drive_mode == 4: bits.update({6: 1, 5: 0, 4: 0}) else: raise ValueError("Invalid drive mode") # Set data ready interrupt bits.update({3: int(enable_data_ready_interrupt)}) # Set threshold interrupt bits.update({2: int(enable_data_ready_interrupt)}) # Convert bits to byte sbits = {} for key in sorted(bits.keys(), reverse=True): sbits[key] = bits[key] self.logger.error("bits = {}".format(sbits)) # TODO: remove write_byte = bitwise.get_byte_from_bits(bits) self.logger.error( "write_byte = 0x{:02X}".format(write_byte)) # TODO: remove # Write measurement mode to sensor try: self.i2c.write(bytes([0x01, write_byte]), retry=retry) except I2CError as e: raise exceptions.WriteMeasurementModeError( logger=self.logger) from e
def test_get_byte_from_bit(): bits = {7: 0, 6: 1, 5: 0, 4: 0, 3: 1, 2: 1, 1: 0, 0: 0} byte = bitwise.get_byte_from_bits(bits) assert byte == 0x4C