Class: AmdgpuFanCli
- Inherits:
-
Thor
- Object
- Thor
- AmdgpuFanCli
- Defined in:
- lib/amdgpu_fan_cli.rb
Overview
The main class
Instance Method Summary collapse
- #auto ⇒ Object
- #connectors ⇒ Object
- #set(percentage) ⇒ Object
- #status ⇒ Object
- #watch(seconds = 1) ⇒ Object
- #watch_csv(seconds = 1) ⇒ Object
Instance Method Details
#auto ⇒ Object
8 9 10 11 |
# File 'lib/amdgpu_fan_cli.rb', line 8 def auto amdgpu_service.set_fan_mode! :auto puts fan_status end |
#connectors ⇒ Object
14 15 16 17 18 |
# File 'lib/amdgpu_fan_cli.rb', line 14 def connectors amdgpu_service.connectors_status.each do |connector,status| puts "#{connector}: #{status}" end end |
#set(percentage) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/amdgpu_fan_cli.rb', line 21 def set(percentage) return puts "Invalid percentage" unless (0..100).cover?(percentage.to_i) amdgpu_service.set_fan_manual_speed! percent: percentage puts fan_status rescue AmdgpuService::Error puts 'Invalid fan speed provided. The percentage should be between 1 and 100' exit 1 end |
#status ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/amdgpu_fan_cli.rb', line 32 def status puts radeon_logo, "📺\tGPU: #{amdgpu_service.name}", "📄\tvBIOS: #{amdgpu_service.vbios_version}", clock_status, fan_status, "🌡\tTemp: #{amdgpu_service.temperature}°C", "⚡\tPower: #{amdgpu_service.power_dpm_state} mode using " \ "#{amdgpu_service.power_draw} / #{amdgpu_service.power_max} Watts", "⚖\tLoad: #{percent_meter amdgpu_service.busy_percent, 20}" end |
#watch(seconds = 1) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/amdgpu_fan_cli.rb', line 46 def watch(seconds=1) return puts "Seconds must be from 1 to 600" unless (1..600).cover?(seconds.to_i) puts "Watching #{amdgpu_service.name} every #{seconds} second(s)...", ' <Press Ctrl-C to exit>' trap "SIGINT" do puts "\nAnd now the watch is ended." exit 0 end loop do puts "#{Time.now.strftime("%F %T")} - " \ "Clock: #{amdgpu_service.core_clock} Core, #{amdgpu_service.memory_clock} Memory,\t" \ "Fan: #{amdgpu_service.fan_speed_rpm} rpm #{percent_meter amdgpu_service.fan_speed_percent},\t" \ "Load: #{percent_meter amdgpu_service.busy_percent},\t" \ "Power: #{amdgpu_service.power_draw} W,\t" \ "Temp: #{amdgpu_service.temperature}°C " sleep seconds.to_i end end |
#watch_csv(seconds = 1) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/amdgpu_fan_cli.rb', line 70 def watch_csv(seconds=1) return puts "Seconds must be from 1 to 600" unless (1..600).cover?(seconds.to_i) puts 'Timestamp, Core Clock (Mhz),Memory Clock (Mhz),Fan speed (rpm), '\ 'Load (%),Power (Watts),Temp (°C)' trap "SIGINT" do exit 0 end loop do puts [Time.now.strftime("%F %T"), amdgpu_service.core_clock, amdgpu_service.memory_clock, amdgpu_service.fan_speed_rpm, amdgpu_service.busy_percent, amdgpu_service.power_draw, amdgpu_service.temperature].join(',') sleep seconds.to_i end end |