class AmdgpuFan::Connector

Connector

A model class for a GPU connector

Constants

EDID_DESCRIPTORS_CONF

Attributes

card_num[R]
dir_path[R]
index[R]
type[R]

Public Class Methods

new(card_num:, dir_path:, index:, type:) click to toggle source
# File lib/amdgpu_fan/connector.rb, line 30
def initialize(card_num:, dir_path:, index:, type:)
  @card_num = card_num
  @dir_path = dir_path
  @index = index
  @type = type
end
where(card_num:) click to toggle source

Return an array of connector objects for the provided card number. The files are sorted to improve how they are displayed to the user.

# File lib/amdgpu_fan/connector.rb, line 20
def where(card_num:)
  Dir["/sys/class/drm/card#{card_num}/card#{card_num}-*"].sort.map do |dir_path|
    Connector.new card_num: card_num,
                  dir_path: dir_path,
                  index: dir_path[-1],
                  type: dir_path.slice(/(?<=card#{card_num}-)[A-z]+/)
  end
end

Public Instance Methods

connected?() click to toggle source
# File lib/amdgpu_fan/connector.rb, line 37
def connected?
  status.casecmp('connected').zero?
end
display_name() click to toggle source
# File lib/amdgpu_fan/connector.rb, line 41
def display_name
  return if edid.to_s.empty?

  (display_name_text + unspecified_text).join(' ').strip
end
status() click to toggle source
# File lib/amdgpu_fan/connector.rb, line 47
def status
  File.read(File.join(dir_path, 'status')).strip
end

Private Instance Methods

display_descriptors_raw() click to toggle source
# File lib/amdgpu_fan/connector.rb, line 53
def display_descriptors_raw
  edid.slice EDID_DESCRIPTORS_CONF[:index_range]
end
display_name_text() click to toggle source
# File lib/amdgpu_fan/connector.rb, line 57
def display_name_text
  display_descriptors_raw
    .scan(/(?<=#{EDID_DESCRIPTORS_CONF[:display_name_leading_bytes]}).{1,13}/)
end
edid() click to toggle source
# File lib/amdgpu_fan/connector.rb, line 62
def edid
  File.read("#{dir_path}/edid", encoding: 'ascii-8bit')
end
unspecified_text() click to toggle source
# File lib/amdgpu_fan/connector.rb, line 66
def unspecified_text
  display_descriptors_raw
    .scan(/(?<=#{EDID_DESCRIPTORS_CONF[:unspecified_text_leading_bytes]}).{1,13}/)
end