// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SRC_GRAPHICS_DISPLAY_LIB_EDID_VALUES_EDID_VALUES_H_
#define SRC_GRAPHICS_DISPLAY_LIB_EDID_VALUES_EDID_VALUES_H_

#include <lib/stdcompat/span.h>

#include <cstdint>

namespace edid {

// This file store the real EDID / E-EDID values of display devices that tests
// can use to verify EDID reading and parsing procedures.

// EDID value of HP ZR30w monitor.
constexpr uint8_t kHpZr30wEdidArray[] = {
    0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x22, 0xf0, 0x6c, 0x28, 0x01, 0x01, 0x01, 0x01,
    0x1e, 0x15, 0x01, 0x04, 0xb5, 0x40, 0x28, 0x78, 0xe2, 0x8d, 0x85, 0xad, 0x4f, 0x35, 0xb1, 0x25,
    0x0e, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xe2, 0x68, 0x00, 0xa0, 0xa0, 0x40, 0x2e, 0x60, 0x30, 0x20,
    0x36, 0x00, 0x81, 0x90, 0x21, 0x00, 0x00, 0x1a, 0xbc, 0x1b, 0x00, 0xa0, 0x50, 0x20, 0x17, 0x30,
    0x30, 0x20, 0x36, 0x00, 0x81, 0x90, 0x21, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x48,
    0x50, 0x20, 0x5a, 0x52, 0x33, 0x30, 0x77, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xff,
    0x00, 0x43, 0x4e, 0x34, 0x31, 0x33, 0x30, 0x31, 0x30, 0x59, 0x48, 0x0a, 0x20, 0x20, 0x00, 0x40};

constexpr cpp20::span<const uint8_t> kHpZr30wEdid(edid::kHpZr30wEdidArray);

// EDID value of Dell P2719h monitor.
constexpr uint8_t kDellP2719hEdidArray[] = {
    0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x10, 0xac, 0xb3, 0x41, 0x4c, 0x4e, 0x36, 0x42,
    0x27, 0x1f, 0x01, 0x04, 0xb5, 0x3c, 0x22, 0x78, 0x3e, 0xee, 0x95, 0xa3, 0x54, 0x4c, 0x99, 0x26,
    0x0f, 0x50, 0x54, 0xa5, 0x4b, 0x00, 0xe1, 0xc0, 0xd1, 0x00, 0xd1, 0xc0, 0xb3, 0x00, 0xa9, 0x40,
    0x81, 0x80, 0x81, 0x00, 0x71, 0x4f, 0x4d, 0xd0, 0x00, 0xa0, 0xf0, 0x70, 0x3e, 0x80, 0x30, 0x20,
    0x35, 0x00, 0x55, 0x50, 0x21, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xff, 0x00, 0x44, 0x59, 0x57,
    0x42, 0x31, 0x39, 0x33, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x18,
    0x4b, 0x1e, 0x8c, 0x36, 0x01, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc,
    0x00, 0x44, 0x45, 0x4c, 0x4c, 0x20, 0x55, 0x32, 0x37, 0x32, 0x30, 0x51, 0x0a, 0x20, 0x01, 0x87,
    0x02, 0x03, 0x19, 0xf1, 0x4c, 0x10, 0x1f, 0x20, 0x05, 0x14, 0x04, 0x13, 0x12, 0x11, 0x03, 0x02,
    0x01, 0x23, 0x09, 0x7f, 0x07, 0x83, 0x01, 0x00, 0x00, 0xa3, 0x66, 0x00, 0xa0, 0xf0, 0x70, 0x3e,
    0x80, 0x30, 0x20, 0x35, 0x00, 0x55, 0x50, 0x21, 0x00, 0x00, 0x1a, 0x56, 0x5e, 0x00, 0xa0, 0xa0,
    0xa0, 0x29, 0x50, 0x30, 0x20, 0x35, 0x00, 0x55, 0x50, 0x21, 0x00, 0x00, 0x1a, 0x11, 0x44, 0x00,
    0xa0, 0x80, 0x00, 0x25, 0x50, 0x30, 0x20, 0x36, 0x00, 0x55, 0x50, 0x21, 0x00, 0x00, 0x1a, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9,
};

constexpr cpp20::span<const uint8_t> kDellP2719hEdid(edid::kDellP2719hEdidArray);

// E-EDID value of Samsung CRG9 49" monitor.
constexpr uint8_t kSamsungCrg9EdidArray[] = {
    0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x4c, 0x2d, 0x52, 0x70, 0x4d, 0x38, 0x58, 0x43,
    0xff, 0xff, 0x01, 0x03, 0x80, 0x77, 0x22, 0x78, 0x2a, 0xc7, 0x25, 0xb1, 0x4b, 0x46, 0xa8, 0x26,
    0x0e, 0x50, 0x54, 0xbf, 0xef, 0x80, 0x71, 0x4f, 0x81, 0x00, 0x81, 0xc0, 0x81, 0x80, 0xa9, 0xc0,
    0xb3, 0x00, 0x95, 0x00, 0xd1, 0xc0, 0x1a, 0x68, 0x00, 0xa0, 0xf0, 0x38, 0x1f, 0x40, 0x30, 0x20,
    0x3a, 0x00, 0xa9, 0x50, 0x41, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x32, 0x4b, 0x1e,
    0xb7, 0x3c, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x4c,
    0x43, 0x34, 0x39, 0x47, 0x39, 0x35, 0x54, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xff,
    0x00, 0x48, 0x34, 0x5a, 0x52, 0x37, 0x30, 0x31, 0x32, 0x37, 0x31, 0x0a, 0x20, 0x20, 0x03, 0x40,
    0xf0, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e,
    0x02, 0x03, 0x3d, 0xf1, 0x49, 0x90, 0x61, 0x60, 0x1f, 0x04, 0x13, 0x12, 0x03, 0x5a, 0x23, 0x09,
    0x07, 0x07, 0x83, 0x01, 0x00, 0x00, 0xe2, 0x00, 0x4f, 0xe3, 0x05, 0xc0, 0x00, 0x67, 0x03, 0x0c,
    0x00, 0x10, 0x00, 0xb8, 0x3c, 0x67, 0xd8, 0x5d, 0xc4, 0x01, 0x78, 0x80, 0x03, 0xe6, 0x06, 0x05,
    0x01, 0x8b, 0x73, 0x12, 0xe2, 0x0f, 0x06, 0xe5, 0x01, 0x8b, 0x84, 0x90, 0x01, 0x56, 0x5e, 0x00,
    0xa0, 0xa0, 0xa0, 0x29, 0x50, 0x30, 0x20, 0x35, 0x00, 0xa9, 0x50, 0x41, 0x00, 0x00, 0x1a, 0x58,
    0x4d, 0x00, 0xb8, 0xa1, 0x38, 0x14, 0x40, 0xf8, 0x2c, 0x45, 0x00, 0xa9, 0x50, 0x41, 0x00, 0x00,
    0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71,
    0x70, 0x12, 0x79, 0x00, 0x00, 0x03, 0x01, 0x28, 0x33, 0xb7, 0x00, 0x88, 0xff, 0x13, 0x9f, 0x00,
    0x2f, 0x80, 0x1f, 0x00, 0x9f, 0x05, 0x28, 0x00, 0x02, 0x00, 0x09, 0x00, 0x6e, 0xc2, 0x00, 0x08,
    0xff, 0x09, 0x9f, 0x00, 0x2f, 0x80, 0x1f, 0x00, 0x9f, 0x05, 0x54, 0x00, 0x02, 0x00, 0x04, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x90,
};

constexpr cpp20::span<const uint8_t> kSamsungCrg9Edid(edid::kSamsungCrg9EdidArray);

}  // namespace edid

#endif  // SRC_GRAPHICS_DISPLAY_LIB_EDID_VALUES_EDID_VALUES_H_
