detachables: define vol_up_down_hold command

vol_up_down_hold command holds volume up and down buttons
simultaneously for given amount of time.

BUG=b:69390675
BRANCH=None
TEST=call command vol_up_down_hold from FAFT and make sure that
     buttons are actually pressed and released in ec console.
CQ-DEPEND=CL:783515

Change-Id: Id033dda9c89eb192e77abf198ad931722273b341
Signed-off-by: Shelley Chen <shchen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/783638
Reviewed-by: Wai-Hong Tam <waihong@google.com>
diff --git a/servo/data/detachable.xml b/servo/data/detachable.xml
index 56b9422..7377e21 100644
--- a/servo/data/detachable.xml
+++ b/servo/data/detachable.xml
@@ -17,6 +17,14 @@
     input_type="int"/>
   </control>
   <control>
+    <name>volume_up_down_hold</name>
+    <doc>Emulated both volume up and down buttons pressed on ec</doc>
+    <params cmd="get" subtype="not_applicable" interface="10" drv="na"
+    map="na"/>
+    <params cmd="set" subtype="volume_up_down_hold" interface="10" drv="ec"
+    input_type="int"/>
+  </control>
+  <control>
     <name>lid_open</name>
     <doc>Emulated lid switch on ec</doc>
     <params subtype="lid_open" interface="10" drv="ec" map="yesno"
diff --git a/servo/drv/ec.py b/servo/drv/ec.py
index d127d07..8e3680b 100644
--- a/servo/drv/ec.py
+++ b/servo/drv/ec.py
@@ -291,6 +291,14 @@
     """
     self._issue_cmd("button vdown %d" % value)
 
+  def _Set_volume_up_down_hold(self, value):
+    """Setter of Vup and vdown for tablets/ detachables
+
+    Args:
+      value: number of ms to hold the volume buttons
+    """
+    self._issue_cmd("button vup vdown %d" % value)
+
   def _Set_pwr_button_hold(self, value):
     """Setter of pwr_button_hold.