// Copyright 2019 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.

syntax = "proto3";

package prototype;

option go_package = "go.chromium.org/chromiumos/infra/proto/go/prototype";

import "prototype/common.proto";
import "prototype/partner.proto";

import "google/protobuf/descriptor.proto";

message ComponentId {
  string value = 1;
}

message Component {
  ComponentId id = 1;

  oneof type {
    Soc soc = 2;
    Memory memory = 3;
    Bluetooth bluetooth = 4;
    Camera camera = 5;
    Touchscreen touchscreen = 6;
  }

  message Soc {
    enum Architecture {
      ARCHITECTURE_UNDEFINED = 0;
      X86 = 1;
      X86_64 = 2;
      ARM = 3;
      ARM64 = 4;
    }

    extend google.protobuf.EnumValueOptions {
      Architecture arch = 1914503;
    }

    enum Family {
      FAMILY_UNDEFINED = 0;
      RK3399 = 1 [(arch) = ARM64];
      GEMINI_LAKE = 2 [(arch) = X86_64];
    }

    Family family = 1;
    string model = 2;
    int32 cores = 3;
  }

  message Memory {
    enum Type {
      TYPE_UNDEFINED = 0;
      DDR = 1;
      DDR2 = 2;
      DDR3 = 3;
      DDR4 = 4;
      LP_DDR3 = 5;
      LP_DDR4 = 6;
    }

    Type type = 1;
    int32 speed_mhz = 2;
    ByteSize size = 3;
    string part_number = 4;
    PartnerId manufacturer_id = 5;
  }

  message Bluetooth {
    UsbDeviceId usb_device_id = 1;
  }

  message Camera {
    enum Feature {
      FEATURE_UNKNOWN = 0;
      ACTIVITY_LED = 1;
    }
    enum ClockType {
      CLOCK_TYPE_UNDEFINED = 0;
      MONOTONIC = 1;
      BOOTTIME = 2;
    }

    repeated Feature features = 1;
    ClockType clock_type = 2;
  }

  message Touchscreen {
    string vendor_id = 1;
    string product_id = 2;
    string fw_version = 3;
    string fw_path = 4;
  }
}

message ComponentList {
  repeated Component value = 1;
}
