Support customized Ctrl-D and Enter key commands.
Instead of sending these keys via servo, an user can use his own scripts.
BUG=chromium-os:22597
TEST=manual as follows:
Create two scripts for Ctrl-D and Enter key, like:
$ cat /tmp/ctrl_d_key.sh
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
echo "@@@@@@@@ PRESS CTRL-D IN MY WAY @@@@@@@@"
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
$ cat /tmp/enter_key.sh
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
echo "@@@@@@@@ PRESS ENTER IN MY WAY @@@@@@@@"
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
Run the test and see:
$ run_remote_tests.sh --remote=$REMOTE_IP -a "xml_config=$OVERLAY_XML \
servo_vid=0x18d1 servo_pid=0x5001 \
ctrl_d_cmd=/tmp/ctrl_d_key.sh \
enter_cmd=/tmp/enter_key.sh" DevTriggerRecovery
...
11:28:23 INFO | calling <bound method firmware_DevTriggerRecovery.wait_fw_screen_and_ctrl_d of <firmware_DevTriggerRecovery.firmware_DevTriggerRecovery object at 0x7fe44f830d50>>
11:28:33 INFO | running the customized Ctrl-D key command
11:28:33 INFO | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
11:28:33 INFO | @@@@@@@@ PRESS CTRL-D IN MY WAY @@@@@@@@
11:28:33 INFO | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
...
11:29:12 INFO | calling <bound method firmware_DevTriggerRecovery.wait_fw_screen_and_trigger_recovery of <firmware_DevTriggerRecovery.firmware_DevTriggerRecovery object at 0x7fe44f830d50>>
11:29:22 INFO | running the customized Enter key command
11:29:22 INFO | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
11:29:22 INFO | @@@@@@@@ PRESS ENTER IN MY WAY @@@@@@@@
11:29:22 INFO | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
...
Change-Id: Ife0f2da3a941d3df114813909db9b4d25b40d1ad
Reviewed-on: https://gerrit.chromium.org/gerrit/12669
Reviewed-by: Todd Broch <tbroch@chromium.org>
Tested-by: Tom Wai-Hong Tam <waihong@chromium.org>
Commit-Ready: Tom Wai-Hong Tam <waihong@chromium.org>
diff --git a/server/cros/faftsequence.py b/server/cros/faftsequence.py
index c809405..b730fe7 100644
--- a/server/cros/faftsequence.py
+++ b/server/cros/faftsequence.py
@@ -157,6 +157,31 @@
_faft_template = {}
_faft_sequence = ()
+ _customized_ctrl_d_key_command = None
+ _customized_enter_key_command = None
+
+
+ def initialize(self, host, cmdline_args, use_pyauto=False, use_faft=False):
+ # Parse arguments from command line
+ args = {}
+ for arg in cmdline_args:
+ match = re.search("^(\w+)=(.+)", arg)
+ if match:
+ args[match.group(1)] = match.group(2)
+
+ # Keep the customized Ctrl-D and Enter key commands.
+ if 'ctrl_d_cmd' in args:
+ self._customized_ctrl_d_key_command = args['ctrl_d_cmd']
+ logging.info('Customized Ctrl-D key command: %s' %
+ self._customized_ctrl_d_key_command)
+ if 'enter_cmd' in args:
+ self._customized_enter_key_command = args['enter_cmd']
+ logging.info('Customized Enter key command: %s' %
+ self._customized_enter_key_command)
+
+ super(FAFTSequence, self).initialize(host, cmdline_args, use_pyauto,
+ use_faft)
+
def setup(self):
"""Autotest setup function."""
@@ -360,10 +385,28 @@
})
+ def send_ctrl_d_to_dut(self):
+ """Send Ctrl-D key to DUT."""
+ if self._customized_ctrl_d_key_command:
+ logging.info('running the customized Ctrl-D key command')
+ os.system(self._customized_ctrl_d_key_command)
+ else:
+ self.servo.ctrl_d()
+
+
+ def send_enter_to_dut(self):
+ """Send Enter key to DUT."""
+ if self._customized_enter_key_command:
+ logging.info('running the customized Enter key command')
+ os.system(self._customized_enter_key_command)
+ else:
+ self.servo.enter_key()
+
+
def wait_fw_screen_and_ctrl_d(self):
"""Wait for firmware warning screen and press Ctrl-D."""
time.sleep(self.FIRMWARE_SCREEN_DELAY)
- self.servo.ctrl_d()
+ self.send_ctrl_d_to_dut()
def wait_fw_screen_and_plug_usb(self):