// /**
//
// (C) Copyright 2014-2015 Hewlett-Packard Development Company, L.P.<BR>
// Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR>
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// Module Name:
//
// UefiBcfgCommandsLib.uni
//
// Abstract:
//
// String definitions for UEFI Shell 2.0 BCFG command
//
//
// **/

/=#

#langdef   en-US "english"

#string STR_GEN_NO_MEM            #language en-US "%H%s%N: Memory is not available.\r\n"
#string STR_GEN_PROBLEM           #language en-US "%H%s%N: Unknown flag - '%H%s%N'\r\n"
#string STR_GEN_NO_VALUE          #language en-US "%H%s%N: Missing argument for flag - '%H%s%N'\r\n"
#string STR_GEN_PARAM_INV         #language en-US "%H%s%N: Invalid argument - '%H%s%N'\r\n"
#string STR_GEN_NO_DRIVER_BOOT    #language en-US "%H%s%N: Driver or Boot must be selected.\r\n"
#string STR_GEN_BOOT_ONLY         #language en-US "%H%s%N: Boot must be selected for hot key options.\r\n"
#string STR_GEN_TOO_FEW           #language en-US "%H%s%N: Too few arguments.\r\n"
#string STR_GEN_TOO_MANY          #language en-US "%H%s%N: Too many arguments\r\n"
#string STR_GEN_FILE_OPEN_FAIL    #language en-US "%H%s%N: Cannot open file - '%H%s%N'\r\n"
#string STR_GEN_FIND_FAIL         #language en-US "%H%s%N: File not found - '%H%s%N'\r\n"
#string STR_GEN_OUT_MEM           #language en-US "%H%s%N: Memory allocation was not successful.\r\n"
#string STR_BCFG_WRITE_FAIL       #language en-US "%H%s%N: Unable to write to '%H%s%N'\r\n"
#string STR_BCFG_READ_FAIL        #language en-US "%H%s%N: Unable to read from '%H%s%N'\r\n"
#string STR_BCFG_VAR_CORRUPT      #language en-US "%H%s%N: Variable '%H%s%N' corrupt.\r\n"
#string STR_BCFG_HANDLE           #language en-US "%H%s%N: The handle [%H%02x%N] does not have DevicePath.\r\n"
#string STR_BCFG_FILE             #language en-US "%H%s%N: The file '%H%s%N' matches multiple files.\r\n"
#string STR_BCFG_FILE_OPEN        #language en-US "%H%s%N: The file '%H%s%N' did not open.\r\n"
#string STR_BCFG_FILE_DP          #language en-US "%H%s%N: The file '%H%s%N' could not convert to DevPath.\r\n"
#string STR_BCFG_TARGET_NF        #language en-US "%H%s%N: Could not find unused target index.\r\n"
#string STR_BCFG_TARGET           #language en-US "Target = %04x.\r\n"
#string STR_BCFG_SET_VAR_FAIL     #language en-US "%H%s%N: Unable to set %H%s%N\r\n"
#string STR_BCFG_VAR_NO_NUM       #language en-US "%H%s%N: Cannot create Key#### variable: All the numbers from 0x0000 - 0xFFFF have been used.\r\n"
#string STR_BCFG_NUMB_RANGE       #language en-US "%H%s%N: Numbers must be under %d.\r\n"
#string STR_BCFG_NONE             #language en-US "No options found.\r\n"

#string STR_BCFG_LOAD_OPTIONS     #language en-US "Option: %B%02x%N. Variable: %B%-11s%N\r\n"
                                                  "  Desc    - %s\r\n"
                                                  "  DevPath - %s\r\n"
                                                  "  Optional- %c\r\n"
#string STR_GET_HELP_BCFG         #language en-US ""
".TH bcfg 0 "configure boot and driver"\r\n"
".SH NAME\r\n"
"Manages the boot and driver options that are stored in NVRAM.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"BCFG driver|boot [dump [-v]] [add # file "desc"] [addp # file "desc"] \r\n"
"                 [addh # handle "desc"] [rm #] [mv # #] \r\n"
"                 [-opt # [[filename]|["data"]] | \r\n"
"                         [KeyData <ScanCode UnicodeChar>]]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -v          - Displays verbose information about options, including the optional\r\n"
"                data.\r\n"
"  -opt        - Displays or modifies the optional data associated with a \r\n"
"                driver or boot option. This parameter is followed by the file name of the\r\n"
"                file that contains the binary data to be associated with the\r\n"
"                driver or boot option optional data, or the quote\r\n"
"                delimited data to be associated with the driver or\r\n"
"                boot option optional data.\r\n"
"  driver      - Displays or modifies the driver option list.\r\n"
"  boot        - Displays or modifies the boot option list.\r\n"
"  dump        - Displays the option list.\r\n"
"  add         - Adds an option. The # is the number of options to add in\r\n"
"                hexadecimal format. The file name is the name of the UEFI application/driver for\r\n"
"                the option. The quoted parameter is the description of the\r\n"
"                option to be added.\r\n"
"  addh        - Adds an option that refers to the driver specified by a handle.\r\n"
"                The # is the number of options to add, in hexadecimal format. The\r\n"
"                handle is the driver handle, in hexadecimal format. The device path\r\n"
"                for the option is retrieved from the handle. The quoted\r\n"
"                parameter is the description of the option to be added.\r\n"
"  addp        - Adds an option that refers to a specific file. Only the portion\r\n"
"                of the device path starting with the hard drive partition is\r\n"
"                placed in the option. The # is the number of options to add,\r\n"
"                in hexadecimal format. The quoted parameter is the description of the\r\n"
"                option being added.\r\n"
"  rm          - Removes an option. The parameter lists the number of the options\r\n"
"                to remove in hexadecimal format.\r\n"
"  mv          - Moves an option. The first numeric parameter is the number of\r\n"
"                the option to move in hexadecimal format. The second numeric parameter\r\n"
"                is the new number of the option to be moved.\r\n"
"  KeyData     - Specifies the packed value associated with a hot-key.\r\n"
"  ScanCode    - Specifies the UEFI-defined scan code portion of the\r\n"
"                EFI_INPUT_KEY instruction. This value is directly associated\r\n"
"                with the preceding KeyData value. When one instance of this\r\n"
"                parameter has a non-zero value, the paired UnicodeChar value\r\n"
"                will have a zero-based value.\r\n"
"  UnicodeChar - Specifies the Unicode value for the character associated with\r\n"
"                the preceding KeyData value. When one instance of this\r\n"
"                parameter has a non-zero value, the paired ScanCode value\r\n"
"                will have a zero-based value.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command manages the boot and driver options stored in NVRAM.\r\n"
"  2. Use the dump option to display Boot#### or Driver#### environment variables.\r\n"
"  3. Use the add option to add a new Boot#### or Driver#### \r\n"
"     environment variable.\r\n"
"  4. Use the rm option to delete a Boot#### or Driver#### \r\n"
"     environment variable, and then the mv option to reorder\r\n"
"     the Boot#### and Driver#### environment variables.\r\n"
"  5. The add, rm, and mv options also update the BootOrder or DriverOrder\r\n"
"     environment variables, as appropriate.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display driver options:\r\n"
"    Shell> bcfg driver dump\r\n"
" \r\n"
"  * To display boot options:\r\n"
"    Shell> bcfg boot dump\r\n"
" \r\n"
"  * To display verbose information about boot options:\r\n"
"    Shell> bcfg boot dump -v\r\n"
" \r\n"
"  * To add a driver option #5:\r\n"
"    Shell> bcfg driver add 5 mydriver.efi "My Driver"\r\n"
" \r\n"
"  * To add a boot option #3:\r\n"
"    Shell> bcfg boot add 3 osloader.efi "My OS"\r\n"
" \r\n"
"  * To remove boot option #3:\r\n"
"    Shell> bcfg boot rm 3\r\n"
" \r\n"
"  * To move boot option #3 to boot option #7:\r\n"
"    Shell> bcfg boot mv 3 7\r\n"
" \r\n"
"  * To assign a CTRL-B hot-key to boot option #3:\r\n"
"    Shell> bcfg boot -opt 3 0x40000200 0 0x42\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_NOT_FOUND           The requested option was not found.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"
"  SHELL_UNSUPPORTED         The action as requested was unsupported.\r\n"
"  SHELL_SECURITY_VIOLATION  This function was not performed due to a security\r\n"
"                            violation.\r\n"
"  SHELL_OUT_OF_RESOURCES    There was insufficient free space for the request\r\n"
"                            to be completed.\r\n"

