Get started on driver view

This commit is contained in:
2023-03-15 18:43:38 +01:00
parent 641fa3b236
commit 5b6405cf29
47 changed files with 2137 additions and 30 deletions

View File

@ -0,0 +1,42 @@
#include "touchgfx/Color.hpp"
#include "touchgfx/Unicode.hpp"
#include <gui/containers/TireTemp.hpp>
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);
}

View File

@ -0,0 +1,13 @@
#include <gui/driverview_screen/DriverViewPresenter.hpp>
#include <gui/driverview_screen/DriverViewView.hpp>
DriverViewPresenter::DriverViewPresenter(DriverViewView &v) : view(v) {}
void DriverViewPresenter::activate() {}
void DriverViewPresenter::deactivate() {}
void DriverViewPresenter::tireTempsUpdated() {
view.setTireTemps(model->getTireTemps());
}

View File

@ -0,0 +1,14 @@
#include <gui/driverview_screen/DriverViewView.hpp>
DriverViewView::DriverViewView() {}
void DriverViewView::setupScreen() { DriverViewViewBase::setupScreen(); }
void DriverViewView::tearDownScreen() { DriverViewViewBase::tearDownScreen(); }
void DriverViewView::setTireTemps(const TireTemps &temps) {
tireTempFL.setTemp(temps.fl);
tireTempFR.setTemp(temps.fr);
tireTempRL.setTemp(temps.rl);
tireTempRR.setTemp(temps.rr);
}

View File

@ -51,7 +51,11 @@ void MissionSelectView::confirmMission() {
return;
}
presenter->confirmMission(selectedMission);
application().gotoAMIScreenNoTransition();
if (selectedMission == MISSION_MANUAL) {
application().gotoDriverViewScreenNoTransition();
} else {
application().gotoAMIScreenNoTransition();
}
}
void MissionSelectView::setSelectedMission(Mission mission) {

View File

@ -1,11 +1,42 @@
#include "main.h"
#include "stm32h7xx_hal.h"
#include "stm32h7xx_hal_gpio.h"
#include "stw_defines.h"
#include "tx_api.h"
#include "ui.h"
#include "vehicle.h"
#include <gui/model/Model.hpp>
#include <gui/model/ModelListener.hpp>
Model::Model() : modelListener(0) {}
void Model::tick() {}
void Model::tick() {
static int incs = 0;
if ((HAL_GetTick() / 10) % 5 == 0) {
tireTemps.fl++;
if (tireTemps.fl > 90) {
tireTemps.fl = 0;
}
if (incs % 2 == 0) {
tireTemps.fr++;
if (tireTemps.fr > 90) {
tireTemps.fr = 0;
}
}
if (incs % 3 == 0) {
tireTemps.rl++;
if (tireTemps.rl > 90) {
tireTemps.rl = 0;
}
}
if (incs % 4 == 0) {
tireTemps.rr++;
if (tireTemps.rr > 90) {
tireTemps.rr = 0;
}
}
incs++;
modelListener->tireTempsUpdated();
}
}