Class: AmdgpuFan::Connector

Inherits:
Object
  • Object
show all
Defined in:
lib/amdgpu_fan/connector.rb

Overview

Connector

A model class for a GPU connector

Constant Summary collapse

EDID_DESCRIPTORS_CONF =
{
  display_name_leading_bytes: String.new('\x00\xFC\x00', encoding: 'ascii-8bit'),
  unspecified_text_leading_bytes: String.new('\x00\xFE\x00', encoding: 'ascii-8bit'),
  index_range: (54..125)
}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(card_num:, dir_path:, index:, type:) ⇒ Connector

Returns a new instance of Connector.



30
31
32
33
34
35
# 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

Instance Attribute Details

#card_numObject (readonly)

Returns the value of attribute card_num.



14
15
16
# File 'lib/amdgpu_fan/connector.rb', line 14

def card_num
  @card_num
end

#dir_pathObject (readonly)

Returns the value of attribute dir_path.



14
15
16
# File 'lib/amdgpu_fan/connector.rb', line 14

def dir_path
  @dir_path
end

#indexObject (readonly)

Returns the value of attribute index.



14
15
16
# File 'lib/amdgpu_fan/connector.rb', line 14

def index
  @index
end

#typeObject (readonly)

Returns the value of attribute type.



14
15
16
# File 'lib/amdgpu_fan/connector.rb', line 14

def type
  @type
end

Class Method Details

.where(card_num:) ⇒ Object

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



20
21
22
23
24
25
26
27
# 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

Instance Method Details

#connected?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/amdgpu_fan/connector.rb', line 37

def connected?
  status.casecmp('connected').zero?
end

#display_nameObject



41
42
43
44
45
# 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

#statusObject



47
48
49
# File 'lib/amdgpu_fan/connector.rb', line 47

def status
  File.read(File.join(dir_path, 'status')).strip
end