summaryrefslogtreecommitdiffstats
path: root/com32/lua/src/dmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'com32/lua/src/dmi.c')
-rw-r--r--com32/lua/src/dmi.c299
1 files changed, 299 insertions, 0 deletions
diff --git a/com32/lua/src/dmi.c b/com32/lua/src/dmi.c
new file mode 100644
index 00000000..b1337401
--- /dev/null
+++ b/com32/lua/src/dmi.c
@@ -0,0 +1,299 @@
+#include <stdlib.h>
+#include <string.h>
+
+#define ldmilib_c /* Define the library */
+
+/* Include the Lua API header files */
+#include "lua.h"
+#include "lauxlib.h"
+#include "lualib.h"
+#include "dmi/dmi.h"
+
+static int dmi_gettable(lua_State *L)
+{
+ s_dmi dmi;
+
+ lua_newtable(L);
+
+ if ( ! dmi_interate() ) {
+ printf("No DMI Structure found\n");
+ return -1;
+ }
+
+ parse_dmitable(&dmi);
+
+ /* bios */
+ lua_pushstring(L, "bios.vendor");
+ lua_pushstring(L, dmi.bios.vendor);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "bios.version");
+ lua_pushstring(L, dmi.bios.version);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "bios.release_date");
+ lua_pushstring(L, dmi.bios.release_date);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "bios.bios_revision");
+ lua_pushstring(L, dmi.bios.bios_revision);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "bios.firmware_revision");
+ lua_pushstring(L, dmi.bios.firmware_revision);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "bios.address");
+ lua_pushnumber(L, dmi.bios.address);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "bios.runtime_size");
+ lua_pushnumber(L, dmi.bios.runtime_size);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "bios.runtime_size_unit");
+ lua_pushstring(L, dmi.bios.runtime_size_unit);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "bios.rom_size");
+ lua_pushnumber(L, dmi.bios.rom_size);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "bios.rom_size_unit");
+ lua_pushstring(L, dmi.bios.rom_size_unit);
+ lua_settable(L,-3);
+
+ /* system */
+ lua_pushstring(L, "system.manufacturer");
+ lua_pushstring(L, dmi.system.manufacturer);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "system.product_name");
+ lua_pushstring(L, dmi.system.product_name);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "system.version");
+ lua_pushstring(L, dmi.system.version);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "system.serial");
+ lua_pushstring(L, dmi.system.serial);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "system.uuid");
+ lua_pushstring(L, dmi.system.uuid);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "system.wakeup_type");
+ lua_pushstring(L, dmi.system.wakeup_type);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "system.sku_number");
+ lua_pushstring(L, dmi.system.sku_number);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "system.family");
+ lua_pushstring(L, dmi.system.family);
+ lua_settable(L,-3);
+
+ /* base_board */
+ lua_pushstring(L, "base_board.manufacturer");
+ lua_pushstring(L, dmi.base_board.manufacturer);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "base_board.product_name");
+ lua_pushstring(L, dmi.base_board.product_name);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "base_board.version");
+ lua_pushstring(L, dmi.base_board.version);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "base_board.serial");
+ lua_pushstring(L, dmi.base_board.serial);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "base_board.asset_tag");
+ lua_pushstring(L, dmi.base_board.asset_tag);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "base_board.location");
+ lua_pushstring(L, dmi.base_board.location);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "base_board.type");
+ lua_pushstring(L, dmi.base_board.type);
+ lua_settable(L,-3);
+
+ /* chassis */
+ lua_pushstring(L, "chassis.manufacturer");
+ lua_pushstring(L, dmi.chassis.manufacturer);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.type");
+ lua_pushstring(L, dmi.chassis.type);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.lock");
+ lua_pushstring(L, dmi.chassis.lock);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.version");
+ lua_pushstring(L, dmi.chassis.version);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.serial");
+ lua_pushstring(L, dmi.chassis.serial);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.asset_tag");
+ lua_pushstring(L, dmi.chassis.asset_tag);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.boot_up_state");
+ lua_pushstring(L, dmi.chassis.boot_up_state);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.power_supply_state");
+ lua_pushstring(L, dmi.chassis.power_supply_state);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.thermal_state");
+ lua_pushstring(L, dmi.chassis.thermal_state);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.security_status");
+ lua_pushstring(L, dmi.chassis.security_status);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.oem_information");
+ lua_pushstring(L, dmi.chassis.oem_information);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.height");
+ lua_pushnumber(L, dmi.chassis.height);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "chassis.nb_power_cords");
+ lua_pushnumber(L, dmi.chassis.nb_power_cords);
+ lua_settable(L,-3);
+
+ /* processor */
+ lua_pushstring(L, "processor.socket_designation");
+ lua_pushstring(L, dmi.processor.socket_designation);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.type");
+ lua_pushstring(L, dmi.processor.type);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.family");
+ lua_pushstring(L, dmi.processor.family);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.manufacturer");
+ lua_pushstring(L, dmi.processor.manufacturer);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.version");
+ lua_pushstring(L, dmi.processor.version);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.external_clock");
+ lua_pushnumber(L, dmi.processor.external_clock);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.max_speed");
+ lua_pushnumber(L, dmi.processor.max_speed);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.current_speed");
+ lua_pushnumber(L, dmi.processor.current_speed);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.signature.type");
+ lua_pushnumber(L, dmi.processor.signature.type);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.signature.family");
+ lua_pushnumber(L, dmi.processor.signature.family);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.signature.model");
+ lua_pushnumber(L, dmi.processor.signature.model);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.signature.stepping");
+ lua_pushnumber(L, dmi.processor.signature.stepping);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.signature.minor_stepping");
+ lua_pushnumber(L, dmi.processor.signature.minor_stepping);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.voltage");
+ lua_pushnumber(L, dmi.processor.voltage);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.status");
+ lua_pushstring(L, dmi.processor.status);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.upgrade");
+ lua_pushstring(L, dmi.processor.upgrade);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.cache1");
+ lua_pushstring(L, dmi.processor.cache1);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.cache2");
+ lua_pushstring(L, dmi.processor.cache2);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.cache3");
+ lua_pushstring(L, dmi.processor.cache3);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.serial");
+ lua_pushstring(L, dmi.processor.serial);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.part_number");
+ lua_pushstring(L, dmi.processor.part_number);
+ lua_settable(L,-3);
+
+ lua_pushstring(L, "processor.id");
+ lua_pushstring(L, dmi.processor.id);
+ lua_settable(L,-3);
+
+ /* set global variable: lua_setglobal(L, "dmitable"); */
+
+ /* return number of return values on stack */
+ return 1;
+}
+
+
+static int dmi_supported(lua_State *L)
+{
+ if ( dmi_interate() ) {
+ lua_pushboolean(L, 1);
+ } else {
+ lua_pushboolean(L, 0);
+ }
+ return 1;
+}
+
+
+static const luaL_Reg dmilib[] = {
+ {"gettable", dmi_gettable},
+ {"supported", dmi_supported},
+ {NULL, NULL}
+};
+
+
+LUALIB_API int luaopen_dmi (lua_State *L) {
+ luaL_openlib(L, LUA_DMILIBNAME, dmilib, 0);
+ return 1;
+}
+