1 /** @file 2 Main file for NULL named library for Serial Port Terminal Redirection library. 3 4 Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> 5 SPDX-License-Identifier: BSD-2-Clause-Patent 6 7 **/ 8 9 #include "SerialPortTerminalLib.h" 10 11 GLOBAL_REMOVE_IF_UNREFERENCED SERIAL_DEVICE_PATH mSerialDevicePath = { 12 { 13 { 14 HARDWARE_DEVICE_PATH, 15 HW_VENDOR_DP, 16 { 17 (UINT8) sizeof (VENDOR_DEVICE_PATH), 18 (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) 19 } 20 }, 21 EDKII_SERIAL_PORT_LIB_VENDOR_GUID 22 }, 23 { 24 { 25 MESSAGING_DEVICE_PATH, 26 MSG_UART_DP, 27 { 28 (UINT8) sizeof (UART_DEVICE_PATH), 29 (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) 30 } 31 }, 32 0, // Reserved 33 0, // BaudRate 34 0, // DataBits 35 0, // Parity 36 0 // StopBits 37 }, 38 { 39 { 40 MESSAGING_DEVICE_PATH, 41 MSG_VENDOR_DP, 42 { 43 (UINT8) (sizeof (VENDOR_DEVICE_PATH)), 44 (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8), 45 } 46 }, 47 DEVICE_PATH_MESSAGING_PC_ANSI 48 }, 49 gEndEntire 50 }; 51 52 /** 53 Updates the ConOut, ConIn, ErrOut variables with the serial terminal device path 54 @param none 55 @retval none 56 **/ 57 VOID 58 AddSerialTerminal ( 59 VOID 60 ) 61 { 62 DEBUG ((DEBUG_INFO, "[AddSerialPortTerminal]\n")); 63 64 // 65 // Append Serial Terminal into "ConIn" 66 // 67 EfiBootManagerUpdateConsoleVariable (ConOut, (EFI_DEVICE_PATH_PROTOCOL *) &mSerialDevicePath, NULL); 68 EfiBootManagerUpdateConsoleVariable (ConIn, (EFI_DEVICE_PATH_PROTOCOL *) &mSerialDevicePath, NULL); 69 EfiBootManagerUpdateConsoleVariable (ErrOut, (EFI_DEVICE_PATH_PROTOCOL *) &mSerialDevicePath, NULL); 70 } 71 72 73 /** 74 Constructor for the Serial Port Device controller library. 75 76 @param ImageHandle the image handle of the process 77 @param SystemTable the EFI System Table pointer 78 79 @retval EFI_SUCCESS the shell command handlers were installed sucessfully 80 @retval EFI_UNSUPPORTED the shell level required was not found. 81 **/ 82 EFI_STATUS 83 EFIAPI 84 SerialPortTerminalLibConstructor ( 85 IN EFI_HANDLE ImageHandle, 86 IN EFI_SYSTEM_TABLE *SystemTable 87 ) 88 { 89 mSerialDevicePath.Uart.BaudRate = PcdGet64(PcdUartDefaultBaudRate); 90 mSerialDevicePath.Uart.DataBits = PcdGet8(PcdUartDefaultDataBits); 91 mSerialDevicePath.Uart.Parity = PcdGet8(PcdUartDefaultParity); 92 mSerialDevicePath.Uart.StopBits = PcdGet8(PcdUartDefaultStopBits); 93 DEBUG ((DEBUG_INFO, "[SerialPortTerminalLibConstructor] [%d, %d, %d, %d]\n", 94 mSerialDevicePath.Uart.BaudRate, 95 mSerialDevicePath.Uart.DataBits, 96 mSerialDevicePath.Uart.Parity, 97 mSerialDevicePath.Uart.StopBits)); 98 99 AddSerialTerminal(); Melder_isHorizontalSpace(char32 kar)100 101 return EFI_SUCCESS; 102 } Melder_skipHorizontalSpace(char32 ** p_text)103