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



31
32
33
34
35
36
# File 'lib/amdgpu_fan/connector.rb', line 31

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.



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

def card_num
  @card_num
end

#dir_pathObject (readonly)

Returns the value of attribute dir_path.



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

def dir_path
  @dir_path
end

#indexObject (readonly)

Returns the value of attribute index.



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

def index
  @index
end

#typeObject (readonly)

Returns the value of attribute type.



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

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.



21
22
23
24
25
26
27
28
# File 'lib/amdgpu_fan/connector.rb', line 21

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



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

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

#display_nameObject



42
43
44
45
46
# File 'lib/amdgpu_fan/connector.rb', line 42

def display_name
  return if edid.to_s.empty?

  (display_name_text + unspecified_text).join(' ').strip
end

#statusObject



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

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