aboutsummaryrefslogtreecommitdiff
path: root/includes/dmi_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'includes/dmi_util.h')
-rw-r--r--includes/dmi_util.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/includes/dmi_util.h b/includes/dmi_util.h
new file mode 100644
index 00000000..2fec1a04
--- /dev/null
+++ b/includes/dmi_util.h
@@ -0,0 +1,69 @@
+/*
+ * HardInfo - Displays System Information
+ * Copyright (C) 2003-2017 L. A. F. Pereira <l@tia.mat.br>
+ * This file
+ * Copyright (C) 2017 Burt P. <pburt0@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 2 or later.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef __DMI_UTIL_H__
+#define __DMI_UTIL_H__
+
+#include <inttypes.h>
+
+typedef uint32_t dmi_handle;
+typedef uint32_t dmi_type;
+
+/* -1 = yes, but will be ignored
+ * 0 = no
+ * 1 = yes */
+int dmi_str_status(const char *id_str);
+char *dmi_get_str(const char *id_str); /* ignore nonsense */
+char *dmi_get_str_abs(const char *id_str); /* include nonsense */
+
+/* if chassis_type is <=0 it will be fetched from DMI.
+ * with_val = true, will return a string like "[3] Desktop" instead of just
+ * "Desktop". */
+char *dmi_chassis_type_str(int chassis_type, gboolean with_val);
+
+typedef struct {
+ dmi_handle id;
+ uint32_t size;
+ dmi_type type;
+ const char *type_str; /* untranslated, use _() for translation */
+} dmi_handle_ext;
+
+typedef struct {
+ uint32_t count;
+ dmi_handle *handles;
+ dmi_handle_ext *handles_ext;
+} dmi_handle_list;
+
+/* get a list of handles that match a dmi_type */
+dmi_handle_list *dmidecode_handles(const dmi_type *type);
+void dmi_handle_list_free(dmi_handle_list *hl);
+
+/* get a list of handles which have a name, and/or optional value, and/or limit to an optional dmi_type
+ * dmidecode_match_value("Name", NULL, NULL) : all dmi handles with an item called "Name"
+ * dmidecode_match_value("Name", "Value", NULL) : all dmi_handles with an item called "Name" that has a value of "Value"
+ * dmidecode_match_value("Name", "Value", &dt) : all dmi_handles with "Name: Value" that are of type stored in dt */
+dmi_handle_list *dmidecode_match_value(const char *name, const char *value, const dmi_type *type);
+
+/* get the first value for name, limiting to optional dmi_type and/or optional handle */
+char *dmidecode_match(const char *name, const dmi_type *type, const dmi_handle *handle);
+
+void dmidecode_cache_free();
+
+#endif