18#include "bussettings.h"
54 const std::map <int, LedSettings> & leds,
134 inline uint8_t
isJetOn()
const;
257 const std::map <int, LedSettings> & leds);
259 static uint16_t convertDisplayToCelsius (uint16_t m_displayValue);
263 std::map <int, LedSettings> m_ledSettings;
266 static int m_dataPin;
267 static uint16_t m_frameLedPower;
268 static uint16_t m_frameLedFilter;
269 static uint16_t m_frameLedHeater;
270 static uint16_t m_frameLedHeaterReached;
271 static uint16_t m_frameLedBubble;
272 static uint16_t m_frameLedJet;
273 static uint16_t m_frameLedSanitizer;
276 static volatile uint32_t m_frameCounter;
277 static volatile uint32_t m_frameDropped;
278 static volatile uint16_t m_rawStatus;
279 static volatile uint16_t m_errorValue;
280 static volatile uint16_t m_waterTemp;
281 static volatile uint16_t m_desiredTemp;
282 static volatile uint16_t m_sanitizerTime;
285 static volatile uint16_t m_frameValue;
286 static volatile uint16_t m_frameShift;
287 static volatile uint16_t m_displayValue;
288 static volatile uint32_t m_lastSanitizerFrameCounter;
289 static volatile uint32_t m_lastBlackDisplayFrameCounter;
290 static volatile bool m_isDisplayBlink;
291 static volatile uint32_t m_lastErrorChangeFrameCounter;
292 static volatile uint16_t m_latestLedStatus;
293 static volatile uint16_t m_stableLedStatusCounter;
294 static volatile uint16_t m_latestDisplayValue;
295 static volatile uint16_t m_stableDisplayValueCounter;
296 static volatile uint16_t m_latestDesiredTemp;
297 static volatile uint16_t m_latestWaterTemp;
298 static volatile uint16_t m_stableWaterTempCounter;
299 static volatile uint16_t m_unsetDigits;
300 static volatile uint8_t m_lastTempUnit;
301 static volatile uint32_t m_lastTempUnitChangeFrameCounter;
302 static volatile uint16_t m_counterTempUnitChanged;
304 static const unsigned long FramePeriodUs = 320;
305 static const uint32_t SetupTrigUnitChangeFrameCounterMax =
307 static const uint32_t ResetErrorFrameCounter =
311 static IRAM_ATTR
void clkRisingInterrupt();
312 static IRAM_ATTR
void holdRisingInterrupt();
SPI 2840X Bus settings.
Definition: bussettings.h:27
This class decodes information from the technical block of the spa.
Definition: framedecoder.h:35
void begin(unsigned long waitingTimeMs=BeginWaitingTimeMs)
Initializes and connect with the spa.
uint32_t frameDropped() const
Number of dropped frames.
bool isOpened() const
Indicates whether the connection with the spa is established.
uint16_t waterTemp() const
Water temperature in °C.
uint8_t isPowerOn() const
Last state of the Power LED.
Definition: framedecoder.h:317
uint8_t isBubbleOn() const
Last state of the Bubble LED.
Definition: framedecoder.h:329
uint8_t isHeaterOn() const
State of water heating.
uint16_t error()
Error code displayed by the control panel.
uint8_t isDisplayBlink() const
Check if the display blink.
const BusSettings & busSettings() const
Bus settings provides at the instantiation.
uint8_t isJetOn() const
Last state of the Jet LED.
Definition: framedecoder.h:341
bool isSetupModeTriggered() const
Reset request triggered.
void begin(const BusSettings &settings, const std::map< int, LedSettings > &leds, unsigned long waitingTimeMs=BeginWaitingTimeMs)
virtual ~FrameDecoder()
Destructor.
void end()
Close the FrameDecoder.
uint8_t isLedOn(int key) const
Last state received from an LED.
uint16_t rawStatus() const
Last state of the LEDs received.
uint32_t frameCounter() const
Number of frames received from startup.
uint8_t isFilterOn() const
Last state of the Filter LED.
Definition: framedecoder.h:323
const std::map< int, LedSettings > ledSettings() const
Leds settings provides at the instantiation.
uint8_t isHeatReached() const
Last state of the HeatReached LED.
Definition: framedecoder.h:335
uint8_t isSanitizerOn() const
Last state of the Sanitizer LED.
Definition: framedecoder.h:347
uint16_t desiredTemp() const
Water temperature desired in °C.
uint8_t waitUntilDisplayBlink(unsigned long MaxWaitingTimeMs=5000) const
Wait until the display blink.
uint16_t sanitizerTime() const
Remaining sanitation time.
bool hasLed(int key) const
Check if the hardware configuration has the LED.
uint16_t waitForWaterTemp(unsigned long MaxWaitingTimeMs=25000) const
Wait until the water temperature could be read.
SpaIot name space.
Definition: bussettings.h:21
@ Jet
Jet Led or Button.
Definition: global.h:30
@ Filter
Filter Led or Button.
Definition: global.h:28
@ Sanitizer
Sanitizer Led or Button.
Definition: global.h:31
@ HeatReached
Heat Reached Led (Green)
Definition: global.h:33
@ Bubble
Bubble Led or Button.
Definition: global.h:29
@ Power
Power Led or Button.
Definition: global.h:27
const unsigned long BeginWaitingTimeMs
begin() waiting time in milliseconds
Definition: global.h:63
const unsigned long SetupTrigUnitChangeStepMaxMs
Maximum time separating successive actions on the unit change button to trigger reset request.
Definition: global.h:61
const unsigned long ResetErrorTimeMs
Time after which an error can be erased.
Definition: global.h:64