]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellDriver1CommandsLib/Reconnect.c
ShellPkg: Connect all the consoles in "reconnect -r".
[mirror_edk2.git] / ShellPkg / Library / UefiShellDriver1CommandsLib / Reconnect.c
CommitLineData
4ba49616 1/** @file\r
2 Main file for Reconnect shell Driver1 function.\r
3\r
d86b04fb 4 Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>\r
4ba49616 5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#include "UefiShellDriver1CommandsLib.h"\r
16\r
d86b04fb
QS
17STATIC CONST SHELL_PARAM_ITEM ParamList[] = {\r
18 {L"-r", TypeFlag},\r
19 {NULL, TypeMax}\r
20 };\r
21\r
22/**\r
23 Connect all the possible console devices.\r
24\r
25**/\r
26VOID\r
27ConnectAllConsoles (\r
28 VOID\r
29 )\r
30{ \r
31 ShellConnectFromDevPaths(L"ConInDev");\r
32 ShellConnectFromDevPaths(L"ConOutDev");\r
33 ShellConnectFromDevPaths(L"ErrOutDev");\r
34 \r
35 ShellConnectFromDevPaths(L"ErrOut");\r
36 ShellConnectFromDevPaths(L"ConIn");\r
37 ShellConnectFromDevPaths(L"ConOut");\r
38}\r
39\r
40\r
361a8267 41/**\r
42 Function for 'reconnect' command.\r
43\r
44 @param[in] ImageHandle Handle to the Image (NULL if Internal).\r
45 @param[in] SystemTable Pointer to the System Table (NULL if Internal).\r
46**/\r
4ba49616 47SHELL_STATUS\r
48EFIAPI\r
49ShellCommandRunReconnect (\r
50 IN EFI_HANDLE ImageHandle,\r
51 IN EFI_SYSTEM_TABLE *SystemTable\r
52 )\r
53{\r
54 SHELL_STATUS ShellStatus;\r
d86b04fb
QS
55 LIST_ENTRY *Package;\r
56 CHAR16 *ProblemParam;\r
57 EFI_STATUS Status;\r
4ba49616 58\r
6878e7a7 59 gInReconnect = TRUE;\r
d86b04fb
QS
60 ShellStatus = SHELL_SUCCESS;\r
61 \r
62 //\r
63 // initialize the shell lib (we must be in non-auto-init...)\r
64 //\r
65 Status = ShellInitialize();\r
66 ASSERT_EFI_ERROR(Status);\r
6878e7a7 67\r
d86b04fb
QS
68 Status = CommandInit();\r
69 ASSERT_EFI_ERROR(Status);\r
70\r
71 //\r
72 // parse the command line\r
73 //\r
74 Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
75 if (EFI_ERROR(Status)) {\r
76 if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
77 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDriver1HiiHandle, ProblemParam);\r
78 FreePool(ProblemParam);\r
79 ShellStatus = SHELL_INVALID_PARAMETER;\r
80 } else {\r
81 ASSERT(FALSE);\r
82 }\r
83 } else {\r
84 ShellStatus = ShellCommandRunDisconnect(ImageHandle, SystemTable);\r
85 if (ShellStatus == SHELL_SUCCESS) {\r
86 if (ShellCommandLineGetFlag(Package, L"-r")) {\r
87 ConnectAllConsoles();\r
88 }\r
89 ShellStatus = ShellCommandRunConnect(ImageHandle, SystemTable);\r
90 }\r
91 } \r
6878e7a7 92\r
93 gInReconnect = FALSE;\r
94\r
4ba49616 95 return (ShellStatus);\r
96}\r
d86b04fb 97\r