106 lines
5.0 KiB
Python
106 lines
5.0 KiB
Python
# Copyright 2015 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.
|
|
|
|
|
|
"""This module provides the information of Chameleon board."""
|
|
|
|
|
|
import collections
|
|
import logging
|
|
|
|
|
|
# Mapping from Chameleon MAC address to other information including
|
|
# bluetooth MAC address on audio board.
|
|
ChameleonInfo = collections.namedtuple(
|
|
'ChameleonInfo', ['bluetooth_mac_address'])
|
|
|
|
_CHAMELEON_BOARD_INFO = {
|
|
'94:eb:2c:00:00:fb': ChameleonInfo('00:1F:84:01:03:68'),
|
|
'94:eb:2c:00:00:f9': ChameleonInfo('00:1F:84:01:03:73'),
|
|
'94:eb:2c:00:01:25': ChameleonInfo('00:1F:84:01:03:4F'),
|
|
'94:eb:2c:00:01:27': ChameleonInfo('00:1F:84:01:03:5B'),
|
|
'94:eb:2c:00:01:28': ChameleonInfo('00:1F:84:01:03:46'),
|
|
'94:eb:2c:00:01:29': ChameleonInfo('00:1F:84:01:03:26'),
|
|
'94:eb:2c:00:01:2b': ChameleonInfo('00:1F:84:01:03:5E'),
|
|
'94:eb:2c:00:01:2d': ChameleonInfo('00:1F:84:01:03:B6'),
|
|
'94:eb:2c:00:01:30': ChameleonInfo('00:1F:84:01:03:2F'),
|
|
'94:eb:2c:00:01:3a': ChameleonInfo('00:1F:84:01:03:42'),
|
|
'94:eb:2c:00:01:3b': ChameleonInfo('00:1F:84:01:03:44'),
|
|
'94:eb:2c:00:01:3d': ChameleonInfo('00:1F:84:01:03:59'),
|
|
'94:eb:2c:00:01:3e': ChameleonInfo('00:1F:84:01:03:74'),
|
|
'94:eb:2c:00:01:3f': ChameleonInfo('00:1F:84:01:03:8C'),
|
|
'94:eb:2c:00:01:41': ChameleonInfo('00:1F:84:01:03:B3'),
|
|
'94:eb:2c:10:06:65': ChameleonInfo('00:1F:84:01:03:6A'),
|
|
'94:eb:2c:10:06:66': ChameleonInfo('00:1F:84:01:03:21'),
|
|
'94:eb:2c:10:06:67': ChameleonInfo('00:1F:84:01:03:38'),
|
|
'94:eb:2c:10:06:68': ChameleonInfo('00:1F:84:01:03:52'),
|
|
'94:eb:2c:10:06:6c': ChameleonInfo('00:1F:84:01:03:2E'),
|
|
'94:eb:2c:10:06:6d': ChameleonInfo('00:1F:84:01:03:84'),
|
|
'94:eb:2c:10:06:6e': ChameleonInfo('00:1F:84:01:03:98'),
|
|
'94:eb:2c:10:06:72': ChameleonInfo('00:1F:84:01:03:61'),
|
|
'94:eb:2c:10:06:73': ChameleonInfo('00:1F:84:01:03:2C'),
|
|
'94:eb:2c:10:06:76': ChameleonInfo('00:1F:84:01:03:83'),
|
|
'94:eb:2c:10:06:7a': ChameleonInfo('00:1F:84:01:03:1C'),
|
|
'94:eb:2c:10:06:7b': ChameleonInfo('00:1F:84:01:03:A7'),
|
|
'94:eb:2c:10:06:7c': ChameleonInfo('00:1F:84:01:03:4B'),
|
|
'94:eb:2c:10:06:7d': ChameleonInfo('00:1F:81:88:88:9D'),
|
|
'94:eb:2c:10:06:7e': ChameleonInfo('00:1F:81:88:88:91'),
|
|
'94:eb:2c:10:06:7f': ChameleonInfo('00:1F:84:01:03:36'),
|
|
'94:eb:2c:00:01:26': ChameleonInfo('00:1F:84:01:03:56'),
|
|
'94:eb:2c:00:01:17': ChameleonInfo('00:1F:84:01:03:76'),
|
|
'94:eb:2c:00:01:31': ChameleonInfo('00:1F:84:01:03:20'),
|
|
'94:eb:2c:00:01:18': ChameleonInfo('00:1F:84:01:03:A1'),
|
|
'94:eb:2c:10:06:84': ChameleonInfo('00:1F:84:01:03:32'),
|
|
|
|
# TODO (rjahagir@): Verify the addresses listed above as
|
|
# as many were reworked/relocated. Some are duplicates.
|
|
# Listed below are added as of 4/13/17.
|
|
'94:eb:2c:10:06:74': ChameleonInfo('00:1F:84:01:03:88'),
|
|
'94:eb:2c:10:06:a9': ChameleonInfo('00:1F:84:01:03:6C'),
|
|
'94:eb:2c:10:06:89': ChameleonInfo('00:1F:84:01:03:40'),
|
|
'94:eb:2c:10:06:a3': ChameleonInfo('00:1F:84:01:03:24'),
|
|
'94:eb:2c:10:06:99': ChameleonInfo('00:1F:84:01:03:93'),
|
|
'94:eb:2c:10:06:9a': ChameleonInfo('00:1F:84:01:03:B1'),
|
|
'94:eb:2c:10:06:90': ChameleonInfo('00:1F:84:01:03:6E'),
|
|
'94:eb:2c:00:01:00': ChameleonInfo('00:1F:84:01:03:54'),
|
|
'94:eb:2c:00:01:01': ChameleonInfo('00:1F:84:01:03:3E'),
|
|
'94:eb:2c:10:06:9e': ChameleonInfo('00:1F:84:01:03:97'),
|
|
'94:eb:2c:10:06:9f': ChameleonInfo('00:1F:84:01:03:49'),
|
|
|
|
# Listed below added as of 5/12/17.
|
|
'94:eb:2c:10:06:98': ChameleonInfo('00:1F:84:01:03:65'),
|
|
'94:eb:2c:00:01:19': ChameleonInfo('00:1F:84:01:03:91'),
|
|
'94:eb:2c:10:06:8a': ChameleonInfo('00:1F:84:01:03:AB'),
|
|
'94:eb:2c:00:01:1d': ChameleonInfo('00:1F:84:01:03:A6'),
|
|
'94:eb:2c:10:06:95': ChameleonInfo('00:1F:84:01:03:66'),
|
|
|
|
# Lars device changed as of 10/17/17.
|
|
'94:eb:2c:00:01:1a': ChameleonInfo('00:1F:84:01:03:20')
|
|
}
|
|
|
|
class ChameleonInfoError(Exception):
|
|
"""Error in chameleon_info."""
|
|
pass
|
|
|
|
|
|
def get_bluetooth_mac_address(chameleon_board):
|
|
"""Gets bluetooth MAC address of a ChameleonBoard.
|
|
|
|
@param chameleon_board: A ChameleonBoard object.
|
|
|
|
@returns: A string for bluetooth MAC address of bluetooth module on the
|
|
audio board.
|
|
|
|
@raises: ChameleonInfoError if bluetooth MAC address of this Chameleon
|
|
board can not be found.
|
|
|
|
"""
|
|
chameleon_mac_address = chameleon_board.get_mac_address().lower()
|
|
if chameleon_mac_address not in _CHAMELEON_BOARD_INFO:
|
|
raise ChameleonInfoError(
|
|
'Chameleon info not found for %s' % chameleon_mac_address)
|
|
board_info = _CHAMELEON_BOARD_INFO[chameleon_mac_address]
|
|
logging.debug('Chameleon board info: %r', board_info)
|
|
return board_info.bluetooth_mac_address
|