using System.Collections.Generic; using System.Linq; namespace HC_APTBS.Infrastructure.Kwp.Packets { public class FaultCodesPacket : Packet { public FaultCodesPacket(List bytes) : base(bytes) { Data = bytes; } public List Data { get; } } public struct FaultCode { public FaultCode(int dtc, int status) { Dtc = dtc; Status = status; } public override string ToString() { var status1 = Status & 0x7F; var status2 = (Status >> 7) * 10; Dictionary dtc_text = new Dictionary { {0x50, "Fuel quantity solenoid valve Output stage error"}, {0x51, "Fuel quantity solenoid valve."}, {0x52, "Angle sensor/ IWZ system."}, {0x53, "Angle sensor/ IWZ system"}, {0x54, "Control unit temperature sensor, temperature to high"}, {0x55, "Control unit temperature sensor"}, {0x56, "Battery voltage out of range"}, {0x57, "Timing device control.Permanent control deviation"}, {0x58, "Fuel quantity / timing solenoid valve"}, {0x59, "BIP Fault(Begin of Injection Point)"}, {0x5A, "Engine speed signal"}, {0x5B, "Engine speed signal"}, {0x5C, "CAN -Bus(sporadic)"}, {0x5D, "CAN bus error"}, {0x5E, "Self - test error"}, }; if (dtc_text.ContainsKey(Dtc)) return $"{Dtc:X2} {dtc_text[Dtc]} ({status1:d2})"; return $"{Dtc:X2} Unknown Error Code ({status1:d2})"; } public int Dtc { get; } public int Status { get; } public static readonly FaultCode None = new FaultCode(0x00, 0xFF); } }