#define REFIT_DEBUG (0)
// Tag classifications; used in various ways.
-#define TAG_ABOUT (1)
-#define TAG_REBOOT (2)
-#define TAG_SHUTDOWN (3)
-#define TAG_TOOL (4)
-#define TAG_LOADER (5)
-#define TAG_LEGACY (6)
-#define TAG_EXIT (7)
-#define TAG_SHELL (8)
-#define TAG_GPTSYNC (9)
-#define TAG_LEGACY_NON_MAC (10)
-#define NUM_TOOLS (9)
+#define TAG_ABOUT (1)
+#define TAG_REBOOT (2)
+#define TAG_SHUTDOWN (3)
+#define TAG_TOOL (4)
+#define TAG_LOADER (5)
+#define TAG_LEGACY (6)
+#define TAG_EXIT (7)
+#define TAG_SHELL (8)
+#define TAG_GPTSYNC (9)
+#define TAG_LEGACY_UEFI (10)
+#define TAG_APPLE_RECOVERY (11)
+#define TAG_MOK_TOOL (12)
+#define NUM_TOOLS (11)
#define NUM_SCAN_OPTIONS 10
#define GRAPHICS_FOR_GRUB 8
#define GRAPHICS_FOR_WINDOWS 16
+// Type of legacy (BIOS) boot support detected
+#define LEGACY_TYPE_NONE 0
+#define LEGACY_TYPE_MAC 1
+#define LEGACY_TYPE_UEFI 2
+
+#ifndef __MAKEWITH_TIANO
+//
+// define BBS Device Types
+//
+#define BBS_FLOPPY 0x01
+#define BBS_HARDDISK 0x02
+#define BBS_CDROM 0x03
+#define BBS_PCMCIA 0x04
+#define BBS_USB 0x05
+#define BBS_EMBED_NETWORK 0x06
+#define BBS_BEV_DEVICE 0x80
+#define BBS_UNKNOWN 0xff
+#endif
+
+// BIOS Boot Specification (BBS) device types, as returned in DevicePath->Type field
+#define DEVICE_TYPE_HW 0x01
+#define DEVICE_TYPE_ACPI 0x02 /* returned by UEFI boot loader on USB */
+#define DEVICE_TYPE_MESSAGING 0x03
+#define DEVICE_TYPE_MEDIA 0x04 /* returned by EFI boot loaders on hard disk */
+#define DEVICE_TYPE_BIOS 0x05 /* returned by legacy (BIOS) boot loaders */
+#define DEVICE_TYPE_END 0x75 /* end of path */
+
+//TODO: may want to make this configurable via config file
+//static UINT16 SupportedLegacyDevices[] = {BBS_HARDDISK, BBS_CDROM, BBS_USB};
+
//
// global definitions
//
BOOLEAN Enabled;
} LEGACY_ENTRY;
-/*
-#ifdef __MAKEWITH_TIANO
-typedef struct {
- REFIT_MENU_ENTRY me;
- BDS_COMMON_OPTION *BdsOption;
- BOOLEAN Enabled;
-} LEGACY_ENTRY_NON_MAC;
-#endif // __MAKEWITH_TIANO
-*/
-
typedef struct {
BOOLEAN TextOnly;
BOOLEAN ScanAllLinux;
UINTN HideUIFlags;
UINTN MaxTags; // max. number of OS entries to show simultaneously in graphics mode
UINTN GraphicsFor;
+ UINTN LegacyType;
+ UINTN ScanDelay;
CHAR16 *BannerFileName;
CHAR16 *SelectionSmallFileName;
CHAR16 *SelectionBigFileName;
extern REFIT_CONFIG GlobalConfig;
+extern EFI_GUID gEfiLegacyBootProtocolGuid;
+extern EFI_GUID gEfiGlobalVariableGuid;
+
LOADER_ENTRY *InitializeLoaderEntry(IN LOADER_ENTRY *Entry);
REFIT_MENU_SCREEN *InitializeSubScreen(IN LOADER_ENTRY *Entry);
VOID GenerateSubScreen(LOADER_ENTRY *Entry, IN REFIT_VOLUME *Volume);