| # Copyright 2014 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. |
| |
| |
| """Provides the EstablishedTimings class with methods for parsing info. |
| |
| EstablishedTimings information is found in bytes 23h-25h of the base EDID. |
| """ |
| |
| import tools |
| |
| |
| _timings = [ |
| [0x800000, '720x400 @ 70 Hz'], |
| [0x400000, '720x400 @ 88 Hz'], |
| [0x200000, '640x480 @ 60 Hz'], |
| [0x100000, '640x480 @ 67 Hz'], |
| [0x80000, '640x480 @ 72 Hz'], |
| [0x40000, '640x480 @ 75 Hz'], |
| [0x20000, '800x600 @ 56 Hz'], |
| [0x10000, '800x600 @ 60 Hz'], |
| [0x8000, '800x600 @ 72 Hz'], |
| [0x4000, '800x600 @ 75 Hz'], |
| [0x2000, '832x624 @ 75 Hz'], |
| [0x1000, '1024x768 @ 87 Hz, interlaced (1024x768i)'], |
| [0x800, '1024x768 @ 60 Hz'], |
| [0x400, '1024x768 @ 72 Hz'], |
| [0x200, '1024x768 @ 75 Hz'], |
| [0x100, '1280x1024 @ 75 Hz'], |
| [0x80, '1152x870 @ 75 Hz (Apple Macintosh II)'], |
| [0x40, 'Manufacturer specific display mode 1'], |
| [0x20, 'Manufacturer specific display mode 2'], |
| [0x10, 'Manufacturer specific display mode 3'], |
| [0x8, 'Manufacturer specific display mode 4'], |
| [0x4, 'Manufacturer specific display mode 5'], |
| [0x2, 'Manufacturer specific display mode 6'], |
| [0x1, 'Manufacturer specific display mode 7'] |
| ] |
| |
| |
| class EstablishedTimings(object): |
| """Identifies and returns a list of supported Established Timings.""" |
| |
| def __init__(self, edid): |
| """Creates an EstablishedTimings object. |
| |
| Args: |
| edid: The EDID being analyzed. |
| """ |
| self._edid = edid |
| |
| @property |
| def supported_timings(self): |
| """Creates the list of supported timings. |
| |
| Returns: |
| The dict of strings and bools indicating supported timings. |
| """ |
| # Bytes 35, 36, 37 |
| timing_byte = ((self._edid[0x23] << 16) + (self._edid[0x24] << 8) |
| + (self._edid[0x25])) |
| return tools.DictFilter(_timings, timing_byte) |