Diagnostics
Table of Contents
- State
- Mileage
- Engine oil temperature
- Speed
- Engine rpm
- Fuel level
- Estimated range
- Washer fluid level
- Battery voltage
- Adblue level
- Distance since reset
- Distance since start
- Fuel volume
- Anti lock braking
- Engine coolant temperature
- Engine total operating hours
- Engine total fuel consumption
- Brake fluid level
- Engine torque
- Engine load
- Wheel based speed
- Battery level
- Check control messages
- Tire pressures
- Tire temperatures
- Wheel rpms
- Trouble codes
- Mileage meters
- Odometer
- Engine total operating time
- Tire pressure statuses
- Brake lining wear pre warning
- Engine oil life remaining
- Oem trouble code values
- Diesel exhaust fluid range
- Diesel particulate filter soot level
- Confirmed trouble codes
- Diesel exhaust filter status
- Engine total idle operating time
- Engine oil amount
- Engine oil level
- Estimated secondary powertrain range
- Fuel level accuracy
- Tire pressures targets
- Tire pressures differences
- Backup battery remaining time
- Engine coolant fluid level
- Engine oil fluid level
- Engine oil pressure level
- Engine time to next service
- Low voltage battery charge level
- Getters
State
Mileage
Declaration
getMileage()
Discussion
The vehicle mileage (odometer)
Example
val state:Diagnostics.State
assertTrue(state.mileage.value?.value == 150000.0)
assertTrue(state.mileage.value?.unit == Length.Unit.KILOMETERS)
// Odometer is showing 150'000.0km
Engine oil temperature
Declaration
getEngineOilTemperature()
Discussion
Engine oil temperature
Example
val state:Diagnostics.State
assertTrue(state.engineOilTemperature.value?.value == 99.5)
assertTrue(state.engineOilTemperature.value?.unit == Temperature.Unit.CELSIUS)
// Engine oil temperature is 99.5°C
Speed
Declaration
getSpeed()
Discussion
The vehicle speed
Example
val state:Diagnostics.State
assertTrue(state.speed.value?.value == 60.0)
assertTrue(state.speed.value?.unit == Speed.Unit.KILOMETERS_PER_HOUR)
// Vehicle speed is 60.0km/h
Engine rpm
Declaration
getEngineRPM()
Discussion
Engine RPM (revolutions per minute)
Example
val state:Diagnostics.State
assertTrue(state.engineRPM.value?.value == 2500.0)
assertTrue(state.engineRPM.value?.unit == AngularVelocity.Unit.REVOLUTIONS_PER_MINUTE)
// Engine RPM is 2500.0
Fuel level
Declaration
getFuelLevel()
Discussion
Fuel level percentage between 0.0-1.0
Example
val state:Diagnostics.State
assertTrue(state.fuelLevel.value == 0.9)
// Fuel level is at 90%
Estimated range
Declaration
getEstimatedRange()
Discussion
Estimated range (with combustion engine)
Example
val state:Diagnostics.State
assertTrue(state.estimatedRange.value?.value == 265.0)
assertTrue(state.estimatedRange.value?.unit == Length.Unit.KILOMETERS)
// Estimated range is 256.0km
Washer fluid level
Declaration
getWasherFluidLevel()
Example
val state:Diagnostics.State
assertTrue(state.washerFluidLevel.value == FluidLevel.FILLED)
// Washer fluid is filled
Battery voltage
Declaration
getBatteryVoltage()
Discussion
Battery voltage
Example
val state:Diagnostics.State
assertTrue(state.batteryVoltage.value?.value == 12.1)
assertTrue(state.batteryVoltage.value?.unit == ElectricPotentialDifference.Unit.VOLTS)
// Battery voltage is 12.1V
Adblue level
Declaration
getAdBlueLevel()
Discussion
AdBlue level percentage between 0.0-1.0
Example
val state:Diagnostics.State
assertTrue(state.adBlueLevel.value == 0.9)
// AdBlue level is at 90%
Distance since reset
Declaration
getDistanceSinceReset()
Discussion
The distance driven since reset
Example
val state:Diagnostics.State
assertTrue(state.distanceSinceReset.value?.value == 1500.1)
assertTrue(state.distanceSinceReset.value?.unit == Length.Unit.KILOMETERS)
// 1'500.1km driven since reset
Distance since start
Declaration
getDistanceSinceStart()
Discussion
The distance driven since trip start
Example
val state:Diagnostics.State
assertTrue(state.distanceSinceStart.value?.value == 12.4)
assertTrue(state.distanceSinceStart.value?.unit == Length.Unit.KILOMETERS)
// 12.4km driven since the engine start
Fuel volume
Declaration
getFuelVolume()
Discussion
The fuel volume measured in liters
Example
val state:Diagnostics.State
assertTrue(state.fuelVolume.value?.value == 35.5)
assertTrue(state.fuelVolume.value?.unit == Volume.Unit.LITERS)
// 35.5 L of fuel remaining
Anti lock braking
Declaration
getAntiLockBraking()
Example
val state:Diagnostics.State
assertTrue(state.antiLockBraking.value == ActiveState.ACTIVE)
// ABS is active
Engine coolant temperature
Declaration
getEngineCoolantTemperature()
Discussion
Engine coolant temperature
Example
val state:Diagnostics.State
assertTrue(state.engineCoolantTemperature.value?.value == 20.0)
assertTrue(state.engineCoolantTemperature.value?.unit == Temperature.Unit.CELSIUS)
// Engine coolant temperature is 20°C
Engine total operating hours
Declaration
getEngineTotalOperatingHours()
Discussion
The accumulated time of engine operation
Example
val state:Diagnostics.State
assertTrue(state.engineTotalOperatingHours.value?.value == 1500.65)
assertTrue(state.engineTotalOperatingHours.value?.unit == Duration.Unit.HOURS)
// The engine has operated 1'500.65h in total
Engine total fuel consumption
Declaration
getEngineTotalFuelConsumption()
Discussion
The accumulated lifespan fuel consumption
Example
val state:Diagnostics.State
assertTrue(state.engineTotalFuelConsumption.value?.value == 27587.0)
assertTrue(state.engineTotalFuelConsumption.value?.unit == Volume.Unit.LITERS)
// The engine has consumend 27'587.0 L of fuel over it's lifespan
Brake fluid level
Declaration
getBrakeFluidLevel()
Example
val state:Diagnostics.State
assertTrue(state.brakeFluidLevel.value == FluidLevel.LOW)
// Brake fluid is low
Engine torque
Declaration
getEngineTorque()
Discussion
Current engine torque percentage between 0.0-1.0
Example
val state:Diagnostics.State
assertTrue(state.engineTorque.value == 0.2)
// Engine torque is currently at 20%
Engine load
Declaration
getEngineLoad()
Discussion
Current engine load percentage between 0.0-1.0
Example
val state:Diagnostics.State
assertTrue(state.engineLoad.value == 0.1)
// Engine load is currently at 10%
Wheel based speed
Declaration
getWheelBasedSpeed()
Discussion
The vehicle speed measured at the wheel base
Example
val state:Diagnostics.State
assertTrue(state.wheelBasedSpeed.value?.value == 65.0)
assertTrue(state.wheelBasedSpeed.value?.unit == Speed.Unit.KILOMETERS_PER_HOUR)
// Wheel based speed is 65.0km/h
Battery level
Declaration
getBatteryLevel()
Discussion
Battery level in %, value between 0.0 and 1.0
Example
val state:Diagnostics.State
assertTrue(state.batteryLevel.value == 0.56)
// Battery level is at 56%
Check control messages
Declaration
getCheckControlMessages()
Example
val state:Diagnostics.State
assertTrue(state.checkControlMessages[0].value?.id == 1)
assertTrue(state.checkControlMessages[0].value?.remainingTime?.value == 105592.0)
assertTrue(state.checkControlMessages[0].value?.remainingTime?.unit == Duration.Unit.MINUTES)
assertTrue(state.checkControlMessages[0].value?.text == "Check engine")
assertTrue(state.checkControlMessages[0].value?.status == "Alert")
// 105'592 minutes remaining for Check Engine Alert control message with ID 1
Tire pressures
Declaration
getTirePressures()
Example
val state:Diagnostics.State
assertTrue(state.tirePressures[0].value?.location == LocationWheel.FRONT_LEFT)
assertTrue(state.tirePressures[0].value?.pressure?.value == 2.31)
assertTrue(state.tirePressures[0].value?.pressure?.unit == Pressure.Unit.BARS)
// Front left tire pressure is 2.31BAR
Tire temperatures
Declaration
getTireTemperatures()
Example
val state:Diagnostics.State
assertTrue(state.tireTemperatures[0].value?.location == LocationWheel.FRONT_LEFT)
assertTrue(state.tireTemperatures[0].value?.temperature?.value == 40.1)
assertTrue(state.tireTemperatures[0].value?.temperature?.unit == Temperature.Unit.CELSIUS)
// Front left tire temperature is 40.1°C
Wheel rpms
Declaration
getWheelRPMs()
Example
val state:Diagnostics.State
assertTrue(state.wheelRPMs[0].value?.location == LocationWheel.FRONT_LEFT)
assertTrue(state.wheelRPMs[0].value?.rpm?.value == 737.0)
assertTrue(state.wheelRPMs[0].value?.rpm?.unit == AngularVelocity.Unit.REVOLUTIONS_PER_MINUTE)
// Front left wheel is doing 737.0RPM
Trouble codes
Declaration
getTroubleCodes()
Example
val state:Diagnostics.State
assertTrue(state.troubleCodes[0].value?.occurrences == 2)
assertTrue(state.troubleCodes[0].value?.id == "C1116FA")
assertTrue(state.troubleCodes[0].value?.ecuID == "RDU_212FR")
assertTrue(state.troubleCodes[0].value?.status == "PENDING")
assertTrue(state.troubleCodes[0].value?.system == TroubleCode.System.UNKNOWN)
// Trouble code 'C1116FA' with ECU-ID 'RDU_212FR' occurred 2 times and is 'PENDING'
Mileage meters
Declaration
getMileageMeters()
Discussion
The vehicle mileage (odometer) in meters
Example
val state:Diagnostics.State
assertTrue(state.mileageMeters.value?.value == 150001.0)
assertTrue(state.mileageMeters.value?.unit == Length.Unit.KILOMETERS)
// Odometer is showing 150'001km
Odometer
Declaration
getOdometer()
Discussion
The vehicle odometer value in a given units
Example
val state:Diagnostics.State
assertTrue(state.odometer.value?.value == 2050.0)
assertTrue(state.odometer.value?.unit == Length.Unit.KILOMETERS)
// Odometer is showing 2050.0km
Engine total operating time
Declaration
getEngineTotalOperatingTime()
Discussion
The accumulated time of engine operation
Example
val state:Diagnostics.State
assertTrue(state.engineTotalOperatingTime.value?.value == 1500.65)
assertTrue(state.engineTotalOperatingTime.value?.unit == Duration.Unit.HOURS)
// The engine has operated 1'500.65h in total
Tire pressure statuses
Declaration
getTirePressureStatuses()
Example
val state:Diagnostics.State
assertTrue(state.tirePressureStatuses[0].value?.location == LocationWheel.FRONT_LEFT)
assertTrue(state.tirePressureStatuses[0].value?.status == TirePressureStatus.Status.NORMAL)
// Front left tire pressure is normal
Brake lining wear pre warning
Declaration
getBrakeLiningWearPreWarning()
Discussion
Status of brake lining wear pre-warning
Example
val state:Diagnostics.State
assertTrue(state.brakeLiningWearPreWarning.value == ActiveState.INACTIVE)
// Brake lining wear pre-warning is inactive
Engine oil life remaining
Declaration
getEngineOilLifeRemaining()
Discussion
Remaining life of engine oil which decreases over time
Example
val state:Diagnostics.State
assertTrue(state.engineOilLifeRemaining.value == 0.88)
// Engine oil life remaining is 88%
Oem trouble code values
Declaration
getOemTroubleCodeValues()
Discussion
Additional OEM trouble codes
Example
val state:Diagnostics.State
assertTrue(state.oemTroubleCodeValues[0].value?.id == "123ID")
assertTrue(state.oemTroubleCodeValues[0].value?.keyValue?.key == "some_error")
assertTrue(state.oemTroubleCodeValues[0].value?.keyValue?.value == "some_value")
// Trouble code '123ID' has a value 'some_value' for a key 'some_error'
Diesel exhaust fluid range
Declaration
getDieselExhaustFluidRange()
Discussion
Distance remaining until diesel exhaust fluid is empty
Example
val state:Diagnostics.State
assertTrue(state.dieselExhaustFluidRange.value?.value == 2233.0)
assertTrue(state.dieselExhaustFluidRange.value?.unit == Length.Unit.KILOMETERS)
// Diesel exhaust fluid is empty in 2233.0km
Diesel particulate filter soot level
Declaration
getDieselParticulateFilterSootLevel()
Discussion
Level of soot in diesel exhaust particulate filter
Example
val state:Diagnostics.State
assertTrue(state.dieselParticulateFilterSootLevel.value == 0.16)
// Diesel exhaust particulate filter soot level is 16%
Confirmed trouble codes
Declaration
getConfirmedTroubleCodes()
Example
val state:Diagnostics.State
assertTrue(state.confirmedTroubleCodes[0].value?.id == "801C10")
assertTrue(state.confirmedTroubleCodes[0].value?.ecuAddress == "16")
assertTrue(state.confirmedTroubleCodes[0].value?.ecuVariantName == "CAS")
assertTrue(state.confirmedTroubleCodes[0].value?.status == "ACTIVE")
// Confirmed trouble code '801C10' with ECU address '16' and variante name "CAS" is 'ACTIVE'
Diesel exhaust filter status
Declaration
getDieselExhaustFilterStatus()
Example
val state:Diagnostics.State
assertTrue(state.dieselExhaustFilterStatus[0].value?.status == DieselExhaustFilterStatus.Status.UNKNOWN)
assertTrue(state.dieselExhaustFilterStatus[0].value?.component == DieselExhaustFilterStatus.Component.EXHAUST_FILTER)
assertTrue(state.dieselExhaustFilterStatus[0].value?.cleaning == DieselExhaustFilterStatus.Cleaning.UNKNOWN)
// Diesel 'exhaust filter' is in 'unknown' status and unknown cleaning state
Engine total idle operating time
Declaration
getEngineTotalIdleOperatingTime()
Discussion
The accumulated time of engine operation
Example
val state:Diagnostics.State
assertTrue(state.engineTotalIdleOperatingTime.value?.value == 213.56)
assertTrue(state.engineTotalIdleOperatingTime.value?.unit == Duration.Unit.HOURS)
// The engine has operated 213.56h in idle
Engine oil amount
Declaration
getEngineOilAmount()
Discussion
The current estimated oil tank liquid fill.
Example
val state:Diagnostics.State
assertTrue(state.engineOilAmount.value?.value == 3.5)
assertTrue(state.engineOilAmount.value?.unit == Volume.Unit.LITERS)
// Engine oil tank is filled by 3.5 l
Engine oil level
Declaration
getEngineOilLevel()
Discussion
The current estimated oil tank liquid fill in percentage.
Example
val state:Diagnostics.State
assertTrue(state.engineOilLevel.value == 0.8)
// Engile oil level is at 80%
Estimated secondary powertrain range
Declaration
getEstimatedSecondaryPowertrainRange()
Discussion
Estimated secondary powertrain range
Example
val state:Diagnostics.State
assertTrue(state.estimatedSecondaryPowertrainRange.value?.value == 265.0)
assertTrue(state.estimatedSecondaryPowertrainRange.value?.unit == Length.Unit.KILOMETERS)
// Estimated secondary powertrain`s range is 256.0km
Fuel level accuracy
Declaration
getFuelLevelAccuracy()
Discussion
This value includes the information, if the fuel level has been calculated or measured.
Example
val state:Diagnostics.State
assertTrue(state.fuelLevelAccuracy.value == Diagnostics.FuelLevelAccuracy.MEASURED)
// Fuel level has been measured
Tire pressures targets
Declaration
getTirePressuresTargets()
Discussion
Target tire pressures for the vehicle.
Example
val state:Diagnostics.State
assertTrue(state.tirePressuresTargets[0].value?.location == LocationWheel.FRONT_LEFT)
assertTrue(state.tirePressuresTargets[0].value?.pressure?.value == 2.31)
assertTrue(state.tirePressuresTargets[0].value?.pressure?.unit == Pressure.Unit.BARS)
// Front left tire pressure target is 2.31BAR
Tire pressures differences
Declaration
getTirePressuresDifferences()
Discussion
Tire pressures difference from the target pressure.
Example
val state:Diagnostics.State
assertTrue(state.tirePressuresDifferences[0].value?.location == LocationWheel.FRONT_LEFT)
assertTrue(state.tirePressuresDifferences[0].value?.pressure?.value == 0.1)
assertTrue(state.tirePressuresDifferences[0].value?.pressure?.unit == Pressure.Unit.BARS)
// Front left tire pressure difference is 0.1BAR
Backup battery remaining time
Declaration
getBackupBatteryRemainingTime()
Discussion
Remaining time the backup battery can work.
Example
val state:Diagnostics.State
assertTrue(state.backupBatteryRemainingTime.value?.value == 15.0)
assertTrue(state.backupBatteryRemainingTime.value?.unit == Duration.Unit.MINUTES)
// The backup battery has 15min remaining.
Engine coolant fluid level
Declaration
getEngineCoolantFluidLevel()
Discussion
Engine coolant fluid level
Example
val state:Diagnostics.State
assertTrue(state.engineCoolantFluidLevel.value == FluidLevel.HIGH)
// Engine coolant level is high
Engine oil fluid level
Declaration
getEngineOilFluidLevel()
Discussion
Engine oil fluid level
Example
val state:Diagnostics.State
assertTrue(state.engineOilFluidLevel.value == FluidLevel.NORMAL)
// Engile oil level is at normal
Engine oil pressure level
Declaration
getEngineOilPressureLevel()
Discussion
Engine oil pressure level
Example
val state:Diagnostics.State
assertTrue(state.engineOilPressureLevel.value == Diagnostics.EngineOilPressureLevel.NORMAL)
// Engine oil pressure is normal
Engine time to next service
Declaration
getEngineTimeToNextService()
Discussion
Engine time until next service of the vehicle
Example
val state:Diagnostics.State
assertTrue(state.engineTimeToNextService.value?.value == 501.0)
assertTrue(state.engineTimeToNextService.value?.unit == Duration.Unit.HOURS)
// 501.0 engine hours until next service
Low voltage battery charge level
Declaration
getLowVoltageBatteryChargeLevel()
Discussion
Indicates if the charge level of the low voltage battery is too low to use other systems
Example
val state:Diagnostics.State
assertTrue(state.lowVoltageBatteryChargeLevel.value == Diagnostics.LowVoltageBatteryChargeLevel.OK)
// Low voltage battery charge level is ok
Getters
Get Diagnostics property availability information
Declaration
public GetStateAvailability()
public GetStateAvailability(byte... propertyIdentifiers)
Example
// get all property availabilities
val getAvailability = GetStateAvailability()
// get mileage and engineOilTemperature property availabilities
val getAvailabilityProperties = GetStateAvailability(0x01, 0x02)
Get Diagnostics properties
Declaration
public GetState()
public GetState(byte... propertyIdentifiers)
Example
// get all properties
val getState = GetState()
// get mileage and engineOilTemperature properties
val getStateProperties = GetState(0x01, 0x02)