ntrip, testMode, zed9 gnss modul
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
/**
|
||||
* @file menuIntInput.cpp
|
||||
* @author Alexander Klein (alex@kleiax.de)
|
||||
* @brief
|
||||
* @version 0.1
|
||||
* @date 2022-09-12
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#include "menuIntInput.h"
|
||||
|
||||
MenuIntInput::MenuIntInput(int16_t values[], char *names, uint8_t length, MenuIntInputWrapper* wrapper) {
|
||||
this->values = values;
|
||||
this->names = names;
|
||||
this->length = length;
|
||||
this->wrapper = wrapper;
|
||||
}
|
||||
|
||||
void MenuIntInput::down() {
|
||||
if (values[currentPosition] > this->min)
|
||||
values[currentPosition]--;
|
||||
|
||||
this->printMenu();
|
||||
}
|
||||
|
||||
void MenuIntInput::up() {
|
||||
if (values[currentPosition] < this->max)
|
||||
values[currentPosition]++;
|
||||
|
||||
this->printMenu();
|
||||
}
|
||||
|
||||
void MenuIntInput::right() {
|
||||
if (currentPosition < this->length - 1)
|
||||
currentPosition++;
|
||||
else
|
||||
currentPosition = 0;
|
||||
|
||||
this->printMenu();
|
||||
}
|
||||
|
||||
void MenuIntInput::left() {
|
||||
if (currentPosition > 0)
|
||||
currentPosition--;
|
||||
else
|
||||
currentPosition = this->length - 1;
|
||||
|
||||
this->printMenu();
|
||||
}
|
||||
|
||||
void MenuIntInput::no() {
|
||||
if (parentMenu)
|
||||
this->parentMenu->printMenu();
|
||||
}
|
||||
|
||||
void MenuIntInput::yes() {
|
||||
this->wrapper->action(this->values, this->length);
|
||||
if (parentMenu)
|
||||
this->parentMenu->printMenu();
|
||||
}
|
||||
|
||||
void MenuIntInput::printMenu() {
|
||||
// TODO: Name max 12 chars
|
||||
|
||||
char bufferName[17];
|
||||
if (this->currentPosition == 0 && this->length == 1) {
|
||||
// No arrow
|
||||
sprintf(bufferName, " %s ", this->names[this->currentPosition]);
|
||||
} else if (this->currentPosition > 0 && this->length - 1 == this->currentPosition) {
|
||||
// Left arrow only
|
||||
sprintf(bufferName, "< %s ", this->names[this->currentPosition]);
|
||||
} else if (this->currentPosition == 0 && this->length > 1) {
|
||||
// Right arrow only
|
||||
sprintf(bufferName, " %s >", this->names[this->currentPosition]);
|
||||
} else {
|
||||
// Both arrow
|
||||
sprintf(bufferName, "< %s >", this->names[this->currentPosition]);
|
||||
}
|
||||
|
||||
char bufferValue[17];
|
||||
sprintf(bufferValue, " -> %5.d", this->values[this->currentPosition]);
|
||||
|
||||
|
||||
if (this->lcd) {
|
||||
lcd->clear();
|
||||
lcd->setCursor(0, 0);
|
||||
lcd->print(bufferName);
|
||||
lcd->setCursor(0, 1);
|
||||
lcd->print(bufferValue);
|
||||
}
|
||||
std::cout << bufferName << " : " << bufferValue << std::endl;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user