]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c
Fix the comments to follow UEFI Spec regarding how to check an EFI_HANDLE is valid...
[mirror_edk2.git] / MdeModulePkg / Universal / Console / TerminalDxe / Terminal.c
index 04c79aff5a426a140d8931e8880cb33a6a4af8d6..9574390eb0908b76f37800315ac5b55b1f76cf8a 100644 (file)
@@ -2,7 +2,7 @@
   Produces Simple Text Input Protocol, Simple Text Input Extended Protocol and\r
   Simple Text Output Protocol upon Serial IO Protocol.\r
 \r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -75,6 +75,7 @@ TERMINAL_DEV  mTerminalDevTemplate = {
   NULL, // EfiKeyFiFo\r
 \r
   NULL, // ControllerNameTable\r
+  NULL, // TimerEvent\r
   NULL, // TwoSecondTimeOut\r
   INPUT_STATE_DEFAULT,\r
   RESET_STATE_DEFAULT,\r
@@ -648,7 +649,7 @@ TerminalDriverBindingStart (
                     EVT_NOTIFY_WAIT,\r
                     TPL_NOTIFY,\r
                     TerminalConInWaitForKeyEx,\r
-                    &TerminalDevice->SimpleInputEx,\r
+                    TerminalDevice,\r
                     &TerminalDevice->SimpleInputEx.WaitForKeyEx\r
                     );\r
     if (EFI_ERROR (Status)) {\r
@@ -659,7 +660,7 @@ TerminalDriverBindingStart (
                     EVT_NOTIFY_WAIT,\r
                     TPL_NOTIFY,\r
                     TerminalConInWaitForKey,\r
-                    &TerminalDevice->SimpleInput,\r
+                    TerminalDevice,\r
                     &TerminalDevice->SimpleInput.WaitForKey\r
                     );\r
     if (EFI_ERROR (Status)) {\r
@@ -724,7 +725,7 @@ TerminalDriverBindingStart (
                          );\r
     SimpleTextOutput->Mode = &TerminalDevice->SimpleTextOutputMode;\r
 \r
-    TerminalDevice->SimpleTextOutputMode.MaxMode = 3;\r
+    TerminalDevice->SimpleTextOutputMode.MaxMode = TERMINAL_MAX_MODE;\r
     //\r
     // For terminal devices, cursor is always visible\r
     //\r
@@ -842,6 +843,22 @@ TerminalDriverBindingStart (
       goto ReportError;\r
     }\r
 \r
+    Status = gBS->CreateEvent (\r
+                    EVT_TIMER | EVT_NOTIFY_SIGNAL,\r
+                    TPL_NOTIFY,\r
+                    TerminalConInTimerHandler,\r
+                    TerminalDevice,\r
+                    &TerminalDevice->TimerEvent\r
+                    );\r
+    ASSERT_EFI_ERROR (Status);\r
+\r
+    Status = gBS->SetTimer (\r
+                    TerminalDevice->TimerEvent,\r
+                    TimerPeriodic,\r
+                    KEYBOARD_TIMER_INTERVAL\r
+                    );\r
+    ASSERT_EFI_ERROR (Status);\r
+\r
     Status = gBS->CreateEvent (\r
                     EVT_TIMER,\r
                     TPL_CALLBACK,\r
@@ -849,6 +866,7 @@ TerminalDriverBindingStart (
                     NULL,\r
                     &TerminalDevice->TwoSecondTimeOut\r
                     );\r
+    ASSERT_EFI_ERROR (Status);\r
 \r
     Status = gBS->InstallProtocolInterface (\r
                     &TerminalDevice->Handle,\r
@@ -1052,6 +1070,10 @@ Error:
         gBS->CloseEvent (TerminalDevice->TwoSecondTimeOut);\r
       }\r
 \r
+      if (TerminalDevice->TimerEvent != NULL) {\r
+        gBS->CloseEvent (TerminalDevice->TimerEvent);\r
+      }\r
+\r
       if (TerminalDevice->SimpleInput.WaitForKey != NULL) {\r
         gBS->CloseEvent (TerminalDevice->SimpleInput.WaitForKey);\r
       }\r
@@ -1245,6 +1267,7 @@ TerminalDriverBindingStop (
           FreeUnicodeStringTable (TerminalDevice->ControllerNameTable);\r
         }\r
 \r
+        gBS->CloseEvent (TerminalDevice->TimerEvent);\r
         gBS->CloseEvent (TerminalDevice->TwoSecondTimeOut);\r
         gBS->CloseEvent (TerminalDevice->SimpleInput.WaitForKey);\r
         gBS->CloseEvent (TerminalDevice->SimpleInputEx.WaitForKeyEx);\r