Skip to content

Commit

Permalink
add - doc - Added PCI ID feature
Browse files Browse the repository at this point in the history
---

We've added PCI ID listing feature to SpecProbe! You can now get the name of the device using your vendor and your device IDs.

---

Type: add
Breaking: False
Doc Required: True
Backport Required: False
Part: 1/1
  • Loading branch information
AptiviCEO committed Aug 17, 2024
1 parent 0cf8ec1 commit 18222f9
Show file tree
Hide file tree
Showing 7 changed files with 38,786 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,9 @@ end_of_line = crlf
insert_final_newline = true
indent_style = space
indent_size = 2

[pci.ids]
end_of_line = lf
insert_final_newline = true
indent_style = tab
indent_size = 4
25 changes: 25 additions & 0 deletions SpecProbe.ConsoleTest/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

using SpecProbe.Parts;
using SpecProbe.Parts.Types;
using SpecProbe.Pci;
using SpecProbe.Software.Platform;
using System.Diagnostics;
using Terminaux.Writer.ConsoleWriters;
Expand Down Expand Up @@ -190,6 +191,30 @@ public static void Main()
TextWriterRaw.Write();
stopwatch.Reset();

// PCI ID parse
SeparatorWriterColor.WriteSeparator("PCI ID", true, 15);
stopwatch.Start();
var vendors = PciListParser.ListVendors();
var vendor = PciListParser.GetVendor(0x1000);
var devices = PciListParser.ListDevices(0x1000);
var device = PciListParser.GetDevice(0x1000, 0x0014);
var subDevices = PciListParser.ListSubDevices(0x1000, 0x0014);
var subDevice = PciListParser.GetSubDevice(0x1000, 0x0014, 0x1d49, 0x0602);
stopwatch.Stop();
TextWriterColor.WriteColor("- Vendor count: ", false, 3);
TextWriterColor.WriteColor($"{vendors.Length} vendors", true, 8);
TextWriterColor.WriteColor($"- Device count for {vendor.Name} [0x{vendor.Id:x4}]: ", false, 3);
TextWriterColor.WriteColor($"{devices.Length} devices", true, 8);
TextWriterColor.WriteColor($"- Sub-device count for {device.Name} [0x{device.Id:x4}]: ", false, 3);
TextWriterColor.WriteColor($"{subDevices.Length} devices", true, 8);
TextWriterColor.WriteColor($"- Sub-device of 0x{device.Id:x4}: ", false, 3);
TextWriterColor.WriteColor($"{subDevice.Name}", true, 8);
TextWriterRaw.Write();
TextWriterColor.WriteColor("Total time taken to parse: ", false, 3);
TextWriterColor.WriteColor($"{stopwatch.Elapsed}", true, 8);
TextWriterRaw.Write();
stopwatch.Reset();

totalStopwatch.Stop();
SeparatorWriterColor.WriteSeparator("Conclusion", true, 15);
TextWriterColor.WriteColor("Total time: ", false, 3);
Expand Down
63 changes: 63 additions & 0 deletions SpecProbe/Pci/Elements/PciDeviceInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
//
// SpecProbe Copyright (C) 2023-2024 Aptivi
//
// This file is part of SpecProbe
//
// SpecProbe 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
// (at your option) any later version.
//
// SpecProbe 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 <https://www.gnu.org/licenses/>.
//

namespace SpecProbe.Pci.Elements
{
/// <summary>
/// PCI device information
/// </summary>
public class PciDeviceInfo
{
internal string deviceName;
internal int deviceId;
internal int vendorId;
internal PciDeviceInfo[] subDevices = [];

/// <summary>
/// Device name
/// </summary>
public string Name =>
deviceName;

/// <summary>
/// Device ID
/// </summary>
public int Id =>
deviceId;

/// <summary>
/// Vendor ID
/// </summary>
public int VendorId =>
vendorId;

/// <summary>
/// List of subdevices
/// </summary>
public PciDeviceInfo[] SubDevices =>
subDevices;

internal PciDeviceInfo(string deviceName, int deviceId, int vendorId)
{
this.deviceName = deviceName;
this.deviceId = deviceId;
this.vendorId = vendorId;
}
}
}
55 changes: 55 additions & 0 deletions SpecProbe/Pci/Elements/PciVendorInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
//
// SpecProbe Copyright (C) 2023-2024 Aptivi
//
// This file is part of SpecProbe
//
// SpecProbe 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
// (at your option) any later version.
//
// SpecProbe 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 <https://www.gnu.org/licenses/>.
//

namespace SpecProbe.Pci.Elements
{
/// <summary>
/// PCI vendor information
/// </summary>
public class PciVendorInfo
{
internal string vendorName;
internal int vendorId;
internal PciDeviceInfo[] devices = [];

/// <summary>
/// Vendor name
/// </summary>
public string Name =>
vendorName;

/// <summary>
/// Vendor ID
/// </summary>
public int Id =>
vendorId;

/// <summary>
/// List of PCI device info that this vendor made
/// </summary>
public PciDeviceInfo[] Devices =>
devices;

internal PciVendorInfo(string vendorName, int vendorId)
{
this.vendorName = vendorName;
this.vendorId = vendorId;
}
}
}
Loading

0 comments on commit 18222f9

Please sign in to comment.