• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2015 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5
6"""This module provides the information of Chameleon board."""
7
8
9import collections
10import logging
11
12
13# Mapping from Chameleon MAC address to other information including
14# bluetooth MAC address on audio board.
15ChameleonInfo = collections.namedtuple(
16        'ChameleonInfo', ['bluetooth_mac_address'])
17
18_CHAMELEON_BOARD_INFO = {
19        '94:eb:2c:00:00:fb': ChameleonInfo('00:1F:84:01:03:68'),
20        '94:eb:2c:00:00:f9': ChameleonInfo('00:1F:84:01:03:73'),
21        '94:eb:2c:00:01:25': ChameleonInfo('00:1F:84:01:03:4F'),
22        '94:eb:2c:00:01:27': ChameleonInfo('00:1F:84:01:03:5B'),
23        '94:eb:2c:00:01:28': ChameleonInfo('00:1F:84:01:03:46'),
24        '94:eb:2c:00:01:29': ChameleonInfo('00:1F:84:01:03:26'),
25        '94:eb:2c:00:01:2b': ChameleonInfo('00:1F:84:01:03:5E'),
26        '94:eb:2c:00:01:2d': ChameleonInfo('00:1F:84:01:03:B6'),
27        '94:eb:2c:00:01:30': ChameleonInfo('00:1F:84:01:03:2F'),
28        '94:eb:2c:00:01:3a': ChameleonInfo('00:1F:84:01:03:42'),
29        '94:eb:2c:00:01:3b': ChameleonInfo('00:1F:84:01:03:44'),
30        '94:eb:2c:00:01:3c': ChameleonInfo('00:1F:84:01:03:62'),
31        '94:eb:2c:00:01:3d': ChameleonInfo('00:1F:84:01:03:59'),
32        '94:eb:2c:00:01:3e': ChameleonInfo('00:1F:84:01:03:74'),
33        '94:eb:2c:00:01:3f': ChameleonInfo('00:1F:84:01:03:8C'),
34        '94:eb:2c:00:01:41': ChameleonInfo('00:1F:84:01:03:B3'),
35        '94:eb:2c:10:06:65': ChameleonInfo('00:1F:84:01:03:6A'),
36        '94:eb:2c:10:06:66': ChameleonInfo('00:1F:84:01:03:21'),
37        '94:eb:2c:10:06:67': ChameleonInfo('00:1F:84:01:03:38'),
38        '94:eb:2c:10:06:68': ChameleonInfo('00:1F:84:01:03:52'),
39        '94:eb:2c:10:06:6c': ChameleonInfo('00:1F:84:01:03:2E'),
40        '94:eb:2c:10:06:6d': ChameleonInfo('00:1F:84:01:03:84'),
41        '94:eb:2c:10:06:6e': ChameleonInfo('00:1F:84:01:03:98'),
42        '94:eb:2c:10:06:72': ChameleonInfo('00:1F:84:01:03:61'),
43        '94:eb:2c:10:06:73': ChameleonInfo('00:1F:84:01:03:2C'),
44        '94:eb:2c:10:06:76': ChameleonInfo('00:1F:84:01:03:83'),
45        '94:eb:2c:10:06:74': ChameleonInfo('00:1F:84:01:03:61'),
46        '94:eb:2c:10:06:7a': ChameleonInfo('00:1F:84:01:03:1C'),
47        '94:eb:2c:10:06:7b': ChameleonInfo('00:1F:84:01:03:A7'),
48        '94:eb:2c:10:06:7c': ChameleonInfo('00:1F:84:01:03:4B'),
49        '94:eb:2c:10:06:7d': ChameleonInfo('00:1F:84:01:03:78'),
50        '94:eb:2c:10:06:7e': ChameleonInfo('00:1F:84:01:03:7B'),
51        '94:eb:2c:10:06:7f': ChameleonInfo('00:1F:84:01:03:36'),
52        '94:eb:2c:00:01:26': ChameleonInfo('00:1F:84:01:03:56'),
53        '94:eb:2c:00:01:17': ChameleonInfo('00:1F:84:01:03:76'),
54        '94:eb:2c:00:01:31': ChameleonInfo('00:1F:84:01:03:20'),
55        '94:eb:2c:00:01:18': ChameleonInfo('00:1F:84:01:03:A1'),
56        '94:eb:2c:10:06:84': ChameleonInfo('00:1F:84:01:03:32'),
57}
58
59class ChameleonInfoError(Exception):
60    """Error in chameleon_info."""
61    pass
62
63
64def get_bluetooth_mac_address(chameleon_board):
65    """Gets bluetooth MAC address of a ChameleonBoard.
66
67    @param chameleon_board: A ChameleonBoard object.
68
69    @returns: A string for bluetooth MAC address of bluetooth module on the
70              audio board.
71
72    @raises: ChameleonInfoError if bluetooth MAC address of this Chameleon
73             board can not be found.
74
75    """
76    chameleon_mac_address = chameleon_board.get_mac_address().lower()
77    if chameleon_mac_address not in _CHAMELEON_BOARD_INFO:
78        raise ChameleonInfoError(
79                'Chameleon info not found for %s' % chameleon_mac_address)
80    board_info = _CHAMELEON_BOARD_INFO[chameleon_mac_address]
81    logging.debug('Chameleon board info: %r', board_info)
82    return board_info.bluetooth_mac_address
83