Add screen for configuring vehicle parameters

This commit is contained in:
2023-04-04 20:58:34 +02:00
parent 09f65fcf22
commit a5f10be4fd
35 changed files with 1976 additions and 104 deletions

View File

@ -20,6 +20,8 @@ CountedEnum(DataFieldType, size_t, DF_TSState, DF_ASState, DF_ActiveMission,
DF_TireTempRL, DF_TireTempRR, DF_MinCellVolt, DF_MaxCellTemp,
DF_TSSoC, DF_LVSoC, DF_TSCurrent, DF_TSVoltageBat, DF_TSVoltageVeh,
DF_Speed, DF_BBal);
CountedEnum(ParamFieldType, size_t, PF_BBAL, PF_TC1, PF_TC2, PF_TORQUEMAP,
PF_TEST1, PF_TEST2, PF_TEST3, PF_TEST4);
enum class NamedFieldKind { Float, Bool, Text, Int };
@ -33,6 +35,7 @@ struct NamedFieldDescription {
};
extern NamedFieldDescription dataFieldDescs[];
extern NamedFieldDescription paramFieldDescs[];
template <class T> class NamedField {
public:
@ -40,7 +43,7 @@ public:
virtual ~NamedField() {}
void setType(T type);
T getType();
const T &getType();
virtual void updateValue();

View File

@ -0,0 +1,23 @@
#ifndef CONFIGITEM_HPP
#define CONFIGITEM_HPP
#include "gui/common/NamedField.hpp"
#include <gui_generated/containers/ConfigItemBase.hpp>
class ConfigItem : public ConfigItemBase, public NamedField<ParamFieldType> {
public:
ConfigItem();
virtual ~ConfigItem() {}
virtual void initialize() override;
void setSelected(int selected);
protected:
private:
virtual void typeUpdated() override;
virtual void titleBufferUpdated() override;
virtual void valueBufferUpdated() override;
};
#endif // CONFIGITEM_HPP

View File

@ -0,0 +1,36 @@
#ifndef VEHICLECONFIGPRESENTER_HPP
#define VEHICLECONFIGPRESENTER_HPP
#include <gui/model/ModelListener.hpp>
#include <mvp/Presenter.hpp>
using namespace touchgfx;
class VehicleConfigView;
class VehicleConfigPresenter : public touchgfx::Presenter, public ModelListener
{
public:
VehicleConfigPresenter(VehicleConfigView& 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 ~VehicleConfigPresenter() {};
private:
VehicleConfigPresenter();
VehicleConfigView& view;
};
#endif // VEHICLECONFIGPRESENTER_HPP

View File

@ -0,0 +1,29 @@
#ifndef VEHICLECONFIGVIEW_HPP
#define VEHICLECONFIGVIEW_HPP
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
#include <gui_generated/vehicleconfig_screen/VehicleConfigViewBase.hpp>
class VehicleConfigView : public VehicleConfigViewBase {
public:
VehicleConfigView();
virtual ~VehicleConfigView() {}
virtual void setupScreen() override;
virtual void tearDownScreen() override;
void paramsUpdateItem(ConfigItem &item, int16_t itemIndex) override;
void selectPrevParam() override;
void selectNextParam() override;
void decParam() override;
void incParam() override;
void confirmParam() override;
protected:
private:
int selectedParam;
void updateSelectedParam(int select);
};
#endif // VEHICLECONFIGVIEW_HPP