Get started on driver view
This commit is contained in:
24
TouchGFX/gui/include/gui/containers/TireTemp.hpp
Normal file
24
TouchGFX/gui/include/gui/containers/TireTemp.hpp
Normal file
@ -0,0 +1,24 @@
|
||||
#ifndef TIRETEMP_HPP
|
||||
#define TIRETEMP_HPP
|
||||
|
||||
#include <gui_generated/containers/TireTempBase.hpp>
|
||||
#include <sys/_stdint.h>
|
||||
|
||||
class TireTemp : public TireTempBase {
|
||||
public:
|
||||
TireTemp();
|
||||
virtual ~TireTemp() {}
|
||||
|
||||
virtual void initialize();
|
||||
|
||||
virtual void setTemp(int temp_in_celsius);
|
||||
|
||||
protected:
|
||||
private:
|
||||
unsigned temp;
|
||||
Unicode::UnicodeChar valueBuffer[3];
|
||||
|
||||
void updateValueBuffer();
|
||||
};
|
||||
|
||||
#endif // TIRETEMP_HPP
|
||||
@ -0,0 +1,38 @@
|
||||
#ifndef DRIVERVIEWPRESENTER_HPP
|
||||
#define DRIVERVIEWPRESENTER_HPP
|
||||
|
||||
#include <gui/model/ModelListener.hpp>
|
||||
#include <mvp/Presenter.hpp>
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
class DriverViewView;
|
||||
|
||||
class DriverViewPresenter : public touchgfx::Presenter, public ModelListener {
|
||||
public:
|
||||
DriverViewPresenter(DriverViewView &v);
|
||||
|
||||
/**
|
||||
* The activate function is called automatically when this screen is "switched
|
||||
* in" (ie. made active). Initialization logic can be placed here.
|
||||
*/
|
||||
virtual void activate();
|
||||
|
||||
/**
|
||||
* The deactivate function is called automatically when this screen is
|
||||
* "switched out" (ie. made inactive). Teardown functionality can be placed
|
||||
* here.
|
||||
*/
|
||||
virtual void deactivate();
|
||||
|
||||
virtual ~DriverViewPresenter(){};
|
||||
|
||||
void tireTempsUpdated() override;
|
||||
|
||||
private:
|
||||
DriverViewPresenter();
|
||||
|
||||
DriverViewView &view;
|
||||
};
|
||||
|
||||
#endif // DRIVERVIEWPRESENTER_HPP
|
||||
@ -0,0 +1,20 @@
|
||||
#ifndef DRIVERVIEWVIEW_HPP
|
||||
#define DRIVERVIEWVIEW_HPP
|
||||
|
||||
#include "vehicle.h"
|
||||
#include <gui/driverview_screen/DriverViewPresenter.hpp>
|
||||
#include <gui_generated/driverview_screen/DriverViewViewBase.hpp>
|
||||
|
||||
class DriverViewView : public DriverViewViewBase {
|
||||
public:
|
||||
DriverViewView();
|
||||
virtual ~DriverViewView() {}
|
||||
virtual void setupScreen();
|
||||
virtual void tearDownScreen();
|
||||
|
||||
void setTireTemps(const TireTemps &temps);
|
||||
|
||||
protected:
|
||||
};
|
||||
|
||||
#endif // DRIVERVIEWVIEW_HPP
|
||||
@ -2,6 +2,7 @@
|
||||
#define MODEL_HPP
|
||||
|
||||
#include "stw_defines.h"
|
||||
#include "vehicle.h"
|
||||
class ModelListener;
|
||||
|
||||
class Model {
|
||||
@ -14,12 +15,14 @@ public:
|
||||
|
||||
void setMission(Mission mission) { this->mission = mission; }
|
||||
Mission getMission() { return mission; }
|
||||
TireTemps getTireTemps() { return tireTemps; }
|
||||
|
||||
protected:
|
||||
ModelListener *modelListener;
|
||||
|
||||
private:
|
||||
Mission mission;
|
||||
TireTemps tireTemps;
|
||||
};
|
||||
|
||||
#endif // MODEL_HPP
|
||||
|
||||
@ -13,6 +13,8 @@ public:
|
||||
|
||||
void bind(Model *m) { model = m; }
|
||||
|
||||
virtual void tireTempsUpdated(){};
|
||||
|
||||
protected:
|
||||
Model *model;
|
||||
};
|
||||
|
||||
42
TouchGFX/gui/src/containers/TireTemp.cpp
Normal file
42
TouchGFX/gui/src/containers/TireTemp.cpp
Normal 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);
|
||||
}
|
||||
13
TouchGFX/gui/src/driverview_screen/DriverViewPresenter.cpp
Normal file
13
TouchGFX/gui/src/driverview_screen/DriverViewPresenter.cpp
Normal 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());
|
||||
}
|
||||
14
TouchGFX/gui/src/driverview_screen/DriverViewView.cpp
Normal file
14
TouchGFX/gui/src/driverview_screen/DriverViewView.cpp
Normal 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);
|
||||
}
|
||||
@ -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) {
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user