@@ -7,12 +7,20 @@ type ADLTemperature struct {
77 Temperature int32
88}
99
10+ type ADLFanSpeedValue struct {
11+ Size int32
12+ SpeedType int32
13+ FanSpeed int32
14+ Flags int32
15+ }
16+
1017var (
1118 dll = w .NewLazySystemDLL ("atiadlxx.dll" )
1219 ADL_Main_Control_Create = dll .NewProc ("ADL_Main_Control_Create" ).Call
1320 ADL_Main_Control_Destroy = dll .NewProc ("ADL_Main_Control_Destroy" ).Call
1421 ADL_Adapter_NumberOfAdapters_Get = dll .NewProc ("ADL_Adapter_NumberOfAdapters_Get" ).Call
1522 ADL_Overdrive5_Temperature_Get = dll .NewProc ("ADL_Overdrive5_Temperature_Get" ).Call
23+ ADL_Overdrive5_FanSpeed_Get = dll .NewProc ("ADL_Overdrive5_FanSpeed_Get" ).Call
1624)
1725
1826func main () {
@@ -29,13 +37,14 @@ func main() {
2937 fmt .Println ("Adapters found:" , adapters )
3038
3139 temp := ADLTemperature {Size : int32 (unsafe .Sizeof (ADLTemperature {}))}
40+ fan := ADLFanSpeedValue {Size : int32 (unsafe .Sizeof (ADLFanSpeedValue {}))}
41+
3242 for {
33- r , _ , _ := ADL_Overdrive5_Temperature_Get (0 , 0 , uintptr (unsafe .Pointer (& temp )))
34- if r == 0 {
35- fmt .Printf ("GPU Temperature: %d°C\n " , temp .Temperature / 1000 )
36- } else {
37- fmt .Println ("Temperature read failed" )
38- }
43+ ADL_Overdrive5_Temperature_Get (0 , 0 , uintptr (unsafe .Pointer (& temp )))
44+ fmt .Printf ("GPU Temperature: %d °C\n " , temp .Temperature / 1000 )
45+
46+ ADL_Overdrive5_FanSpeed_Get (0 , 0 , uintptr (unsafe .Pointer (& fan )))
47+ fmt .Printf ("GPU Fan: %d RPM\n " , fan .FanSpeed )
3948
4049 time .Sleep (10 * time .Second )
4150 }
0 commit comments