diff --git a/OBD.NET/OBD.NET.Common/OBDData/00-1F/PidsSupported01_20.cs b/OBD.NET/OBD.NET.Common/OBDData/00-1F/PidsSupported01_20.cs index 7f4c234..9fb5869 100644 --- a/OBD.NET/OBD.NET.Common/OBDData/00-1F/PidsSupported01_20.cs +++ b/OBD.NET/OBD.NET.Common/OBDData/00-1F/PidsSupported01_20.cs @@ -2,41 +2,8 @@ namespace OBD.NET.Common.OBDData { - public class PidsSupported01_20 : AbstractOBDData + public class PidsSupported01_20 : AbstractPidsSupported { - #region Properties & Fields - - public int[] SupportedPids - { - get - { - List supportedPids = new List(); - for (int i = 0x01; i < 0x20; i++) - switch ((int)(i / 8.0)) - { - case 0: - if ((A << (7 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 1: - if ((B << (15 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 2: - if ((C << (23 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 3: - if ((D << (31 - i)) != 0) - supportedPids.Add(PID + i); - break; - } - return supportedPids.ToArray(); - } - } - - #endregion - #region Constructors public PidsSupported01_20() diff --git a/OBD.NET/OBD.NET.Common/OBDData/20-3F/PidsSupported21_40.cs b/OBD.NET/OBD.NET.Common/OBDData/20-3F/PidsSupported21_40.cs index bdffe1e..b896706 100644 --- a/OBD.NET/OBD.NET.Common/OBDData/20-3F/PidsSupported21_40.cs +++ b/OBD.NET/OBD.NET.Common/OBDData/20-3F/PidsSupported21_40.cs @@ -2,41 +2,8 @@ namespace OBD.NET.Common.OBDData { - public class PidsSupported21_40 : AbstractOBDData + public class PidsSupported21_40 : AbstractPidsSupported { - #region Properties & Fields - - public int[] SupportedPids - { - get - { - List supportedPids = new List(); - for (int i = 0x01; i < 0x20; i++) - switch ((int)(i / 8.0)) - { - case 0: - if ((A << (7 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 1: - if ((B << (15 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 2: - if ((C << (23 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 3: - if ((D << (31 - i)) != 0) - supportedPids.Add(PID + i); - break; - } - return supportedPids.ToArray(); - } - } - - #endregion - #region Constructors public PidsSupported21_40() diff --git a/OBD.NET/OBD.NET.Common/OBDData/40-5F/PidsSupported41_60.cs b/OBD.NET/OBD.NET.Common/OBDData/40-5F/PidsSupported41_60.cs index 98a34fa..2ae07f9 100644 --- a/OBD.NET/OBD.NET.Common/OBDData/40-5F/PidsSupported41_60.cs +++ b/OBD.NET/OBD.NET.Common/OBDData/40-5F/PidsSupported41_60.cs @@ -2,41 +2,8 @@ namespace OBD.NET.Common.OBDData { - public class PidsSupported41_60 : AbstractOBDData + public class PidsSupported41_60 : AbstractPidsSupported { - #region Properties & Fields - - public int[] SupportedPids - { - get - { - List supportedPids = new List(); - for (int i = 0x01; i < 0x20; i++) - switch ((int)(i / 8.0)) - { - case 0: - if ((A << (7 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 1: - if ((B << (15 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 2: - if ((C << (23 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 3: - if ((D << (31 - i)) != 0) - supportedPids.Add(PID + i); - break; - } - return supportedPids.ToArray(); - } - } - - #endregion - #region Constructors public PidsSupported41_60() diff --git a/OBD.NET/OBD.NET.Common/OBDData/60-7F/PidsSupported61_80.cs b/OBD.NET/OBD.NET.Common/OBDData/60-7F/PidsSupported61_80.cs index d054e79..f57944b 100644 --- a/OBD.NET/OBD.NET.Common/OBDData/60-7F/PidsSupported61_80.cs +++ b/OBD.NET/OBD.NET.Common/OBDData/60-7F/PidsSupported61_80.cs @@ -2,41 +2,8 @@ namespace OBD.NET.Common.OBDData { - public class PidsSupported61_80 : AbstractOBDData + public class PidsSupported61_80 : AbstractPidsSupported { - #region Properties & Fields - - public int[] SupportedPids - { - get - { - List supportedPids = new List(); - for (int i = 0x01; i < 0x20; i++) - switch ((int)(i / 8.0)) - { - case 0: - if ((A << (7 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 1: - if ((B << (15 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 2: - if ((C << (23 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 3: - if ((D << (31 - i)) != 0) - supportedPids.Add(PID + i); - break; - } - return supportedPids.ToArray(); - } - } - - #endregion - #region Constructors public PidsSupported61_80() diff --git a/OBD.NET/OBD.NET.Common/OBDData/80-9F/PidsSupported81_A0.cs b/OBD.NET/OBD.NET.Common/OBDData/80-9F/PidsSupported81_A0.cs index e79c809..357586d 100644 --- a/OBD.NET/OBD.NET.Common/OBDData/80-9F/PidsSupported81_A0.cs +++ b/OBD.NET/OBD.NET.Common/OBDData/80-9F/PidsSupported81_A0.cs @@ -2,41 +2,8 @@ namespace OBD.NET.Common.OBDData { - public class PidsSupported81_A0 : AbstractOBDData + public class PidsSupported81_A0 : AbstractPidsSupported { - #region Properties & Fields - - public int[] SupportedPids - { - get - { - List supportedPids = new List(); - for (int i = 0x01; i < 0x20; i++) - switch ((int)(i / 8.0)) - { - case 0: - if ((A << (7 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 1: - if ((B << (15 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 2: - if ((C << (23 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 3: - if ((D << (31 - i)) != 0) - supportedPids.Add(PID + i); - break; - } - return supportedPids.ToArray(); - } - } - - #endregion - #region Constructors public PidsSupported81_A0() diff --git a/OBD.NET/OBD.NET.Common/OBDData/A0-BF/PidsSupportedA1_C0.cs b/OBD.NET/OBD.NET.Common/OBDData/A0-BF/PidsSupportedA1_C0.cs index 0cb7645..8861022 100644 --- a/OBD.NET/OBD.NET.Common/OBDData/A0-BF/PidsSupportedA1_C0.cs +++ b/OBD.NET/OBD.NET.Common/OBDData/A0-BF/PidsSupportedA1_C0.cs @@ -2,41 +2,8 @@ namespace OBD.NET.Common.OBDData { - public class PidsSupportedA1_C0 : AbstractOBDData + public class PidsSupportedA1_C0 : AbstractPidsSupported { - #region Properties & Fields - - public int[] SupportedPids - { - get - { - List supportedPids = new List(); - for (int i = 0x01; i < 0x20; i++) - switch ((int)(i / 8.0)) - { - case 0: - if ((A << (7 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 1: - if ((B << (15 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 2: - if ((C << (23 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 3: - if ((D << (31 - i)) != 0) - supportedPids.Add(PID + i); - break; - } - return supportedPids.ToArray(); - } - } - - #endregion - #region Constructors public PidsSupportedA1_C0() diff --git a/OBD.NET/OBD.NET.Common/OBDData/AbstractPidsSupported.cs b/OBD.NET/OBD.NET.Common/OBDData/AbstractPidsSupported.cs new file mode 100644 index 0000000..cc7288b --- /dev/null +++ b/OBD.NET/OBD.NET.Common/OBDData/AbstractPidsSupported.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace OBD.NET.Common.OBDData +{ + public abstract class AbstractPidsSupported : AbstractOBDData + { + public AbstractPidsSupported(byte pid, int length) : base(pid, length) + { + + } + + public int[] SupportedPids + { + get + { + List supportedPids = new List(); + byte[] byteArray = new byte[] { D, C, B, A }; + var bitArray = new BitArray(byteArray); + for (int i = 0x01; i <= 0x20; i++) + { + if (bitArray.Get(bitArray.Length - i)) + { + supportedPids.Add(PID + i); + } + } + return supportedPids.ToArray(); + } + } + } +} + diff --git a/OBD.NET/OBD.NET.Common/OBDData/C0-DF/PidsSupportedC1_E0.cs b/OBD.NET/OBD.NET.Common/OBDData/C0-DF/PidsSupportedC1_E0.cs index 8c3ac3a..d690e90 100644 --- a/OBD.NET/OBD.NET.Common/OBDData/C0-DF/PidsSupportedC1_E0.cs +++ b/OBD.NET/OBD.NET.Common/OBDData/C0-DF/PidsSupportedC1_E0.cs @@ -2,41 +2,8 @@ namespace OBD.NET.Common.OBDData { - public class PidsSupportedC1_E0 : AbstractOBDData + public class PidsSupportedC1_E0 : AbstractPidsSupported { - #region Properties & Fields - - public int[] SupportedPids - { - get - { - List supportedPids = new List(); - for (int i = 0x01; i < 0x20; i++) - switch ((int)(i / 8.0)) - { - case 0: - if ((A << (7 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 1: - if ((B << (15 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 2: - if ((C << (23 - i)) != 0) - supportedPids.Add(PID + i); - break; - case 3: - if ((D << (31 - i)) != 0) - supportedPids.Add(PID + i); - break; - } - return supportedPids.ToArray(); - } - } - - #endregion - #region Constructors public PidsSupportedC1_E0()