Select missions with right encoder

This commit is contained in:
2023-03-07 20:13:28 +01:00
parent 7476e09fed
commit 38d3d765ad
53 changed files with 29689 additions and 39549 deletions

View File

@ -1,12 +1,43 @@
#include "main.h"
#include "stm32h7xx_hal_gpio.h"
#include "stw_defines.h"
#include "tx_api.h"
#include "ui.h"
#include <gui/model/Model.hpp>
#include <gui/model/ModelListener.hpp>
Model::Model() : modelListener(0)
{
}
void Model::tick()
{
Model::Model() : modelListener(0), mission{MISSION_NONE} {}
void Model::tick() {
UIMessage msg;
while (tx_queue_receive(&ui_queue, &msg, TX_NO_WAIT) == TX_SUCCESS) {
switch (msg.kind) {
case UMK_BTN_RELEASED:
// TODO: What do we do with this?
break;
case UMK_ENC_CW: {
int mission_int = static_cast<int>(mission);
mission_int++;
// mission_int = 0 is MISSION_NONE, which we don't want to select.
// NUM_MISSIONS is equal to the last mission, so check for strictly
// greater.
if (mission_int > NUM_MISSIONS) {
mission_int = 1;
}
mission = static_cast<Mission>(mission_int);
modelListener->notifyMissionChanged(mission);
break;
}
case UMK_ENC_CCW:
int mission_int = static_cast<int>(mission);
mission_int--;
if (mission_int <= 0) {
mission_int = NUM_MISSIONS;
}
mission = static_cast<Mission>(mission_int);
modelListener->notifyMissionChanged(mission);
break;
}
HAL_GPIO_TogglePin(STATUS2_GPIO_Port, STATUS2_Pin);
}
}