added debug information about VCSC information
[psensor.git] / src / lib / nvidia.c
index 4969f62..b9a766a 100644 (file)
@@ -316,6 +316,7 @@ nvidia_psensor_list_add(struct psensor **ss, int values_len)
 {
        int i, n, utype, rpm;
        Bool ret;
+       char *str;
 
        if (!init())
                return ss;
@@ -329,15 +330,10 @@ nvidia_psensor_list_add(struct psensor **ss, int values_len)
                            values_len);
 
                        utype = SENSOR_TYPE_GPU | SENSOR_TYPE_USAGE;
-
                        add(&ss, i, utype | SENSOR_TYPE_AMBIENT, values_len);
-
                        add(&ss, i, utype | SENSOR_TYPE_GRAPHICS, values_len);
-
                        add(&ss, i, utype | SENSOR_TYPE_VIDEO, values_len);
-
                        add(&ss, i, utype | SENSOR_TYPE_MEMORY, values_len);
-
                        add(&ss, i, utype | SENSOR_TYPE_PCIE, values_len);
                }
        }
@@ -355,13 +351,49 @@ nvidia_psensor_list_add(struct psensor **ss, int values_len)
                        if (ret == True)
                                log_debug("NVIDIA: fan speed %d %d", i, rpm);
                        else
-                               log_err("NVIDIA: fail to retrieve fan speed %d",
+                               log_err(_("NVIDIA: "
+                                         "failed to retrieve fan speed %d"),
+                                       i);
+
+                       ret = XNVCTRLQueryTargetAttribute
+                               (display,
+                                NV_CTRL_TARGET_TYPE_COOLER,
+                                i,
+                                0,
+                                NV_CTRL_THERMAL_COOLER_LEVEL, &rpm);
+                       if (ret == True)
+                               log_debug("NVIDIA: fan level %d %d", i, rpm);
+                       else
+                               log_err(_("NVIDIA: "
+                                         "failed to retrieve fan level %d"),
                                        i);
 
+
                        add(&ss, i, SENSOR_TYPE_FAN, values_len);
                }
        } else {
-               log_err(_("Failed to retrieve number of NVIDIA fans."));
+               log_err(_("NVIDIA: failed to retrieve number of fans."));
+       }
+
+       ret = XNVCTRLQueryTargetCount(display, NV_CTRL_TARGET_TYPE_VCSC, &n);
+       if (ret == True) {
+               log_debug("NVIDIA: number of VCSC: %d", n);
+               for (i = 0; i < n; i++) {
+                       ret = XNVCTRLQueryTargetStringAttribute
+                               (display,
+                                NV_CTRL_TARGET_TYPE_VCSC,
+                                i,
+                                0,
+                                NV_CTRL_STRING_VCSC_FAN_STATUS, &str);
+                       if (ret == True)
+                               log_debug("NVIDIA: vcsc fan %d %s", i, str);
+                       else
+                               log_err(_("NVIDIA: "
+                                         "failed to retrieve vcsc fan info %d"),
+                                       i);
+
+                       add(&ss, i, SENSOR_TYPE_FAN, values_len);
+               }
        }
 
        return ss;