diff --git a/README.md b/README.md index b97dfa8..8de2af6 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,9 @@ Screen list ## Release notes +### v1.7.3 2020-11-11 +- Headlights reminder (if drive mode & headlights are off) + ### v1.7.2 2020-11-10 - improved charging graph diff --git a/car_kia_eniro.h b/car_kia_eniro.h index 715e8df..1beaab9 100644 --- a/car_kia_eniro.h +++ b/car_kia_eniro.h @@ -93,23 +93,19 @@ bool parseRowMergedKiaENiro() { // ABS / ESP + AHB 7D1 if (currentAtshRequest.equals("ATSH7D1")) { if (commandRequest.equals("22C101")) { - params.driveMode = hexToDec(responseRowMerged.substring(22, 24).c_str(), 1, false); - // 7 (val 128) - // 6 (val 64) - // 5 (val 32) - // 4 (val 16) - // 3 (val 8) - // 2 (val 4) DRIVE mode - // 1 (val 2) REVERSE mode - // 0 (val 1) PARK mode / NEUTRAL - /* params.espState = hexToDec(responseRowMerged.substring(42, 44).c_str(), 1, false); - // b6 (val 64) 1 - ESP OFF, 0 - ESP ON - */ -/* params.xxx = hexToDec(responseRowMerged.substring(44, 46).c_str(), 1, false); - // 5 (val 32) default 1 - // 4 (val 16) default 1 - // 2 (val 4) BRAKE PRESSED - // 0 (val 1) */ + uint8_t driveMode = hexToDec(responseRowMerged.substring(22, 24).c_str(), 1, false); + params.forwardDriveMode = (driveMode == 4); + params.reverseDriveMode = (driveMode == 2); + params.parkModeOrNeutral = (driveMode == 1); + // 2 (val 4) DRIVE mode // 1 (val 2) REVERSE mode // 0 (val 1) PARK mode / NEUTRAL + /* params.espState = hexToDec(responseRowMerged.substring(42, 44).c_str(), 1, false); + // b6 (val 64) 1 - ESP OFF, 0 - ESP ON + */ + /* params.xxx = hexToDec(responseRowMerged.substring(44, 46).c_str(), 1, false); + // 5 (val 32) default 1 + // 4 (val 16) default 1 + // 2 (val 4) BRAKE PRESSED + // 0 (val 1) */ } } @@ -117,22 +113,25 @@ bool parseRowMergedKiaENiro() { if (currentAtshRequest.equals("ATSH770")) { if (commandRequest.equals("22BC03")) { params.lightInfo = hexToDec(responseRowMerged.substring(18, 20).c_str(), 1, false); - // 7 (val 128) - // 6 (val 64) - // 5 (val 32) + params.headLights = (bitRead(params.lightInfo, 5) == 1); + params.dayLights = (bitRead(params.lightInfo, 3) == 1); + // low beam 44, dimmed light only 12 + // 7 (val 128) + // 6 (val 64) + // 5 (val 32) headlights on // 4 (val 16) - // 3 (val 8) - // 2 (val 4 + // 3 (val 8) daylights on + // 2 (val 4 daylights on // 1 (val 2) // 0 (val 1) } if (commandRequest.equals("22BC06")) { - params.brakeLightInfo = hexToDec(responseRowMerged.substring(14, 18).c_str(), 1, false); - // 7 (val 128) - // 6 (val 64) - // 5 (val 32) - // 4 (val 16) - // 3 (val 8) + params.brakeLightInfo = hexToDec(responseRowMerged.substring(14, 16).c_str(), 1, false); + // 7 (val 128) + // 6 (val 64) + // 5 (val 32) + // 4 (val 16) + // 3 (val 8) // 2 (val 4 // 1 (val 2) // 0 (val 1) @@ -298,14 +297,14 @@ bool testDataKiaENiro() { commandRequest = "22BC03"; responseRowMerged = "62BC03FDEE7C730A600000AAAA"; parseRowMergedKiaENiro(); - + // ABS / ESP + AHB ATSH7D1 currentAtshRequest = "ATSH7D1"; // 2101 commandRequest = "22C101"; responseRowMerged = "62C1015FD7E7D0FFFF00FF04D0D400000000FF7EFF0030F5010000FFFF7F6307F207FE05FF00FF3FFFFFAAAAAAAAAAAA"; parseRowMergedKiaENiro(); - + // VMCU ATSH7E2 currentAtshRequest = "ATSH7E2"; // 2101 diff --git a/dist/enirodashboard.ino.bin b/dist/enirodashboard.ino.bin index 5c917f7..42c84b2 100644 Binary files a/dist/enirodashboard.ino.bin and b/dist/enirodashboard.ino.bin differ diff --git a/enirodashboard.ino b/enirodashboard.ino index 41f875f..15b49a8 100644 --- a/enirodashboard.ino +++ b/enirodashboard.ino @@ -1,6 +1,6 @@ /* - KIA eNiro Dashboard 1.7.2, 2020-11-10 + KIA eNiro Dashboard 1.7.3, 2020-11-11 !! working only with OBD BLE 4.0 adapters !! Supported adapter is Vgate ICar Pro (must be BLE4.0 version) !! Not working with standard BLUETOOTH 3 adapters @@ -107,6 +107,8 @@ byte displayScreenAutoMode = 0; bool btnLeftPressed = true; bool btnMiddlePressed = true; bool btnRightPressed = true; +bool nextFrameFullRedraw = true; +bool testDataMode = false; // Menu id/parent/title typedef struct { @@ -277,8 +279,12 @@ bool initStructure() { params.chargingStartTime = params.currentTime = 0; params.lightInfo = 0; + params.headLights = false; + params.dayLights = false; params.brakeLightInfo = 0; - params.driveMode = 0; + params.forwardDriveMode = false; + params.reverseDriveMode = false; + params.parkModeOrNeutral = false; params.espState = 0; params.speedKmh = -1; params.odoKm = -1; @@ -707,11 +713,11 @@ bool drawSceneSpeed(bool force) { tft.setTextDatum(MR_DATUM); tft.setTextColor(TFT_YELLOW, TFT_BLACK); sprintf(tmpStr3, " %d", params.brakeLightInfo); - tft.drawString(tmpStr3, 250, 20, GFXFF); - sprintf(tmpStr3, " %d", params.lightInfo); tft.drawString(tmpStr3, 250, 50, GFXFF); - sprintf(tmpStr3, " %d", params.driveMode); + sprintf(tmpStr3, " %d", params.lightInfo); tft.drawString(tmpStr3, 250, 80, GFXFF); + //sprintf(tmpStr3, " %d", params.driveMode); + //tft.drawString(tmpStr3, 250, 80, GFXFF); // Soc%, bat.kWh tft.setFreeFont(&Orbitron_Light_32); @@ -1189,6 +1195,7 @@ bool menuItemClick() { */ bool redrawScreen(bool force) { + nextFrameFullRedraw = false; if (menuVisible) { return false; } @@ -1198,6 +1205,17 @@ bool redrawScreen(bool force) { tft.fillScreen(TFT_BLACK); } + // Lights not enabled + if (!testDataMode && params.forwardDriveMode && !params.headLights && !params.dayLights) { + tft.fillScreen(TFT_RED); + tft.setFreeFont(&Orbitron_Light_32); + tft.setTextColor(TFT_WHITE, TFT_RED); + tft.setTextDatum(MC_DATUM); + tft.drawString("! LIGHTS OFF !", 160, 120, GFXFF); + nextFrameFullRedraw = true; + return true; + } + // 1. Auto mode = >5kpm Screen 3 - speed, other wise basic Screen2 - Main screen, if charging then Screen 5 Graph if (displayScreen == 1) { if (params.speedKmh > 5) { @@ -1262,7 +1280,7 @@ bool doNextAtCommand() { if (commandQueueIndex >= commandQueueCount) { commandQueueIndex = commandQueueLoopFrom; // Redraw only changed values - redrawScreen(false); + redrawScreen(nextFrameFullRedraw); } // Send AT command to obd @@ -1331,6 +1349,7 @@ bool testData() { if (settings.carType == CAR_KIA_ENIRO_2020_64 || settings.carType == CAR_HYUNDAI_KONA_2020_64 || settings.carType == CAR_KIA_ENIRO_2020_39 || settings.carType == CAR_HYUNDAI_KONA_2020_39) { + testDataMode = true; testDataKiaENiro(); } if (settings.carType == CAR_HYUNDAI_IONIQ_2018) { diff --git a/struct.h b/struct.h index 5bfe616..73a12d8 100644 --- a/struct.h +++ b/struct.h @@ -21,7 +21,11 @@ String currentAtshRequest = ""; typedef struct { time_t currentTime; time_t chargingStartTime; - uint8_t driveMode; + bool forwardDriveMode; + bool reverseDriveMode; + bool parkModeOrNeutral; + bool headLights; + bool dayLights; uint8_t lightInfo; uint8_t brakeLightInfo; uint8_t espState;