Improvements in the Servo Autotest library. Fixed pwr_button hold times
to match official values and added cold_reset, warm_reset, dev_mode, and
rec_mode methods.

BUG=none
TEST=manually tested on servo and partner device

Change-Id: I4e58abfb48371cf3c8983cf5b2779efd78aafb1a
Reviewed-on: http://gerrit.chromium.org/gerrit/3356
Reviewed-by: Nirnimesh <nirnimesh@chromium.org>
Reviewed-by: Craig Harrison <craigdh@google.com>
Tested-by: Craig Harrison <craigdh@google.com>
diff --git a/server/cros/servo.py b/server/cros/servo.py
index 1372c3f..5237527 100755
--- a/server/cros/servo.py
+++ b/server/cros/servo.py
@@ -55,8 +55,8 @@
 
 
     def power_normal_press(self):
-        """Simulate a normal (1 sec) power button press."""
-        self.power_key(1)
+        """Simulate a normal (2 sec) power button press."""
+        self.power_key(2)
 
 
     def power_short_press(self):
@@ -70,7 +70,7 @@
         Args:
           secs: Time in seconds to simulate the keypress.
         """
-        self.set('pwr_button', 'press')
+        self.set_nocheck('pwr_button', 'press')
         time.sleep(secs)
         self.set('pwr_button', 'release')
 
@@ -140,6 +140,26 @@
         self.set_nocheck('kbd_en', 'off')
 
 
+    def enable_recovery_mode(self):
+        """Enable recovery mode on device."""
+        self.set('rec_mode', 'on')
+
+
+    def disable_recovery_mode(self):
+        """Disable recovery mode on device."""
+        self.set('rec_mode', 'off')
+
+
+    def enable_development_mode(self):
+        """Enable development mode on device."""
+        self.set('dev_mode', 'on')
+
+
+    def disable_development_mode(self):
+        """Disable development mode on device."""
+        self.set('dev_mode', 'off')
+
+
     def boot_devmode(self):
         """Boot a dev-mode device that is powered off."""
         self.set('pwr_button', 'release')
@@ -155,12 +175,24 @@
         time.sleep(17)
 
 
-    def _init_seq_cold_reset_devmode(self):
-        """Cold reset, init device, and boot in dev-mode."""
-        self._cold_reset()
-        self._init_seq()
-        self.set('dev_mode', 'on')
-        self.boot_devmode()
+    def cold_reset(self):
+        """Perform a cold reset of the EC.
+
+        Has the side effect of shutting off the device.
+        """
+        self.set('cold_reset', 'on')
+        time.sleep(2)
+        self.set('cold_reset', 'off')
+
+
+    def warm_reset(self):
+        """Perform a warm reset of the device.
+
+        Has the side effect of restarting the device.
+        """
+        self.set('warm_reset', 'on')
+        time.sleep(2)
+        self.set('warm_reset', 'off')
 
 
     def get(self, gpio_name):
@@ -182,6 +214,14 @@
         self._server.set(gpio_name, gpio_value)
 
 
+    def _init_seq_cold_reset_devmode(self):
+        """Cold reset, init device, and boot in dev-mode."""
+        self.cold_reset()
+        self._init_seq()
+        self.set('dev_mode', 'on')
+        self.boot_devmode()
+
+
     def __del__(self):
         """Kill the Servod process."""
         assert self._servod
@@ -223,16 +263,6 @@
         self.set('rec_mode', 'off')
 
 
-    def _cold_reset(self):
-        """Perform a cold reset of the EC.
-
-        Has the side effect of shutting off the device.
-        """
-        self.set('cold_reset', 'on')
-        time.sleep(2)
-        self.set('cold_reset', 'off')
-
-
     def _connect_servod(self, servo_port=''):
         """Connect to the Servod process with XMLRPC.