class AmdgpuFan::PCI
PCI
Retrieve device information from PCI
IDs. pci-ids.ucw.cz/
Constants
- TMP_FILE
- URL
Public Class Methods
device_name(vendor_id, device_id, subdevice_id)
click to toggle source
Return the device name if available
# File lib/amdgpu_fan/pci.rb, line 18 def self.device_name(vendor_id, device_id, subdevice_id) device = info.dig vendor_id, :devices, device_id device.dig(subdevice_id, :name) || device[:name] end
info()
click to toggle source
# File lib/amdgpu_fan/pci.rb, line 28 def self.info current_vendor_id = nil current_device_id = nil @info = raw.each_line.with_object({}) do |line, hash| next if line.empty? || line.start_with?('#') if line[0] =~ /(\d|[a-z])/ # Vendor line current_vendor_id = line.split(' ').first.to_i(16) vendor_name = line.split(' ').last.strip hash[current_vendor_id] = { name: vendor_name, devices: {} } elsif line[0..1] =~ /\t\w/ # Device line current_device_id = line.split(' ').first.to_i(16) device_name = line.split(' ').last.strip hash[current_vendor_id][:devices][current_device_id] = { name: device_name } elsif line[0..2] =~ /\t\t\w/ # Subvendor line subvendor_id = line.split(' ').first.to_i(16) subdevice_id = line.split(' ')[1].to_i(16) subdevice_name = line.split(' ')[1].strip hash[current_vendor_id][:devices][current_device_id][subdevice_id] = { name: subdevice_name } end end end
raw()
click to toggle source
# File lib/amdgpu_fan/pci.rb, line 56 def self.raw File.write(TMP_FILE, Net::HTTP.get(URI(URL))) unless File.exist?(TMP_FILE) @raw ||= File.read(TMP_FILE) end
vendor_name(vendor_id)
click to toggle source
# File lib/amdgpu_fan/pci.rb, line 24 def self.vendor_name(vendor_id) info.dig vendor_id, :name end