Use an event flag group for GUI updates
This commit is contained in:
@ -27,7 +27,7 @@ public:
|
||||
|
||||
virtual ~AMIPresenter(){};
|
||||
|
||||
void missionUpdated() override;
|
||||
void vehicleStateUpdated() override;
|
||||
|
||||
private:
|
||||
AMIPresenter();
|
||||
|
||||
@ -27,7 +27,7 @@ public:
|
||||
|
||||
virtual ~DriverViewPresenter(){};
|
||||
|
||||
void amsUpdated() override;
|
||||
void vehicleStateUpdated() override;
|
||||
|
||||
private:
|
||||
DriverViewPresenter();
|
||||
|
||||
@ -28,7 +28,7 @@ public:
|
||||
|
||||
virtual ~MissionSelectPresenter(){};
|
||||
|
||||
void missionUpdated() override;
|
||||
void vehicleStateUpdated() override;
|
||||
|
||||
private:
|
||||
MissionSelectPresenter();
|
||||
|
||||
@ -13,12 +13,7 @@ public:
|
||||
|
||||
void bind(Model *m) { model = m; }
|
||||
|
||||
virtual void amsUpdated(){};
|
||||
virtual void missionUpdated(){};
|
||||
virtual void statusUpdated(){};
|
||||
virtual void tsCurrentUpdated(){};
|
||||
virtual void tsVoltageVehicleUpdated(){};
|
||||
virtual void tsVoltageBatteryUpdated(){};
|
||||
virtual void vehicleStateUpdated(){};
|
||||
|
||||
protected:
|
||||
Model *model;
|
||||
|
||||
@ -6,10 +6,10 @@
|
||||
|
||||
AMIPresenter::AMIPresenter(AMIView &v) : view(v) {}
|
||||
|
||||
void AMIPresenter::activate() { missionUpdated(); }
|
||||
void AMIPresenter::activate() { vehicleStateUpdated(); }
|
||||
|
||||
void AMIPresenter::deactivate() {}
|
||||
|
||||
void AMIPresenter::missionUpdated() {
|
||||
void AMIPresenter::vehicleStateUpdated() {
|
||||
view.setMission(vehicle_state.active_mission);
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@ void DriverViewPresenter::activate() {}
|
||||
|
||||
void DriverViewPresenter::deactivate() {}
|
||||
|
||||
void DriverViewPresenter::amsUpdated() {
|
||||
void DriverViewPresenter::vehicleStateUpdated() {
|
||||
view.setTSSoC(vehicle_state.soc);
|
||||
view.setMinCellVolt(vehicle_state.min_cell_volt);
|
||||
}
|
||||
|
||||
@ -12,12 +12,17 @@ void MissionSelectPresenter::activate() {}
|
||||
|
||||
void MissionSelectPresenter::deactivate() {}
|
||||
|
||||
void MissionSelectPresenter::missionUpdated() {
|
||||
void MissionSelectPresenter::vehicleStateUpdated() {
|
||||
FrontendApplication *app =
|
||||
static_cast<FrontendApplication *>(FrontendApplication::getInstance());
|
||||
if (vehicle_state.active_mission == MISSION_MANUAL) {
|
||||
switch (vehicle_state.active_mission) {
|
||||
case MISSION_NONE:
|
||||
// Do nothing
|
||||
break;
|
||||
case MISSION_MANUAL:
|
||||
app->gotoDriverViewScreenNoTransition();
|
||||
} else {
|
||||
break;
|
||||
default:
|
||||
app->gotoAMIScreenNoTransition();
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,28 +12,12 @@
|
||||
Model::Model() : modelListener(0) {}
|
||||
|
||||
void Model::tick() {
|
||||
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;
|
||||
}
|
||||
ULONG events;
|
||||
if (tx_event_flags_get(&gui_update_events, GUI_UPDATE_VEHICLE_STATE,
|
||||
TX_OR_CLEAR, &events, TX_NO_WAIT) != TX_SUCCESS) {
|
||||
return;
|
||||
}
|
||||
if (events & GUI_UPDATE_VEHICLE_STATE) {
|
||||
modelListener->vehicleStateUpdated();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user