diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 35161405..0fc9f9ba 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -113,6 +113,10 @@
android:name=".activities.FluenceKangooTempsActivity"
android:label="Fluence Kangoo Temp" >
+
+
diff --git a/app/src/main/java/lu/fisch/canze/activities/ChargingActivity.java b/app/src/main/java/lu/fisch/canze/activities/ChargingActivity.java
index 66247ffe..f64743a0 100644
--- a/app/src/main/java/lu/fisch/canze/activities/ChargingActivity.java
+++ b/app/src/main/java/lu/fisch/canze/activities/ChargingActivity.java
@@ -40,6 +40,7 @@ public class ChargingActivity extends CanzeActivity implements FieldListener {
public static final String SID_MaxCharge = "7bb.6101.336";
public static final String SID_SoC = "42e.0"; // user SOC, not raw
public static final String SID_AvChargingPower = "427.40";
+ public static final String SID_HvTemp = "42e.44";
public static final String SID_SOH = "658.33";
public static final String SID_RangeEstimate = "654.42";
public static final String SID_TractionBatteryVoltage = "7ec.623203.24";
@@ -47,6 +48,7 @@ public class ChargingActivity extends CanzeActivity implements FieldListener {
double dcVolt = 0; // holds the DC voltage, so we can calculate the power when the amps come in
private ArrayList subscribedFields;
+ double avChPwr;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -98,6 +100,7 @@ private void initListeners() {
addListener(SID_MaxCharge);
addListener(SID_SoC);
+ addListener(SID_HvTemp);
if(MainActivity.car==MainActivity.CAR_ZOE) addListener(SID_AvChargingPower);
addListener(SID_SOH); // state of health gives continious timeouts. This frame is send at a very low rate
addListener(SID_RangeEstimate);
@@ -121,13 +124,19 @@ public void run() {
switch (fieldId) {
case SID_MaxCharge:
+ double maxCharge = field.getValue();
+ int color = 0xffc0c0c0; // standard grey
+ if (maxCharge < (avChPwr * 0.8)) {
+ color = 0xffffc0c0;
+ }
tv = (TextView) findViewById(R.id.text_max_charge);
+ tv.setBackgroundColor(color);
break;
case SID_SoC:
tv = (TextView) findViewById(R.id.textSOC);
break;
- case SID_SOH:
- tv = (TextView) findViewById(R.id.textSOH);
+ case SID_HvTemp:
+ tv = (TextView) findViewById(R.id.textHvTemp);
break;
case SID_RangeEstimate:
tv = (TextView) findViewById(R.id.textKMA);
@@ -153,7 +162,7 @@ public void run() {
tv = (TextView) findViewById(R.id.textAmps);
break;
case SID_AvChargingPower:
- double avChPwr = field.getValue();
+ avChPwr = field.getValue();
tv = (TextView) findViewById(R.id.textAvChPwr);
break;
}
diff --git a/app/src/main/java/lu/fisch/canze/activities/DrivingActivity.java b/app/src/main/java/lu/fisch/canze/activities/DrivingActivity.java
index c1829e41..579ec88d 100644
--- a/app/src/main/java/lu/fisch/canze/activities/DrivingActivity.java
+++ b/app/src/main/java/lu/fisch/canze/activities/DrivingActivity.java
@@ -47,6 +47,7 @@ public class DrivingActivity extends CanzeActivity implements FieldListener {
// for ISO-TP optimization to work, group all identical CAN ID's together when calling addListener
// free data
+ public static final String SID_Consumption = "1fd.40"; //EVC
public static final String SID_Pedal = "186.40"; //EVC
public static final String SID_MeanEffectiveTorque = "186.16"; //EVC
public static final String SID_RealSpeed = "5d7.0"; //ESC-ABS
@@ -56,14 +57,15 @@ public class DrivingActivity extends CanzeActivity implements FieldListener {
public static final String SID_ElecBrakeWheelsTorqueApplied = "1f8.28"; //UBP 10ms
// ISO-TP data
-// public static final String SID_EVC_SoC = "7ec.622002.24"; // (EVC)
+ public static final String SID_MaxCharge = "7bb.6101.336";
+ // public static final String SID_EVC_SoC = "7ec.622002.24"; // (EVC)
// public static final String SID_EVC_RealSpeed = "7ec.622003.24"; // (EVC)
public static final String SID_EVC_Odometer = "7ec.622006.24"; // (EVC)
// public static final String SID_EVC_Pedal = "7ec.62202e.24"; // (EVC)
- public static final String SID_EVC_TractionBatteryVoltage = "7ec.623203.24"; // (EVC)
- public static final String SID_EVC_TractionBatteryCurrent = "7ec.623204.24"; // (EVC)
+// public static final String SID_EVC_TractionBatteryVoltage = "7ec.623203.24"; // (EVC)
+// public static final String SID_EVC_TractionBatteryCurrent = "7ec.623204.24"; // (EVC)
- private double dcVolt = 0; // holds the DC voltage, so we can calculate the power when the amps come in
+// private double dcVolt = 0; // holds the DC voltage, so we can calculate the power when the amps come in
private int odo = 0;
private int destOdo = 0; // have to init from save file
private double realSpeed = 0;
@@ -155,7 +157,7 @@ private void saveDestOdo (int d) {
SharedPreferences settings = getSharedPreferences(MainActivity.PREFERENCES_FILE, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("destOdo", d);
- editor.commit();
+ editor.apply();
destOdo = d;
Field field = MainActivity.fields.getBySID(SID_RangeEstimate);
int distInBat = (int) field.getValue();
@@ -230,6 +232,7 @@ private void initListeners() {
// Make sure to add ISO-TP listeners grouped by ID
+ addListener(SID_Consumption, 0);
addListener(SID_Pedal, 0);
addListener(SID_MeanEffectiveTorque, 0);
addListener(SID_DriverBrakeWheel_Torque_Request, 0);
@@ -237,11 +240,12 @@ private void initListeners() {
addListener(SID_RealSpeed, 0);
addListener(SID_SoC, 3600);
addListener(SID_RangeEstimate, 3600);
+ addListener(SID_MaxCharge,6000);
//addListener(SID_EVC_SoC);
addListener(SID_EVC_Odometer, 6000);
- addListener(SID_EVC_TractionBatteryVoltage, 5000);
- addListener(SID_EVC_TractionBatteryCurrent, 0);
+ //addListener(SID_EVC_TractionBatteryVoltage, 5000);
+ //addListener(SID_EVC_TractionBatteryCurrent, 0);
//addListener(SID_PEB_Torque);
}
@@ -279,6 +283,9 @@ public void run() {
//odo = (int) Utils.kmOrMiles(field.getValue());
tv = null;
break;
+ case SID_MaxCharge:
+ tv = (TextView) findViewById(R.id.text_max_charge);
+ break;
case SID_RealSpeed:
// case SID_EVC_RealSpeed:
//realSpeed = (Math.round(Utils.kmOrMiles(field.getValue()) * 10.0) / 10.0);
@@ -288,15 +295,16 @@ public void run() {
//case SID_PEB_Torque:
// tv = (TextView) findViewById(R.id.textTorque);
// break;
- case SID_EVC_TractionBatteryVoltage: // DC volts
- // save DC voltage for DC power purposes
- dcVolt = field.getValue();
- break;
- case SID_EVC_TractionBatteryCurrent: // DC amps
- // calculate DC power
- double dcPwr = Math.round(dcVolt * field.getValue() / 100.0) / 10.0;
- tv = (TextView) findViewById(R.id.textDcPwr);
- tv.setText("" + (dcPwr));
+// case SID_EVC_TractionBatteryVoltage: // DC volts
+// // save DC voltage for DC power purposes
+// dcVolt = field.getValue();
+// break;
+// case SID_EVC_TractionBatteryCurrent: // DC amps
+// // calculate DC power
+ case SID_Consumption:
+ double dcPwr = field.getValue();
+// tv = (TextView) findViewById(R.id.textDcPwr);
+// tv.setText("" + (dcPwr));
tv = (TextView) findViewById(R.id.textConsumption);
if (realSpeed > 5) {
tv.setText("" + (Math.round(1000.0 * dcPwr / realSpeed) / 10.0));
diff --git a/app/src/main/java/lu/fisch/canze/activities/TyresActivity.java b/app/src/main/java/lu/fisch/canze/activities/TyresActivity.java
new file mode 100644
index 00000000..6c2260a6
--- /dev/null
+++ b/app/src/main/java/lu/fisch/canze/activities/TyresActivity.java
@@ -0,0 +1,162 @@
+/*
+ CanZE
+ Take a closer look at your ZE car
+
+ Copyright (C) 2015 - The CanZE Team
+ http://canze.fisch.lu
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+package lu.fisch.canze.activities;
+
+import android.os.Bundle;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+
+import lu.fisch.canze.R;
+import lu.fisch.canze.actors.Field;
+import lu.fisch.canze.interfaces.FieldListener;
+
+// If you want to monitor changes, you must add a FieldListener to the fields.
+// For the simple activity, the easiest way is to implement it in the actitviy itself.
+public class TyresActivity extends CanzeActivity implements FieldListener {
+
+ public static final String SID_TyreSpdPresMisadaption = "673.0";
+ public static final String SID_TyreFLState = "673.11";
+ public static final String SID_TyreFLPressure = "673.40";
+ public static final String SID_TyreFRState = "673.8";
+ public static final String SID_TyreFRPressure = "673.32";
+ public static final String SID_TyreRLState = "673.5";
+ public static final String SID_TyreRLPressure = "673.24";
+ public static final String SID_TyreRRState = "673.2";
+ public static final String SID_TyreRRPressure = "673.16";
+
+ private ArrayList subscribedFields;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_tyres);
+
+ initListeners();
+
+ }
+
+ private void addListener(String sid) {
+ Field field;
+ field = MainActivity.fields.getBySID(sid);
+ if (field != null) {
+ field.addListener(this);
+ MainActivity.device.addActivityField(field);
+ subscribedFields.add(field);
+ }
+ else
+ {
+ MainActivity.toast("sid " + sid + " does not exist in class Fields");
+ }
+
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ // free up the listeners again
+ for(Field field : subscribedFields)
+ {
+ field.removeListener(this);
+ }
+ subscribedFields.clear();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ // initialise the widgets
+ initListeners();
+ }
+
+ private void initListeners() {
+
+ subscribedFields = new ArrayList<>();
+
+ addListener(SID_TyreSpdPresMisadaption);
+ addListener(SID_TyreFLState);
+ addListener(SID_TyreFLPressure);
+ addListener(SID_TyreFRState);
+ addListener(SID_TyreFRPressure);
+ addListener(SID_TyreRLState);
+ addListener(SID_TyreRLPressure);
+ addListener(SID_TyreRRState);
+ addListener(SID_TyreRRPressure);
+ }
+
+ // This is the event fired as soon as this the registered fields are
+ // getting updated by the corresponding reader class.
+ @Override
+ public void onFieldUpdateEvent(final Field field) {
+ // the update has to be done in a separate thread
+ // otherwise the UI will not be repainted
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ String fieldId = field.getSID();
+ TextView tv = null;
+
+ // get the text field
+ switch (fieldId) {
+
+ case SID_TyreSpdPresMisadaption:
+ tv = (TextView) findViewById(R.id.text_TyreSpdPresMisadaption);
+ break;
+ case SID_TyreFLState:
+ tv = (TextView) findViewById(R.id.text_TyreFLState);
+ break;
+ case SID_TyreFLPressure:
+ tv = (TextView) findViewById(R.id.text_TyreFLPressure);
+ break;
+ case SID_TyreFRState:
+ tv = (TextView) findViewById(R.id.text_TyreFRState);
+ break;
+ case SID_TyreFRPressure:
+ tv = (TextView) findViewById(R.id.text_TyreFRPressure);
+ break;
+ case SID_TyreRLState:
+ tv = (TextView) findViewById(R.id.text_TyreRLState);
+ break;
+ case SID_TyreRLPressure:
+ tv = (TextView) findViewById(R.id.text_TyreRLPressure);
+ break;
+ case SID_TyreRRState:
+ tv = (TextView) findViewById(R.id.text_TyreRRState);
+ break;
+ case SID_TyreRRPressure:
+ tv = (TextView) findViewById(R.id.text_TyreRRPressure);
+ break;
+ }
+ // set regular new content, all exeptions handled above
+ if (tv != null) {
+ tv.setText("" + (Math.round(field.getValue() * 10.0) / 10.0));
+ }
+
+ tv = (TextView) findViewById(R.id.textDebug);
+ tv.setText(fieldId);
+ }
+ });
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/lu/fisch/canze/actors/Fields.java b/app/src/main/java/lu/fisch/canze/actors/Fields.java
index f213bc93..a23bd1b5 100644
--- a/app/src/main/java/lu/fisch/canze/actors/Fields.java
+++ b/app/src/main/java/lu/fisch/canze/actors/Fields.java
@@ -172,7 +172,7 @@ private void fillStatic()
String fieldDef = // startBit, endBit, divider, multiplier, offset, decimals, format, requestID, responseID
""
/*
- // 2015.11.14
+ // 2015.11.21
+"0x0c6,0,15,1,0x8000,1,°,,,0\n" // Steering Position
+"0x0c6,16,31,1,0x8000,1,°/s,,,0\n" // Steering Acceleration
@@ -250,24 +250,42 @@ private void fillStatic()
+"0x42e,38,43,1,0,1,A,,,0\n" // Charging Pilot Current
+"0x42e,44,50,1,40,0,°C,,,0\n" // HVBatteryTemp
+"0x42e,56,63,0.3,0,1,kW,,,0\n" // ChargingPower
+ +"0x430,40,49,0.1,40,1,°C,,,2\n" // HV Battery Evaporator Temp
+ +"0x430,50,59,0.1,40,1,°C,,,2\n" // HV Battery Evaporator Setpoint
+"0x4f8,0,1,-1,-2,0,,,,0\n" // Start
+"0x4f8,4,5,-1,-2,0,,,,0\n" // Parking Break
+"0x4f8,24,39,0.01,0,2,,,,2\n" // Speed on Display
+ +"0x534,32,40,1,40,0,°C,,,1\n" // Temp out
+"0x5d7,0,15,0.01,0,2,km/h,,,0\n" // Speed
+"0x5d7,16,43,0.01,0,2,km,,,0\n" // Odometer
+"0x5d7,44,45,1,0,0,?,,,0\n" // WheelsLockingState
+"0x5d7,48,49,1,0,0,?,,,0\n" // VehicleSpeedSign
+"0x5d7,50,54,0.04,0,2,cm,,,0\n" // Fine distance
+ +"0x5da,0,7,1,40,0,ºC,,,1\n" // Water temperature
+"0x5de,1,1,1,0,0,,,,0\n" // Right Indicator
+"0x5de,2,2,1,0,0,,,,0\n" // Left Indicator
+ +"0x5de,3,3,1,0,0,,,,0\n" // Rear Fog Light
+"0x5de,5,5,1,0,0,,,,0\n" // Park Light
+"0x5de,6,6,1,0,0,,,,0\n" // Head Light
+"0x5de,7,7,1,0,0,,,,0\n" // Beam Light
- +"0x5de,12,12,1,0,0,,,,0\n" // Door Front Left
- +"0x5de,14,14,1,0,0,,,,0\n" // Dort Front Right
- +"0x5de,17,17,1,0,0,,,,0\n" // Door Rear Left
- +"0x5de,19,19,1,0,0,,,,0\n" // Door Rear Right
- +"0x5de,59,59,1,0,0,,,,0\n" // Door Hatch
+ +"0x5de,8,9,1,0,0,,,,0\n" // PositionLightsOmissionWarning
+ +"0x5de,10,10,1,0,0,,,,0\n" // ALS malfunction
+ +"0x5de,11,12,1,0,0,,,,0\n" // Door Front Left
+ +"0x5de,13,14,1,0,0,,,,0\n" // Dort Front Right
+ +"0x5de,16,17,1,0,0,,,,0\n" // Door Rear Left
+ +"0x5de,18,19,1,0,0,,,,0\n" // Door Rear Right
+ +"0x5de,21,22,1,0,0,,,,\n" // Steering Lock Failure
+ +"0x5de,23,23,1,0,0,,,,\n" // Unlocking Steering Column Warning
+ +"0x5de,24,24,1,0,0,,,,\n" // Automatic Lock Up Activation State
+ +"0x5de,25,25,1,0,0,,,,\n" // Badge Battery Low
+ +"0x5de,28,29,1,0,0,,,,\n" // Trip Display Scrolling Request
+ +"0x5de,32,35,1,0,0,,,,\n" // Smart Keyless Information Display
+ +"0x5de,36,36,1,0,0,,,,\n" // Keyless Info Reemission Request
+ +"0x5de,37,37,1,0,0,,,,\n" // Keyless Card Reader Failure Display
+ +"0x5de,47,47,1,0,0,,,,\n" // Brake Switch Fault Display
+ +"0x5de,49,49,1,0,0,,,,\n" // Stop Lamp Failure Display
+ +"0x5de,56,57,1,0,0,,,,\n" // Rear Wiper Status
+ +"0x5de,58,59,1,0,0,,,,0\n" // Boot Open Warning
+"0x5ee,0,0,1,0,0,,,,0\n" // Park Light
+"0x5ee,1,1,1,0,0,,,,0\n" // Head Light
+"0x5ee,2,2,1,0,0,,,,0\n" // Beam Light
@@ -287,11 +305,11 @@ private void fillStatic()
+"0x654,42,51,1,0,0,km,,,0\n" // Available Distance
+"0x654,52,61,0.1,0,1,,,,0\n" // AverageConsumption
+"0x654,62,62,1,0,0,,,,0\n" // HVBatteryLow
- +"0x656,3,3,1,0,0,,,,\n" // Trip Data Reset
- +"0x656,21,31,1,0,0,min,,,\n" // Cluste rScheduled Time
- +"0x656,32,42,1,0,0,min,,,\n" // Cluster Scheduled Time 2
- +"0x656,48,55,1,40,0,°C,,,\n" // External Temp
- +"0x656,56,57,1,0,0,,,,\n" // ClimPCCustomerActiv
+ +"0x656,3,3,1,0,0,,,,0\n" // Trip Data Reset
+ +"0x656,21,31,1,0,0,min,,,0\n" // Cluste rScheduled Time
+ +"0x656,32,42,1,0,0,min,,,0\n" // Cluster Scheduled Time 2
+ +"0x656,48,55,1,40,0,°C,,,2\n" // External Temp
+ +"0x656,56,57,1,0,0,,,,2\n" // ClimPCCustomerActiv
+"0x658,0,31,1,0,0,,,,0\n" // Battery Serial N°
+"0x658,33,39,1,0,0,%,,,0\n" // Battery Health
+"0x658,42,42,1,0,0,,,,0\n" // Charging
@@ -340,7 +358,7 @@ private void fillStatic()
+"0x763,0,7,1,0,0,,0x14ffff,0x54,0\n" // Reset DTC
+"0x763,0,23,1,0,0,,0x19023b,0x5902ff,0\n" // Query DTC
+"0x763,24,31,1,0,0,,0x222001,0x622001,0\n" // Parking Break
- +"0x763,3,3,1,0,0,,0x2220f0,0x6220f0,0\n" // << UDS replies start at bit 24 - need to recheck
+ +"0x763,3,3,1,0,0,,0x2220f0,0x6220f0,0\n" // VOL+
+"0x763,4,4,1,0,0,,0x2220f0,0x6220f0,0\n" // VOL-
+"0x763,2,2,1,0,0,,0x2220f0,0x6220f0,0\n" // Mute
+"0x763,5,5,1,0,0,,0x2220f0,0x6220f0,0\n" // Media
@@ -349,6 +367,7 @@ private void fillStatic()
+"0x764,128,143,1,0,0,,0x2180,0x6180,0\n" // PG number
+"0x764,0,7,1,0,0,,0x14ffff,0x54,0\n" // Reset DTC
+"0x764,0,23,1,0,0,,0x19023b,0x5902ff,0\n" // Query DTC
+ +"0x764,8,15,0.4,40,1,,0x2121,0x6121,1\n" // Interior temperature
+"0x765,144,159,1,0,0,,0x2180,0x6180,0\n" // Software version
+"0x765,128,143,1,0,0,,0x2180,0x6180,0\n" // PG number
+"0x765,0,7,1,0,0,,0x14ffff,0x54,0\n" // Reset DTC
@@ -370,11 +389,12 @@ private void fillStatic()
+"0x77e,0,7,1,0,0,,0x14ffff,0x54,0\n" // Reset DTC
+"0x77e,0,23,1,0,0,,0x19023b,0x5902ff,0\n" // Query DTC
+"0x77e,24,31,1,0,0,,0x22300f,0x62300f,0\n" // dcdc state
- +"0x77e,24,31,31.25,0,3,V,0x22300e,0x62300e,0\n" // dcdc state
- +"0x77e,24,31,0.03125,0,0,Nm,0x223024,0x623024,0\n" // traction battery voltage
- +"0x77e,24,31,0.03125,0,0,Nm,0x223025,0x623025,0\n" // torque requested
- +"0x77e,24,31,1.5625,0,2,°C,0x22302b,0x62302b,0\n" // torque applied
- +"0x77e,24,31,6.25,0,2,A,0x22301d,0x62301d,0\n" // inverter temperature
+ +"0x77e,24,31,31.25,0,3,V,0x22300e,0x62300e,0\n" // traction battery voltage
+ +"0x77e,24,39,0.015625,0,2,ºC,0x223018,0x623018,1\n" // DCDC converter temperature
+ +"0x77e,24,31,0.03125,0,0,Nm,0x223024,0x623024,0\n" // torque requested
+ +"0x77e,24,31,0.03125,0,0,Nm,0x223025,0x623025,0\n" // torque applied
+ +"0x77e,24,31,0.015625,0,2,°C,0x22302b,0x62302b,0\n" // inverter temperature
+ +"0x77e,24,31,6.25,0,2,A,0x22301d,0x62301d,0\n" // Current
+"0x793,144,159,1,0,0,,0x2180,0x6180,0\n" // Software version
+"0x793,128,143,1,0,0,,0x2180,0x6180,0\n" // PG number %04lx
+"0x793,0,7,1,0,0,,0x14ffff,0x54,0\n" // Reset DTC
@@ -383,11 +403,11 @@ private void fillStatic()
+"0x7b6,128,143,1,0,0,,0x2180,0x6180,0\n" // PG number
+"0x7b6,0,7,1,0,0,,0x14ffff,0x54,0\n" // Reset DTC
+"0x7b6,0,23,1,0,0,,0x19023b,0x5902ff,0\n" // Query DTC
- +"0x7bb,336,351,0.01,0,2,kW,0x2101,0x6101,2\n" // Get regen and other battery data.
+"0x7bb,192,207,0.01,0,2,kW,0x2101,0x6101,1\n" // Maximum battery input power
+"0x7bb,208,223,0.01,0,2,kW,0x2101,0x6101,1\n" // Maximum battery output power
+"0x7bb,348,367,0.0001,0,4,Ah,0x2101,0x6101,1\n" // Ah of the battery
+"0x7bb,316,335,0.0001,0,4,%,0x2101,0x6101,1\n" // Real State of Charge
+ +"0x7bb,336,351,0.01,0,2,kW,0x2101,0x6101,2\n" // Maximum battery input power
+"0x7bb,16,31,1,0,0,unknown,0x2104,0x6104,2\n" // Module 1 raw NTC
+"0x7bb,32,39,1,40,0,°C,0x2104,0x6104,2\n" // Cell 1 Temperature
+"0x7bb,40,55,1,0,0,unknown,0x2104,0x6104,2\n" // Module 2 raw NTC
@@ -420,6 +440,8 @@ private void fillStatic()
+"0x7bb,80,87,1,0,0,°C,0x2104,0x6104,1\n" // Cell 3 Temperature
+"0x7bb,88,103,1,0,0,unknown,0x2104,0x6104,1\n" // Module 4 raw NTC
+"0x7bb,104,111,1,0,0,°C,0x2104,0x6104,1\n" // Cell 4 Temperature
+ +"0x7bb,64,79,0.001,0,3,V,0x2105,0x6105,1\n" // Threshold bad cell
+ +"0x7bb,80,95,0.001,0,3,V,0x2105,0x6105,1\n" // Threshol weak cell
+"0x7bb,16,31,0.001,0,3,V,0x2141,0x6141,0\n" // Cell 01 V
+"0x7bb,32,47,0.001,0,3,V,0x2141,0x6141,0\n" // Cell 02 V
+"0x7bb,48,63,0.001,0,3,V,0x2141,0x6141,0\n" // Cell 03 V
@@ -519,7 +541,7 @@ private void fillStatic()
+"0x7bb,60,79,0.0001,0,4,Ah,0x2161,0x6161,1\n" // Ah of the battery
+"0x7bb,80,87,0.05,0,2,%,0x2161,0x6161,1\n" // Battery State of Health
+"0x7bb,104,119,1,0,0,km,0x2161,0x6161,1\n" // Battery mileage in km
- +"0x7bb,136,151,1,0,0,kWh,0x2161,0x6161,1\n" // Energy regenerated into the Battery
+ +"0x7bb,136,151,1,0,0,kWh,0x2161,0x6161,1\n" // Total energy output of battery?
+"0x7bb,144,159,1,0,0,,0x2180,0x6180,0\n" // Software version
+"0x7bb,128,143,1,0,0,,0x2180,0x6180,0\n" // PG number %04lx
+"0x7bb,0,7,1,0,0,,0x14ffff,0x54,0\n" // Reset DTC
@@ -547,11 +569,15 @@ private void fillStatic()
+"0x7ec,24,39,0.5,0,2,V,0x223203,0x623203,0\n" // Battery voltage
+"0x7ec,24,39,0.25,0x8000,2,A,0x223204,0x623204,0\n" // Battery current
+"0x7ec,24,31,1,0,0,%,0x223206,0x623206,0\n" // Battery health in %
+ +"0x7ec,24,31,1,1,0,,0x223318,0x623318,1\n" // Motor Water pump speed
+ +"0x7ec,24,31,1,1,0,,0x223319,0x623319,1\n" // Charger pump speed
+ +"0x7ec,24,31,1,1,0,,0x22331A,0x62331A,1\n" // Heater water pump speed
+"0x7ec,24,31,1,40,0,°C,0x2233b1,0x6233b1,0\n" // Ext temp
*/
- // 2015.11.21
+ // 2015-11-28
+ +"0x023,0,15,1,0,0,,,,0\n" // AIRBAGCrash
+"0x0c6,0,15,1,0x8000,1,°,,,0\n" // Steering Position
+"0x0c6,16,31,1,0x8000,1,°/s,,,0\n" // Steering Acceleration
+"0x0c6,32,47,1,0x8000,1,°,,,0\n" // SteeringWheelAngle_Offset
@@ -571,18 +597,26 @@ private void fillStatic()
+"0x130,42,43,1,0,0,,,,0\n" // PressureBuildUp
+"0x130,44,55,-3,4094,0,Nm,,,0\n" // DriverBrakeWheelTq_Req
+"0x130,56,63,1,0,0,,,,0\n" // CheckSum_UBP
+ +"0x17a,24,27,1,0,0,,,,0\n" // Transmission Range
+ +"0x17a,48,63,0.5,12800,1,Nm,,,\n" // Estimated Wheen Torque
+"0x17e,40,41,1,0,0,,,,0\n" // CrankingAuthorisation_AT
+"0x17e,48,51,1,0,0,,,,0\n" // GearLeverPosition
+"0x186,0,15,0.125,0,2,rpm,,,0\n" // Speed
+"0x186,16,27,0.5,800,1,Nm,,,0\n" // MeanEffectiveTorque
+"0x186,28,39,0.5,800,0,Nm,,,0\n" // RequestedTorqueAfterProc
- +"0x186,40,49,0.1,0,1,%,,,0\n" // Throttle
- +"0x18a,0,11,1,0,0,%,,,0\n" // RawEngineTorque_WithoutTMReq
- +"0x18a,12,12,1,0,0,,,,0\n" // AT_TorqueAcknowledgement
- +"0x18a,13,14,1,0,0,,,,0\n" // CruiseControlStatus_forTM
+ +"0x186,40,49,0.125,0,1,%,,,0\n" // Throttle
+ +"0x186,50,50,1,0,0,,,,0\n" // ASR_MSRAcknowledgement
+ +"0x186,51,52,1,0,0,,,,0\n" // ECM_TorqueRequestStatus
+"0x18a,16,25,0.125,0,2,%,,,0\n" // Throttle
- +"0x18a,26,26,1,0,0,,,,0\n" // KickDownActivated
- +"0x18a,27,38,0.5,800,1,Nm,,,0\n" // FrictionTorque
+ +"0x18a,27,38,0.5,800,1,Nm,,,0\n" // Coasting Torque
+ +"0x1f6,0,1,1,0,0,,,,0\n" // Engine Fan Speed
+ +"0x1f6,3,7,100,0,0,W,,,0\n" // Max Electrical Power Allowed
+ +"0x1f6,8,9,1,0,0,,,,0\n" // ElectricalPowerCutFreeze
+ +"0x1f6,10,11,1,0,0,,,,0\n" // EngineStatus_R
+ +"0x1f6,12,15,1,0,0,,,,0\n" // EngineStopRequestOrigine
+ +"0x1f6,16,17,1,0,0,,,,0\n" // CrankingAuthorization_ECM
+ +"0x1f6,19,20,1,0,1,,,,0\n" // Break Pedal
+ +"0x1f6,23,31,0.1,0,1,bar,,,0\n" // AC High Pressure Sensor
+"0x1f8,0,7,1,0,0,,,,0\n" // Checksum EVC
+"0x1f8,12,13,1,0,0,,,,0\n" // EVCReadyAsActuator
+"0x1f8,16,27,1,4096,0,Nm,,,0\n" // TotalPotentialResistiveWheelsTorque
@@ -591,20 +625,61 @@ private void fillStatic()
+"0x1f8,52,54,1,0,0,,,,0\n" // EVC_Clock
+"0x1f8,56,58,1,0,0,,,,0\n" // GearRangeEngagedCurrent
+"0x1f8,62,63,1,0,0,,,,0\n" // DeclutchInProgress
- +"0x1f6,20,20,0.5,0,1,,,,0\n" // Break Pedal
- +"0x1fd,0,7,0.5,0,1,A,,,0\n" // 12V Battery Current
+ +"0x1fd,0,7,0.390625,0,1,%,,,0\n" // 12V Battery Current?
+ +"0x1fd,8,9,1,0,0,,,,0\n" // SCH Refuse to Sleep
+ +"0x1fd,17,18,1,0,0,,,,0\n" // Stop Preheating Counter
+ +"0x1fd,19,20,1,0,0,,,,0\n" // Start Preheating Counter
+ +"0x1fd,21,31,1,0,0,min,,,0\n" // Time left before vehicle wakeup
+ +"0x1fd,32,32,1,0,0,,,,0\n" // Pre heating activation
+ +"0x1fd,33,39,1,0,0,min,,,0\n" // LeftTimeToScheduledTime
+ +"0x1fd,40,47,25,0,0,W,,,0\n" // ClimAvailablePower
+"0x1fd,48,55,1,0x50,0,kW,,,0\n" // Consumption
- +"0x29a,0,15,1,0,0,,,,0\n" // Speed Front Right
- +"0x29a,16,31,1,0,0,,,,0\n" // Speed Front Left
- +"0x29a,32,47,0.01,0,2,,,,0\n" //
- +"0x29c,0,15,1,0,0,,,,0\n" // Speed Rear Right
- +"0x29c,16,31,1,0,0,,,,0\n" // Speed Rear Left
- +"0x29c,48,63,0.01,0,2,,,,0\n" //
+ +"0x212,8,9,1,0,0,,,,0\n" // StarterStatus
+ +"0x212,10,11,1,0,0,,,,0\n" // RearGearEngaged
+ +"0x242,0,0,1,0,0,,,,\n" // ABSinRegulation
+ +"0x242,1,1,1,0,0,,,,\n" // ABSMalfunction
+ +"0x242,2,2,1,0,0,,,,\n" // ASRinRegulation
+ +"0x242,3,3,1,0,0,,,,\n" // ASRMalfunction
+ +"0x242,5,5,1,0,0,,,,\n" // AYCinRegulation
+ +"0x242,6,6,1,0,0,,,,\n" // AYCMalfunction
+ +"0x242,7,7,1,0,0,,,,\n" // MSRinRegulation
+ +"0x242,8,8,1,0,0,,,,\n" // MSRMalfunction
+ +"0x242,9,12,1,0,0,,,,\n" // ESP_Clock
+ +"0x242,13,15,1,0,0,,,,\n" // ESP_TorqueControlType
+ +"0x242,16,27,0.5,800,1,Nm,,,\n" // ASRDynamicTorqueRequest
+ +"0x242,28,39,0.5,800,1,Nm,,,\n" // ASRStaticTorqueRequest
+ +"0x242,40,51,0.5,800,1,Nm,,,\n" // MSRTorqueRequest
+ +"0x29a,0,15,0.04166666667,0,2,rpm,,,0\n" // Rpm Front Right
+ +"0x29a,16,31,0.04166666667,0,2,rpm,,,0\n" // Rpm Front Left
+ +"0x29a,32,47,0.01,0,2,km/h,,,0\n" // Vehicle Speed
+ +"0x29a,52,55,1,0,0,,,,0\n" // Vehicle Speed Clock
+ +"0x29a,56,63,1,0,0,,,,0\n" // Vehicle Speed Checksum
+ +"0x29c,0,15,0.04166666667,0,2,rpm,,,0\n" // Rpm Rear Right
+ +"0x29c,16,31,0.04166666667,0,2,rpm,,,0\n" // Rpm Rear Left
+ +"0x29c,48,63,0.01,0,2,km/h,,,0\n" // Vehicle Speed
+ +"0x2b7,32,33,1,0,0,,,,0\n" // EBD Active
+ +"0x2b7,34,35,1,0,0,,,,0\n" // HBA Active
+ +"0x2b7,36,37,1,0,0,,,,0\n" // ESC HBB Malfunction
+"0x352,0,1,1,0,0,,,,0\n" // ABS Warning Request
+"0x352,2,3,1,0,0,,,,0\n" // ESP_StopLampRequest
+"0x352,24,31,1,0,0,,,,0\n" // Break pressure
- +"0x35c,4,15,1,0,0,,,,0\n" // Key-Start
+ +"0x35c,0,1,1,0,0,,,,0\n" // BCM_WakeUpSleepCommand
+ +"0x35c,4,4,1,0,0,,,,0\n" // WakeUpType
+ +"0x35c,5,7,1,0,0,,,,0\n" // VehicleState
+ +"0x35c,8,8,1,0,0,,,,0\n" // DiagMuxOn_BCM
+ +"0x35c,9,10,1,0,0,,,,0\n" // StartingMode_BCM_R
+ +"0x35c,11,11,1,0,0,,,,0\n" // EngineStopDriverRequested
+ +"0x35c,12,12,1,0,0,,,,0\n" // SwitchOffSESDisturbers
+ +"0x35c,15,15,1,0,0,,,,0\n" // DeliveryModeInformation
+"0x35c,16,39,1,0,0,min,,,0\n" // AbsoluteTimeSince1rstIgnition
+ +"0x35c,40,42,1,0,0,,,,0\n" // BrakeInfoStatus
+ +"0x35c,47,47,1,0,0,,,,0\n" // ProbableCustomerFeedBackNeed
+ +"0x35c,48,51,1,0,0,,,,0\n" // EmergencyEngineStop
+ +"0x35c,52,52,1,0,0,,,,0\n" // WelcomePhaseState
+ +"0x35c,53,54,1,0,0,,,,0\n" // SupposedCustomerDeparture
+ +"0x35c,55,55,1,0,0,,,,0\n" // VehicleOutsideLockedState
+ +"0x35c,58,59,1,0,0,,,,0\n" // GenericApplicativeDiagEnable
+ +"0x35c,60,61,1,0,0,,,,0\n" // ParkingBrakeStatus
+"0x3f7,2,3,1,0,0,,,,2\n" // Gear?
+"0x427,0,1,1,0,0,,,,0\n" // HVConnectionStatus
+"0x427,2,3,1,0,0,,,,0\n" // ChargingAlert
@@ -632,6 +707,9 @@ private void fillStatic()
+"0x430,50,59,0.1,40,1,°C,,,2\n" // HV Battery Evaporator Setpoint
+"0x4f8,0,1,-1,-2,0,,,,0\n" // Start
+"0x4f8,4,5,-1,-2,0,,,,0\n" // Parking Break
+ +"0x4f8,8,9,1,0,0,,,,0\n" // AIRBAGMalfunctionLampState
+ +"0x4f8,12,12,1,0,0,,,,0\n" // ClusterDrivenLampsAutoCheck
+ +"0x4f8,13,13,1,0,0,,,,0\n" // DisplayedSpeedUnit
+"0x4f8,24,39,0.01,0,2,,,,2\n" // Speed on Display
+"0x534,32,40,1,40,0,°C,,,1\n" // Temp out
+"0x5d7,0,15,0.01,0,2,km/h,,,0\n" // Speed
@@ -670,6 +748,7 @@ private void fillStatic()
+"0x5ee,16,19,1,0,0,,,,0\n" // Door Locks
+"0x5ee,20,24,1,0,0,,,,0\n" // Indicators
+"0x5ee,24,27,1,0,0,,,,0\n" // Doors
+ +"0x5ee,40,40,1,0,0,,,,0\n" // LightSensorStatus
+"0x646,8,15,0.1,0,1,kWh/100km,,,0\n" // Average trip B consumpion
+"0x646,16,32,0.1,0,1,km,,,0\n" // Trip B distance
+"0x646,33,47,0.1,0,1,kWh,,,0\n" // trip B consumption
@@ -702,6 +781,15 @@ private void fillStatic()
+"0x66a,5,7,1,0,0,,,,0\n" // Cruise Control Mode
+"0x66a,8,15,1,0,0,km/h,,,0\n" // Cruise Control Speed
+"0x66a,16,16,1,0,0,,,,0\n" // Cruise Control OverSpeed
+ +"0x673,0,0,1,0,0,,,,0\n" // Speed pressure misadaptation
+ +"0x673,2,4,1,0,0,,,,0\n" // Rear right wheel state
+ +"0x673,5,7,1,0,0,,,,0\n" // Rear left wheel state
+ +"0x673,8,10,1,0,0,,,,0\n" // Front right wheel state
+ +"0x673,11,13,1,0,0,,,,0\n" // Front left wheel state
+ +"0x673,16,23,0.07285974499,0,0,mbar,,,0\n" // Rear right wheel pressure
+ +"0x673,24,31,0.07285974499,0,0,mbar,,,0\n" // Rear left wheel pressure
+ +"0x673,32,39,0.07285974499,0,0,mbar,,,0\n" // Front right wheel pressure
+ +"0x673,40,47,0.07285974499,0,0,mbar,,,0\n" // Front left wheel pressure
+"0x68b,0,3,1,0,0,,,,0\n" // MM action counter
+"0x699,0,1,1,0,0,,,,2\n" // Clima off Request display
+"0x699,2,3,1,0,0,,,,2\n" // Clima read defrost Reuqest display
@@ -786,37 +874,37 @@ private void fillStatic()
+"0x7bb,348,367,0.0001,0,4,Ah,0x2101,0x6101,1\n" // Ah of the battery
+"0x7bb,316,335,0.0001,0,4,%,0x2101,0x6101,1\n" // Real State of Charge
+"0x7bb,336,351,0.01,0,2,kW,0x2101,0x6101,2\n" // Maximum battery input power
- +"0x7bb,16,31,1,0,0,unknown,0x2104,0x6104,2\n" // Module 1 raw NTC
+ +"0x7bb,16,31,1,0,0,stravinsky1124,0x2104,0x6104,2\n" // Module 1 raw NTC
+"0x7bb,32,39,1,40,0,°C,0x2104,0x6104,2\n" // Cell 1 Temperature
- +"0x7bb,40,55,1,0,0,unknown,0x2104,0x6104,2\n" // Module 2 raw NTC
+ +"0x7bb,40,55,1,0,0,,0x2104,0x6104,2\n" // Module 2 raw NTC
+"0x7bb,56,63,1,40,0,°C,0x2104,0x6104,2\n" // Cell 2 Temperature
- +"0x7bb,64,79,1,0,0,unknown,0x2104,0x6104,2\n" // Module 3 raw NTC
+ +"0x7bb,64,79,1,0,0,,0x2104,0x6104,2\n" // Module 3 raw NTC
+"0x7bb,80,87,1,40,0,°C,0x2104,0x6104,2\n" // Cell 3 Temperature
- +"0x7bb,88,103,1,0,0,unknown,0x2104,0x6104,2\n" // Module 4 raw NTC
+ +"0x7bb,88,103,1,0,0,,0x2104,0x6104,2\n" // Module 4 raw NTC
+"0x7bb,104,111,1,40,0,°C,0x2104,0x6104,2\n" // Cell 4 Temperature
- +"0x7bb,112,127,1,0,0,unknown,0x2104,0x6104,2\n" // Module 5 raw NTC
+ +"0x7bb,112,127,1,0,0,,0x2104,0x6104,2\n" // Module 5 raw NTC
+"0x7bb,128,135,1,40,0,°C,0x2104,0x6104,2\n" // Cell 5 Temperature
- +"0x7bb,136,151,1,0,0,unknown,0x2104,0x6104,2\n" // Module 6 raw NTC
+ +"0x7bb,136,151,1,0,0,,0x2104,0x6104,2\n" // Module 6 raw NTC
+"0x7bb,152,159,1,40,0,°C,0x2104,0x6104,2\n" // Cell 6 Temperature
- +"0x7bb,160,175,1,0,0,unknown,0x2104,0x6104,2\n" // Module 7 raw NTC
+ +"0x7bb,160,175,1,0,0,,0x2104,0x6104,2\n" // Module 7 raw NTC
+"0x7bb,176,183,1,40,0,°C,0x2104,0x6104,2\n" // Cell 7 Temperature
- +"0x7bb,184,199,1,0,0,unknown,0x2104,0x6104,2\n" // Module 8 raw NTC
+ +"0x7bb,184,199,1,0,0,,0x2104,0x6104,2\n" // Module 8 raw NTC
+"0x7bb,200,207,1,40,0,°C,0x2104,0x6104,2\n" // Cell 8 Temperature
- +"0x7bb,208,223,1,0,0,unknown,0x2104,0x6104,2\n" // Module 9 raw NTC
+ +"0x7bb,208,223,1,0,0,,0x2104,0x6104,2\n" // Module 9 raw NTC
+"0x7bb,224,231,1,40,0,°C,0x2104,0x6104,2\n" // Cell 9 Temperature
- +"0x7bb,232,247,1,0,0,unknown,0x2104,0x6104,2\n" // Module 10 raw NTC
+ +"0x7bb,232,247,1,0,0,,0x2104,0x6104,2\n" // Module 10 raw NTC
+"0x7bb,248,255,1,40,0,°C,0x2104,0x6104,2\n" // Cell 10 Temperature
- +"0x7bb,256,271,1,0,0,unknown,0x2104,0x6104,2\n" // Module 11 raw NTC
+ +"0x7bb,256,271,1,0,0,,0x2104,0x6104,2\n" // Module 11 raw NTC
+"0x7bb,272,279,1,40,0,°C,0x2104,0x6104,2\n" // Cell 11 Temperature
- +"0x7bb,280,295,1,0,0,unknown,0x2104,0x6104,2\n" // Module 12 raw NTC
+ +"0x7bb,280,295,1,0,0,,0x2104,0x6104,2\n" // Module 12 raw NTC
+"0x7bb,296,303,1,40,0,°C,0x2104,0x6104,2\n" // Cell 12 Temperature
- +"0x7bb,16,31,1,0,0,unknown,0x2104,0x6104,1\n" // Module 1 raw NTC
+ +"0x7bb,16,31,1,0,0,,0x2104,0x6104,1\n" // Module 1 raw NTC
+"0x7bb,32,39,1,0,0,°C,0x2104,0x6104,1\n" // Cell 1 Temperature
- +"0x7bb,40,55,1,0,0,unknown,0x2104,0x6104,1\n" // Module 2 raw NTC
+ +"0x7bb,40,55,1,0,0,,0x2104,0x6104,1\n" // Module 2 raw NTC
+"0x7bb,56,63,1,0,0,°C,0x2104,0x6104,1\n" // Cell 2 Temperature
- +"0x7bb,64,79,1,0,0,unknown,0x2104,0x6104,1\n" // Module 3 raw NTC
+ +"0x7bb,64,79,1,0,0,,0x2104,0x6104,1\n" // Module 3 raw NTC
+"0x7bb,80,87,1,0,0,°C,0x2104,0x6104,1\n" // Cell 3 Temperature
- +"0x7bb,88,103,1,0,0,unknown,0x2104,0x6104,1\n" // Module 4 raw NTC
+ +"0x7bb,88,103,1,0,0,,0x2104,0x6104,1\n" // Module 4 raw NTC
+"0x7bb,104,111,1,0,0,°C,0x2104,0x6104,1\n" // Cell 4 Temperature
+"0x7bb,64,79,0.001,0,3,V,0x2105,0x6105,1\n" // Threshold bad cell
+"0x7bb,80,95,0.001,0,3,V,0x2105,0x6105,1\n" // Threshol weak cell
@@ -978,6 +1066,7 @@ private void fillStatic()
MainActivity.debug("frame does not exist:" + tokens[FIELD_ID].trim());
} else {
//Create a new field object and fill his data
+ MainActivity.debug(tokens[FIELD_ID]+","+tokens[FIELD_FROM]);
Field field = new Field(
frame,
Integer.parseInt(tokens[FIELD_FROM].trim()),
diff --git a/app/src/main/java/lu/fisch/canze/fragments/ExperimentalFragment.java b/app/src/main/java/lu/fisch/canze/fragments/ExperimentalFragment.java
index 9bfb5490..4b943620 100644
--- a/app/src/main/java/lu/fisch/canze/fragments/ExperimentalFragment.java
+++ b/app/src/main/java/lu/fisch/canze/fragments/ExperimentalFragment.java
@@ -44,6 +44,7 @@
import lu.fisch.canze.activities.StatsActivity;
import lu.fisch.canze.activities.TachoActivity;
import lu.fisch.canze.activities.TemperatureActivity;
+import lu.fisch.canze.activities.TyresActivity;
/**
* A simple {@link Fragment} subclass.
@@ -172,34 +173,30 @@ public void onClick(View v) {
}
});*/
- button = (Button) view.findViewById(R.id.button_3);
+ button = (Button) view.findViewById(R.id.buttonFluenceKangooTemps);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!MainActivity.isSafe()) return;
if(MainActivity.device==null) {MainActivity.toast("You first need to adjust the settings ..."); return;}
MainActivity.getInstance().leaveBluetoothOn=true;
- Intent intent = new Intent(MainActivity.getInstance(), ChargingTechActivity.class);
+ Intent intent = new Intent(MainActivity.getInstance(), FluenceKangooTempsActivity.class);
ExperimentalFragment.this.startActivityForResult(intent, MainActivity.LEAVE_BLUETOOTH_ON);
}
});
- button = (Button) view.findViewById(R.id.buttonFluenceKangooTemps);
+ button = (Button) view.findViewById(R.id.buttonTyres);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!MainActivity.isSafe()) return;
if(MainActivity.device==null) {MainActivity.toast("You first need to adjust the settings ..."); return;}
MainActivity.getInstance().leaveBluetoothOn=true;
- Intent intent = new Intent(MainActivity.getInstance(), FluenceKangooTempsActivity.class);
+ Intent intent = new Intent(MainActivity.getInstance(), TyresActivity.class);
ExperimentalFragment.this.startActivityForResult(intent, MainActivity.LEAVE_BLUETOOTH_ON);
}
});
-
-
-
-
return view;
}
diff --git a/app/src/main/res/layout/activity_charging.xml b/app/src/main/res/layout/activity_charging.xml
index c4a3efc7..a5844fbf 100644
--- a/app/src/main/res/layout/activity_charging.xml
+++ b/app/src/main/res/layout/activity_charging.xml
@@ -167,13 +167,6 @@
/>
-
-
-
-
-
-
-
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_driving.xml b/app/src/main/res/layout/activity_driving.xml
index 53fcafac..e953fa72 100644
--- a/app/src/main/res/layout/activity_driving.xml
+++ b/app/src/main/res/layout/activity_driving.xml
@@ -164,13 +164,13 @@
diff --git a/app/src/main/res/layout/activity_tyres.xml b/app/src/main/res/layout/activity_tyres.xml
new file mode 100644
index 00000000..16b91acc
--- /dev/null
+++ b/app/src/main/res/layout/activity_tyres.xml
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_experimental.xml b/app/src/main/res/layout/fragment_experimental.xml
index baf54115..107a59f9 100644
--- a/app/src/main/res/layout/fragment_experimental.xml
+++ b/app/src/main/res/layout/fragment_experimental.xml
@@ -190,8 +190,8 @@ android:orientation="vertical"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
- android:text="-"
- android:id="@+id/button_3"
+ android:text="@string/title_activity_tyres"
+ android:id="@+id/buttonTyres"
android:layout_column="1" />
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8f3f3ea7..ea34e5f4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -21,6 +21,7 @@
Diagnostic Trouble Codes
Battery Compartment heatmap
Battery Voltage heatmap
+ Tyres info
@@ -64,6 +65,9 @@
State of charge %
#SOC
+ Mean battery temperature
+ #HVT
+
State of health %
#SOH
@@ -186,6 +190,18 @@
Heating water pump speed
Battery cooling fans speed
+
+
+ Tyres
+ Speed-pressure misadaption
+ Front left state
+ Front right state
+ Rear left state
+ Rear right state
+ Front left pressure
+ Front right pressure
+ Rear left pressure
+ Rear right pressure
Hello blank fragment