]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPlatformPkg/Bds: Added boot timeout setting
authorRonald Cron <ronald.cron@arm.com>
Fri, 4 Jul 2014 14:46:21 +0000 (14:46 +0000)
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 4 Jul 2014 14:46:21 +0000 (14:46 +0000)
Added boot timeout setting in UEFI boot manager menu

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ronald Cron <ronald.cron@arm.com>
Reviewed-By: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15629 6f19259b-4bc3-4df7-8a09-765794883524

ArmPlatformPkg/Bds/BootMenu.c

index 62e7927defd6cc8eb291667f57b192520e619519..39013cf80235c7337767c6d03c26a53d14def528 100644 (file)
@@ -648,6 +648,54 @@ EXIT:
   return Status;\r
 }\r
 \r
+/**\r
+  Set boot timeout\r
+\r
+  Ask for the boot timeout in seconds and if the input succeeds assign the\r
+  input value to the UEFI global variable "Timeout". This function is called\r
+  when the user selects the "Set Boot Timeout" of the boot manager menu.\r
+\r
+  @param[in]  BootOptionsList  List of the boot devices, not used here\r
+\r
+  @retval  EFI_SUCCESS   Boot timeout in second retrieved from the standard\r
+                         input and assigned to the UEFI "Timeout" global\r
+                         variable\r
+  @retval  !EFI_SUCCESS  Either the input or the setting of the UEFI global\r
+                         variable "Timeout" has failed.\r
+**/\r
+EFI_STATUS\r
+STATIC\r
+BootMenuSetBootTimeout (\r
+  IN LIST_ENTRY *BootOptionsList\r
+  )\r
+{\r
+  EFI_STATUS  Status;\r
+  UINTN       Input;\r
+  UINT16      Timeout;\r
+\r
+  Print (L"Timeout duration (in seconds): ");\r
+  Status = GetHIInputInteger (&Input);\r
+  if (EFI_ERROR (Status)) {\r
+    Print (L"\n");\r
+    goto ErrorExit;\r
+  }\r
+\r
+  Timeout = Input;\r
+  Status = gRT->SetVariable (\r
+                 (CHAR16*)L"Timeout",\r
+                 &gEfiGlobalVariableGuid,\r
+                 EFI_VARIABLE_NON_VOLATILE       |\r
+                 EFI_VARIABLE_BOOTSERVICE_ACCESS |\r
+                 EFI_VARIABLE_RUNTIME_ACCESS,\r
+                 sizeof (UINT16),\r
+                 &Timeout\r
+                 );\r
+  ASSERT_EFI_ERROR (Status);\r
+\r
+ErrorExit:\r
+  return Status;\r
+}\r
+\r
 struct BOOT_MANAGER_ENTRY {\r
   CONST CHAR16* Description;\r
   EFI_STATUS (*Callback) (IN LIST_ENTRY *BootOptionsList);\r
@@ -656,6 +704,7 @@ struct BOOT_MANAGER_ENTRY {
     { L"Update Boot Device Entry", BootMenuUpdateBootOption },\r
     { L"Remove Boot Device Entry", BootMenuRemoveBootOption },\r
     { L"Update FDT path", UpdateFdtPath },\r
+    { L"Set Boot Timeout", BootMenuSetBootTimeout },\r
 };\r
 \r
 EFI_STATUS\r