Allow multiple servos to connected to one host
BUG=chrome-os-partner:4123
TEST=manual
prereq's
- program a multiple servo's eeprom's using ftdi_eeprom w/ unique serialname's
- You can examine this value via lsusb -d 0x403: -v | grep iSerial
1. servod -c servo.xml -s <serialA>
2. servod -c servo.xml -s <serialB> --port=9998
Then
1. dut-control --port=9998 lid_open:no lid_open:yes
1. dut-control lid_open:no lid_open:yes
Observe different DUTs respond to lid event
Change-Id: Ifa6d2065155c4faf256d0a3eb9569547b61d0fdb
Reviewed-on: http://gerrit.chromium.org/gerrit/1576
Reviewed-by: Mark Hayter <mdhayter@chromium.org>
Tested-by: Todd Broch <tbroch@chromium.org>
diff --git a/servo/servo_server.py b/servo/servo_server.py
index 7f9bd1e..7e17781 100644
--- a/servo/servo_server.py
+++ b/servo/servo_server.py
@@ -19,7 +19,8 @@
class Servod(object):
"""Main class for Servo debug/controller Daemon."""
def __init__(self, config, vendor=ftdi_common.DEFAULT_VID,
- product=ftdi_common.DEFAULT_PID):
+ product=ftdi_common.DEFAULT_PID,
+ serialname=None):
"""Servod constructor.
Args:
@@ -27,11 +28,13 @@
particular Servod invocation
vendor: usb vendor id of FTDI device
product: usb product id of FTDI device
+ serialname: string of device serialname/number as defined in FTDI eeprom.
"""
self._logger = logging.getLogger("Servod")
self._logger.debug("")
self._vendor = vendor
self._product = product
+ self._serialname = serialname
self._syscfg = config
# list of objects (Fi2c, Fgpio) to physical interfaces (gpio, i2c) that ftdi
# interfaces are mapped to
@@ -58,7 +61,8 @@
Returns:
Instance object of interface.
"""
- fobj = ftdigpio.Fgpio(self._vendor, self._product, interface)
+ fobj = ftdigpio.Fgpio(self._vendor, self._product, interface,
+ self._serialname)
fobj.open()
return fobj
@@ -71,7 +75,8 @@
Returns:
Instance object of interface
"""
- fobj = ftdii2c.Fi2c(self._vendor, self._product, interface)
+ fobj = ftdii2c.Fi2c(self._vendor, self._product, interface,
+ self._serialname)
fobj.open()
# Set the frequency of operation of the i2c bus.
# TODO(tbroch) make configureable