Home | History | Annotate | Download | only in chameleon
      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 
      9 import collections
     10 import logging
     11 
     12 
     13 # Mapping from Chameleon MAC address to other information including
     14 # bluetooth MAC address on audio board.
     15 ChameleonInfo = 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 
     59 class ChameleonInfoError(Exception):
     60     """Error in chameleon_info."""
     61     pass
     62 
     63 
     64 def 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