hdt: Add VPD menu item
authorPierre-Alexandre Meyer <pierre@mouraf.org>
Sat, 18 Apr 2009 03:08:06 +0000 (20:08 -0700)
committerPierre-Alexandre Meyer <pierre@mouraf.org>
Sat, 18 Apr 2009 03:08:06 +0000 (20:08 -0700)
Add an item to display VPD information, if detected.

Signed-off-by: Pierre-Alexandre Meyer <pierre@mouraf.org>
com32/hdt/hdt-menu-vpd.c [new file with mode: 0644]
com32/hdt/hdt-menu.c
com32/hdt/hdt-menu.h

diff --git a/com32/hdt/hdt-menu-vpd.c b/com32/hdt/hdt-menu-vpd.c
new file mode 100644 (file)
index 0000000..817c107
--- /dev/null
@@ -0,0 +1,100 @@
+/* ----------------------------------------------------------------------- *
+ *
+ *   Copyright 2009 Pierre-Alexandre Meyer - All Rights Reserved
+ *
+ *   Permission is hereby granted, free of charge, to any person
+ *   obtaining a copy of this software and associated documentation
+ *   files (the "Software"), to deal in the Software without
+ *   restriction, including without limitation the rights to use,
+ *   copy, modify, merge, publish, distribute, sublicense, and/or
+ *   sell copies of the Software, and to permit persons to whom
+ *   the Software is furnished to do so, subject to the following
+ *   conditions:
+ *
+ *   The above copyright notice and this permission notice shall
+ *   be included in all copies or substantial portions of the Software.
+ *
+ *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *   OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *   OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * -----------------------------------------------------------------------
+ */
+
+#include "hdt-menu.h"
+
+/**
+ * compute_vpd - generate vpd menu
+ **/
+void compute_vpd(struct s_my_menu *menu, struct s_hardware *hardware)
+{
+       char buffer[SUBMENULEN + 1];
+       char statbuffer[STATLEN + 1];   /* Status bar */
+
+       menu->menu = add_menu(" VPD ", -1);
+       menu->items_count = 0;
+       set_menu_pos(SUBMENU_Y, SUBMENU_X);
+
+       snprintf(buffer, sizeof buffer, "Address                  : %s",
+                hardware->vpd.base_address);
+       snprintf(statbuffer, sizeof statbuffer, "Address: %s",
+                hardware->cpu.vendor);
+       add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0);
+       menu->items_count++;
+
+       snprintf(buffer, sizeof buffer, "Bios Build ID            : %s",
+                hardware->vpd.bios_build_id);
+       snprintf(statbuffer, sizeof statbuffer, "Bios Build ID: %s",
+                hardware->vpd.bios_build_id);
+       add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0);
+       menu->items_count++;
+
+       snprintf(buffer, sizeof buffer, "Bios Release Date        : %s",
+                hardware->vpd.bios_release_date);
+       snprintf(statbuffer, sizeof statbuffer, "Bios Release Date: %s",
+                hardware->vpd.bios_release_date);
+       add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0);
+       menu->items_count++;
+
+       snprintf(buffer, sizeof buffer, "Bios Version             : %s",
+                hardware->vpd.bios_version);
+       snprintf(statbuffer, sizeof statbuffer, "Bios Version: %s",
+                hardware->vpd.bios_version);
+       add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0);
+       menu->items_count++;
+
+       snprintf(buffer, sizeof buffer, "Default Flash Filename   : %s",
+                hardware->vpd.default_flash_filename);
+       snprintf(statbuffer, sizeof statbuffer, "Default Flash Filename: %s",
+                hardware->vpd.default_flash_filename);
+       add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0);
+       menu->items_count++;
+
+       snprintf(buffer, sizeof buffer, "Box Serial Number        : %s",
+                hardware->vpd.box_serial_number);
+       snprintf(statbuffer, sizeof statbuffer, "Box Serial Number: %s",
+                hardware->vpd.box_serial_number);
+       add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0);
+       menu->items_count++;
+
+       snprintf(buffer, sizeof buffer, "Motherboard Serial Number: %s",
+                hardware->vpd.motherboard_serial_number);
+       snprintf(statbuffer, sizeof statbuffer, "Motherboard Serial Number: %s",
+                hardware->vpd.motherboard_serial_number);
+       add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0);
+       menu->items_count++;
+
+       snprintf(buffer, sizeof buffer, "Machine Type/Model       : %s",
+                hardware->vpd.machine_type_model);
+       snprintf(statbuffer, sizeof statbuffer, "Machine Type/Model: %s",
+                hardware->vpd.machine_type_model);
+       add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0);
+       menu->items_count++;
+
+       printf("MENU: VPD menu done (%d items)\n", menu->items_count);
+}
index be0b472..18158ae 100644 (file)
@@ -153,6 +153,7 @@ void compute_submenus(struct s_hdt_menu *hdt_menu, struct s_hardware *hardware)
   }
 
   compute_processor(&(hdt_menu->cpu_menu), hardware);
+  compute_vpd(&(hdt_menu->vpd_menu), hardware);
   compute_disks(hdt_menu, hardware->disk_info, hardware);
 
 #ifdef WITH_PCI
@@ -242,6 +243,12 @@ void compute_main_menu(struct s_hdt_menu *hdt_menu, struct s_hardware *hardware)
     }
   }
 
+ if (hardware->is_vpd_valid == true) {
+   add_item("VPD","VPD Information Menu", OPT_SUBMENU, NULL,
+      hdt_menu->vpd_menu.menu);
+   hdt_menu->main_menu.items_count++;
+  }
+
   if (hardware->is_pxe_valid == true) {
     add_item("P<X>E", "PXE Information Menu", OPT_SUBMENU, NULL,
        hdt_menu->pxe_menu.menu);
@@ -299,6 +306,10 @@ void detect_hardware(struct s_hardware *hardware)
            hardware->dmi.dmitable.major_version,
            hardware->dmi.dmitable.minor_version);
   }
+
+  printf("VPD: Detecting\n");
+  detect_vpd(hardware);
+
 #ifdef WITH_PCI
   detect_pci(hardware);
   printf("PCI: %d Devices Found\n", hardware->nb_pci_devices);
index 91809e2..70fdb38 100644 (file)
@@ -77,6 +77,7 @@ struct s_hdt_menu {
   struct s_my_menu vesa_menu;
   struct s_my_menu vesa_card_menu;
   struct s_my_menu vesa_modes_menu;
+  struct s_my_menu vpd_menu;
   int total_menu_count; // Sum of all menus we have
 };
 
@@ -103,6 +104,9 @@ void compute_bios(struct s_my_menu *menu, s_dmi * dmi);
 void compute_memory(struct s_hdt_menu *menu, s_dmi * dmi, struct s_hardware *hardware);
 void compute_ipmi(struct s_my_menu *menu, s_dmi * dmi);
 
+// VPD Stuff
+void compute_vpd(struct s_my_menu *menu, struct s_hardware *hardware);
+
 // Processor Stuff
 void compute_processor(struct s_my_menu *menu, struct s_hardware *hardware);