package com.flightfeather.obd.socket.decoder
|
|
import com.flightfeather.obd.domain.entity.ObdData
|
import com.flightfeather.obd.socket.bean.*
|
import com.flightfeather.obd.socket.eunm.ObdCommandUnit
|
import org.junit.Test
|
|
/**
|
* @author riku
|
* Date: 2019/9/17
|
*/
|
class VehicleDataDecoderTest {
|
|
private val vehicleDataDecoder = VehicleDataDecoder()
|
|
@Test
|
fun decode() {
|
val msg = "23 23 02 31 37 36 39 31 35 33 31 39 30 39 31 32 30 30 30 32 01 01 00 85 13 09 12 15 01 2d 00 08 01 00 01 60 00 00 00 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 07 00 00 04 20 00 00 04 20 00 00 c1 13 00 00 00 73 00 00 30 28 00 00 30 25 00 00 30 56 1d"
|
val msg2 = "23 23 02 31 37 36 39 31 35 33 31 39 30 39 31 32 30 30 30 36 01 01 00 42 13 09 11 08 3b 36 02 00 3b 00 00 d4 00 00 12 c0 09 5e 00 c8 00 c8 00 15 a9 00 00 00 00 00 00 73 00 00 00 b9 1b c7 00 2e e1 25 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 dc"
|
val packageData = vehicleDataDecoder.decode(msg)
|
|
val obdData = ObdData().apply {
|
obdVin = packageData.deviceCode
|
}
|
when (packageData.commandUnit) {
|
ObdCommandUnit.CarRegister.value -> {
|
packageData.dataUnit.forEach {
|
when (it) {
|
is CarRegisterData -> {
|
obdData.apply {
|
obdTime = it.time
|
}
|
}
|
}
|
}
|
}
|
ObdCommandUnit.RealTimeData.value,
|
ObdCommandUnit.ReplacementData.value -> {
|
|
packageData.dataUnit.forEach {
|
obdData.apply {
|
obdTime = it.time
|
}
|
when (it) {
|
is com.flightfeather.obd.socket.bean.ObdInfo -> {
|
obdData.apply {
|
obdProtocol = it.obdProtocol
|
obdMil = it.obdMil
|
obdIdCode = it.obdCrn
|
obdVerificationCode = it.obdCvn
|
obdFaultCodeNum = it.obdFaultCodeNum
|
obdFaultCode = it.obdFaultCode
|
}
|
}
|
is EngineDataStream -> {
|
obdData.apply {
|
obdLng = it.obdLong
|
obdLat = it.obdLat
|
obdSpeed = it.obdSpeed?.toInt()
|
obdAirPressure = it.obdAirPressure
|
obdEngineTorque = it.obdEngineTorque
|
obdFrictionTorque = it.obdFrictionTorque
|
obdEngineRpm = it.obdEngineRpm?.toInt()
|
obdStartFuelFlow = it.obdEngineFuelFlow
|
obdScrUpstreamNo = it.obdScrUpstreamNox
|
obdScrDownstreamNo = it.obdScrDownstreamNox
|
obdRemainReactant = it.obdRemainReactant
|
obdAirInput = it.obdAirInput
|
obdScrInputTemp = it.obdScrInputTemp
|
obdScrOutputTemp = it.obdScrOutputTemp
|
obdDpf = it.obdDpf
|
obdEngineCoolantTemp = it.obdEngineCoolantTemp
|
obdFuelLevel = it.obdFuelLevel
|
obdLocationStatus = it.obdLocationStatus
|
obdTotalMileage = it.obdTotalMileage
|
}
|
}
|
is SupplementDataStream -> {
|
obdData.apply {
|
obdEngineTorqueMode = it.obdEngineTorqueMode?.toString()
|
obdAcceleratorPedal = it.obdAcceleratorPedal
|
obdTotalOilConsumption = it.obdTotalOilConsumption
|
obdUreaBoxTemp = it.obdUreaBoxTemp
|
obdUreaVolume = it.obdUreaVolume?.toInt()
|
obdTotalUreaConsume = it.obdTotalUreaConsume
|
obdDpfTemp = it.obdDpfTemp
|
// obdFirmwareVersion =
|
}
|
}
|
}
|
}
|
|
}
|
ObdCommandUnit.CarLogOut.value -> {
|
|
}
|
ObdCommandUnit.TimeCalibration.value -> {
|
|
}
|
}
|
}
|
}
|