extern struct coreinfo_module cpuinfo_module;
extern struct coreinfo_module pci_module;
extern struct coreinfo_module coreboot_module;
+extern struct coreinfo_module nvram_module;
struct coreinfo_module *modules[] = {
+#ifdef CONFIG_MODULE_CPUINFO
&cpuinfo_module,
+#endif
+#ifdef CONFIG_MODULE_PCI
&pci_module,
+#endif
+#ifdef CONFIG_MODULE_COREBOOT
&coreboot_module,
+#endif
+#ifdef CONFIG_MODULE_NVRAM
+ &nvram_module,
+#endif
};
static WINDOW *modwin;
for (i = 0; i < ARRAY_SIZE(modules); i++)
ptr += sprintf(ptr, "F%d: %s ", i + 1, modules[i]->name);
- mvprintw(23, 0, menu);
+ if (ARRAY_SIZE(modules) != 0)
+ mvprintw(23, 0, menu);
+
+#ifdef CONFIG_SHOW_DATE_TIME
+ mvprintw(23, 59, "%02d/%02d/20%02d - %02d:%02d:%02d",
+ bcd2dec(nvram_read(NVRAM_RTC_MONTH)),
+ bcd2dec(nvram_read(NVRAM_RTC_DAY)),
+ bcd2dec(nvram_read(NVRAM_RTC_YEAR)),
+ bcd2dec(nvram_read(NVRAM_RTC_HOURS)),
+ bcd2dec(nvram_read(NVRAM_RTC_MINUTES)),
+ bcd2dec(nvram_read(NVRAM_RTC_SECONDS)));
+#endif
}
static void center(int row, const char *str)
static void redraw_module(void)
{
+ if (ARRAY_SIZE(modules) == 0)
+ return;
+
wclear(modwin);
modules[curwin]->redraw(modwin);
refresh();
center(0, "coreinfo v0.1");
print_menu();
- modules[curwin]->redraw(modwin);
+ if (ARRAY_SIZE(modules) != 0)
+ modules[curwin]->redraw(modwin);
refresh();
while (1) {
if (key >= KEY_F(1) && key <= KEY_F(9)) {
unsigned char ch = key - KEY_F(1);
- if (ch < ARRAY_SIZE(modules)) {
+ if (ch <= ARRAY_SIZE(modules)) {
+ if (ch == ARRAY_SIZE(modules))
+ continue;
curwin = ch;
redraw_module();
continue;
}
}
- if (modules[curwin]->handle)
+ if (ARRAY_SIZE(modules) != 0 && modules[curwin]->handle)
if (modules[curwin]->handle(key))
redraw_module();
}