|  | @@ -56,10 +56,10 @@ AppCore::AppCore()
 | 
		
	
		
			
			| 56 | 56 |            , m_pBtnOk(new Button{PIN_BTN_OK})
 | 
		
	
		
			
			| 57 | 57 |            , m_pBtnMinus(new Button{PIN_BTN_MINUS})
 | 
		
	
		
			
			| 58 | 58 |            , m_pBtnPlus(new Button{PIN_BTN_PLUS})
 | 
		
	
		
			
			| 59 |  | -          , m_buttons{m_pBtnOk, m_pBtnMinus, m_pBtnPlus}
 | 
		
	
		
			
			| 60 |  | -          , m_lcd{PIN_LCD_RS, PIN_LCD_ENABLE, PIN_LCD_D4, PIN_LCD_D5, PIN_LCD_D6, PIN_LCD_D7}
 | 
		
	
		
			
			| 61 |  | -          , m_oneWire{PIN_ONEWIRE}
 | 
		
	
		
			
			| 62 |  | -          , m_sensors{&m_oneWire}
 | 
		
	
		
			
			|  | 59 | +          , m_pButtons{m_pBtnOk, m_pBtnMinus, m_pBtnPlus}
 | 
		
	
		
			
			|  | 60 | +          , m_pLcd(new LiquidCrystal{PIN_LCD_RS, PIN_LCD_ENABLE, PIN_LCD_D4, PIN_LCD_D5, PIN_LCD_D6, PIN_LCD_D7})
 | 
		
	
		
			
			|  | 61 | +          , m_pOneWire(new OneWire{PIN_ONEWIRE})
 | 
		
	
		
			
			|  | 62 | +          , m_pSensors(new DallasTemperature{m_pOneWire})
 | 
		
	
		
			
			| 63 | 63 |            , m_sensor1{0}
 | 
		
	
		
			
			| 64 | 64 |            , m_sensor2{0}
 | 
		
	
		
			
			| 65 | 65 |  {
 | 
		
	
	
		
			
			|  | @@ -70,13 +70,13 @@ void AppCore::setup()
 | 
		
	
		
			
			| 70 | 70 |      Serial.begin(9600);
 | 
		
	
		
			
			| 71 | 71 |      LOG_FN_BEGIN(1);
 | 
		
	
		
			
			| 72 | 72 |  
 | 
		
	
		
			
			| 73 |  | -    m_sensors.begin();
 | 
		
	
		
			
			| 74 |  | -    LOG(5, "Found %i sensors", m_sensors.getDeviceCount());
 | 
		
	
		
			
			| 75 |  | -    m_sensors.getAddress(m_sensor1, 0);
 | 
		
	
		
			
			| 76 |  | -    m_sensors.getAddress(m_sensor2, 1);
 | 
		
	
		
			
			| 77 |  | -    m_sensors.setWaitForConversion(false);
 | 
		
	
		
			
			|  | 73 | +    m_pSensors->begin();
 | 
		
	
		
			
			|  | 74 | +    LOG(5, "Found %i sensors", m_pSensors->getDeviceCount());
 | 
		
	
		
			
			|  | 75 | +    m_pSensors->getAddress(m_sensor1, 0);
 | 
		
	
		
			
			|  | 76 | +    m_pSensors->getAddress(m_sensor2, 1);
 | 
		
	
		
			
			|  | 77 | +    m_pSensors->setWaitForConversion(false);
 | 
		
	
		
			
			| 78 | 78 |  
 | 
		
	
		
			
			| 79 |  | -    for (auto& g_button : m_buttons)
 | 
		
	
		
			
			|  | 79 | +    for (auto& g_button : m_pButtons)
 | 
		
	
		
			
			| 80 | 80 |      {
 | 
		
	
		
			
			| 81 | 81 |          g_button->begin();
 | 
		
	
		
			
			| 82 | 82 |      }
 | 
		
	
	
		
			
			|  | @@ -90,7 +90,7 @@ void AppCore::setup()
 | 
		
	
		
			
			| 90 | 90 |      pinMode(PIN_LCD_LED, OUTPUT);
 | 
		
	
		
			
			| 91 | 91 |      digitalWrite(PIN_LCD_LED, 1);
 | 
		
	
		
			
			| 92 | 92 |  
 | 
		
	
		
			
			| 93 |  | -    m_lcd.begin(16, 2);
 | 
		
	
		
			
			|  | 93 | +    m_pLcd->begin(16, 2);
 | 
		
	
		
			
			| 94 | 94 |      byte sensorChar[8] = {
 | 
		
	
		
			
			| 95 | 95 |              B00100,
 | 
		
	
		
			
			| 96 | 96 |              B01110,
 | 
		
	
	
		
			
			|  | @@ -101,11 +101,11 @@ void AppCore::setup()
 | 
		
	
		
			
			| 101 | 101 |              B11111,
 | 
		
	
		
			
			| 102 | 102 |              B01110,
 | 
		
	
		
			
			| 103 | 103 |      };
 | 
		
	
		
			
			| 104 |  | -    m_lcd.createChar(LCD_CHAR_SENSOR, sensorChar);
 | 
		
	
		
			
			|  | 104 | +    m_pLcd->createChar(LCD_CHAR_SENSOR, sensorChar);
 | 
		
	
		
			
			| 105 | 105 |  
 | 
		
	
		
			
			| 106 | 106 |  
 | 
		
	
		
			
			| 107 | 107 |      bool allButtonsPressed = true;
 | 
		
	
		
			
			| 108 |  | -    for (auto& g_button : m_buttons)
 | 
		
	
		
			
			|  | 108 | +    for (auto& g_button : m_pButtons)
 | 
		
	
		
			
			| 109 | 109 |      {
 | 
		
	
		
			
			| 110 | 110 |          g_button->read();
 | 
		
	
		
			
			| 111 | 111 |          allButtonsPressed = allButtonsPressed && g_button->isPressed();
 | 
		
	
	
		
			
			|  | @@ -119,13 +119,13 @@ void AppCore::setup()
 | 
		
	
		
			
			| 119 | 119 |      {
 | 
		
	
		
			
			| 120 | 120 |          LOG(5, "%s: Resetting settings", __FUNCTION__);
 | 
		
	
		
			
			| 121 | 121 |          m_storage.save(*m_appCoreState);
 | 
		
	
		
			
			| 122 |  | -        m_lcd.clear();
 | 
		
	
		
			
			| 123 |  | -        m_lcd.setCursor(6, 0);
 | 
		
	
		
			
			| 124 |  | -        m_lcd.print("Reset");
 | 
		
	
		
			
			|  | 122 | +        m_pLcd->clear();
 | 
		
	
		
			
			|  | 123 | +        m_pLcd->setCursor(6, 0);
 | 
		
	
		
			
			|  | 124 | +        m_pLcd->print("Reset");
 | 
		
	
		
			
			| 125 | 125 |          bool allButtonsPressed = true;
 | 
		
	
		
			
			| 126 | 126 |          while (allButtonsPressed)
 | 
		
	
		
			
			| 127 | 127 |          {
 | 
		
	
		
			
			| 128 |  | -            for (auto& g_button : m_buttons)
 | 
		
	
		
			
			|  | 128 | +            for (auto& g_button : m_pButtons)
 | 
		
	
		
			
			| 129 | 129 |              {
 | 
		
	
		
			
			| 130 | 130 |                  g_button->read();
 | 
		
	
		
			
			| 131 | 131 |                  allButtonsPressed = allButtonsPressed && g_button->isPressed();
 | 
		
	
	
		
			
			|  | @@ -146,8 +146,8 @@ void AppCore::loop()
 | 
		
	
		
			
			| 146 | 146 |      {
 | 
		
	
		
			
			| 147 | 147 |          m_appCoreState->appState.lastSensorRequestMs = currentMs;
 | 
		
	
		
			
			| 148 | 148 |          m_appCoreState->appState.hasReadSensors = false;
 | 
		
	
		
			
			| 149 |  | -        m_sensors.requestTemperaturesByAddress(m_sensor1);
 | 
		
	
		
			
			| 150 |  | -        m_sensors.requestTemperaturesByAddress(m_sensor2);
 | 
		
	
		
			
			|  | 149 | +        m_pSensors->requestTemperaturesByAddress(m_sensor1);
 | 
		
	
		
			
			|  | 150 | +        m_pSensors->requestTemperaturesByAddress(m_sensor2);
 | 
		
	
		
			
			| 151 | 151 |      }
 | 
		
	
		
			
			| 152 | 152 |      if (currentMs - m_appCoreState->appState.lastSensorRequestMs >= SENSORS_REQUEST_DELAY &&
 | 
		
	
		
			
			| 153 | 153 |          !m_appCoreState->appState.hasReadSensors)
 | 
		
	
	
		
			
			|  | @@ -160,7 +160,7 @@ void AppCore::loop()
 | 
		
	
		
			
			| 160 | 160 |      }
 | 
		
	
		
			
			| 161 | 161 |  
 | 
		
	
		
			
			| 162 | 162 |  
 | 
		
	
		
			
			| 163 |  | -    for (auto& pButton : m_buttons)
 | 
		
	
		
			
			|  | 163 | +    for (auto& pButton : m_pButtons)
 | 
		
	
		
			
			| 164 | 164 |      {
 | 
		
	
		
			
			| 165 | 165 |          pButton->read();
 | 
		
	
		
			
			| 166 | 166 |          if (pButton->isPressed())
 | 
		
	
	
		
			
			|  | @@ -173,7 +173,7 @@ void AppCore::loop()
 | 
		
	
		
			
			| 173 | 173 |  
 | 
		
	
		
			
			| 174 | 174 |      if (m_appCoreState->uiState.state == Hibernate)
 | 
		
	
		
			
			| 175 | 175 |      {
 | 
		
	
		
			
			| 176 |  | -        for (auto& pButton : m_buttons)
 | 
		
	
		
			
			|  | 176 | +        for (auto& pButton : m_pButtons)
 | 
		
	
		
			
			| 177 | 177 |          {
 | 
		
	
		
			
			| 178 | 178 |              if (pButton->wasReleased())
 | 
		
	
		
			
			| 179 | 179 |              {
 | 
		
	
	
		
			
			|  | @@ -287,7 +287,7 @@ void AppCore::readAndUpdateSensors(
 | 
		
	
		
			
			| 287 | 287 |  {
 | 
		
	
		
			
			| 288 | 288 |      LOG_FN_BEGIN(2);
 | 
		
	
		
			
			| 289 | 289 |  
 | 
		
	
		
			
			| 290 |  | -    auto raw = m_sensors.getTempC(sensor);
 | 
		
	
		
			
			|  | 290 | +    auto raw = m_pSensors->getTempC(sensor);
 | 
		
	
		
			
			| 291 | 291 |      temp_t temp = TEMP_T_INVALID;
 | 
		
	
		
			
			| 292 | 292 |      if (raw != DEVICE_DISCONNECTED_C)
 | 
		
	
		
			
			| 293 | 293 |      {
 | 
		
	
	
		
			
			|  | @@ -307,10 +307,10 @@ void AppCore::printState()
 | 
		
	
		
			
			| 307 | 307 |  {
 | 
		
	
		
			
			| 308 | 308 |      LOG_FN_BEGIN(2);
 | 
		
	
		
			
			| 309 | 309 |  
 | 
		
	
		
			
			| 310 |  | -    m_lcd.setCursor(0, 0);
 | 
		
	
		
			
			|  | 310 | +    m_pLcd->setCursor(0, 0);
 | 
		
	
		
			
			| 311 | 311 |      printStateLine('S', &m_appCoreState->appState.water, m_appCoreState->uiState.state == WaterSetting,
 | 
		
	
		
			
			| 312 | 312 |                     m_appCoreState->appState.water.isActive);
 | 
		
	
		
			
			| 313 |  | -    m_lcd.setCursor(0, 1);
 | 
		
	
		
			
			|  | 313 | +    m_pLcd->setCursor(0, 1);
 | 
		
	
		
			
			| 314 | 314 |      printStateLine('C', &m_appCoreState->appState.heater, m_appCoreState->uiState.state == HeaterSetting,
 | 
		
	
		
			
			| 315 | 315 |                     m_appCoreState->appState.heater.isActive);
 | 
		
	
		
			
			| 316 | 316 |      m_appCoreState->uiState.isUpdateNeeded = false;
 | 
		
	
	
		
			
			|  | @@ -338,7 +338,7 @@ AppCore::printStateLine(
 | 
		
	
		
			
			| 338 | 338 |          tmp[count] = ' ';
 | 
		
	
		
			
			| 339 | 339 |      }
 | 
		
	
		
			
			| 340 | 340 |      tmp[count] = 0;
 | 
		
	
		
			
			| 341 |  | -    m_lcd.print(tmp);
 | 
		
	
		
			
			|  | 341 | +    m_pLcd->print(tmp);
 | 
		
	
		
			
			| 342 | 342 |  
 | 
		
	
		
			
			| 343 | 343 |      LOG_FN_END(2);
 | 
		
	
		
			
			| 344 | 344 |  }
 |