| 
				
			 | 
			
			
				
				@@ -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
			 | 
			
			
				
				 } 
			 |