Parse CAN messges

This commit is contained in:
2023-03-18 21:44:01 +01:00
parent 148ab2b69c
commit 5fe5d509a4
16 changed files with 269 additions and 74 deletions

View File

@ -8,29 +8,31 @@ using namespace touchgfx;
class AMIView;
class AMIPresenter : public touchgfx::Presenter, public ModelListener
{
class AMIPresenter : public touchgfx::Presenter, public ModelListener {
public:
AMIPresenter(AMIView& v);
AMIPresenter(AMIView &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 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();
/**
* 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 ~AMIPresenter() {};
virtual ~AMIPresenter(){};
void missionUpdated() override;
private:
AMIPresenter();
AMIPresenter();
AMIView& view;
AMIView &view;
};
#endif // AMIPRESENTER_HPP

View File

@ -27,8 +27,6 @@ public:
virtual ~DriverViewPresenter(){};
void tireTempsUpdated() override;
private:
DriverViewPresenter();

View File

@ -28,7 +28,7 @@ public:
virtual ~MissionSelectPresenter(){};
void confirmMission(Mission mission);
void missionUpdated() override;
private:
MissionSelectPresenter();

View File

@ -13,16 +13,13 @@ public:
void tick();
void setMission(Mission mission) { this->mission = mission; }
Mission getMission() { return mission; }
TireTemps getTireTemps() { return tireTemps; }
Mission getSelectedMission() { return selectedMission; }
protected:
ModelListener *modelListener;
private:
Mission mission;
TireTemps tireTemps;
Mission selectedMission;
};
#endif // MODEL_HPP

View File

@ -13,7 +13,12 @@ public:
void bind(Model *m) { model = m; }
virtual void tireTempsUpdated(){};
virtual void amsUpdated(){};
virtual void missionUpdated(){};
virtual void statusUpdated(){};
virtual void tsCurrentUpdated(){};
virtual void tsVoltageVehicleUpdated(){};
virtual void tsVoltageBatteryUpdated(){};
protected:
Model *model;

View File

@ -2,9 +2,14 @@
#include <gui/ami_screen/AMIView.hpp>
#include "main.h"
#include "vehicle.h"
AMIPresenter::AMIPresenter(AMIView &v) : view(v) {}
void AMIPresenter::activate() { view.setMission(model->getMission()); }
void AMIPresenter::activate() { missionUpdated(); }
void AMIPresenter::deactivate() {}
void AMIPresenter::missionUpdated() {
view.setMission(vehicle_state.active_mission);
}

View File

@ -37,4 +37,5 @@ void AMIView::setMission(Mission mission) {
currentMission.setColor(touchgfx::Color::getColorFromRGB(0xFF, 0, 0));
break;
}
currentMission.invalidate();
}

View File

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

View File

@ -1,3 +1,7 @@
#include "gui/common/FrontendApplication.hpp"
#include "stw_defines.h"
#include "touchgfx/Application.hpp"
#include "vehicle.h"
#include <gui/missionselect_screen/MissionSelectPresenter.hpp>
#include <gui/missionselect_screen/MissionSelectView.hpp>
@ -8,6 +12,12 @@ void MissionSelectPresenter::activate() {}
void MissionSelectPresenter::deactivate() {}
void MissionSelectPresenter::confirmMission(Mission mission) {
model->setMission(mission);
void MissionSelectPresenter::missionUpdated() {
FrontendApplication *app =
static_cast<FrontendApplication *>(FrontendApplication::getInstance());
if (vehicle_state.active_mission == MISSION_MANUAL) {
app->gotoDriverViewScreenNoTransition();
} else {
app->gotoAMIScreenNoTransition();
}
}

View File

@ -1,6 +1,7 @@
#include "gui/missionselect_screen/MissionSelectPresenter.hpp"
#include "stw_defines.h"
#include "texts/TextKeysAndLanguages.hpp"
#include "vehicle.h"
#include <gui/missionselect_screen/MissionSelectView.hpp>
MissionSelectView::MissionSelectView()
@ -50,12 +51,7 @@ void MissionSelectView::confirmMission() {
// Can't confirm if we haven't selected a mission yet
return;
}
presenter->confirmMission(selectedMission);
if (selectedMission == MISSION_MANUAL) {
application().gotoDriverViewScreenNoTransition();
} else {
application().gotoAMIScreenNoTransition();
}
vehicle_select_mission(selectedMission);
}
void MissionSelectView::setSelectedMission(Mission mission) {

View File

@ -5,38 +5,35 @@
#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() {
static int incs = 0;
if ((HAL_GetTick() / 10) % 5 == 0) {
tireTemps.fl++;
if (tireTemps.fl > 90) {
tireTemps.fl = 0;
VehicleUpdate msg;
while (tx_queue_receive(&vehicle_update_queue, &msg, TX_NO_WAIT) ==
TX_SUCCESS) {
switch (msg) {
case VEH_UPD_AMS:
modelListener->amsUpdated();
break;
case VEH_UPD_MISSION:
modelListener->missionUpdated();
break;
case VEH_UPD_STATUS:
modelListener->statusUpdated();
break;
case VEH_UPD_TS_CURRENT:
modelListener->tsCurrentUpdated();
break;
case VEH_UPD_TS_VOLTAGE_VEH:
modelListener->tsVoltageVehicleUpdated();
break;
case VEH_UPD_TS_VOLTAGE_BAT:
modelListener->tsVoltageBatteryUpdated();
break;
}
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();
}
}