blob: 2e71a00b04d75de50fd864184b56ebf7fbe7a28b [file] [log] [blame]
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""
"""
import hw_driver
CMD_MASK = 0xf
class Pca9546Error(Exception):
"""Error class for PCA9546"""
class pca9546(hw_driver.HwDriver):
"""Object to access drv=pca9546 controls."""
def __init__(self, interface, params):
"""Constructor.
Args:
interface: interface object to handle low-level communication to control
params: dictionary of params needed to perform operations on pca9546
devices.
Mandatory Params:
slv: integer, 7-bit i2c slave address
"""
super(pca9546, self).__init__(interface, params)
self._logger.debug("")
self._slave = int(self._params['slv'], 0)
def get(self):
"""Get PCA9546 mux.
"""
return self._interface.wr_rd(self._slave, [], 1)[0]
def set(self, value):
"""Set PCA954 mux.
Args:
value: 4-bit unsigned integer to set mux output
Raises:
Pca9546Error: if value is out of bounds
"""
self._logger.debug("value = %s" % str(value))
if value & ~CMD_MASK:
raise Pca9546Error("command value 0x%x can't be greater than 0x%x" %
(value, CMD_MASK))
self._interface.wr_rd(self._slave, [CMD_MASK & value], 0)