{\r
EFI_STATUS Status;\r
TERMINAL_DEV *TerminalDevice;\r
+ UINT32 Control;\r
UINT8 Input;\r
EFI_SERIAL_IO_MODE *Mode;\r
EFI_SERIAL_IO_PROTOCOL *SerialIo;\r
TerminalDevice->SerialInTimeOut = SerialInTimeOut;\r
}\r
}\r
-\r
//\r
- // Fetch all the keys in the serial buffer,\r
- // and insert the byte stream into RawFIFO.\r
+ // Check whether serial buffer is empty.\r
//\r
- while (!IsRawFiFoFull (TerminalDevice)) {\r
+ Status = SerialIo->GetControl (SerialIo, &Control);\r
\r
- Status = GetOneKeyFromSerial (TerminalDevice->SerialIo, &Input);\r
+ if ((Control & EFI_SERIAL_INPUT_BUFFER_EMPTY) == 0) {\r
+ //\r
+ // Fetch all the keys in the serial buffer,\r
+ // and insert the byte stream into RawFIFO.\r
+ //\r
+ while (!IsRawFiFoFull (TerminalDevice)) {\r
\r
- if (EFI_ERROR (Status)) {\r
- if (Status == EFI_DEVICE_ERROR) {\r
- REPORT_STATUS_CODE_WITH_DEVICE_PATH (\r
- EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
- (EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_INPUT_ERROR),\r
- TerminalDevice->DevicePath\r
- );\r
+ Status = GetOneKeyFromSerial (TerminalDevice->SerialIo, &Input);\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ if (Status == EFI_DEVICE_ERROR) {\r
+ REPORT_STATUS_CODE_WITH_DEVICE_PATH (\r
+ EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
+ (EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_INPUT_ERROR),\r
+ TerminalDevice->DevicePath\r
+ );\r
+ }\r
+ break;\r
}\r
- break;\r
- }\r
\r
- RawFiFoInsertOneKey (TerminalDevice, Input);\r
+ RawFiFoInsertOneKey (TerminalDevice, Input);\r
+ }\r
}\r
\r
//\r