xref: /aosp_15_r20/external/autotest/client/cros/chameleon/chameleon_info.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li# Copyright 2015 The Chromium OS Authors. All rights reserved.
2*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be
3*9c5db199SXin Li# found in the LICENSE file.
4*9c5db199SXin Li
5*9c5db199SXin Li
6*9c5db199SXin Li"""This module provides the information of Chameleon board."""
7*9c5db199SXin Li
8*9c5db199SXin Li
9*9c5db199SXin Liimport collections
10*9c5db199SXin Liimport logging
11*9c5db199SXin Li
12*9c5db199SXin Li
13*9c5db199SXin Li# Mapping from Chameleon MAC address to other information including
14*9c5db199SXin Li# bluetooth MAC address on audio board.
15*9c5db199SXin LiChameleonInfo = collections.namedtuple(
16*9c5db199SXin Li        'ChameleonInfo', ['bluetooth_mac_address'])
17*9c5db199SXin Li
18*9c5db199SXin Li_CHAMELEON_BOARD_INFO = {
19*9c5db199SXin Li        '94:eb:2c:00:00:fb': ChameleonInfo('00:1F:84:01:03:68'),
20*9c5db199SXin Li        '94:eb:2c:00:00:f9': ChameleonInfo('00:1F:84:01:03:73'),
21*9c5db199SXin Li        '94:eb:2c:00:01:25': ChameleonInfo('00:1F:84:01:03:4F'),
22*9c5db199SXin Li        '94:eb:2c:00:01:27': ChameleonInfo('00:1F:84:01:03:5B'),
23*9c5db199SXin Li        '94:eb:2c:00:01:28': ChameleonInfo('00:1F:84:01:03:46'),
24*9c5db199SXin Li        '94:eb:2c:00:01:29': ChameleonInfo('00:1F:84:01:03:26'),
25*9c5db199SXin Li        '94:eb:2c:00:01:2b': ChameleonInfo('00:1F:84:01:03:5E'),
26*9c5db199SXin Li        '94:eb:2c:00:01:2d': ChameleonInfo('00:1F:84:01:03:B6'),
27*9c5db199SXin Li        '94:eb:2c:00:01:30': ChameleonInfo('00:1F:84:01:03:2F'),
28*9c5db199SXin Li        '94:eb:2c:00:01:3a': ChameleonInfo('00:1F:84:01:03:42'),
29*9c5db199SXin Li        '94:eb:2c:00:01:3b': ChameleonInfo('00:1F:84:01:03:44'),
30*9c5db199SXin Li        '94:eb:2c:00:01:3d': ChameleonInfo('00:1F:84:01:03:59'),
31*9c5db199SXin Li        '94:eb:2c:00:01:3e': ChameleonInfo('00:1F:84:01:03:74'),
32*9c5db199SXin Li        '94:eb:2c:00:01:3f': ChameleonInfo('00:1F:84:01:03:8C'),
33*9c5db199SXin Li        '94:eb:2c:00:01:41': ChameleonInfo('00:1F:84:01:03:B3'),
34*9c5db199SXin Li        '94:eb:2c:10:06:65': ChameleonInfo('00:1F:84:01:03:6A'),
35*9c5db199SXin Li        '94:eb:2c:10:06:66': ChameleonInfo('00:1F:84:01:03:21'),
36*9c5db199SXin Li        '94:eb:2c:10:06:67': ChameleonInfo('00:1F:84:01:03:38'),
37*9c5db199SXin Li        '94:eb:2c:10:06:68': ChameleonInfo('00:1F:84:01:03:52'),
38*9c5db199SXin Li        '94:eb:2c:10:06:6c': ChameleonInfo('00:1F:84:01:03:2E'),
39*9c5db199SXin Li        '94:eb:2c:10:06:6d': ChameleonInfo('00:1F:84:01:03:84'),
40*9c5db199SXin Li        '94:eb:2c:10:06:6e': ChameleonInfo('00:1F:84:01:03:98'),
41*9c5db199SXin Li        '94:eb:2c:10:06:72': ChameleonInfo('00:1F:84:01:03:61'),
42*9c5db199SXin Li        '94:eb:2c:10:06:73': ChameleonInfo('00:1F:84:01:03:2C'),
43*9c5db199SXin Li        '94:eb:2c:10:06:76': ChameleonInfo('00:1F:84:01:03:83'),
44*9c5db199SXin Li        '94:eb:2c:10:06:7a': ChameleonInfo('00:1F:84:01:03:1C'),
45*9c5db199SXin Li        '94:eb:2c:10:06:7b': ChameleonInfo('00:1F:84:01:03:A7'),
46*9c5db199SXin Li        '94:eb:2c:10:06:7c': ChameleonInfo('00:1F:84:01:03:4B'),
47*9c5db199SXin Li        '94:eb:2c:10:06:7d': ChameleonInfo('00:1F:81:88:88:9D'),
48*9c5db199SXin Li        '94:eb:2c:10:06:7e': ChameleonInfo('00:1F:81:88:88:91'),
49*9c5db199SXin Li        '94:eb:2c:10:06:7f': ChameleonInfo('00:1F:84:01:03:36'),
50*9c5db199SXin Li        '94:eb:2c:00:01:26': ChameleonInfo('00:1F:84:01:03:56'),
51*9c5db199SXin Li        '94:eb:2c:00:01:17': ChameleonInfo('00:1F:84:01:03:76'),
52*9c5db199SXin Li        '94:eb:2c:00:01:31': ChameleonInfo('00:1F:84:01:03:20'),
53*9c5db199SXin Li        '94:eb:2c:00:01:18': ChameleonInfo('00:1F:84:01:03:A1'),
54*9c5db199SXin Li        '94:eb:2c:10:06:84': ChameleonInfo('00:1F:84:01:03:32'),
55*9c5db199SXin Li
56*9c5db199SXin Li        # TODO (rjahagir@): Verify the addresses listed above as
57*9c5db199SXin Li        # as many were reworked/relocated. Some are duplicates.
58*9c5db199SXin Li        # Listed below are added as of 4/13/17.
59*9c5db199SXin Li        '94:eb:2c:10:06:74': ChameleonInfo('00:1F:84:01:03:88'),
60*9c5db199SXin Li        '94:eb:2c:10:06:a9': ChameleonInfo('00:1F:84:01:03:6C'),
61*9c5db199SXin Li        '94:eb:2c:10:06:89': ChameleonInfo('00:1F:84:01:03:40'),
62*9c5db199SXin Li        '94:eb:2c:10:06:a3': ChameleonInfo('00:1F:84:01:03:24'),
63*9c5db199SXin Li        '94:eb:2c:10:06:99': ChameleonInfo('00:1F:84:01:03:93'),
64*9c5db199SXin Li        '94:eb:2c:10:06:9a': ChameleonInfo('00:1F:84:01:03:B1'),
65*9c5db199SXin Li        '94:eb:2c:10:06:90': ChameleonInfo('00:1F:84:01:03:6E'),
66*9c5db199SXin Li        '94:eb:2c:00:01:00': ChameleonInfo('00:1F:84:01:03:54'),
67*9c5db199SXin Li        '94:eb:2c:00:01:01': ChameleonInfo('00:1F:84:01:03:3E'),
68*9c5db199SXin Li        '94:eb:2c:10:06:9e': ChameleonInfo('00:1F:84:01:03:97'),
69*9c5db199SXin Li        '94:eb:2c:10:06:9f': ChameleonInfo('00:1F:84:01:03:49'),
70*9c5db199SXin Li
71*9c5db199SXin Li        # Listed below added as of 5/12/17.
72*9c5db199SXin Li        '94:eb:2c:10:06:98': ChameleonInfo('00:1F:84:01:03:65'),
73*9c5db199SXin Li        '94:eb:2c:00:01:19': ChameleonInfo('00:1F:84:01:03:91'),
74*9c5db199SXin Li        '94:eb:2c:10:06:8a': ChameleonInfo('00:1F:84:01:03:AB'),
75*9c5db199SXin Li        '94:eb:2c:00:01:1d': ChameleonInfo('00:1F:84:01:03:A6'),
76*9c5db199SXin Li        '94:eb:2c:10:06:95': ChameleonInfo('00:1F:84:01:03:66'),
77*9c5db199SXin Li
78*9c5db199SXin Li        # Lars device changed as of 10/17/17.
79*9c5db199SXin Li        '94:eb:2c:00:01:1a': ChameleonInfo('00:1F:84:01:03:20')
80*9c5db199SXin Li}
81*9c5db199SXin Li
82*9c5db199SXin Liclass ChameleonInfoError(Exception):
83*9c5db199SXin Li    """Error in chameleon_info."""
84*9c5db199SXin Li    pass
85*9c5db199SXin Li
86*9c5db199SXin Li
87*9c5db199SXin Lidef get_bluetooth_mac_address(chameleon_board):
88*9c5db199SXin Li    """Gets bluetooth MAC address of a ChameleonBoard.
89*9c5db199SXin Li
90*9c5db199SXin Li    @param chameleon_board: A ChameleonBoard object.
91*9c5db199SXin Li
92*9c5db199SXin Li    @returns: A string for bluetooth MAC address of bluetooth module on the
93*9c5db199SXin Li              audio board.
94*9c5db199SXin Li
95*9c5db199SXin Li    @raises: ChameleonInfoError if bluetooth MAC address of this Chameleon
96*9c5db199SXin Li             board can not be found.
97*9c5db199SXin Li
98*9c5db199SXin Li    """
99*9c5db199SXin Li    chameleon_mac_address = chameleon_board.get_mac_address().lower()
100*9c5db199SXin Li    if chameleon_mac_address not in _CHAMELEON_BOARD_INFO:
101*9c5db199SXin Li        raise ChameleonInfoError(
102*9c5db199SXin Li                'Chameleon info not found for %s' % chameleon_mac_address)
103*9c5db199SXin Li    board_info = _CHAMELEON_BOARD_INFO[chameleon_mac_address]
104*9c5db199SXin Li    logging.debug('Chameleon board info: %r', board_info)
105*9c5db199SXin Li    return board_info.bluetooth_mac_address
106