// Copyright 2020 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 chromiumos.config.api;

import "config/api/component_id.proto";
import "config/api/partner_id.proto";

option go_package = "go.chromium.org/chromiumos/config/go/api";

message Component {
  // Globally unique component identifier.
  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;
    }

    message Family {
      Architecture arch = 1;
      // Common name (human friendly) for the family
      string name = 2;
    }

    Family family = 1;
    // Unique model name returned from cpu_id instruction
    string model = 2;
    // Number of cores present on the SoC model
    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;
    int32 size_mb = 3;
    string part_number = 4;
    PartnerId manufacturer_id = 5;
  }

  message Bluetooth {
    // 4-digit hex
    string vendor_id = 1;
    // 4-digit hex
    string product_id = 2;
    // 4-digit hex
    string bcd_device = 3;
  }

  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 {
    // 4-digit hex
    string vendor_id = 1;
    // 4-digit hex
    string product_id = 2;
    // 4-digit hex
    string fw_version = 3;
    // Relative path to the touch firmware binary
    // that will be installed when a given
    // component vendor/product is detected.
    string fw_path = 4;
  }
}

message ComponentList {
  repeated Component value = 1;
}
