@@ -210,18 +210,35 @@ def reboot(self):
210210 # Raw data reading
211211 # ---------------------------------------------------------------------
212212
213+ def _is_power_down (self ):
214+ """Return True if the sensor is in power-down mode (ODR = 000)."""
215+ return (self ._read_u8 (REG_CTRL_1 ) & CTRL1_ODR_MASK ) == 0
216+
217+ def _ensure_data (self ):
218+ """Trigger a one-shot conversion if the sensor is in power-down mode."""
219+ if self ._is_power_down ():
220+ self .trigger_one_shot ()
221+
213222 def pressure_raw (self ):
214223 """
215224 Read and return raw pressure as a signed 24-bit integer.
225+
226+ If the sensor is in power-down mode, a one-shot conversion is
227+ triggered automatically before reading.
216228 """
229+ self ._ensure_data ()
217230 data = self ._read (REG_DATA_P_XL , 3 )
218231 raw = (data [2 ] << 16 ) | (data [1 ] << 8 ) | data [0 ]
219232 return self ._to_signed24 (raw )
220233
221234 def temperature_raw (self ):
222235 """
223236 Read and return raw temperature as a signed 16-bit integer.
237+
238+ If the sensor is in power-down mode, a one-shot conversion is
239+ triggered automatically before reading.
224240 """
241+ self ._ensure_data ()
225242 data = self ._read (REG_DATA_T_L , 2 )
226243 raw = (data [1 ] << 8 ) | data [0 ]
227244 return self ._to_signed16 (raw )
@@ -258,11 +275,17 @@ def read(self):
258275 """
259276 Read and return both pressure and temperature.
260277
278+ A one-shot conversion is triggered to ensure fresh data.
279+
261280 Returns:
262281 tuple: (pressure_hpa, temperature_c)
263282 """
264283 self .trigger_one_shot ()
265- return self .pressure (), self .temperature ()
284+ p_data = self ._read (REG_DATA_P_XL , 3 )
285+ p_raw = self ._to_signed24 ((p_data [2 ] << 16 ) | (p_data [1 ] << 8 ) | p_data [0 ])
286+ t_data = self ._read (REG_DATA_T_L , 2 )
287+ t_raw = self ._to_signed16 ((t_data [1 ] << 8 ) | t_data [0 ])
288+ return p_raw * PRESSURE_HPA_PER_DIGIT , t_raw * TEMPERATURE_C_PER_DIGIT
266289
267290 # ---------------------------------------------------------------------
268291 # One-shot mode
0 commit comments