DeskControl/src/lib/screen/calibrate.h

48 lines
1.0 KiB
C++

#ifndef __screen_calibrate
#define __screen_calibrate
#include "include/screenids.h"
#include "./baseheightentry.h"
#include "../screen.h"
#include "../control.h"
enum CalibrateStep
{
CalibrateStepCurrent = 0,
CalibrateStepMax,
CalibrateStepMin,
__CalibrateStepCount
};
/*
* Calibrate screen
* Configures the absolute height (calculates the offset) and
* the allowed minimum and maximum absolute height.
*/
class CalibrateScreen : public BaseHeightEntryScreen
{
public:
CalibrateScreen(ScreenManager* screenManager, Adafruit_GFX* display) : BaseHeightEntryScreen(screenManager, display) { }
ScreenId screenId() { return ScreenId::Calibrate; };
protected:
void initHeights();
uint16_t getHeight() { return this->height[this->step]; }
void setHeight(uint16_t value) { this->height[this->step] = value; };
bool nextPage();
bool isValidHeight();
const char* getTitle();
private:
CalibrateStep step = CalibrateStepCurrent;
uint16_t height[__CalibrateStepCount];
};
#endif