Claire/include/display.hpp

51 lines
1.9 KiB
C++
Raw Normal View History

#ifndef __DISPLAY_HPP__
#define __DISPLAY_HPP__
#include <Adafruit_NeoPixel.h>
#include <Arduino.h>
#include <ArduinoJson.h>
class Display {
public:
// Constructor
Display(Adafruit_NeoPixel& p_leds);
public:
// Public methods
void setPollenPlusAQIForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_pollen,
ArduinoJson::V710PB22::JsonArray p_aqi);
void setPrecipitationForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_precipitation);
void setUVIForecastLed(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_uvi);
void setLocalAirQualityLed();
void setWifiStatusLed(bool p_enable);
void setPixelColor(uint32_t p_index, uint8_t p_red, uint8_t p_green, uint8_t p_blue, uint8_t p_white);
void clear();
void show();
private:
// Private methods
float findMaxValueInTwelveHourInterval(uint32_t p_time_stamp, ArduinoJson::V710PB22::JsonArray p_array);
std::vector<float> mergeJsonArraysFromTimestamp(uint32_t p_time_stamp, ArduinoJson::V710PB22::JsonArray p_array_a,
ArduinoJson::V710PB22::JsonArray p_array_b);
std::tuple<uint8_t, uint8_t, uint8_t> mapValueToColorRGB(float p_value);
std::tuple<uint8_t, uint8_t, uint8_t, uint8_t> mapValueToColorRGBW(float p_value);
void setPixelToColorMappedValue(uint8_t index, float p_value);
private:
// Private static members
constexpr static uint16_t m_NUM_LEDS_PROTO_V1 = 29U;
constexpr static int16_t m_DATA_PIN_PROTO_V1 = 14;
private:
// Private members
Adafruit_NeoPixel& m_leds;
std::array<uint8_t, 12U> m_precipitation_forecast_map;
std::array<uint8_t, 12U> m_air_quality_forecast_map;
uint8_t m_max_pollen_map;
uint8_t m_max_air_qualilty_map;
uint8_t m_uvi_map;
uint8_t m_local_air_quality_map;
uint8_t m_wifi_status_map;
};
#endif // __DISPLAY_HPP__