blob: 1f2e789d13fcf939516bb705d173a934125fc031 [file] [log] [blame]
Dominik Laskowskie9ef7c42018-03-12 19:34:30 -07001/*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#include <array>
20#include <cstdint>
21#include <optional>
Dominik Laskowski075d3172018-05-24 15:50:06 -070022#include <string>
Dominik Laskowskie9ef7c42018-03-12 19:34:30 -070023#include <string_view>
24#include <vector>
25
26namespace android {
27
28using DisplayId = uint64_t;
29using DisplayIdentificationData = std::vector<uint8_t>;
30
Dominik Laskowski075d3172018-05-24 15:50:06 -070031struct DisplayIdentificationInfo {
32 DisplayId id;
33 std::string name;
34};
35
Dominik Laskowskie9ef7c42018-03-12 19:34:30 -070036// NUL-terminated plug and play ID.
37using PnpId = std::array<char, 4>;
38
39struct Edid {
40 uint16_t manufacturerId;
41 PnpId pnpId;
42 std::string_view displayName;
43};
44
45bool isEdid(const DisplayIdentificationData&);
46std::optional<Edid> parseEdid(const DisplayIdentificationData&);
47std::optional<PnpId> getPnpId(uint16_t manufacturerId);
48
Dominik Laskowski075d3172018-05-24 15:50:06 -070049std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData(
50 uint8_t port, const DisplayIdentificationData&);
51
52DisplayId getFallbackDisplayId(uint8_t port);
53DisplayId getVirtualDisplayId(uint32_t id);
Dominik Laskowskie9ef7c42018-03-12 19:34:30 -070054
55} // namespace android