This commit is contained in:
Lubos Petrovic
2020-12-05 07:33:34 +01:00
parent 200e70ae32
commit 3844e9bd8c
4 changed files with 122 additions and 94 deletions

View File

@@ -821,15 +821,29 @@ String Board320_240::menuItemCaption(int16_t menuItemId, String title) {
String prefix = "", suffix = "";
if (menuItemId == 10) // Version
suffix = APP_VERSION;
if (menuItemId == 401) // distance
suffix = (liveData->settings.distanceUnit == 'k') ? "[km]" : "[mi]";
if (menuItemId == 402) // temperature
suffix = (liveData->settings.temperatureUnit == 'c') ? "[C]" : "[F]";
if (menuItemId == 403) // pressure
suffix = (liveData->settings.pressureUnit == 'b') ? "[bar]" : "[psi]";
switch (menuItemId) {
// Set vehicle type
case MENU_VEHICLE_TYPE: sprintf(tmpStr1, "[%d]", liveData->settings.carType); suffix = tmpStr1; break;
case MENU_SAVE_SETTINGS: sprintf(tmpStr1, "[v%d]", liveData->settings.settingsVersion); suffix = tmpStr1; break;
case MENU_APP_VERSION: sprintf(tmpStr1, "[%s]", APP_VERSION); suffix = tmpStr1; break;
//
case 101: prefix = (liveData->settings.carType == CAR_KIA_ENIRO_2020_64) ? ">" : ""; break;
case 102: prefix = (liveData->settings.carType == CAR_HYUNDAI_KONA_2020_64) ? ">" : ""; break;
case 103: prefix = (liveData->settings.carType == CAR_HYUNDAI_IONIQ_2018) ? ">" : ""; break;
case 104: prefix = (liveData->settings.carType == CAR_KIA_ENIRO_2020_39) ? ">" : ""; break;
case 105: prefix = (liveData->settings.carType == CAR_HYUNDAI_KONA_2020_39) ? ">" : ""; break;
case 106: prefix = (liveData->settings.carType == CAR_RENAULT_ZOE) ? ">" : ""; break;
case 107: prefix = (liveData->settings.carType == CAR_DEBUG_OBD2_KIA) ? ">" : ""; break;
//
case MENU_DEFAULT_SCREEN: sprintf(tmpStr1, "[%d]", liveData->settings.defaultScreen); suffix = tmpStr1; break;
case MENU_DEBUG_SCREEN: suffix = (liveData->settings.debugScreen == 1) ? "[on]" : "[off]"; break;
case MENU_SCREEN_BRIGHTNESS: sprintf(tmpStr1, "[%d%%]", liveData->settings.lcdBrightness); suffix = (liveData->settings.lcdBrightness == 0) ? "[auto]" : tmpStr1; break;
case MENU_PREDRAWN_GRAPHS: suffix = (liveData->settings.predrawnChargingGraphs == 1) ? "[on]" : "[off]"; break;
//
case MENU_DISTANCE_UNIT: suffix = (liveData->settings.distanceUnit == 'k') ? "[km]" : "[mi]"; break;
case MENU_TEMPERATURE_UNIT: suffix = (liveData->settings.temperatureUnit == 'c') ? "[C]" : "[F]"; break;
case MENU_PRESSURE_UNIT: suffix = (liveData->settings.pressureUnit == 'b') ? "[bar]" : "[psi]"; break;
}
title = ((prefix == "") ? "" : prefix + " ") + title + ((suffix == "") ? "" : " " + suffix);
@@ -907,12 +921,15 @@ void Board320_240::menuMove(bool forward) {
void Board320_240::menuItemClick() {
// Locate menu item for meta data
MENU_ITEM tmpMenuItem;
MENU_ITEM* tmpMenuItem;
uint16_t tmpCurrMenuItem = 0;
int16_t parentMenu = -1;
for (uint16_t i = 0; i < liveData->menuItemsCount; ++i) {
if (liveData->menuCurrent == liveData->menuItems[i].parentId) {
if (parentMenu == -1)
parentMenu = liveData->menuItems[i].targetParentId;
if (liveData->menuItemSelected == tmpCurrMenuItem) {
tmpMenuItem = liveData->menuItems[i];
tmpMenuItem = &liveData->menuItems[i];
break;
}
tmpCurrMenuItem++;
@@ -922,64 +939,63 @@ void Board320_240::menuItemClick() {
// Exit menu, parent level menu, open item
if (liveData->menuItemSelected == 0) {
// Exit menu
if (tmpMenuItem.parentId == 0 && tmpMenuItem.id == 0) {
if (tmpMenuItem->parentId == 0 && tmpMenuItem->id == 0) {
liveData->menuVisible = false;
redrawScreen();
} else {
// Parent menu
liveData->menuCurrent = tmpMenuItem.targetParentId;
liveData->menuCurrent = tmpMenuItem->targetParentId;
showMenu();
}
return;
} else {
Serial.println(tmpMenuItem.id);
Serial.println(tmpMenuItem->id);
// Device list
if (tmpMenuItem.id > 10000 && tmpMenuItem.id < 10100) {
strlcpy((char*)liveData->settings.obdMacAddress, (char*)tmpMenuItem.obdMacAddress, 20);
if (tmpMenuItem->id > 10000 && tmpMenuItem->id < 10100) {
strlcpy((char*)liveData->settings.obdMacAddress, (char*)tmpMenuItem->obdMacAddress, 20);
Serial.print("Selected adapter MAC address ");
Serial.println(liveData->settings.obdMacAddress);
saveSettings();
ESP.restart();
}
// Other menus
switch (tmpMenuItem.id) {
bool showParentMenu = false;
switch (tmpMenuItem->id) {
// Set vehicle type
case 101: liveData->settings.carType = CAR_KIA_ENIRO_2020_64; break;
case 102: liveData->settings.carType = CAR_HYUNDAI_KONA_2020_64; break;
case 103: liveData->settings.carType = CAR_HYUNDAI_IONIQ_2018; break;
case 104: liveData->settings.carType = CAR_KIA_ENIRO_2020_39; break;
case 105: liveData->settings.carType = CAR_HYUNDAI_KONA_2020_39; break;
case 106: liveData->settings.carType = CAR_RENAULT_ZOE; break;
case 107: liveData->settings.carType = CAR_DEBUG_OBD2_KIA; break;
case 101: liveData->settings.carType = CAR_KIA_ENIRO_2020_64; showMenu(); return; break;
case 102: liveData->settings.carType = CAR_HYUNDAI_KONA_2020_64; showMenu(); return; break;
case 103: liveData->settings.carType = CAR_HYUNDAI_IONIQ_2018; showMenu(); return; break;
case 104: liveData->settings.carType = CAR_KIA_ENIRO_2020_39; showMenu(); return; break;
case 105: liveData->settings.carType = CAR_HYUNDAI_KONA_2020_39; showMenu(); return; break;
case 106: liveData->settings.carType = CAR_RENAULT_ZOE; showMenu(); return; break;
case 107: liveData->settings.carType = CAR_DEBUG_OBD2_KIA; showMenu(); return; break;
// Screen orientation
case 3011: liveData->settings.displayRotation = 1; tft.setRotation(liveData->settings.displayRotation); break;
case 3012: liveData->settings.displayRotation = 3; tft.setRotation(liveData->settings.displayRotation); break;
// Default screen
case 3021: liveData->settings.defaultScreen = 1; break;
case 3022: liveData->settings.defaultScreen = 2; break;
case 3023: liveData->settings.defaultScreen = 3; break;
case 3024: liveData->settings.defaultScreen = 4; break;
case 3025: liveData->settings.defaultScreen = 5; break;
case 3021: liveData->settings.defaultScreen = 1; showParentMenu = true; break;
case 3022: liveData->settings.defaultScreen = 2; showParentMenu = true; break;
case 3023: liveData->settings.defaultScreen = 3; showParentMenu = true; break;
case 3024: liveData->settings.defaultScreen = 4; showParentMenu = true; break;
case 3025: liveData->settings.defaultScreen = 5; showParentMenu = true; break;
// Debug screen off/on
case 3031: liveData->settings.debugScreen = 0; break;
case 3032: liveData->settings.debugScreen = 1; break;
case MENU_DEBUG_SCREEN: liveData->settings.debugScreen = (liveData->settings.debugScreen == 1) ? 0 : 1; showMenu(); return; break;
// Lcd brightness
case 3041: liveData->settings.lcdBrightness = 0; break;
case 3042: liveData->settings.lcdBrightness = 20; break;
case 3043: liveData->settings.lcdBrightness = 50; break;
case 3044: liveData->settings.lcdBrightness = 100; break;
case 3041: liveData->settings.lcdBrightness = 0; showParentMenu = true; break;
case 3042: liveData->settings.lcdBrightness = 20; showParentMenu = true; break;
case 3043: liveData->settings.lcdBrightness = 50; showParentMenu = true; break;
case 3044: liveData->settings.lcdBrightness = 100; showParentMenu = true; break;
// Pre-drawn charg.graphs off/on
case 3051: liveData->settings.predrawnChargingGraphs = 0; break;
case 3052: liveData->settings.predrawnChargingGraphs = 1; break;
case MENU_PREDRAWN_GRAPHS: liveData->settings.predrawnChargingGraphs = (liveData->settings.predrawnChargingGraphs == 1) ? 0 : 1; showMenu(); return; break;
// Distance
case 4011: liveData->settings.distanceUnit = 'k'; break;
case 4012: liveData->settings.distanceUnit = 'm'; break;
case 4011: liveData->settings.distanceUnit = 'k'; showParentMenu = true; break;
case 4012: liveData->settings.distanceUnit = 'm'; showParentMenu = true; break;
// Temperature
case 4021: liveData->settings.temperatureUnit = 'c'; break;
case 4022: liveData->settings.temperatureUnit = 'f'; break;
case 4021: liveData->settings.temperatureUnit = 'c'; showParentMenu = true; break;
case 4022: liveData->settings.temperatureUnit = 'f'; showParentMenu = true; break;
// Pressure
case 4031: liveData->settings.pressureUnit = 'b'; break;
case 4032: liveData->settings.pressureUnit = 'p'; break;
case 4031: liveData->settings.pressureUnit = 'b'; showParentMenu = true; break;
case 4032: liveData->settings.pressureUnit = 'p'; showParentMenu = true; break;
// Pair ble device
case 2: scanDevices = true; /*startBleScan(); */return;
// Reset settings
@@ -992,15 +1008,22 @@ void Board320_240::menuItemClick() {
case 11: shutdownDevice(); return;
default:
// Submenu
liveData->menuCurrent = tmpMenuItem.id;
liveData->menuCurrent = tmpMenuItem->id;
liveData->menuItemSelected = 0;
showMenu();
return;
}
if (showParentMenu && parentMenu != -1) {
liveData->menuCurrent = parentMenu;
liveData->menuItemSelected = 0;
Serial.println(liveData->menuCurrent);
showMenu();
} else {
// close menu
hideMenu();
}
}
}
/**
@@ -1165,8 +1188,8 @@ void Board320_240::mainLoop() {
}
/**
* skipAdapterScan
*/
skipAdapterScan
*/
bool Board320_240::skipAdapterScan() {
return digitalRead(pinButtonMiddle) == LOW || digitalRead(pinButtonLeft) == LOW || digitalRead(pinButtonRight) == LOW;
}

View File

@@ -4,6 +4,7 @@
- m5stack mute speaker
- settings v4 (wifi/gprs/sdcard/ntp/..)
- ble4 skipped if mac is not set (00:00:00:00:00:00)
- improved menu
### v2.0.0 2020-12-02
- Project renamed from eNiroDashboard to evDash

View File

@@ -66,4 +66,16 @@ typedef struct {
char serviceUUID[40];
} MENU_ITEM;
#define MENU_VEHICLE_TYPE 1
#define MENU_SAVE_SETTINGS 9
#define MENU_APP_VERSION 10
#define MENU_DEFAULT_SCREEN 302
#define MENU_DEBUG_SCREEN 303
#define MENU_SCREEN_BRIGHTNESS 304
#define MENU_PREDRAWN_GRAPHS 305
#define MENU_DISTANCE_UNIT 401
#define MENU_TEMPERATURE_UNIT 402
#define MENU_PRESSURE_UNIT 403
#endif // CONFIG_H

28
menu.h
View File

@@ -5,13 +5,13 @@
MENU_ITEM menuItemsSource[79] = {
{0, 0, 0, "<- exit menu"},
{1, 0, -1, "Vehicle type"},
{MENU_VEHICLE_TYPE, 0, -1, "Vehicle type"},
{2, 0, -1, "Select OBD2BLE adapter"},
{3, 0, -1, "Others"},
{4, 0, -1, "Units"},
{8, 0, -1, "Factory reset"},
{9, 0, -1, "Save settings"},
{10, 0, -1, "Version"},
{MENU_SAVE_SETTINGS, 0, -1, "Save settings"},
{MENU_APP_VERSION, 0, -1, "Version"},
{11, 0, -1, "Shutdown"},
{100, 1, 0, "<- parent menu"},
@@ -25,17 +25,17 @@ MENU_ITEM menuItemsSource[79] = {
{300, 3, 0, "<- parent menu"},
{301, 3, -1, "Screen rotation"},
{302, 3, -1, "Default screen"},
{303, 3, -1, "Debug screen off/on"},
{304, 3, -1, "LCD brightness"},
{305, 3, -1, "Pre-drawn ch.graphs 0/1"},
{MENU_DEFAULT_SCREEN, 3, -1, "Default screen"},
{MENU_DEBUG_SCREEN, 3, -1, "Debug screen"},
{MENU_SCREEN_BRIGHTNESS, 3, -1, "LCD brightness"},
{MENU_PREDRAWN_GRAPHS, 3, -1, "Pre-drawn ch.graphs"},
{306, 3, -1, "[DEV] WiFi network"},
{307, 3, -1, "[DEV] SD card"},
{400, 4, 0, "<- parent menu"},
{401, 4, -1, "Distance"},
{402, 4, -1, "Temperature"},
{403, 4, -1, "Pressure"},
{MENU_DISTANCE_UNIT, 4, -1, "Distance"},
{MENU_TEMPERATURE_UNIT, 4, -1, "Temperature"},
{MENU_PRESSURE_UNIT, 4, -1, "Pressure"},
{3010, 301, 3, "<- parent menu"},
{3011, 301, -1, "Normal"},
@@ -48,20 +48,12 @@ MENU_ITEM menuItemsSource[79] = {
{3024, 302, -1, "Battery cells"},
{3025, 302, -1, "Charging graph"},
{3030, 303, 3, "<- parent menu"},
{3031, 303, -1, "Off"},
{3032, 303, -1, "On"},
{3040, 304, 3, "<- parent menu"},
{3041, 304, -1, "Auto"},
{3042, 304, -1, "20%"},
{3043, 304, -1, "50%"},
{3044, 304, -1, "100%"},
{3050, 305, 3, "<- parent menu"},
{3051, 305, -1, "Off"},
{3052, 305, -1, "On"},
{3060, 306, 3, "<- parent menu"},
{3061, 306, -1, "WiFi off/on"},
{3062, 306, -1, "SSID"},