#include "touchgfx/Color.hpp" #include "touchgfx/Unicode.hpp" #include TireTemp::TireTemp() : temp{0} { updateValueBuffer(); } void TireTemp::initialize() { TireTempBase::initialize(); } void TireTemp::setTemp(int temp_in_celsius) { if (temp_in_celsius < 0) { // No space for displaying negative values temp_in_celsius = 0; } if (temp_in_celsius == temp) { // No change return; } temp = temp_in_celsius; updateValueBuffer(); if (temp < 35) { bg.setColor(touchgfx::Color::getColorFromRGB(0x05, 0x76, 0xb7)); } else if (temp < 40) { bg.setColor(touchgfx::Color::getColorFromRGB(0x05, 0x76, 0x64)); } else if (temp < 50) { bg.setColor(touchgfx::Color::getColorFromRGB(0x05, 0x95, 0x38)); } else if (temp < 60) { bg.setColor(touchgfx::Color::getColorFromRGB(0xdd, 0x6e, 0x22)); } else { bg.setColor(touchgfx::Color::getColorFromRGB(0xdd, 0x2f, 0x22)); } value.invalidate(); bg.invalidate(); // TODO: Only invalidate if color changed } void TireTemp::updateValueBuffer() { // Unicode::utoa(temp, valueBuffer, 3, 10); Unicode::snprintf(valueBuffer, sizeof(valueBuffer) / sizeof(Unicode::UnicodeChar), "%02u", temp); value.setWildcard(valueBuffer); }