SpaIot Library
controlpanel.h
1/*
2 * SpaIot Library (c) by epsilonrt - epsilonrt@gmail.com
3 * This file is part of SpaIot library <https://github.com/epsilonrt/spaiot-lib>
4 *
5 * SpaIot library is licensed under a
6 * Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
7 *
8 * You should have received a copy of the license along with this
9 * work. If not, see <http://creativecommons.org/licenses/by-nc-sa/4.0/>.
10 *
11 * SpaIot library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY;
13 */
14#pragma once
15
16#include "hardwaresettings.h"
17#include "framedecoder.h"
18#include "button.h"
19
20namespace SpaIot {
21
30 class ControlPanel : public FrameDecoder {
31 public:
37 static ControlPanel & singleton (const HardwareSettings & hwsettings);
42 static ControlPanel & singleton (const String & hwSettingsName);
49 static ControlPanel * getInstance (const HardwareSettings & hwsettings);
55 static ControlPanel * getInstance (const String & hwSettingsName);
61 void begin();
68 bool isOpened() const;
74 bool hasButton (int key) const;
80 const std::map <int, Button> & buttons() const;
86 Button & button(int key);
92 bool pushButton (int key);
98 uint8_t setPower (bool v = true);
104 uint8_t setFilter (bool v = true);
110 uint8_t setHeater (bool v = true);
116 uint8_t setBubble (bool v = true);
122 uint8_t setJet (bool v = true);
128 bool setDesiredTemp (uint16_t temp);
135 bool setSanitizerTime (uint16_t time);
142 uint16_t waitForDesiredTemp (unsigned long MaxWaitingTimeMs = 5000);
149
150 protected:
151 ControlPanel (const HardwareSettings & hwsettings);
152 uint8_t setKeyOn (int key, bool v);
153
154 private:
155 bool m_isopened;
156 std::map <int, Button> m_button;
157 static ControlPanel * m_instance;
158 };
159
160}
Control Panel.
Definition: controlpanel.h:30
bool hasButton(int key) const
Check if the hardware configuration has the button.
uint8_t setJet(bool v=true)
Start or stop the water jets.
uint8_t setBubble(bool v=true)
Start or stop the the bubble generator.
bool pushButton(int key)
Press and release a button.
static ControlPanel & singleton(const String &hwSettingsName)
bool setDesiredTemp(uint16_t temp)
Setting the desired water temperature.
static ControlPanel & singleton(const HardwareSettings &hwsettings)
Create the control panel singleton with the provided settings.
uint16_t waitForDesiredTemp(unsigned long MaxWaitingTimeMs=5000)
Press the TempUp button to read the desired temperature.
uint8_t setPower(bool v=true)
Start or stop the spa.
void begin()
Configures each of the buttons and initializes and connect with the spa.
Button & button(int key)
Button.
static ControlPanel * getInstance(const HardwareSettings &hwsettings)
Create the control panel instance with the provided settings.
uint8_t setFilter(bool v=true)
Start or stop the water filtration.
static ControlPanel * getInstance(const String &hwSettingsName)
bool isOpened() const
Indicates whether the connection with the spa is established.
uint8_t setHeater(bool v=true)
Start or stop water heating.
const std::map< int, Button > & buttons() const
Buttons list.
~ControlPanel()
Destructor.
bool setSanitizerTime(uint16_t time)
Set the water sanitation time.
This class decodes information from the technical block of the spa.
Definition: framedecoder.h:35
SpaIot name space.
Definition: bussettings.h:21