\r
/**\r
Reads the next keystroke from the input device. The WaitForKey Event can\r
- be used to test for existance of a keystroke via WaitForEvent () call.\r
+ be used to test for existence of a keystroke via WaitForEvent () call.\r
\r
@param TerminalDevice Terminal driver private structure\r
@param KeyData A pointer to a buffer that is filled in with the\r
pressed.\r
\r
@retval EFI_SUCCESS The keystroke information was returned.\r
- @retval EFI_NOT_READY There was no keystroke data availiable.\r
+ @retval EFI_NOT_READY There was no keystroke data available.\r
@retval EFI_DEVICE_ERROR The keystroke information was not returned due\r
to hardware errors.\r
@retval EFI_INVALID_PARAMETER KeyData is NULL.\r
{\r
EFI_STATUS Status;\r
LIST_ENTRY *Link;\r
+ LIST_ENTRY *NotifyList;\r
TERMINAL_CONSOLE_IN_EX_NOTIFY *CurrentNotify;\r
\r
if (KeyData == NULL) {\r
//\r
// Invoke notification functions if exist\r
//\r
- for (Link = TerminalDevice->NotifyList.ForwardLink; Link != &TerminalDevice->NotifyList; Link = Link->ForwardLink) {\r
+ NotifyList = &TerminalDevice->NotifyList;\r
+ for (Link = GetFirstNode (NotifyList); !IsNull (NotifyList,Link); Link = GetNextNode (NotifyList,Link)) {\r
CurrentNotify = CR (\r
Link,\r
TERMINAL_CONSOLE_IN_EX_NOTIFY,\r
\r
/**\r
Check if the key already has been registered.\r
+ \r
+ If both RegsiteredData and InputData is NULL, then ASSERT().\r
\r
@param RegsiteredData A pointer to a buffer that is filled in with the\r
keystroke state data for the key that was\r
//\r
\r
/**\r
- Reset the input device and optionaly run diagnostics\r
+ Reset the input device and optionally run diagnostics\r
\r
@param This Protocol instance pointer.\r
@param ExtendedVerification Driver may perform diagnostics on reset.\r
\r
/**\r
Reads the next keystroke from the input device. The WaitForKey Event can\r
- be used to test for existance of a keystroke via WaitForEvent () call.\r
+ be used to test for existence of a keystroke via WaitForEvent () call.\r
\r
@param This Protocol instance pointer.\r
@param KeyData A pointer to a buffer that is filled in with the\r
pressed.\r
\r
@retval EFI_SUCCESS The keystroke information was returned.\r
- @retval EFI_NOT_READY There was no keystroke data availiable.\r
+ @retval EFI_NOT_READY There was no keystroke data available.\r
@retval EFI_DEVICE_ERROR The keystroke information was not returned due\r
to hardware errors.\r
@retval EFI_INVALID_PARAMETER KeyData is NULL.\r
\r
@retval EFI_SUCCESS The notification function was registered\r
successfully.\r
- @retval EFI_OUT_OF_RESOURCES Unable to allocate resources for necesssary data\r
+ @retval EFI_OUT_OF_RESOURCES Unable to allocate resources for necessary data\r
structures.\r
@retval EFI_INVALID_PARAMETER KeyData or NotifyHandle is NULL.\r
\r
TERMINAL_DEV *TerminalDevice;\r
TERMINAL_CONSOLE_IN_EX_NOTIFY *NewNotify;\r
LIST_ENTRY *Link;\r
+ LIST_ENTRY *NotifyList;\r
TERMINAL_CONSOLE_IN_EX_NOTIFY *CurrentNotify;\r
\r
if (KeyData == NULL || NotifyHandle == NULL || KeyNotificationFunction == NULL) {\r
//\r
// Return EFI_SUCCESS if the (KeyData, NotificationFunction) is already registered.\r
//\r
- for (Link = TerminalDevice->NotifyList.ForwardLink; Link != &TerminalDevice->NotifyList; Link = Link->ForwardLink) {\r
+ NotifyList = &TerminalDevice->NotifyList;\r
+ for (Link = GetFirstNode (NotifyList); !IsNull (NotifyList,Link); Link = GetNextNode (NotifyList,Link)) {\r
CurrentNotify = CR (\r
Link,\r
TERMINAL_CONSOLE_IN_EX_NOTIFY,\r
TERMINAL_DEV *TerminalDevice;\r
LIST_ENTRY *Link;\r
TERMINAL_CONSOLE_IN_EX_NOTIFY *CurrentNotify;\r
-\r
+ LIST_ENTRY *NotifyList;\r
+ \r
if (NotificationHandle == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
TerminalDevice = TERMINAL_CON_IN_EX_DEV_FROM_THIS (This);\r
\r
- for (Link = TerminalDevice->NotifyList.ForwardLink; Link != &TerminalDevice->NotifyList; Link = Link->ForwardLink) {\r
+ NotifyList = &TerminalDevice->NotifyList;\r
+ for (Link = GetFirstNode (NotifyList); !IsNull (NotifyList,Link); Link = GetNextNode (NotifyList,Link)) {\r
CurrentNotify = CR (\r
Link,\r
TERMINAL_CONSOLE_IN_EX_NOTIFY,\r
\r
@retval EFI_SUCCESS There is key pending.\r
@retval EFI_NOT_READY There is no key pending.\r
- @retval EFI_DEVICE_ERROR If Serial IO is not attched to serial device.\r
+ @retval EFI_DEVICE_ERROR If Serial IO is not attached to serial device.\r
\r
**/\r
EFI_STATUS\r
/**\r
Get one key out of serial buffer.\r
\r
- @param SerialIo Serial I/O protocl attached to the serial device.\r
+ @param SerialIo Serial I/O protocol attached to the serial device.\r
@param Output The fetched key.\r
\r
@return EFI_NOT_READY If serial buffer is empty.\r
)\r
{\r
EFI_INPUT_KEY Key;\r
-\r
- if ((TerminalDevice->InputState & INPUT_STATE_ESC) != 0) {\r
+ UINT32 InputState;\r
+ \r
+ InputState = TerminalDevice->InputState;\r
+ \r
+ if ((InputState & INPUT_STATE_ESC) != 0) {\r
Key.ScanCode = SCAN_ESC;\r
Key.UnicodeChar = 0;\r
EfiKeyFiFoInsertOneKey (TerminalDevice, Key);\r
}\r
\r
- if ((TerminalDevice->InputState & INPUT_STATE_CSI) != 0) {\r
+ if ((InputState & INPUT_STATE_CSI) != 0) {\r
Key.ScanCode = SCAN_NULL;\r
Key.UnicodeChar = CSI;\r
EfiKeyFiFoInsertOneKey (TerminalDevice, Key);\r
}\r
\r
- if ((TerminalDevice->InputState & INPUT_STATE_LEFTOPENBRACKET) != 0) {\r
+ if ((InputState & INPUT_STATE_LEFTOPENBRACKET) != 0) {\r
Key.ScanCode = SCAN_NULL;\r
Key.UnicodeChar = LEFTOPENBRACKET;\r
EfiKeyFiFoInsertOneKey (TerminalDevice, Key);\r
}\r
\r
- if ((TerminalDevice->InputState & INPUT_STATE_O) != 0) {\r
+ if ((InputState & INPUT_STATE_O) != 0) {\r
Key.ScanCode = SCAN_NULL;\r
Key.UnicodeChar = 'O';\r
EfiKeyFiFoInsertOneKey (TerminalDevice, Key);\r
}\r
\r
- if ((TerminalDevice->InputState & INPUT_STATE_2) != 0) {\r
+ if ((InputState & INPUT_STATE_2) != 0) {\r
Key.ScanCode = SCAN_NULL;\r
Key.UnicodeChar = '2';\r
EfiKeyFiFoInsertOneKey (TerminalDevice, Key);\r
\r
The table below shows the keyboard input mappings that this function supports.\r
If the ESC sequence listed in one of the columns is presented, then it is translated\r
- into the coorespoding EFI Scan Code. If a matching sequence is not found, then the raw\r
+ into the corresponding EFI Scan Code. If a matching sequence is not found, then the raw\r
key strokes are converted into EFI Keys.\r
\r
2 seconds are allowed for an ESC sequence to be completed. If the ESC sequence is not\r