diff options
Diffstat (limited to 'includes/dmi_util.h')
-rw-r--r-- | includes/dmi_util.h | 69 |
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 |