From 73e93bc6d7466500955d747a283ad5a94708d389 Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Tue, 17 Oct 2017 12:32:55 +0100 Subject: [PATCH] Refactored get_sensor_data --- bme680/__init__.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/bme680/__init__.py b/bme680/__init__.py index aab5401..3235910 100644 --- a/bme680/__init__.py +++ b/bme680/__init__.py @@ -228,6 +228,12 @@ class BME680(BME680Data): self.set_power_mode(FORCED_MODE) for attempt in range(10): + status = self._get_regs(FIELD0_ADDR, 1) + + if (status & NEW_DATA_MSK) == 0: + time.sleep(POLL_PERIOD_MS / 1000.0) + continue + regs = self._get_regs(FIELD0_ADDR, FIELD_LENGTH) self.data.status = regs[0] & NEW_DATA_MSK @@ -246,17 +252,14 @@ class BME680(BME680Data): self.data.heat_stable = (self.data.status & HEAT_STAB_MSK) > 0 - if self.data.status & NEW_DATA_MSK: - temperature = self._calc_temperature(adc_temp) - self.data.temperature = temperature / 100.0 - self.ambient_temperature = temperature # Saved for heater calc + temperature = self._calc_temperature(adc_temp) + self.data.temperature = temperature / 100.0 + self.ambient_temperature = temperature # Saved for heater calc - self.data.pressure = self._calc_pressure(adc_pres) / 1000.0 - self.data.humidity = self._calc_humidity(adc_hum) / 1000.0 - self.data.gas_resistance = self._calc_gas_resistance(adc_gas_res, gas_range) - return True - else: - time.sleep(POLL_PERIOD_MS / 1000.0) + self.data.pressure = self._calc_pressure(adc_pres) / 1000.0 + self.data.humidity = self._calc_humidity(adc_hum) / 1000.0 + self.data.gas_resistance = self._calc_gas_resistance(adc_gas_res, gas_range) + return True return False