Delete Ecu.cpp
This commit is contained in:
parent
811c4614f1
commit
da51153d9c
|
@ -1,866 +0,0 @@
|
|||
//################################################################################
|
||||
//################################################################################
|
||||
//#### ####
|
||||
//#### ARDUINO ECTUNE DATALOGGER V1.4 ####
|
||||
//#### ####
|
||||
//#### THIS IS A HONDA OBD1 DATALOGGER TO BE USED ON THE CN2 DATALOG PORT ####
|
||||
//#### OF THE ECU. THE DATALOGGING PROTOCOL IS ONLY FOR ECTUNE, SO YOU MUST ####
|
||||
//#### HAVE A CHIPPED ECU AND TUNED UNDER ECTUNE TUNING MANAGMENT. ####
|
||||
//#### ####
|
||||
//#### MADE BY BOULETMARC AND AGE-TUNING ####
|
||||
//#### ####
|
||||
//################################################################################
|
||||
//################################################################################
|
||||
|
||||
#include "Arduino.h"
|
||||
#include "Ecu.h"
|
||||
#include "math.h"
|
||||
|
||||
//SET modable variables
|
||||
int Injectors_Size = 240; //Set the injectors size, used for consumptions
|
||||
int mBarSeaLevel = 1013;
|
||||
bool UseCelcius = true;
|
||||
bool UseKMH = true;
|
||||
String Unit_Map = "mBar"; // mBar, Bar, inHgG, inHg, psi, kPa (type it with specifics caps)
|
||||
String WBinput = "o2Input"; //o2Input, eldInput, egrInput, b6Input
|
||||
long Timeout_Time = 500; //Wait 500ms until the read array can be received otherwise call TimeOut
|
||||
|
||||
|
||||
//################################################################################
|
||||
//#### DONT EDIT ANYTHING BELLOW THIS LINE ####
|
||||
//################################################################################
|
||||
//SET unmodable variables
|
||||
float ReadTime = 0;
|
||||
int CurrentTranny = 0;
|
||||
bool J12_Cut = true;
|
||||
bool Error = false;
|
||||
const int Array_Size = 52;
|
||||
byte Datalog_Bytes[Array_Size];
|
||||
byte Tranny_Bytes[10] = {0x46, 0x00, 0x67, 0x00, 0x8E, 0x00, 0xB8, 0x00, 0x52, 0xDE};
|
||||
//Tranny_Bytes = {0x46, 0x00, 0x67, 0x00, 0x8E, 0x00, 0xB8, 0x00, 0x52, 0xDE};
|
||||
|
||||
//JUST SOMES TRANNY BYES INFOS
|
||||
//0 = 'Y21/Y80/S80' {0x46, 0x00, 0x67, 0x00, 0x8E, 0x00, 0xB8, 0x00, 0x52, 0xDE};
|
||||
//1 = 'ITR S80 JDM 98-01' {0x42, 0x00, 0x5D, 0x00, 0x87, 0x00, 0xB6, 0x00, 0x52, 0xDE};
|
||||
//2 = 'ITR S80 USDM 97-01 ' {0x46, 0x00, 0x64, 0x00, 0x91, 0x00, 0xB8, 0x00, 0x52, 0xDE};
|
||||
//3 = 'Z6/Y8' {0x48, 0x00, 0x71, 0x00, 0xAA, 0x00, 0xE3, 0x00, 0x52, 0xDE};
|
||||
//4 = 'GSR' {0x46, 0x00, 0x6E, 0x00, 0x9A, 0x00, 0xC4, 0x00, 0x52, 0xDE};
|
||||
//5 = 'LS/RS/GS/SE' {0x48, 0x00, 0x71, 0x00, 0xB2, 0x00, 0xD6, 0x00, 0x52, 0xDE};
|
||||
//6 = 'H22 JDM' {0x47, 0x00, 0x6E, 0x00, 0x9E, 0x00, 0xC3, 0x00, 0x52, 0xDE};
|
||||
//7 = 'H22 USDM/H23 JDM' {0x47, 0x00, 0x6E, 0x00, 0x9E, 0x00, 0xC9, 0x00, 0x52, 0xDE};
|
||||
//8 = 'H23 USDM' {0x4A, 0x00, 0x7B, 0x00, 0xAF, 0x00, 0xE0, 0x00, 0x52, 0xDE};
|
||||
//9 = 'D16Y7' {0x4B, 0x00, 0x7D, 0x00, 0xBC, 0x00, 0xED, 0x00, 0x52, 0xDE};
|
||||
|
||||
//################################################################################
|
||||
//################################################################################
|
||||
//SET MAIN FUNCTIONS
|
||||
|
||||
Ecu::Ecu(){
|
||||
}
|
||||
|
||||
void Ecu::Connect() {
|
||||
Serial.begin(38400);
|
||||
Error = false;
|
||||
}
|
||||
|
||||
void Ecu::Disconnect() {
|
||||
Serial.end();
|
||||
Error = false;
|
||||
}
|
||||
|
||||
bool Ecu::GetJ12Cut() {
|
||||
J12_Cut = true;
|
||||
|
||||
Serial.write((byte) 171);
|
||||
if ((int) Serial.read() != 205) {
|
||||
//Serial.end();
|
||||
J12_Cut = false;
|
||||
Error = true;
|
||||
}
|
||||
return J12_Cut;
|
||||
}
|
||||
|
||||
void Ecu::GetData(){
|
||||
while(Serial.available()) {
|
||||
for (int i = 0; i < Array_Size; i++){
|
||||
Datalog_Bytes[i] = Serial.read();
|
||||
delay(1);
|
||||
}
|
||||
}
|
||||
Serial.flush();
|
||||
Serial.write(" ");
|
||||
}
|
||||
|
||||
void Ecu::SendRead(){
|
||||
unsigned long PreviousTimeRead = millis();
|
||||
|
||||
Serial.flush();
|
||||
Serial.write(" ");
|
||||
|
||||
unsigned long PreviousTime = millis();
|
||||
unsigned long Time = millis() - PreviousTime;
|
||||
while(Serial.available() != Array_Size && (Time < Timeout_Time)) Time = millis() - PreviousTime;
|
||||
|
||||
if (Time >= Timeout_Time) {
|
||||
for (int i = 0; i < Array_Size; i++)
|
||||
Datalog_Bytes[i] = 0;
|
||||
|
||||
ReadTime = (int) (millis() - PreviousTimeRead);
|
||||
Error = true;
|
||||
}
|
||||
|
||||
for (int i = 0; i < Array_Size; i++){
|
||||
Datalog_Bytes[i] = Serial.read();
|
||||
delay(1);
|
||||
}
|
||||
|
||||
ReadTime = (int) (millis() - PreviousTimeRead);
|
||||
|
||||
Error = false;
|
||||
}
|
||||
|
||||
/*void Ecu::Send(){
|
||||
Serial.flush();
|
||||
Serial.write(" ");
|
||||
}
|
||||
|
||||
void Ecu::Read(){
|
||||
Error = false;
|
||||
unsigned long PreviousTimeRead = millis();
|
||||
|
||||
if (Serial.available() >= Array_Size) {
|
||||
for (int i = 0; i < Array_Size; i++){
|
||||
Datalog_Bytes[i] = Serial.read();
|
||||
//delay(1);
|
||||
}
|
||||
} else {
|
||||
Error = true;
|
||||
}
|
||||
|
||||
ReadTime = (int) (millis() - PreviousTimeRead);
|
||||
}
|
||||
|
||||
void Ecu::ReadAvailable(){
|
||||
Error = false;
|
||||
unsigned long PreviousTimeRead = millis();
|
||||
|
||||
if (Serial.available() > 0) {
|
||||
for (int i = 0; i < Serial.available(); i++){
|
||||
Datalog_Bytes[i] = Serial.read();
|
||||
//delay(1);
|
||||
}
|
||||
} else {
|
||||
Error = true;
|
||||
}
|
||||
|
||||
ReadTime = (int) (millis() - PreviousTimeRead);
|
||||
}
|
||||
|
||||
int Ecu::GetAvailable() {
|
||||
return (int) Serial.available();
|
||||
}
|
||||
|
||||
int Ecu::GetReadTime() {
|
||||
return ReadTime;
|
||||
}*/
|
||||
|
||||
//################################################################################
|
||||
//################################################################################
|
||||
//SET VARIABLES FUNCTIONS
|
||||
|
||||
//int variables
|
||||
void Ecu::SetInjSize(int Size) {
|
||||
Injectors_Size = Size;
|
||||
}
|
||||
|
||||
int Ecu::GetInjSize() {
|
||||
return Injectors_Size;
|
||||
}
|
||||
|
||||
void Ecu::SetSeaLevel(int Size) {
|
||||
mBarSeaLevel = Size;
|
||||
}
|
||||
|
||||
int Ecu::GetSeaLevel() {
|
||||
return mBarSeaLevel;
|
||||
}
|
||||
|
||||
void Ecu::SetTimeoutTime(int Size) {
|
||||
Timeout_Time = (long) Size;
|
||||
}
|
||||
|
||||
int Ecu::GetTimeoutTime() {
|
||||
return (int) Timeout_Time;
|
||||
}
|
||||
|
||||
//bool variables
|
||||
void Ecu::SetUseCelcius(bool Use) {
|
||||
UseCelcius = Use;
|
||||
}
|
||||
|
||||
bool Ecu::GetUseCelcius() {
|
||||
return UseCelcius;
|
||||
}
|
||||
|
||||
void Ecu::SetUseKMH(bool Use) {
|
||||
UseKMH = Use;
|
||||
}
|
||||
|
||||
bool Ecu::GetUseKMH() {
|
||||
return UseKMH;
|
||||
}
|
||||
|
||||
bool Ecu::GetError() {
|
||||
return Error;
|
||||
}
|
||||
|
||||
//string variables
|
||||
void Ecu::SetUnitMap(String This) {
|
||||
Unit_Map = This;
|
||||
}
|
||||
|
||||
String Ecu::GetUnitMap() {
|
||||
return Unit_Map;
|
||||
}
|
||||
|
||||
void Ecu::SetWBinput(String This) {
|
||||
WBinput = This;
|
||||
}
|
||||
|
||||
String Ecu::GetWBinput() {
|
||||
return WBinput;
|
||||
}
|
||||
|
||||
void Ecu::SetTranny(int ThisTranny) {
|
||||
CurrentTranny = ThisTranny;
|
||||
if (ThisTranny == 0) {
|
||||
Tranny_Bytes[0] = 0x46;
|
||||
Tranny_Bytes[1] = 0x00;
|
||||
Tranny_Bytes[2] = 0x67;
|
||||
Tranny_Bytes[3] = 0x00;
|
||||
Tranny_Bytes[4] = 0x8E;
|
||||
Tranny_Bytes[5] = 0x00;
|
||||
Tranny_Bytes[6] = 0xB8;
|
||||
Tranny_Bytes[7] = 0x00;
|
||||
Tranny_Bytes[8] = 0x52;
|
||||
Tranny_Bytes[9] = 0xDE;
|
||||
//Tranny_Bytes = {0x46, 0x00, 0x67, 0x00, 0x8E, 0x00, 0xB8, 0x00, 0x52, 0xDE};
|
||||
} else if (ThisTranny == 1) {
|
||||
Tranny_Bytes[0] = 0x42;
|
||||
Tranny_Bytes[1] = 0x00;
|
||||
Tranny_Bytes[2] = 0x5D;
|
||||
Tranny_Bytes[3] = 0x00;
|
||||
Tranny_Bytes[4] = 0x87;
|
||||
Tranny_Bytes[5] = 0x00;
|
||||
Tranny_Bytes[6] = 0xB6;
|
||||
Tranny_Bytes[7] = 0x00;
|
||||
Tranny_Bytes[8] = 0x52;
|
||||
Tranny_Bytes[9] = 0xDE;
|
||||
//Tranny_Bytes = {0x42, 0x00, 0x5D, 0x00, 0x87, 0x00, 0xB6, 0x00, 0x52, 0xDE};
|
||||
} else if (ThisTranny == 2) {
|
||||
Tranny_Bytes[0] = 0x46;
|
||||
Tranny_Bytes[1] = 0x00;
|
||||
Tranny_Bytes[2] = 0x64;
|
||||
Tranny_Bytes[3] = 0x00;
|
||||
Tranny_Bytes[4] = 0x91;
|
||||
Tranny_Bytes[5] = 0x00;
|
||||
Tranny_Bytes[6] = 0xB8;
|
||||
Tranny_Bytes[7] = 0x00;
|
||||
Tranny_Bytes[8] = 0x52;
|
||||
Tranny_Bytes[9] = 0xDE;
|
||||
//Tranny_Bytes = {0x46, 0x00, 0x64, 0x00, 0x91, 0x00, 0xB8, 0x00, 0x52, 0xDE};
|
||||
} else if (ThisTranny == 3) {
|
||||
Tranny_Bytes[0] = 0x48;
|
||||
Tranny_Bytes[1] = 0x00;
|
||||
Tranny_Bytes[2] = 0x71;
|
||||
Tranny_Bytes[3] = 0x00;
|
||||
Tranny_Bytes[4] = 0xAA;
|
||||
Tranny_Bytes[5] = 0x00;
|
||||
Tranny_Bytes[6] = 0xE3;
|
||||
Tranny_Bytes[7] = 0x00;
|
||||
Tranny_Bytes[8] = 0x52;
|
||||
Tranny_Bytes[9] = 0xDE;
|
||||
//Tranny_Bytes = {0x48, 0x00, 0x71, 0x00, 0xAA, 0x00, 0xE3, 0x00, 0x52, 0xDE};
|
||||
} else if (ThisTranny == 4) {
|
||||
Tranny_Bytes[0] = 0x46;
|
||||
Tranny_Bytes[1] = 0x00;
|
||||
Tranny_Bytes[2] = 0x6E;
|
||||
Tranny_Bytes[3] = 0x00;
|
||||
Tranny_Bytes[4] = 0x9A;
|
||||
Tranny_Bytes[5] = 0x00;
|
||||
Tranny_Bytes[6] = 0xC4;
|
||||
Tranny_Bytes[7] = 0x00;
|
||||
Tranny_Bytes[8] = 0x52;
|
||||
Tranny_Bytes[9] = 0xDE;
|
||||
//Tranny_Bytes = {0x46, 0x00, 0x6E, 0x00, 0x9A, 0x00, 0xC4, 0x00, 0x52, 0xDE};
|
||||
} else if (ThisTranny == 5) {
|
||||
Tranny_Bytes[0] = 0x48;
|
||||
Tranny_Bytes[1] = 0x00;
|
||||
Tranny_Bytes[2] = 0x71;
|
||||
Tranny_Bytes[3] = 0x00;
|
||||
Tranny_Bytes[4] = 0xB2;
|
||||
Tranny_Bytes[5] = 0x00;
|
||||
Tranny_Bytes[6] = 0xD6;
|
||||
Tranny_Bytes[7] = 0x00;
|
||||
Tranny_Bytes[8] = 0x52;
|
||||
Tranny_Bytes[9] = 0xDE;
|
||||
//Tranny_Bytes = {0x48, 0x00, 0x71, 0x00, 0xB2, 0x00, 0xD6, 0x00, 0x52, 0xDE};
|
||||
} else if (ThisTranny == 6) {
|
||||
Tranny_Bytes[0] = 0x47;
|
||||
Tranny_Bytes[1] = 0x00;
|
||||
Tranny_Bytes[2] = 0x6E;
|
||||
Tranny_Bytes[3] = 0x00;
|
||||
Tranny_Bytes[4] = 0x9E;
|
||||
Tranny_Bytes[5] = 0x00;
|
||||
Tranny_Bytes[6] = 0xC3;
|
||||
Tranny_Bytes[7] = 0x00;
|
||||
Tranny_Bytes[8] = 0x52;
|
||||
Tranny_Bytes[9] = 0xDE;
|
||||
//Tranny_Bytes = {0x47, 0x00, 0x6E, 0x00, 0x9E, 0x00, 0xC3, 0x00, 0x52, 0xDE};
|
||||
} else if (ThisTranny == 7) {
|
||||
Tranny_Bytes[0] = 0x47;
|
||||
Tranny_Bytes[1] = 0x00;
|
||||
Tranny_Bytes[2] = 0x6E;
|
||||
Tranny_Bytes[3] = 0x00;
|
||||
Tranny_Bytes[4] = 0x9E;
|
||||
Tranny_Bytes[5] = 0x00;
|
||||
Tranny_Bytes[6] = 0xC9;
|
||||
Tranny_Bytes[7] = 0x00;
|
||||
Tranny_Bytes[8] = 0x52;
|
||||
Tranny_Bytes[9] = 0xDE;
|
||||
//Tranny_Bytes = {0x47, 0x00, 0x6E, 0x00, 0x9E, 0x00, 0xC9, 0x00, 0x52, 0xDE};
|
||||
} else if (ThisTranny == 8) {
|
||||
Tranny_Bytes[0] = 0x4A;
|
||||
Tranny_Bytes[1] = 0x00;
|
||||
Tranny_Bytes[2] = 0x7B;
|
||||
Tranny_Bytes[3] = 0x00;
|
||||
Tranny_Bytes[4] = 0xAF;
|
||||
Tranny_Bytes[5] = 0x00;
|
||||
Tranny_Bytes[6] = 0xE0;
|
||||
Tranny_Bytes[7] = 0x00;
|
||||
Tranny_Bytes[8] = 0x52;
|
||||
Tranny_Bytes[9] = 0xDE;
|
||||
//Tranny_Bytes = {0x4A, 0x00, 0x7B, 0x00, 0xAF, 0x00, 0xE0, 0x00, 0x52, 0xDE};
|
||||
} else if (ThisTranny == 9) {
|
||||
Tranny_Bytes[0] = 0x4B;
|
||||
Tranny_Bytes[1] = 0x00;
|
||||
Tranny_Bytes[2] = 0x7D;
|
||||
Tranny_Bytes[3] = 0x00;
|
||||
Tranny_Bytes[4] = 0xBC;
|
||||
Tranny_Bytes[5] = 0x00;
|
||||
Tranny_Bytes[6] = 0xED;
|
||||
Tranny_Bytes[7] = 0x00;
|
||||
Tranny_Bytes[8] = 0x52;
|
||||
Tranny_Bytes[9] = 0xDE;
|
||||
//Tranny_Bytes = {0x4B, 0x00, 0x7D, 0x00, 0xBC, 0x00, 0xED, 0x00, 0x52, 0xDE};
|
||||
} else if (ThisTranny > 9) {
|
||||
Tranny_Bytes[0] = 0x46;
|
||||
Tranny_Bytes[1] = 0x00;
|
||||
Tranny_Bytes[2] = 0x67;
|
||||
Tranny_Bytes[3] = 0x00;
|
||||
Tranny_Bytes[4] = 0x8E;
|
||||
Tranny_Bytes[5] = 0x00;
|
||||
Tranny_Bytes[6] = 0xB8;
|
||||
Tranny_Bytes[7] = 0x00;
|
||||
Tranny_Bytes[8] = 0x52;
|
||||
Tranny_Bytes[9] = 0xDE;
|
||||
//Tranny_Bytes = {0x46, 0x00, 0x67, 0x00, 0x8E, 0x00, 0xB8, 0x00, 0x52, 0xDE};
|
||||
CurrentTranny = 0;
|
||||
}
|
||||
}
|
||||
|
||||
String Ecu::GetTranny() {
|
||||
if (CurrentTranny == 0)
|
||||
return "Y21/Y80/S80";
|
||||
else if (CurrentTranny == 1)
|
||||
return "ITR S80 JDM 98-01";
|
||||
else if (CurrentTranny == 2)
|
||||
return "ITR S80 USDM 97-01";
|
||||
else if (CurrentTranny == 3)
|
||||
return "Z6/Y8";
|
||||
else if (CurrentTranny == 4)
|
||||
return "GSR";
|
||||
else if (CurrentTranny == 5)
|
||||
return "LS/RS/GS/SE";
|
||||
else if (CurrentTranny == 6)
|
||||
return "H22 JDM";
|
||||
else if (CurrentTranny == 7)
|
||||
return "H22 USDM/H23 JDM";
|
||||
else if (CurrentTranny == 8)
|
||||
return "H23 USDM";
|
||||
else if (CurrentTranny == 9)
|
||||
return "D16Y7";
|
||||
}
|
||||
//################################################################################
|
||||
//################################################################################
|
||||
//SET MULTI USED FUNCTIONS
|
||||
|
||||
long Ecu::Long2Bytes(byte ThisByte1, byte ThisByte2) {
|
||||
return (long) ((long) ThisByte2 * 256 + (long) ThisByte1);
|
||||
}
|
||||
|
||||
float Ecu::GetTemperature(byte ThisByte) {
|
||||
float ThisTemp = (float) ThisByte / 51;
|
||||
ThisTemp = (0.1423*pow(ThisTemp,6)) - (2.4938*pow(ThisTemp,5)) + (17.837*pow(ThisTemp,4)) - (68.698*pow(ThisTemp,3)) + (154.69*pow(ThisTemp,2)) - (232.75*ThisTemp) + 284.24;
|
||||
ThisTemp = ((ThisTemp - 32)*5)/9;
|
||||
|
||||
if (!UseCelcius)
|
||||
ThisTemp = ThisTemp * 1.8 + 32.0;
|
||||
|
||||
return ThisTemp;
|
||||
/*if (UseCelcius)
|
||||
return round(double_Temperature[(int) ThisByte]);
|
||||
return round(GetTemperatureF(double_Temperature[(int) ThisByte]));*/
|
||||
}
|
||||
|
||||
double Ecu::GetVolt(byte ThisByte) {
|
||||
return round(((double) ThisByte * 0.0196078438311815) * 100) / 100;
|
||||
}
|
||||
|
||||
float Ecu::GetDuration(int ThisInt) {
|
||||
return (float) ThisInt * 3.20000004768372 / 1000.0;
|
||||
}
|
||||
|
||||
/*float Ecu::GetIC(byte ThisByte) {
|
||||
if ((int) ThisByte == 128)
|
||||
return 0.0f;
|
||||
if ((int) ThisByte < 128)
|
||||
return (float) (128 - (int) ThisByte) * -0.25f;
|
||||
return (float) ((int) ThisByte - 128) * 0.25f;
|
||||
}
|
||||
|
||||
double Ecu::GetFC(long ThisByte, long ThisLong) {
|
||||
double num = (double) ThisByte / (double) ThisLong;
|
||||
//if (CorrectionUnits == "multi")
|
||||
return round((num) * 100) / 100;
|
||||
//return round(num * 100.0 - 100.0);
|
||||
}
|
||||
|
||||
double Ecu::GetEBC(byte ThisByte) {
|
||||
double num = (double) ThisByte / 2.0;
|
||||
if (num > 100.0)
|
||||
num = 100.0;
|
||||
return round((num * 10)) / 10;
|
||||
}*/
|
||||
|
||||
byte Ecu::GetActivated(byte ThisByte, int ThisPos, bool Reversed) {
|
||||
int bitArray[8];
|
||||
for (int i=0; i < 8; ++i ) {
|
||||
bitArray[i] = ThisByte & 1;
|
||||
ThisByte = ThisByte >> 1;
|
||||
}
|
||||
|
||||
if (Reversed)
|
||||
return bitArray[ThisPos] ? (byte) 0 : (byte) 1;
|
||||
return bitArray[ThisPos] ? (byte) 1 : (byte) 0;
|
||||
}
|
||||
|
||||
float Ecu::GetInstantConsumption(){
|
||||
float hundredkm = ((60 / GetVss()) * 100) / 60; //minutes needed to travel 100km
|
||||
float fuelc = (hundredkm * ((Injectors_Size / 100) * GetDuty())) / 1000;
|
||||
return constrain(fuelc, 0.0001, 50.0);
|
||||
}
|
||||
|
||||
float Ecu::GetDuty(){
|
||||
return ((float) GetRpm() * (float) GetInj()) / 1200;
|
||||
}
|
||||
|
||||
float Ecu::GetValueHG(int ThisInt) {
|
||||
return (float) round(((double) ThisInt * 0.02952999) * 10) / 10;
|
||||
}
|
||||
|
||||
//################################################################################
|
||||
//################################################################################
|
||||
//SET 'GET' FUNCTIONS
|
||||
|
||||
unsigned int Ecu::GetEct(){
|
||||
return GetTemperature(Datalog_Bytes[0]);
|
||||
}
|
||||
|
||||
unsigned int Ecu::GetIat(){
|
||||
return GetTemperature(Datalog_Bytes[1]);
|
||||
}
|
||||
|
||||
float Ecu::GetO2(){
|
||||
//unsigned byte O2Byte = 0;
|
||||
if (WBinput == "o2Input") return round((float) GetVolt(Datalog_Bytes[2]) * 100) / 100;//O2Byte = Datalog_Bytes[2];
|
||||
if (WBinput == "eldInput") return round((float) GetVolt(Datalog_Bytes[24]) * 100) / 100;//O2Byte = Datalog_Bytes[24];
|
||||
if (WBinput == "egrInput") return round((float) GetVolt(Datalog_Bytes[44]) * 100) / 100;//O2Byte = Datalog_Bytes[44]; //byte_25
|
||||
if (WBinput == "b6Input") return round((float) GetVolt(Datalog_Bytes[45]) * 100) / 100;//O2Byte = Datalog_Bytes[45];
|
||||
//return round((float) GetVolt(O2Byte) * 100) / 100;
|
||||
//return ((2 * (float) O2Byte[2]) + 10) / 10f;
|
||||
}
|
||||
|
||||
unsigned int Ecu::GetBaro(){
|
||||
return (int) round((double) ((int) Datalog_Bytes[3] / 2 + 24) * 7.221 - 59.0);
|
||||
}
|
||||
|
||||
float Ecu::GetMap(){
|
||||
int ThisInt = (int) Datalog_Bytes[4];
|
||||
//if (Unit_Map == "mBar") return ((float) ThisInt * 2041) / 255; //(1764/255) * (float) ThisInt;
|
||||
if (Unit_Map == "mBar") return 6.9176 * (float) ThisInt;
|
||||
else if (Unit_Map == "Bar") return (float) (ThisInt / 1000);
|
||||
else if (Unit_Map == "inHgG") return (float) round(-((double) GetValueHG(mBarSeaLevel) + (double) GetValueHG(ThisInt)) * 10) / 10;
|
||||
else if (Unit_Map == "inHg") return GetValueHG(ThisInt);
|
||||
else if (Unit_Map == "psi") return (float) round(((double) (ThisInt - mBarSeaLevel) * 0.0145037695765495) * 100) / 100; //GetValuePSI(ThisInt);
|
||||
else if (Unit_Map == "kPa") return (float) round((double) ThisInt * 0.1); //GetValueKPa(ThisInt);
|
||||
else return 0;
|
||||
|
||||
//float mapRaw = Datalog_Bytes[4];
|
||||
//return (1764/255)*mapRaw;
|
||||
}
|
||||
|
||||
unsigned int Ecu::GetTps(){
|
||||
return (int) round(((double) Datalog_Bytes[5] - 25.0) / 2.04);
|
||||
//return constrain((0.4716 * Datalog_Bytes[5]) - 11.3184, 0, 100);
|
||||
}
|
||||
|
||||
unsigned int Ecu::GetRpm(){
|
||||
//return (int) (1875000/Long2Bytes(Datalog_Bytes[6], Datalog_Bytes[7]));
|
||||
return (int) (1851562/Long2Bytes(Datalog_Bytes[6], Datalog_Bytes[7]));
|
||||
}
|
||||
//####
|
||||
/*bool Ecu::GetPostFuel(){
|
||||
return (bool) GetActivated(Datalog_Bytes[8], 0, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetSCCChecker(){
|
||||
return (bool) GetActivated(Datalog_Bytes[8], 1, false);
|
||||
}*/
|
||||
|
||||
bool Ecu::GetIgnCut(){
|
||||
return (bool) GetActivated(Datalog_Bytes[8], 2, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetVTSM(){
|
||||
return (bool) GetActivated(Datalog_Bytes[8], 3, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetFuelCut1(){
|
||||
return (bool) GetActivated(Datalog_Bytes[8], 4, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetFuelCut2(){
|
||||
return (bool) GetActivated(Datalog_Bytes[8], 5, false);
|
||||
}
|
||||
|
||||
/*bool Ecu::GetATShift1(){
|
||||
return (bool) GetActivated(Datalog_Bytes[8], 6, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetATShift2(){
|
||||
return (bool) GetActivated(Datalog_Bytes[8], 7, false);
|
||||
}*/
|
||||
//####
|
||||
unsigned int Ecu::GetVss(){
|
||||
if (UseKMH)
|
||||
return (int) Datalog_Bytes[16];
|
||||
return (int) round((float) Datalog_Bytes[16] / 1.6f);
|
||||
}
|
||||
|
||||
double Ecu::GetInjFV() {
|
||||
return round(((double) Long2Bytes(Datalog_Bytes[17], Datalog_Bytes[18]) / 4.0) * 100) / 100;
|
||||
}
|
||||
|
||||
float Ecu::GetInjectorDuty() {
|
||||
//Get rpm scalars for menus, not extracted the method yet
|
||||
//if (GetRpm() == 0)
|
||||
// return this.method_159(ReturnRPM);
|
||||
|
||||
return (float) ((double) GetRpm() * (double) GetDuration(Long2Bytes(Datalog_Bytes[17], Datalog_Bytes[18])) / 1200.0);
|
||||
}
|
||||
|
||||
float Ecu::GetInj(){
|
||||
return (float) (Long2Bytes(Datalog_Bytes[17], Datalog_Bytes[18]) / 352);
|
||||
}
|
||||
|
||||
unsigned int Ecu::GetIgn(){
|
||||
return (0.25 * Datalog_Bytes[19]) - 6;
|
||||
}
|
||||
|
||||
/*int Ecu::GetIgnTable(){
|
||||
return (0.25 * Datalog_Bytes[20]) - 6;
|
||||
}
|
||||
//####
|
||||
bool Ecu::GetParkN(){
|
||||
return (bool) GetActivated(Datalog_Bytes[21], 0, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetBKSW(){
|
||||
return (bool) GetActivated(Datalog_Bytes[21], 1, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetACC(){
|
||||
return (bool) GetActivated(Datalog_Bytes[21], 2, false);
|
||||
}*/
|
||||
|
||||
bool Ecu::GetVTP(){
|
||||
return (bool) GetActivated(Datalog_Bytes[21], 3, false);
|
||||
}
|
||||
|
||||
/*bool Ecu::GetStart(){
|
||||
return (bool) GetActivated(Datalog_Bytes[21], 4, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetSCC(){
|
||||
return (bool) GetActivated(Datalog_Bytes[21], 5, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetVTSFeedBack(){
|
||||
return (bool) GetActivated(Datalog_Bytes[21], 6, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetPSP(){
|
||||
return (bool) GetActivated(Datalog_Bytes[21], 7, false);
|
||||
}
|
||||
//####
|
||||
bool Ecu::GetFuelPump(){
|
||||
return (bool) GetActivated(Datalog_Bytes[22], 0, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetIAB(){
|
||||
return (bool) GetActivated(Datalog_Bytes[22], 2, false);
|
||||
}*/
|
||||
|
||||
bool Ecu::GetFanCtrl(){
|
||||
return (bool) GetActivated(Datalog_Bytes[22], 4, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetAtlCtrl(){
|
||||
return (bool) GetActivated(Datalog_Bytes[22], 5, false);
|
||||
}
|
||||
|
||||
/*bool Ecu::GetPurge(){
|
||||
return (bool) GetActivated(Datalog_Bytes[22], 6, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetAC(){
|
||||
return (bool) GetActivated(Datalog_Bytes[22], 7, false);
|
||||
}*/
|
||||
//####
|
||||
bool Ecu::GetMIL(){
|
||||
return (bool) GetActivated(Datalog_Bytes[23], 5, false);
|
||||
}
|
||||
|
||||
/*bool Ecu::GetO2Heater(){
|
||||
return (bool) GetActivated(Datalog_Bytes[23], 6, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetVTS(){
|
||||
return (bool) GetActivated(Datalog_Bytes[23], 7, false);
|
||||
}
|
||||
//####
|
||||
double Ecu::GetELDVolt(){
|
||||
return GetVolt(Datalog_Bytes[24]);
|
||||
}*/
|
||||
|
||||
float Ecu::GetBattery(){
|
||||
return (26.0 * Datalog_Bytes[25]) / 270.0;
|
||||
}
|
||||
|
||||
/*double Ecu::GetECTFC(){
|
||||
return GetFC(Datalog_Bytes[26], 128);
|
||||
}
|
||||
|
||||
long Ecu::GetO2Short(){
|
||||
return (long) GetFC(Long2Bytes(Datalog_Bytes[27], Datalog_Bytes[28]), 32768);
|
||||
}
|
||||
|
||||
long Ecu::GetO2Long(){
|
||||
return (long) GetFC(Long2Bytes(Datalog_Bytes[29], Datalog_Bytes[30]), 32768);
|
||||
}
|
||||
|
||||
long Ecu::GetIATFC(){
|
||||
return (long) GetFC(Long2Bytes(Datalog_Bytes[31], Datalog_Bytes[32]), 32768);
|
||||
}
|
||||
|
||||
double Ecu::GetVEFC(){
|
||||
return GetFC(Datalog_Bytes[33], 128);
|
||||
}
|
||||
|
||||
float Ecu::GetIATIC(){
|
||||
return GetIC(Datalog_Bytes[34]);
|
||||
}
|
||||
|
||||
float Ecu::GetECTIC(){
|
||||
return GetIC(Datalog_Bytes[35]);
|
||||
}
|
||||
|
||||
float Ecu::GetGEARIC(){
|
||||
return GetIC(Datalog_Bytes[36]);
|
||||
}*/
|
||||
//####
|
||||
bool Ecu::GetInputFTL(){
|
||||
return (bool) GetActivated(Datalog_Bytes[38], 0, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetInputFTS(){
|
||||
return (bool) GetActivated(Datalog_Bytes[38], 1, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetInputEBC(){
|
||||
return (bool) GetActivated(Datalog_Bytes[38], 2, false);
|
||||
}
|
||||
|
||||
/*bool Ecu::GetInputEBCHi(){
|
||||
return (bool) GetActivated(Datalog_Bytes[38], 3, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetInputGPO1(){
|
||||
return (bool) GetActivated(Datalog_Bytes[38], 4, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetInputGPO2(){
|
||||
return (bool) GetActivated(Datalog_Bytes[38], 5, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetInputGPO3(){
|
||||
return (bool) GetActivated(Datalog_Bytes[38], 6, false);
|
||||
}*/
|
||||
|
||||
bool Ecu::GetInputBST(){
|
||||
return (bool) GetActivated(Datalog_Bytes[38], 7, false);
|
||||
}
|
||||
//####
|
||||
bool Ecu::GetOutputFTL(){
|
||||
return (bool) GetActivated(Datalog_Bytes[39], 0, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutputAntilag(){
|
||||
return (bool) GetActivated(Datalog_Bytes[39], 1, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutputFTS(){
|
||||
return (bool) GetActivated(Datalog_Bytes[39], 2, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutputBoostCut(){
|
||||
return (bool) GetActivated(Datalog_Bytes[39], 3, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutputEBC(){
|
||||
return (bool) GetActivated(Datalog_Bytes[39], 4, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutput2ndMap(){
|
||||
return (bool) GetActivated(Datalog_Bytes[39], 5, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutputFanCtrl(){
|
||||
return (bool) GetActivated(Datalog_Bytes[39], 6, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutputBST(){
|
||||
return (bool) GetActivated(Datalog_Bytes[39], 7, false);
|
||||
}
|
||||
//####
|
||||
/*double Ecu::GetEBCBaseDuty(){
|
||||
return GetEBC(Datalog_Bytes[40]);
|
||||
}
|
||||
|
||||
double Ecu::GetEBCDuty(){
|
||||
return GetEBC(Datalog_Bytes[41]);
|
||||
}
|
||||
//####
|
||||
bool Ecu::GetOutputGPO1(){
|
||||
return (bool) GetActivated(Datalog_Bytes[43], 0, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutputGPO2(){
|
||||
return (bool) GetActivated(Datalog_Bytes[43], 1, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutputGPO3(){
|
||||
return (bool) GetActivated(Datalog_Bytes[43], 2, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutputBSTStage2(){
|
||||
return (bool) GetActivated(Datalog_Bytes[43], 3, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutputBSTStage3(){
|
||||
return (bool) GetActivated(Datalog_Bytes[43], 4, false);
|
||||
}
|
||||
|
||||
bool Ecu::GetOutputBSTStage4(){
|
||||
return (bool) GetActivated(Datalog_Bytes[43], 5, false);
|
||||
}*/
|
||||
|
||||
bool Ecu::GetLeanProtect(){
|
||||
return (bool) GetActivated(Datalog_Bytes[43], 7, false);
|
||||
}
|
||||
//####
|
||||
double Ecu::GetIACVDuty(){
|
||||
return ((double) ((float) Long2Bytes(Datalog_Bytes[49], Datalog_Bytes[50]) / 32768) * 100.0 - 100.0);
|
||||
}
|
||||
|
||||
//################################################################################
|
||||
//################################################################################
|
||||
//ADDED FUNCTIONS
|
||||
double Ecu::GetMapVolt(){
|
||||
return GetVolt(Datalog_Bytes[4]);
|
||||
}
|
||||
|
||||
double Ecu::GetTPSVolt(){
|
||||
return GetVolt(Datalog_Bytes[5]);
|
||||
}
|
||||
|
||||
double Ecu::GetInjDuration(){
|
||||
return round(((double) GetDuration((int) Long2Bytes(Datalog_Bytes[17], Datalog_Bytes[18]))) * 100) / 100;
|
||||
}
|
||||
|
||||
unsigned int Ecu::GetGear(){
|
||||
if (GetVss() == 0)
|
||||
return 0;
|
||||
|
||||
long ThisRatio = (long) (GetVss() * 256) * (long) GetRpm() / (long) 256;
|
||||
byte Gear = 0;
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
int ThisIndex = i * 2;
|
||||
|
||||
if (ThisRatio >= Tranny_Bytes[ThisIndex]) {
|
||||
Gear = i + 1;
|
||||
//return ThisRPM;
|
||||
} else {
|
||||
//Gear = ThisRPM;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return Gear;
|
||||
}
|
||||
|
||||
//################################################################################
|
||||
//################################################################################
|
||||
// OLD UNUSED FUNCTIONS
|
||||
|
||||
/*float Ecu::GetValuePSI(int ThisInt) {
|
||||
return (float) round(((double) (ThisInt - mBarSeaLevel) * 0.0145037695765495) * 100) / 100;
|
||||
}
|
||||
|
||||
float Ecu::GetValueKPa(int ThisInt) {
|
||||
return (float) round((double) ThisInt * 0.1);
|
||||
}*/
|
||||
|
||||
/*float Ecu::GetTemperatureF(float ThisTemp) {
|
||||
return ThisTemp * 1.8f + 32.0f;
|
||||
}*/
|
||||
|
||||
/*float Ecu::calcTempInCelsius(float Datalog_Bytes){
|
||||
Datalog_Bytes = Datalog_Bytes / 51;
|
||||
Datalog_Bytes = (0.1423*pow(Datalog_Bytes,6)) - (2.4938*pow(Datalog_Bytes,5)) + (17.837*pow(Datalog_Bytes,4)) - (68.698*pow(Datalog_Bytes,3)) + (154.69*pow(Datalog_Bytes,2)) - (232.75*Datalog_Bytes) + 284.24;
|
||||
return ((Datalog_Bytes - 32)*5)/9;
|
||||
}*/
|
||||
|
||||
/*int Ecu::Getbit(){
|
||||
int firsteightbit = Datalog_Bytes[8];
|
||||
return firsteightbit;
|
||||
}
|
||||
|
||||
int Ecu::Getbit2(){
|
||||
int firsteightbit2 = Datalog_Bytes[23];
|
||||
return firsteightbit2;
|
||||
}*/
|
||||
|
||||
|
Loading…
Reference in New Issue