/** @file Main file for Reconnect shell Driver1 function. Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.
(C) Copyright 2015 Hewlett Packard Enterprise Development LP
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "UefiShellDriver1CommandsLib.h" STATIC CONST SHELL_PARAM_ITEM ParamList[] = { { L"-r", TypeFlag }, { NULL, TypeMax } }; /** Connect all the possible console devices. **/ VOID ConnectAllConsoles ( VOID ) { ShellConnectFromDevPaths (L"ConInDev"); ShellConnectFromDevPaths (L"ConOutDev"); ShellConnectFromDevPaths (L"ErrOutDev"); ShellConnectFromDevPaths (L"ErrOut"); ShellConnectFromDevPaths (L"ConIn"); ShellConnectFromDevPaths (L"ConOut"); } /** Function for 'reconnect' command. @param[in] ImageHandle Handle to the Image (NULL if Internal). @param[in] SystemTable Pointer to the System Table (NULL if Internal). **/ SHELL_STATUS EFIAPI ShellCommandRunReconnect ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { SHELL_STATUS ShellStatus; LIST_ENTRY *Package; CHAR16 *ProblemParam; EFI_STATUS Status; gInReconnect = TRUE; ShellStatus = SHELL_SUCCESS; // // initialize the shell lib (we must be in non-auto-init...) // Status = ShellInitialize (); ASSERT_EFI_ERROR (Status); Status = CommandInit (); ASSERT_EFI_ERROR (Status); // // parse the command line // Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE); if (EFI_ERROR (Status)) { if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDriver1HiiHandle, L"reconnect", ProblemParam); FreePool (ProblemParam); ShellStatus = SHELL_INVALID_PARAMETER; } else { ASSERT (FALSE); } } else { ShellStatus = ShellCommandRunDisconnect (ImageHandle, SystemTable); if (ShellStatus == SHELL_SUCCESS) { if (ShellCommandLineGetFlag (Package, L"-r")) { ConnectAllConsoles (); } ShellStatus = ShellCommandRunConnect (ImageHandle, SystemTable); } } gInReconnect = FALSE; return (ShellStatus); }