|
|
@ -10,7 +10,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
EncButton<EB_TICK, pinButton> btnUp(INPUT);
|
|
|
|
EncButton<EB_TICK, pinButton> btnUp(INPUT);
|
|
|
|
//#define DEBUG;
|
|
|
|
//#define DEBUG;
|
|
|
|
#define LOGS;
|
|
|
|
//#define LOGS;
|
|
|
|
// avr
|
|
|
|
// avr
|
|
|
|
#define FIS_ENA 5
|
|
|
|
#define FIS_ENA 5
|
|
|
|
#define FIS_CLK 6
|
|
|
|
#define FIS_CLK 6
|
|
|
@ -29,9 +29,10 @@ VAGFISWriter fisWriter(FIS_CLK, FIS_DATA, FIS_ENA, 1);
|
|
|
|
|
|
|
|
|
|
|
|
int ADR_Engine_Speed = 10400;
|
|
|
|
int ADR_Engine_Speed = 10400;
|
|
|
|
int ADR_Dashboard_Speed = 10400;
|
|
|
|
int ADR_Dashboard_Speed = 10400;
|
|
|
|
uint8_t ErrorArray[10];
|
|
|
|
int ErrorArray[10];
|
|
|
|
NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic
|
|
|
|
NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic
|
|
|
|
|
|
|
|
bool readErrorflag = 0;
|
|
|
|
|
|
|
|
int errorErrorCount = 1;
|
|
|
|
bool logoDash = 0;
|
|
|
|
bool logoDash = 0;
|
|
|
|
const uint8_t PROGMEM quattroLogo[56]{
|
|
|
|
const uint8_t PROGMEM quattroLogo[56]{
|
|
|
|
0xff, 0xff, 0xff, 0xff, 0x3e, 0xff, 0xff, 0xff, 0xc0, 0xef, 0xec, 0x02, 0x04, 0x1e, 0x0f, 0x9b, 0x80, 0x2f, 0xe8, 0x01, 0x3e, 0xfc, 0x04, 0x01, 0xbf, 0x2f, 0xe9, 0xf9, 0x3a, 0xe5, 0xfc, 0xfc, 0x80, 0x20, 0x08, 0x09, 0x02, 0x05, 0xfc, 0x01, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
|
|
|
|
0xff, 0xff, 0xff, 0xff, 0x3e, 0xff, 0xff, 0xff, 0xc0, 0xef, 0xec, 0x02, 0x04, 0x1e, 0x0f, 0x9b, 0x80, 0x2f, 0xe8, 0x01, 0x3e, 0xfc, 0x04, 0x01, 0xbf, 0x2f, 0xe9, 0xf9, 0x3a, 0xe5, 0xfc, 0xfc, 0x80, 0x20, 0x08, 0x09, 0x02, 0x05, 0xfc, 0x01, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
|
|
|
@ -621,6 +622,48 @@ bool readSensors(int group){
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// сброс ошибок
|
|
|
|
|
|
|
|
bool clearErrors(){
|
|
|
|
|
|
|
|
char s[64];
|
|
|
|
|
|
|
|
sprintf(s, "\x03%c\x05\x03", blockCounter);
|
|
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
|
|
|
Serial.println(F("TUTTUTTUTTUTTUT"));
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
if (!KWPSendBlock(s, 4)) return false;
|
|
|
|
|
|
|
|
int size = 0;
|
|
|
|
|
|
|
|
KWPReceiveBlock(s, 64, size);
|
|
|
|
|
|
|
|
if (s[3] == '\xFF' && s[4] == '\xFF') {
|
|
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
|
|
|
Serial.println(F("No errors in ECU"));
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (s[2] != '\xFC') {
|
|
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
|
|
|
Serial.println(F("Invalid answer from ECU"));
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#ifdef LOGS
|
|
|
|
|
|
|
|
Serial.println(F("------readErrors------"));
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
int count = (size-4) / 3;
|
|
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
|
|
|
Serial.print(F("count="));
|
|
|
|
|
|
|
|
Serial.println(count);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// конец сброса ошибок
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// чтение ошибок. Пишется в массив ErrorArray - 0 элемент - количество ошибок, дальше их номера
|
|
|
|
// чтение ошибок. Пишется в массив ErrorArray - 0 элемент - количество ошибок, дальше их номера
|
|
|
|
bool readErrors(){
|
|
|
|
bool readErrors(){
|
|
|
|
// uint8_t ErrorArray[10];
|
|
|
|
// uint8_t ErrorArray[10];
|
|
|
@ -661,7 +704,7 @@ int v = a*256+b;
|
|
|
|
ErrorArray[0] = count;
|
|
|
|
ErrorArray[0] = count;
|
|
|
|
ErrorArray[idx+1] = v;
|
|
|
|
ErrorArray[idx+1] = v;
|
|
|
|
#ifdef LOGS
|
|
|
|
#ifdef LOGS
|
|
|
|
Serial.println(v);
|
|
|
|
//Serial.println(v);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
@ -736,9 +779,15 @@ void loop()
|
|
|
|
|
|
|
|
|
|
|
|
if (btnUp.held())
|
|
|
|
if (btnUp.held())
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
if(currPage==10){
|
|
|
|
|
|
|
|
clearErrors();
|
|
|
|
|
|
|
|
} else {
|
|
|
|
fullDash = !fullDash;
|
|
|
|
fullDash = !fullDash;
|
|
|
|
countLoop = 1;
|
|
|
|
countLoop = 1;
|
|
|
|
fisWriter.reset();
|
|
|
|
fisWriter.reset();
|
|
|
|
|
|
|
|
!readErrorflag;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!fullDash)
|
|
|
|
if (!fullDash)
|
|
|
@ -748,6 +797,7 @@ void loop()
|
|
|
|
currPage++;
|
|
|
|
currPage++;
|
|
|
|
if (currPage > 10)
|
|
|
|
if (currPage > 10)
|
|
|
|
currPage = 1;
|
|
|
|
currPage = 1;
|
|
|
|
|
|
|
|
!readErrorflag;
|
|
|
|
eeprom_update_byte(0, currPage);
|
|
|
|
eeprom_update_byte(0, currPage);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -841,21 +891,34 @@ void loop()
|
|
|
|
fisWriter.sendString(String(vehicleSpeedAVG) + "K", String(L100AVG) + "L");
|
|
|
|
fisWriter.sendString(String(vehicleSpeedAVG) + "K", String(L100AVG) + "L");
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 9:
|
|
|
|
case 9:
|
|
|
|
getDashboardSensor(2);
|
|
|
|
getECUSensor(20);
|
|
|
|
fisWriter.sendString("FUEL:", String(fuelLevel));
|
|
|
|
fisWriter.sendString("RETARDS:", String(param0) + ":" + String(param1) + ":" + String(param2) + ":" + String(param3));
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
// getDashboardSensor(2);
|
|
|
|
|
|
|
|
// fisWriter.sendString("FUEL:", String(fuelLevel));
|
|
|
|
|
|
|
|
// break;
|
|
|
|
case 10:
|
|
|
|
case 10:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(!readErrorflag){
|
|
|
|
if (currAddr != ADR_Engine)
|
|
|
|
if (currAddr != ADR_Engine)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
connect(ADR_Engine, ADR_Engine_Speed);
|
|
|
|
connect(ADR_Engine, ADR_Engine_Speed);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
readErrors();
|
|
|
|
readErrors();
|
|
|
|
fisWriter.sendString(String(ErrorArray[0]), String(ErrorArray[1]));
|
|
|
|
!readErrorflag;
|
|
|
|
|
|
|
|
// disconnect();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(ErrorArray[errorErrorCount]){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
errorErrorCount = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fisWriter.sendString(String(ErrorArray[0]), String(ErrorArray[errorErrorCount]));
|
|
|
|
|
|
|
|
Serial.println(ErrorArray[errorErrorCount]);
|
|
|
|
|
|
|
|
errorErrorCount++;
|
|
|
|
|
|
|
|
delay(1000);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|