29class BME280 : 
public ThermHygroPressMeter {
 
   31  explicit BME280(int8_t address = 0x77, 
float altitude = NAN)
 
   32      : address(address), sensorStatus(
false), altitude(altitude) {
 
   36    float value = TEMPERATURE_NOT_AVAILABLE;
 
   37    bool retryDone = 
false;
 
   39      if (!sensorStatus || isnan(value)) {
 
   40        sensorStatus = bme.begin(address);
 
   43      value = TEMPERATURE_NOT_AVAILABLE;
 
   45        value = bme.readTemperature();
 
   47    } 
while (isnan(value) && !retryDone);
 
   52    float value = HUMIDITY_NOT_AVAILABLE;
 
   53    bool retryDone = 
false;
 
   55      if (!sensorStatus || isnan(value)) {
 
   56        sensorStatus = bme.begin(address);
 
   59      value = HUMIDITY_NOT_AVAILABLE;
 
   61        value = bme.readHumidity();
 
   63    } 
while (isnan(value) && !retryDone);
 
   67  double getPressure() {
 
   68    float value = PRESSURE_NOT_AVAILABLE;
 
   69    bool retryDone = 
false;
 
   71      if (!sensorStatus || isnan(value)) {
 
   72        sensorStatus = bme.begin(address);
 
   75      value = PRESSURE_NOT_AVAILABLE;
 
   77        value = bme.readPressure() / 100.0;
 
   79    } 
while (isnan(value) && !retryDone);
 
   80    if (!isnan(altitude)) {
 
   81      value = bme.seaLevelForAltitude(altitude, value);
 
   87    sensorStatus = bme.begin(address);
 
   89    pressureChannel.setNewValue(getPressure());
 
   90    channel.setNewValue(getTemp(), getHumi());
 
 
   93  void setAltitude(
float newAltitude) {
 
   94    altitude = newAltitude;