1 /* ----------------------------------------------------------------------- * 2 * 3 * Copyright 2009 Erwan Velu - All Rights Reserved 4 * 5 * Permission is hereby granted, free of charge, to any person 6 * obtaining a copy of this software and associated documentation 7 * files (the "Software"), to deal in the Software without 8 * restriction, including without limitation the rights to use, 9 * copy, modify, merge, publish, distribute, sublicense, and/or 10 * sell copies of the Software, and to permit persons to whom 11 * the Software is furnished to do so, subject to the following 12 * conditions: 13 * 14 * The above copyright notice and this permission notice shall 15 * be included in all copies or substantial portions of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 19 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 21 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 22 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 24 * OTHER DEALINGS IN THE SOFTWARE. 25 * 26 * ----------------------------------------------------------------------- 27 */ 28 29 #include "hdt-menu.h" 30 31 /* Compute System main menu */ 32 void compute_system(struct s_my_menu *menu, s_dmi * dmi) 33 { 34 char buffer[SUBMENULEN + 1]; 35 char statbuffer[STATLEN + 1]; 36 37 menu->menu = add_menu(" System ", -1); 38 menu->items_count = 0; 39 set_menu_pos(SUBMENU_Y, SUBMENU_X); 40 41 snprintf(buffer, sizeof buffer, "Vendor : %s", dmi->system.manufacturer); 42 snprintf(statbuffer, sizeof statbuffer, "Vendor: %s", 43 dmi->system.manufacturer); 44 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 45 menu->items_count++; 46 47 snprintf(buffer, sizeof buffer, "Product : %s", dmi->system.product_name); 48 snprintf(statbuffer, sizeof statbuffer, "Product Name: %s", 49 dmi->system.product_name); 50 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 51 menu->items_count++; 52 53 snprintf(buffer, sizeof buffer, "Version : %s", dmi->system.version); 54 snprintf(statbuffer, sizeof statbuffer, "Version: %s", dmi->system.version); 55 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 56 menu->items_count++; 57 58 snprintf(buffer, sizeof buffer, "Serial : %s", dmi->system.serial); 59 snprintf(statbuffer, sizeof statbuffer, "Serial Number: %s", 60 dmi->system.serial); 61 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 62 menu->items_count++; 63 64 snprintf(buffer, sizeof buffer, "UUID : %s", dmi->system.uuid); 65 snprintf(statbuffer, sizeof statbuffer, "UUID: %s", dmi->system.uuid); 66 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 67 menu->items_count++; 68 69 snprintf(buffer, sizeof buffer, "Wakeup : %s", dmi->system.wakeup_type); 70 snprintf(statbuffer, sizeof statbuffer, "Wakeup Type: %s", 71 dmi->system.wakeup_type); 72 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 73 menu->items_count++; 74 75 snprintf(buffer, sizeof buffer, "SKU Number: %s", dmi->system.sku_number); 76 snprintf(statbuffer, sizeof statbuffer, "SKU Number: %s", 77 dmi->system.sku_number); 78 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 79 menu->items_count++; 80 81 snprintf(buffer, sizeof buffer, "Family : %s", dmi->system.family); 82 snprintf(statbuffer, sizeof statbuffer, "Family: %s", dmi->system.family); 83 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 84 menu->items_count++; 85 86 printf("MENU: System menu done (%d items)\n", menu->items_count); 87 } 88 89 /* Compute Chassis menu */ 90 void compute_chassis(struct s_my_menu *menu, s_dmi * dmi) 91 { 92 char buffer[SUBMENULEN + 1]; 93 char statbuffer[STATLEN + 1]; 94 menu->menu = add_menu(" Chassis ", -1); 95 menu->items_count = 0; 96 set_menu_pos(SUBMENU_Y, SUBMENU_X); 97 98 snprintf(buffer, sizeof buffer, "Vendor : %s", 99 dmi->chassis.manufacturer); 100 snprintf(statbuffer, sizeof statbuffer, "Vendor: %s", 101 dmi->chassis.manufacturer); 102 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 103 menu->items_count++; 104 105 snprintf(buffer, sizeof buffer, "Type : %s", dmi->chassis.type); 106 snprintf(statbuffer, sizeof statbuffer, "Type: %s", dmi->chassis.type); 107 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 108 menu->items_count++; 109 110 snprintf(buffer, sizeof buffer, "Version : %s", dmi->chassis.version); 111 snprintf(statbuffer, sizeof statbuffer, "Version: %s", 112 dmi->chassis.version); 113 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 114 menu->items_count++; 115 116 snprintf(buffer, sizeof buffer, "Serial : %s", dmi->chassis.serial); 117 snprintf(statbuffer, sizeof statbuffer, "Serial Number: %s", 118 dmi->chassis.serial); 119 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 120 menu->items_count++; 121 122 snprintf(buffer, sizeof buffer, "Asset Tag : %s", 123 del_multi_spaces(dmi->chassis.asset_tag)); 124 snprintf(statbuffer, sizeof statbuffer, "Asset Tag: %s", 125 del_multi_spaces(dmi->chassis.asset_tag)); 126 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 127 menu->items_count++; 128 129 snprintf(buffer, sizeof buffer, "Lock : %s", dmi->chassis.lock); 130 snprintf(statbuffer, sizeof statbuffer, "Lock: %s", dmi->chassis.lock); 131 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 132 menu->items_count++; 133 134 printf("MENU: Chassis menu done (%d items)\n", menu->items_count); 135 } 136 137 /* Compute BIOS menu */ 138 void compute_bios(struct s_my_menu *menu, s_dmi * dmi) 139 { 140 char buffer[SUBMENULEN + 1]; 141 char statbuffer[STATLEN + 1]; 142 143 menu->menu = add_menu(" BIOS ", -1); 144 menu->items_count = 0; 145 set_menu_pos(SUBMENU_Y, SUBMENU_X); 146 147 snprintf(buffer, sizeof buffer, "Vendor : %s", dmi->bios.vendor); 148 snprintf(statbuffer, sizeof statbuffer, "Vendor: %s", dmi->bios.vendor); 149 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 150 menu->items_count++; 151 152 snprintf(buffer, sizeof buffer, "Version : %s", dmi->bios.version); 153 snprintf(statbuffer, sizeof statbuffer, "Version: %s", dmi->bios.version); 154 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 155 menu->items_count++; 156 157 snprintf(buffer, sizeof buffer, "Release : %s", dmi->bios.release_date); 158 snprintf(statbuffer, sizeof statbuffer, "Release Date: %s", 159 dmi->bios.release_date); 160 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 161 menu->items_count++; 162 163 snprintf(buffer, sizeof buffer, "Bios Rev. : %s", dmi->bios.bios_revision); 164 snprintf(statbuffer, sizeof statbuffer, "Bios Revision: %s", 165 dmi->bios.bios_revision); 166 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 167 menu->items_count++; 168 169 snprintf(buffer, sizeof buffer, "Fw. Rev. : %s", 170 dmi->bios.firmware_revision); 171 snprintf(statbuffer, sizeof statbuffer, "Firmware Revision : %s", 172 dmi->bios.firmware_revision); 173 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 174 175 printf("MENU: BIOS menu done (%d items)\n", menu->items_count); 176 } 177 178 /* Compute Motherboard main menu */ 179 void compute_motherboard(struct s_my_menu *menu, s_dmi * dmi) 180 { 181 char buffer[SUBMENULEN + 1]; 182 char statbuffer[STATLEN + 1]; 183 184 menu->menu = add_menu(" Motherboard ", -1); 185 menu->items_count = 0; 186 set_menu_pos(SUBMENU_Y, SUBMENU_X); 187 188 snprintf(buffer, sizeof buffer, "Vendor : %s", 189 dmi->base_board.manufacturer); 190 snprintf(statbuffer, sizeof statbuffer, "Vendor: %s", 191 dmi->base_board.manufacturer); 192 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 193 menu->items_count++; 194 195 snprintf(buffer, sizeof buffer, "Product : %s", 196 dmi->base_board.product_name); 197 snprintf(statbuffer, sizeof statbuffer, "Product Name: %s", 198 dmi->base_board.product_name); 199 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 200 menu->items_count++; 201 202 snprintf(buffer, sizeof buffer, "Version : %s", dmi->base_board.version); 203 snprintf(statbuffer, sizeof statbuffer, "Version: %s", 204 dmi->base_board.version); 205 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 206 menu->items_count++; 207 208 snprintf(buffer, sizeof buffer, "Serial : %s", dmi->base_board.serial); 209 snprintf(statbuffer, sizeof statbuffer, "Serial Number: %s", 210 dmi->base_board.serial); 211 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 212 menu->items_count++; 213 214 snprintf(buffer, sizeof buffer, "Asset Tag : %s", 215 dmi->base_board.asset_tag); 216 snprintf(statbuffer, sizeof statbuffer, "Asset Tag: %s", 217 dmi->base_board.asset_tag); 218 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 219 menu->items_count++; 220 221 snprintf(buffer, sizeof buffer, "Location : %s", dmi->base_board.location); 222 snprintf(statbuffer, sizeof statbuffer, "Location: %s", 223 dmi->base_board.location); 224 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 225 menu->items_count++; 226 227 snprintf(buffer, sizeof buffer, "Type : %s", dmi->base_board.type); 228 snprintf(statbuffer, sizeof statbuffer, "Type: %s", dmi->base_board.type); 229 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 230 menu->items_count++; 231 232 printf("MENU: Motherboard menu done (%d items)\n", menu->items_count); 233 } 234 235 /* Compute Main IPMI menu */ 236 void compute_ipmi(struct s_my_menu *menu, s_dmi * dmi) 237 { 238 char buffer[SUBMENULEN + 1]; 239 char statbuffer[STATLEN + 1]; 240 menu->menu = add_menu(" IPMI ", -1); 241 menu->items_count = 0; 242 set_menu_pos(SUBMENU_Y, SUBMENU_X); 243 244 snprintf(buffer, sizeof buffer, "Interface Type : %s", 245 dmi->ipmi.interface_type); 246 snprintf(statbuffer, sizeof statbuffer, "Interface Type: %s", 247 dmi->ipmi.interface_type); 248 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 249 menu->items_count++; 250 251 snprintf(buffer, sizeof buffer, "Spec. Version : %u.%u", 252 dmi->ipmi.major_specification_version, 253 dmi->ipmi.minor_specification_version); 254 snprintf(statbuffer, sizeof statbuffer, "Specification Version: %u.%u", 255 dmi->ipmi.major_specification_version, 256 dmi->ipmi.minor_specification_version); 257 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 258 menu->items_count++; 259 260 snprintf(buffer, sizeof buffer, "I2C Slave @ : 0x%02x", 261 dmi->ipmi.I2C_slave_address); 262 snprintf(statbuffer, sizeof statbuffer, "I2C Slave Address: 0x%02x", 263 dmi->ipmi.I2C_slave_address); 264 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 265 menu->items_count++; 266 267 snprintf(buffer, sizeof buffer, "NV Storage @ : %u", 268 dmi->ipmi.nv_address); 269 snprintf(statbuffer, sizeof statbuffer, "NV Storage Address: %u", 270 dmi->ipmi.nv_address); 271 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 272 menu->items_count++; 273 274 uint32_t high = dmi->ipmi.base_address >> 32; 275 uint32_t low = dmi->ipmi.base_address & 0xFFFF; 276 277 snprintf(buffer, sizeof buffer, "Base Address : %08X%08X", 278 high, (low & ~1)); 279 snprintf(statbuffer, sizeof statbuffer, "Base Address : %08X%08X", 280 high, (low & ~1)); 281 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 282 menu->items_count++; 283 284 snprintf(buffer, sizeof buffer, "IRQ : %d", dmi->ipmi.irq); 285 snprintf(statbuffer, sizeof statbuffer, "IRQ : %d", dmi->ipmi.irq); 286 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 287 menu->items_count++; 288 289 printf("MENU: IPMI menu done (%d items)\n", menu->items_count); 290 } 291 292 /* Compute Main Battery menu */ 293 void compute_battery(struct s_my_menu *menu, s_dmi * dmi) 294 { 295 char buffer[SUBMENULEN + 1]; 296 char statbuffer[STATLEN + 1]; 297 menu->menu = add_menu(" Battery ", -1); 298 menu->items_count = 0; 299 set_menu_pos(SUBMENU_Y, SUBMENU_X); 300 301 snprintf(buffer, sizeof buffer, "Vendor : %s", 302 dmi->battery.manufacturer); 303 snprintf(statbuffer, sizeof statbuffer, "Vendor: %s", 304 dmi->battery.manufacturer); 305 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 306 menu->items_count++; 307 308 snprintf(buffer, sizeof buffer, "Manufacture Date: %s", 309 dmi->battery.manufacture_date); 310 snprintf(statbuffer, sizeof statbuffer, "Manufacture Date: %s", 311 dmi->battery.manufacture_date); 312 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 313 menu->items_count++; 314 315 snprintf(buffer, sizeof buffer, "Serial : %s", 316 dmi->battery.serial); 317 snprintf(statbuffer, sizeof statbuffer, "Serial: %s", dmi->battery.serial); 318 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 319 menu->items_count++; 320 321 snprintf(buffer, sizeof buffer, "Name : %s", dmi->battery.name); 322 snprintf(statbuffer, sizeof statbuffer, "Name: %s", dmi->battery.name); 323 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 324 menu->items_count++; 325 326 snprintf(buffer, sizeof buffer, "Chemistry : %s", 327 dmi->battery.chemistry); 328 snprintf(statbuffer, sizeof statbuffer, "Chemistry: %s", 329 dmi->battery.chemistry); 330 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 331 menu->items_count++; 332 333 snprintf(buffer, sizeof buffer, "Design Capacity : %s", 334 dmi->battery.design_capacity); 335 snprintf(statbuffer, sizeof statbuffer, "Design Capacity: %s", 336 dmi->battery.design_capacity); 337 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 338 menu->items_count++; 339 340 snprintf(buffer, sizeof buffer, "Design Voltage : %s", 341 dmi->battery.design_voltage); 342 snprintf(statbuffer, sizeof statbuffer, "Design Voltage : %s", 343 dmi->battery.design_voltage); 344 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 345 menu->items_count++; 346 347 snprintf(buffer, sizeof buffer, "SBDS : %s", dmi->battery.sbds); 348 snprintf(statbuffer, sizeof statbuffer, "SBDS: %s", dmi->battery.sbds); 349 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 350 menu->items_count++; 351 352 snprintf(buffer, sizeof buffer, "SBDS Manuf. Date: %s", 353 dmi->battery.sbds_manufacture_date); 354 snprintf(statbuffer, sizeof statbuffer, "SBDS Manufacture Date: %s", 355 dmi->battery.sbds_manufacture_date); 356 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 357 menu->items_count++; 358 359 snprintf(buffer, sizeof buffer, "SBDS Chemistry : %s", 360 dmi->battery.sbds_chemistry); 361 snprintf(statbuffer, sizeof statbuffer, "SBDS Chemistry : %s", 362 dmi->battery.sbds_chemistry); 363 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 364 menu->items_count++; 365 366 snprintf(buffer, sizeof buffer, "Maximum Error : %s", 367 dmi->battery.maximum_error); 368 snprintf(statbuffer, sizeof statbuffer, "Maximum Error (percent) : %s", 369 dmi->battery.maximum_error); 370 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 371 menu->items_count++; 372 373 snprintf(buffer, sizeof buffer, "OEM Info : %s", 374 dmi->battery.oem_info); 375 snprintf(statbuffer, sizeof statbuffer, "OEM Info: %s", 376 dmi->battery.oem_info); 377 add_item(buffer, statbuffer, OPT_INACTIVE, NULL, 0); 378 menu->items_count++; 379 380 printf("MENU: Battery menu done (%d items)\n", menu->items_count); 381 } 382