Revert "Reland "Delete duplicate protobuf definitions""
This reverts commit c7dfa5cacd9307c76c7272e4b6e77c3d75666b34.
Reason for revert: Causes chromite-CQ failures, because lib/replication_lib_unittest fails (deleted proto).
Original change's description:
> Reland "Delete duplicate protobuf definitions"
>
> This is a reland of f1cba419431ffc462990f35bc234c4e9d1e384a5
>
> Original change's description:
> > Delete duplicate protobuf definitions
> >
> > These definitions now live in the chromiumos/config repo
> >
> > BUG=chromium:1054850
> > TEST=./generate.sh
> >
> > Change-Id: If0db447160e2a2fcbee0824d5394b286d9dcf152
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/proto/+/2076686
> > Tested-by: Prathmesh Prabhu <pprabhu@chromium.org>
> > Auto-Submit: Prathmesh Prabhu <pprabhu@chromium.org>
> > Reviewed-by: David Burger <dburger@chromium.org>
> > Commit-Queue: David Burger <dburger@chromium.org>
>
> Bug: chromium:1054850
> Change-Id: I1c4aeb2ab41a7cdf2b9a090858af68b0c06de691
> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/proto/+/2085952
> Reviewed-by: LaMont Jones <lamontjones@chromium.org>
> Commit-Queue: LaMont Jones <lamontjones@chromium.org>
> Tested-by: LaMont Jones <lamontjones@chromium.org>
Bug: chromium:1054850
Change-Id: I5569ba54ed93f525ea90e413a0814929757f578b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/proto/+/2101704
Reviewed-by: LaMont Jones <lamontjones@chromium.org>
Commit-Queue: LaMont Jones <lamontjones@chromium.org>
Tested-by: LaMont Jones <lamontjones@chromium.org>
diff --git a/go/config/api/component.pb.go b/go/config/api/component.pb.go
new file mode 100644
index 0000000..f979ff2
--- /dev/null
+++ b/go/config/api/component.pb.go
@@ -0,0 +1,746 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: config/api/component.proto
+
+package api
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type Component_Soc_Architecture int32
+
+const (
+ Component_Soc_ARCHITECTURE_UNDEFINED Component_Soc_Architecture = 0
+ Component_Soc_X86 Component_Soc_Architecture = 1
+ Component_Soc_X86_64 Component_Soc_Architecture = 2
+ Component_Soc_ARM Component_Soc_Architecture = 3
+ Component_Soc_ARM64 Component_Soc_Architecture = 4
+)
+
+var Component_Soc_Architecture_name = map[int32]string{
+ 0: "ARCHITECTURE_UNDEFINED",
+ 1: "X86",
+ 2: "X86_64",
+ 3: "ARM",
+ 4: "ARM64",
+}
+
+var Component_Soc_Architecture_value = map[string]int32{
+ "ARCHITECTURE_UNDEFINED": 0,
+ "X86": 1,
+ "X86_64": 2,
+ "ARM": 3,
+ "ARM64": 4,
+}
+
+func (x Component_Soc_Architecture) String() string {
+ return proto.EnumName(Component_Soc_Architecture_name, int32(x))
+}
+
+func (Component_Soc_Architecture) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{0, 0, 0}
+}
+
+type Component_Memory_Type int32
+
+const (
+ Component_Memory_TYPE_UNDEFINED Component_Memory_Type = 0
+ Component_Memory_DDR Component_Memory_Type = 1
+ Component_Memory_DDR2 Component_Memory_Type = 2
+ Component_Memory_DDR3 Component_Memory_Type = 3
+ Component_Memory_DDR4 Component_Memory_Type = 4
+ Component_Memory_LP_DDR3 Component_Memory_Type = 5
+ Component_Memory_LP_DDR4 Component_Memory_Type = 6
+)
+
+var Component_Memory_Type_name = map[int32]string{
+ 0: "TYPE_UNDEFINED",
+ 1: "DDR",
+ 2: "DDR2",
+ 3: "DDR3",
+ 4: "DDR4",
+ 5: "LP_DDR3",
+ 6: "LP_DDR4",
+}
+
+var Component_Memory_Type_value = map[string]int32{
+ "TYPE_UNDEFINED": 0,
+ "DDR": 1,
+ "DDR2": 2,
+ "DDR3": 3,
+ "DDR4": 4,
+ "LP_DDR3": 5,
+ "LP_DDR4": 6,
+}
+
+func (x Component_Memory_Type) String() string {
+ return proto.EnumName(Component_Memory_Type_name, int32(x))
+}
+
+func (Component_Memory_Type) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{0, 1, 0}
+}
+
+type Component_Camera_Feature int32
+
+const (
+ Component_Camera_FEATURE_UNKNOWN Component_Camera_Feature = 0
+ Component_Camera_ACTIVITY_LED Component_Camera_Feature = 1
+)
+
+var Component_Camera_Feature_name = map[int32]string{
+ 0: "FEATURE_UNKNOWN",
+ 1: "ACTIVITY_LED",
+}
+
+var Component_Camera_Feature_value = map[string]int32{
+ "FEATURE_UNKNOWN": 0,
+ "ACTIVITY_LED": 1,
+}
+
+func (x Component_Camera_Feature) String() string {
+ return proto.EnumName(Component_Camera_Feature_name, int32(x))
+}
+
+func (Component_Camera_Feature) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{0, 3, 0}
+}
+
+type Component_Camera_ClockType int32
+
+const (
+ Component_Camera_CLOCK_TYPE_UNDEFINED Component_Camera_ClockType = 0
+ Component_Camera_MONOTONIC Component_Camera_ClockType = 1
+ Component_Camera_BOOTTIME Component_Camera_ClockType = 2
+)
+
+var Component_Camera_ClockType_name = map[int32]string{
+ 0: "CLOCK_TYPE_UNDEFINED",
+ 1: "MONOTONIC",
+ 2: "BOOTTIME",
+}
+
+var Component_Camera_ClockType_value = map[string]int32{
+ "CLOCK_TYPE_UNDEFINED": 0,
+ "MONOTONIC": 1,
+ "BOOTTIME": 2,
+}
+
+func (x Component_Camera_ClockType) String() string {
+ return proto.EnumName(Component_Camera_ClockType_name, int32(x))
+}
+
+func (Component_Camera_ClockType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{0, 3, 1}
+}
+
+type Component struct {
+ // Globally unique component identifier.
+ Id *ComponentId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Types that are valid to be assigned to Type:
+ // *Component_Soc_
+ // *Component_Memory_
+ // *Component_Bluetooth_
+ // *Component_Camera_
+ // *Component_Touchscreen_
+ Type isComponent_Type `protobuf_oneof:"type"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Component) Reset() { *m = Component{} }
+func (m *Component) String() string { return proto.CompactTextString(m) }
+func (*Component) ProtoMessage() {}
+func (*Component) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{0}
+}
+
+func (m *Component) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Component.Unmarshal(m, b)
+}
+func (m *Component) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Component.Marshal(b, m, deterministic)
+}
+func (m *Component) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Component.Merge(m, src)
+}
+func (m *Component) XXX_Size() int {
+ return xxx_messageInfo_Component.Size(m)
+}
+func (m *Component) XXX_DiscardUnknown() {
+ xxx_messageInfo_Component.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Component proto.InternalMessageInfo
+
+func (m *Component) GetId() *ComponentId {
+ if m != nil {
+ return m.Id
+ }
+ return nil
+}
+
+type isComponent_Type interface {
+ isComponent_Type()
+}
+
+type Component_Soc_ struct {
+ Soc *Component_Soc `protobuf:"bytes,2,opt,name=soc,proto3,oneof"`
+}
+
+type Component_Memory_ struct {
+ Memory *Component_Memory `protobuf:"bytes,3,opt,name=memory,proto3,oneof"`
+}
+
+type Component_Bluetooth_ struct {
+ Bluetooth *Component_Bluetooth `protobuf:"bytes,4,opt,name=bluetooth,proto3,oneof"`
+}
+
+type Component_Camera_ struct {
+ Camera *Component_Camera `protobuf:"bytes,5,opt,name=camera,proto3,oneof"`
+}
+
+type Component_Touchscreen_ struct {
+ Touchscreen *Component_Touchscreen `protobuf:"bytes,6,opt,name=touchscreen,proto3,oneof"`
+}
+
+func (*Component_Soc_) isComponent_Type() {}
+
+func (*Component_Memory_) isComponent_Type() {}
+
+func (*Component_Bluetooth_) isComponent_Type() {}
+
+func (*Component_Camera_) isComponent_Type() {}
+
+func (*Component_Touchscreen_) isComponent_Type() {}
+
+func (m *Component) GetType() isComponent_Type {
+ if m != nil {
+ return m.Type
+ }
+ return nil
+}
+
+func (m *Component) GetSoc() *Component_Soc {
+ if x, ok := m.GetType().(*Component_Soc_); ok {
+ return x.Soc
+ }
+ return nil
+}
+
+func (m *Component) GetMemory() *Component_Memory {
+ if x, ok := m.GetType().(*Component_Memory_); ok {
+ return x.Memory
+ }
+ return nil
+}
+
+func (m *Component) GetBluetooth() *Component_Bluetooth {
+ if x, ok := m.GetType().(*Component_Bluetooth_); ok {
+ return x.Bluetooth
+ }
+ return nil
+}
+
+func (m *Component) GetCamera() *Component_Camera {
+ if x, ok := m.GetType().(*Component_Camera_); ok {
+ return x.Camera
+ }
+ return nil
+}
+
+func (m *Component) GetTouchscreen() *Component_Touchscreen {
+ if x, ok := m.GetType().(*Component_Touchscreen_); ok {
+ return x.Touchscreen
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Component) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*Component_Soc_)(nil),
+ (*Component_Memory_)(nil),
+ (*Component_Bluetooth_)(nil),
+ (*Component_Camera_)(nil),
+ (*Component_Touchscreen_)(nil),
+ }
+}
+
+type Component_Soc struct {
+ Family *Component_Soc_Family `protobuf:"bytes,1,opt,name=family,proto3" json:"family,omitempty"`
+ // Unique model name returned from cpu_id instruction
+ Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"`
+ // Number of cores present on the SoC model
+ Cores int32 `protobuf:"varint,3,opt,name=cores,proto3" json:"cores,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Component_Soc) Reset() { *m = Component_Soc{} }
+func (m *Component_Soc) String() string { return proto.CompactTextString(m) }
+func (*Component_Soc) ProtoMessage() {}
+func (*Component_Soc) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{0, 0}
+}
+
+func (m *Component_Soc) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Component_Soc.Unmarshal(m, b)
+}
+func (m *Component_Soc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Component_Soc.Marshal(b, m, deterministic)
+}
+func (m *Component_Soc) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Component_Soc.Merge(m, src)
+}
+func (m *Component_Soc) XXX_Size() int {
+ return xxx_messageInfo_Component_Soc.Size(m)
+}
+func (m *Component_Soc) XXX_DiscardUnknown() {
+ xxx_messageInfo_Component_Soc.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Component_Soc proto.InternalMessageInfo
+
+func (m *Component_Soc) GetFamily() *Component_Soc_Family {
+ if m != nil {
+ return m.Family
+ }
+ return nil
+}
+
+func (m *Component_Soc) GetModel() string {
+ if m != nil {
+ return m.Model
+ }
+ return ""
+}
+
+func (m *Component_Soc) GetCores() int32 {
+ if m != nil {
+ return m.Cores
+ }
+ return 0
+}
+
+type Component_Soc_Family struct {
+ Arch Component_Soc_Architecture `protobuf:"varint,1,opt,name=arch,proto3,enum=chromiumos.config.api.Component_Soc_Architecture" json:"arch,omitempty"`
+ // Common name (human friendly) for the family
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Component_Soc_Family) Reset() { *m = Component_Soc_Family{} }
+func (m *Component_Soc_Family) String() string { return proto.CompactTextString(m) }
+func (*Component_Soc_Family) ProtoMessage() {}
+func (*Component_Soc_Family) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{0, 0, 0}
+}
+
+func (m *Component_Soc_Family) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Component_Soc_Family.Unmarshal(m, b)
+}
+func (m *Component_Soc_Family) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Component_Soc_Family.Marshal(b, m, deterministic)
+}
+func (m *Component_Soc_Family) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Component_Soc_Family.Merge(m, src)
+}
+func (m *Component_Soc_Family) XXX_Size() int {
+ return xxx_messageInfo_Component_Soc_Family.Size(m)
+}
+func (m *Component_Soc_Family) XXX_DiscardUnknown() {
+ xxx_messageInfo_Component_Soc_Family.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Component_Soc_Family proto.InternalMessageInfo
+
+func (m *Component_Soc_Family) GetArch() Component_Soc_Architecture {
+ if m != nil {
+ return m.Arch
+ }
+ return Component_Soc_ARCHITECTURE_UNDEFINED
+}
+
+func (m *Component_Soc_Family) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+type Component_Memory struct {
+ Type Component_Memory_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chromiumos.config.api.Component_Memory_Type" json:"type,omitempty"`
+ SpeedMhz int32 `protobuf:"varint,2,opt,name=speed_mhz,json=speedMhz,proto3" json:"speed_mhz,omitempty"`
+ SizeMb int32 `protobuf:"varint,3,opt,name=size_mb,json=sizeMb,proto3" json:"size_mb,omitempty"`
+ PartNumber string `protobuf:"bytes,4,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"`
+ ManufacturerId *PartnerId `protobuf:"bytes,5,opt,name=manufacturer_id,json=manufacturerId,proto3" json:"manufacturer_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Component_Memory) Reset() { *m = Component_Memory{} }
+func (m *Component_Memory) String() string { return proto.CompactTextString(m) }
+func (*Component_Memory) ProtoMessage() {}
+func (*Component_Memory) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{0, 1}
+}
+
+func (m *Component_Memory) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Component_Memory.Unmarshal(m, b)
+}
+func (m *Component_Memory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Component_Memory.Marshal(b, m, deterministic)
+}
+func (m *Component_Memory) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Component_Memory.Merge(m, src)
+}
+func (m *Component_Memory) XXX_Size() int {
+ return xxx_messageInfo_Component_Memory.Size(m)
+}
+func (m *Component_Memory) XXX_DiscardUnknown() {
+ xxx_messageInfo_Component_Memory.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Component_Memory proto.InternalMessageInfo
+
+func (m *Component_Memory) GetType() Component_Memory_Type {
+ if m != nil {
+ return m.Type
+ }
+ return Component_Memory_TYPE_UNDEFINED
+}
+
+func (m *Component_Memory) GetSpeedMhz() int32 {
+ if m != nil {
+ return m.SpeedMhz
+ }
+ return 0
+}
+
+func (m *Component_Memory) GetSizeMb() int32 {
+ if m != nil {
+ return m.SizeMb
+ }
+ return 0
+}
+
+func (m *Component_Memory) GetPartNumber() string {
+ if m != nil {
+ return m.PartNumber
+ }
+ return ""
+}
+
+func (m *Component_Memory) GetManufacturerId() *PartnerId {
+ if m != nil {
+ return m.ManufacturerId
+ }
+ return nil
+}
+
+type Component_Bluetooth struct {
+ // 4-digit hex
+ VendorId string `protobuf:"bytes,1,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"`
+ // 4-digit hex
+ ProductId string `protobuf:"bytes,2,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"`
+ // 4-digit hex
+ BcdDevice string `protobuf:"bytes,3,opt,name=bcd_device,json=bcdDevice,proto3" json:"bcd_device,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Component_Bluetooth) Reset() { *m = Component_Bluetooth{} }
+func (m *Component_Bluetooth) String() string { return proto.CompactTextString(m) }
+func (*Component_Bluetooth) ProtoMessage() {}
+func (*Component_Bluetooth) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{0, 2}
+}
+
+func (m *Component_Bluetooth) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Component_Bluetooth.Unmarshal(m, b)
+}
+func (m *Component_Bluetooth) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Component_Bluetooth.Marshal(b, m, deterministic)
+}
+func (m *Component_Bluetooth) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Component_Bluetooth.Merge(m, src)
+}
+func (m *Component_Bluetooth) XXX_Size() int {
+ return xxx_messageInfo_Component_Bluetooth.Size(m)
+}
+func (m *Component_Bluetooth) XXX_DiscardUnknown() {
+ xxx_messageInfo_Component_Bluetooth.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Component_Bluetooth proto.InternalMessageInfo
+
+func (m *Component_Bluetooth) GetVendorId() string {
+ if m != nil {
+ return m.VendorId
+ }
+ return ""
+}
+
+func (m *Component_Bluetooth) GetProductId() string {
+ if m != nil {
+ return m.ProductId
+ }
+ return ""
+}
+
+func (m *Component_Bluetooth) GetBcdDevice() string {
+ if m != nil {
+ return m.BcdDevice
+ }
+ return ""
+}
+
+type Component_Camera struct {
+ Features []Component_Camera_Feature `protobuf:"varint,1,rep,packed,name=features,proto3,enum=chromiumos.config.api.Component_Camera_Feature" json:"features,omitempty"`
+ ClockType Component_Camera_ClockType `protobuf:"varint,2,opt,name=clock_type,json=clockType,proto3,enum=chromiumos.config.api.Component_Camera_ClockType" json:"clock_type,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Component_Camera) Reset() { *m = Component_Camera{} }
+func (m *Component_Camera) String() string { return proto.CompactTextString(m) }
+func (*Component_Camera) ProtoMessage() {}
+func (*Component_Camera) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{0, 3}
+}
+
+func (m *Component_Camera) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Component_Camera.Unmarshal(m, b)
+}
+func (m *Component_Camera) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Component_Camera.Marshal(b, m, deterministic)
+}
+func (m *Component_Camera) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Component_Camera.Merge(m, src)
+}
+func (m *Component_Camera) XXX_Size() int {
+ return xxx_messageInfo_Component_Camera.Size(m)
+}
+func (m *Component_Camera) XXX_DiscardUnknown() {
+ xxx_messageInfo_Component_Camera.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Component_Camera proto.InternalMessageInfo
+
+func (m *Component_Camera) GetFeatures() []Component_Camera_Feature {
+ if m != nil {
+ return m.Features
+ }
+ return nil
+}
+
+func (m *Component_Camera) GetClockType() Component_Camera_ClockType {
+ if m != nil {
+ return m.ClockType
+ }
+ return Component_Camera_CLOCK_TYPE_UNDEFINED
+}
+
+type Component_Touchscreen struct {
+ // 4-digit hex
+ VendorId string `protobuf:"bytes,1,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"`
+ // 4-digit hex
+ ProductId string `protobuf:"bytes,2,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"`
+ // 4-digit hex
+ FwVersion string `protobuf:"bytes,3,opt,name=fw_version,json=fwVersion,proto3" json:"fw_version,omitempty"`
+ // Relative path to the touch firmware binary
+ // that will be installed when a given
+ // component vendor/product is detected.
+ FwPath string `protobuf:"bytes,4,opt,name=fw_path,json=fwPath,proto3" json:"fw_path,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Component_Touchscreen) Reset() { *m = Component_Touchscreen{} }
+func (m *Component_Touchscreen) String() string { return proto.CompactTextString(m) }
+func (*Component_Touchscreen) ProtoMessage() {}
+func (*Component_Touchscreen) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{0, 4}
+}
+
+func (m *Component_Touchscreen) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Component_Touchscreen.Unmarshal(m, b)
+}
+func (m *Component_Touchscreen) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Component_Touchscreen.Marshal(b, m, deterministic)
+}
+func (m *Component_Touchscreen) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Component_Touchscreen.Merge(m, src)
+}
+func (m *Component_Touchscreen) XXX_Size() int {
+ return xxx_messageInfo_Component_Touchscreen.Size(m)
+}
+func (m *Component_Touchscreen) XXX_DiscardUnknown() {
+ xxx_messageInfo_Component_Touchscreen.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Component_Touchscreen proto.InternalMessageInfo
+
+func (m *Component_Touchscreen) GetVendorId() string {
+ if m != nil {
+ return m.VendorId
+ }
+ return ""
+}
+
+func (m *Component_Touchscreen) GetProductId() string {
+ if m != nil {
+ return m.ProductId
+ }
+ return ""
+}
+
+func (m *Component_Touchscreen) GetFwVersion() string {
+ if m != nil {
+ return m.FwVersion
+ }
+ return ""
+}
+
+func (m *Component_Touchscreen) GetFwPath() string {
+ if m != nil {
+ return m.FwPath
+ }
+ return ""
+}
+
+type ComponentList struct {
+ Value []*Component `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ComponentList) Reset() { *m = ComponentList{} }
+func (m *ComponentList) String() string { return proto.CompactTextString(m) }
+func (*ComponentList) ProtoMessage() {}
+func (*ComponentList) Descriptor() ([]byte, []int) {
+ return fileDescriptor_a14fcfee222958ff, []int{1}
+}
+
+func (m *ComponentList) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ComponentList.Unmarshal(m, b)
+}
+func (m *ComponentList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ComponentList.Marshal(b, m, deterministic)
+}
+func (m *ComponentList) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ComponentList.Merge(m, src)
+}
+func (m *ComponentList) XXX_Size() int {
+ return xxx_messageInfo_ComponentList.Size(m)
+}
+func (m *ComponentList) XXX_DiscardUnknown() {
+ xxx_messageInfo_ComponentList.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ComponentList proto.InternalMessageInfo
+
+func (m *ComponentList) GetValue() []*Component {
+ if m != nil {
+ return m.Value
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterEnum("chromiumos.config.api.Component_Soc_Architecture", Component_Soc_Architecture_name, Component_Soc_Architecture_value)
+ proto.RegisterEnum("chromiumos.config.api.Component_Memory_Type", Component_Memory_Type_name, Component_Memory_Type_value)
+ proto.RegisterEnum("chromiumos.config.api.Component_Camera_Feature", Component_Camera_Feature_name, Component_Camera_Feature_value)
+ proto.RegisterEnum("chromiumos.config.api.Component_Camera_ClockType", Component_Camera_ClockType_name, Component_Camera_ClockType_value)
+ proto.RegisterType((*Component)(nil), "chromiumos.config.api.Component")
+ proto.RegisterType((*Component_Soc)(nil), "chromiumos.config.api.Component.Soc")
+ proto.RegisterType((*Component_Soc_Family)(nil), "chromiumos.config.api.Component.Soc.Family")
+ proto.RegisterType((*Component_Memory)(nil), "chromiumos.config.api.Component.Memory")
+ proto.RegisterType((*Component_Bluetooth)(nil), "chromiumos.config.api.Component.Bluetooth")
+ proto.RegisterType((*Component_Camera)(nil), "chromiumos.config.api.Component.Camera")
+ proto.RegisterType((*Component_Touchscreen)(nil), "chromiumos.config.api.Component.Touchscreen")
+ proto.RegisterType((*ComponentList)(nil), "chromiumos.config.api.ComponentList")
+}
+
+func init() { proto.RegisterFile("config/api/component.proto", fileDescriptor_a14fcfee222958ff) }
+
+var fileDescriptor_a14fcfee222958ff = []byte{
+ // 849 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x95, 0xef, 0x6e, 0xdb, 0x36,
+ 0x10, 0xc0, 0x2d, 0xd9, 0x56, 0xac, 0x73, 0x9a, 0x0a, 0xb7, 0x6e, 0x33, 0x54, 0x14, 0x0b, 0x8c,
+ 0x01, 0x0b, 0xba, 0x42, 0xde, 0xdc, 0xc0, 0xc8, 0xc7, 0xd9, 0xb2, 0x33, 0x6b, 0x89, 0xff, 0x80,
+ 0x51, 0xbb, 0x76, 0xfb, 0x20, 0xc8, 0x14, 0x15, 0x0b, 0xb3, 0x44, 0x41, 0x92, 0x13, 0x24, 0xdf,
+ 0xf6, 0x20, 0x7b, 0x87, 0xbe, 0xc6, 0xde, 0x6a, 0x10, 0xa5, 0x38, 0x06, 0xda, 0xc0, 0x06, 0xf6,
+ 0x8d, 0x3c, 0xde, 0xef, 0xee, 0x78, 0x7f, 0x48, 0xd0, 0x29, 0x8f, 0xfc, 0xe0, 0xba, 0xe3, 0xc6,
+ 0x41, 0x87, 0xf2, 0x30, 0xe6, 0x11, 0x8b, 0x32, 0x23, 0x4e, 0x78, 0xc6, 0xf1, 0x6b, 0xba, 0x4c,
+ 0x78, 0x18, 0xac, 0x43, 0x9e, 0x1a, 0x85, 0x9a, 0xe1, 0xc6, 0x81, 0xfe, 0xea, 0x4b, 0x88, 0x13,
+ 0x78, 0x05, 0xa5, 0xbf, 0xdc, 0x3a, 0x8e, 0xdd, 0x24, 0x8b, 0x58, 0xb2, 0x39, 0x6c, 0x7f, 0x3a,
+ 0x04, 0xd5, 0x7c, 0x60, 0xb0, 0x0b, 0x72, 0xe0, 0xb5, 0xa4, 0x63, 0xe9, 0xa4, 0xd9, 0x6d, 0x1b,
+ 0x5f, 0xf4, 0x66, 0x6c, 0xb4, 0x2d, 0x8f, 0xc8, 0x81, 0x87, 0x67, 0x50, 0x4d, 0x39, 0x6d, 0xc9,
+ 0x02, 0xfa, 0x7e, 0x17, 0x64, 0x5c, 0x71, 0x3a, 0xae, 0x90, 0x1c, 0xc1, 0x3e, 0x28, 0x21, 0x0b,
+ 0x79, 0x72, 0xd7, 0xaa, 0x0a, 0xf8, 0x87, 0x9d, 0xf0, 0x44, 0xa8, 0x8f, 0x2b, 0xa4, 0x04, 0xf1,
+ 0x37, 0x50, 0x17, 0xab, 0x35, 0xcb, 0x38, 0xcf, 0x96, 0xad, 0x9a, 0xb0, 0xf2, 0x7a, 0xa7, 0x95,
+ 0xc1, 0x03, 0x31, 0xae, 0x90, 0x47, 0x3c, 0x0f, 0x87, 0xba, 0x21, 0x4b, 0xdc, 0x56, 0x7d, 0xcf,
+ 0x70, 0x4c, 0xa1, 0x9e, 0x87, 0x53, 0x80, 0x38, 0x87, 0x66, 0xc6, 0xd7, 0x74, 0x99, 0xd2, 0x84,
+ 0xb1, 0xa8, 0xa5, 0x08, 0x3b, 0x6f, 0x76, 0xda, 0xb1, 0x1f, 0x99, 0x71, 0x85, 0x6c, 0x9b, 0xd0,
+ 0x3f, 0xc9, 0x50, 0xbd, 0xe2, 0x14, 0x4d, 0x50, 0x7c, 0x37, 0x0c, 0x56, 0x77, 0x65, 0x75, 0x7e,
+ 0xdc, 0x27, 0xd1, 0xc6, 0xb9, 0x40, 0x48, 0x89, 0xe2, 0x0b, 0xa8, 0x87, 0xdc, 0x63, 0x2b, 0x51,
+ 0x2c, 0x95, 0x14, 0x9b, 0x5c, 0x4a, 0x79, 0xc2, 0x52, 0x51, 0x85, 0x3a, 0x29, 0x36, 0x3a, 0x05,
+ 0xa5, 0xa0, 0x71, 0x04, 0x35, 0x37, 0xa1, 0x4b, 0xe1, 0xf8, 0xa8, 0xfb, 0xf3, 0x5e, 0x8e, 0xfb,
+ 0x09, 0x5d, 0x06, 0x19, 0xa3, 0xd9, 0x3a, 0x61, 0x44, 0xe0, 0x88, 0x50, 0x8b, 0xdc, 0x90, 0x95,
+ 0xbe, 0xc5, 0xba, 0x7d, 0x05, 0x87, 0xdb, 0x9a, 0xa8, 0xc3, 0x37, 0x7d, 0x62, 0x8e, 0x2d, 0x7b,
+ 0x64, 0xda, 0xef, 0xc8, 0xc8, 0x79, 0x37, 0x1d, 0x8e, 0xce, 0xad, 0xe9, 0x68, 0xa8, 0x55, 0xf0,
+ 0x00, 0xaa, 0x1f, 0xce, 0x7a, 0x9a, 0x84, 0x00, 0xca, 0x87, 0xb3, 0x9e, 0xd3, 0x3b, 0xd5, 0xe4,
+ 0x5c, 0xd8, 0x27, 0x13, 0xad, 0x8a, 0x2a, 0xd4, 0xfb, 0x64, 0xd2, 0x3b, 0xd5, 0x6a, 0xfa, 0xbf,
+ 0x32, 0x28, 0x45, 0xa3, 0xe0, 0x2f, 0x50, 0xcb, 0xee, 0x62, 0x56, 0x86, 0xfe, 0x66, 0xcf, 0xfe,
+ 0x32, 0xec, 0xbb, 0x98, 0x11, 0x41, 0xe2, 0x4b, 0x50, 0xd3, 0x98, 0x31, 0xcf, 0x09, 0x97, 0xf7,
+ 0x22, 0xf4, 0x3a, 0x69, 0x08, 0xc1, 0x64, 0x79, 0x8f, 0xdf, 0xc2, 0x41, 0x1a, 0xdc, 0x33, 0x27,
+ 0x5c, 0x94, 0xb9, 0x53, 0xf2, 0xed, 0x64, 0x81, 0xdf, 0x41, 0x33, 0x9f, 0x34, 0x27, 0x5a, 0x87,
+ 0x0b, 0x96, 0x88, 0xc6, 0x54, 0x09, 0xe4, 0xa2, 0xa9, 0x90, 0xa0, 0x05, 0xcf, 0x43, 0x37, 0x5a,
+ 0xfb, 0xae, 0xb8, 0x77, 0x3e, 0x8f, 0x65, 0xd3, 0x1d, 0x3f, 0x11, 0xe3, 0xbc, 0x18, 0x5c, 0xcb,
+ 0x23, 0x47, 0xdb, 0xa0, 0xe5, 0xb5, 0xff, 0x84, 0x5a, 0x1e, 0x2f, 0x22, 0x1c, 0xd9, 0x1f, 0xe7,
+ 0x9f, 0xe5, 0x6c, 0x38, 0x24, 0x9a, 0x84, 0x0d, 0xa8, 0x0d, 0x87, 0xa4, 0xab, 0xc9, 0xe5, 0xea,
+ 0xad, 0x56, 0x2d, 0x57, 0xa7, 0x5a, 0x0d, 0x9b, 0x70, 0x70, 0x39, 0x77, 0x84, 0xb8, 0xfe, 0xb8,
+ 0x39, 0xd5, 0x14, 0xdd, 0x07, 0x75, 0x33, 0x2d, 0x79, 0x2e, 0x6e, 0x58, 0xe4, 0x71, 0x11, 0xae,
+ 0x24, 0xee, 0xd4, 0x28, 0x04, 0x96, 0x87, 0xaf, 0x00, 0xe2, 0x84, 0x7b, 0x6b, 0x9a, 0xbf, 0x3c,
+ 0x65, 0x91, 0xd5, 0x52, 0x52, 0x1c, 0x2f, 0xa8, 0xe7, 0x78, 0xec, 0x26, 0xa0, 0x4c, 0x64, 0x4b,
+ 0x25, 0xea, 0x82, 0x7a, 0x43, 0x21, 0xd0, 0xff, 0x91, 0x41, 0x29, 0xa6, 0x09, 0x2f, 0xa0, 0xe1,
+ 0x33, 0x37, 0xbf, 0x5d, 0xda, 0x92, 0x8e, 0xab, 0x27, 0x47, 0xdd, 0xce, 0x9e, 0x83, 0x68, 0x9c,
+ 0x17, 0x1c, 0xd9, 0x18, 0xc0, 0x39, 0x00, 0x5d, 0x71, 0xfa, 0x97, 0x23, 0xda, 0x40, 0xde, 0xb3,
+ 0x83, 0x4b, 0x73, 0x66, 0x4e, 0x8a, 0x5e, 0x50, 0xe9, 0xc3, 0xb2, 0xfd, 0x13, 0x1c, 0x94, 0x6e,
+ 0xf0, 0x2b, 0x78, 0x7e, 0x3e, 0xea, 0x97, 0x8d, 0x7a, 0x31, 0x9d, 0xfd, 0x3e, 0xd5, 0x2a, 0xa8,
+ 0xc1, 0x61, 0xdf, 0xb4, 0xad, 0xf7, 0x96, 0xfd, 0xd1, 0xb9, 0x1c, 0x0d, 0x35, 0xa9, 0x3d, 0x00,
+ 0x75, 0x63, 0x09, 0x5b, 0xf0, 0xc2, 0xbc, 0x9c, 0x99, 0x17, 0xce, 0x67, 0xb5, 0x7a, 0x06, 0xea,
+ 0x64, 0x36, 0x9d, 0xd9, 0xb3, 0xa9, 0x65, 0x6a, 0x12, 0x1e, 0x42, 0x63, 0x30, 0x9b, 0xd9, 0xb6,
+ 0x35, 0x19, 0x69, 0xb2, 0xfe, 0xb7, 0x04, 0xcd, 0xad, 0x57, 0xe2, 0xff, 0x96, 0xc2, 0xbf, 0x75,
+ 0x6e, 0x58, 0x92, 0x06, 0x3c, 0x7a, 0x28, 0x85, 0x7f, 0xfb, 0xbe, 0x10, 0xe4, 0x4d, 0xed, 0xdf,
+ 0x3a, 0xb1, 0x5b, 0x3e, 0xa8, 0x2a, 0x51, 0xfc, 0xdb, 0xb9, 0x9b, 0x2d, 0x07, 0x4a, 0x31, 0x4c,
+ 0xed, 0x5f, 0xe1, 0xd9, 0x26, 0x55, 0x97, 0x41, 0x9a, 0x61, 0x0f, 0xea, 0x37, 0xee, 0x6a, 0xcd,
+ 0x44, 0xb9, 0x9e, 0x6e, 0xe1, 0x0d, 0x44, 0x0a, 0xf5, 0xc1, 0xeb, 0x3f, 0x4e, 0xae, 0xf9, 0x46,
+ 0xd9, 0xe0, 0xc9, 0x75, 0xe7, 0x91, 0xec, 0x94, 0xbf, 0xd6, 0x35, 0xcf, 0x3f, 0xae, 0x85, 0x22,
+ 0xbe, 0xab, 0xb7, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x1b, 0xf6, 0x89, 0x5f, 0x1f, 0x07, 0x00,
+ 0x00,
+}
diff --git a/go/config/api/component_id.pb.go b/go/config/api/component_id.pb.go
new file mode 100644
index 0000000..dcfe5d1
--- /dev/null
+++ b/go/config/api/component_id.pb.go
@@ -0,0 +1,80 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: config/api/component_id.proto
+
+package api
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Uniquely identifies any component used in manufacturing a device.
+type ComponentId struct {
+ Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ComponentId) Reset() { *m = ComponentId{} }
+func (m *ComponentId) String() string { return proto.CompactTextString(m) }
+func (*ComponentId) ProtoMessage() {}
+func (*ComponentId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_59b34151f3ee8a4b, []int{0}
+}
+
+func (m *ComponentId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ComponentId.Unmarshal(m, b)
+}
+func (m *ComponentId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ComponentId.Marshal(b, m, deterministic)
+}
+func (m *ComponentId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ComponentId.Merge(m, src)
+}
+func (m *ComponentId) XXX_Size() int {
+ return xxx_messageInfo_ComponentId.Size(m)
+}
+func (m *ComponentId) XXX_DiscardUnknown() {
+ xxx_messageInfo_ComponentId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ComponentId proto.InternalMessageInfo
+
+func (m *ComponentId) GetValue() string {
+ if m != nil {
+ return m.Value
+ }
+ return ""
+}
+
+func init() {
+ proto.RegisterType((*ComponentId)(nil), "chromiumos.config.api.ComponentId")
+}
+
+func init() { proto.RegisterFile("config/api/component_id.proto", fileDescriptor_59b34151f3ee8a4b) }
+
+var fileDescriptor_59b34151f3ee8a4b = []byte{
+ // 129 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4d, 0xce, 0xcf, 0x4b,
+ 0xcb, 0x4c, 0xd7, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xce, 0xcf, 0x2d, 0xc8, 0xcf, 0x4b, 0xcd, 0x2b,
+ 0x89, 0xcf, 0x4c, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x4d, 0xce, 0x28, 0xca, 0xcf,
+ 0xcd, 0x2c, 0xcd, 0xcd, 0x2f, 0xd6, 0x83, 0xa8, 0xd4, 0x4b, 0x2c, 0xc8, 0x54, 0x52, 0xe6, 0xe2,
+ 0x76, 0x86, 0x29, 0xf6, 0x4c, 0x11, 0x12, 0xe1, 0x62, 0x2d, 0x4b, 0xcc, 0x29, 0x4d, 0x95, 0x60,
+ 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x82, 0x70, 0x9c, 0xb4, 0xa2, 0x34, 0xd2, 0xf3, 0xf5, 0x60, 0x06,
+ 0xe8, 0xe5, 0x17, 0xa5, 0xeb, 0x23, 0x4c, 0xd3, 0x87, 0xda, 0x9b, 0x9e, 0x0f, 0xb2, 0x3a, 0x89,
+ 0x0d, 0x6c, 0x9d, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x5a, 0xea, 0xb1, 0xf3, 0x8f, 0x00, 0x00,
+ 0x00,
+}
diff --git a/go/config/api/partner.pb.go b/go/config/api/partner.pb.go
new file mode 100644
index 0000000..1d13653
--- /dev/null
+++ b/go/config/api/partner.pb.go
@@ -0,0 +1,145 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: config/api/partner.proto
+
+package api
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Defines contributing partners participating in the design, execution,
+// and support of chromiumos projects.
+type Partner struct {
+ // Globally unique partner identifier.
+ Id *PartnerId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Descriptive name (for humans) of the partner.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // Email alias used for coordinating project execution.
+ EmailGroup string `protobuf:"bytes,3,opt,name=email_group,json=emailGroup,proto3" json:"email_group,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Partner) Reset() { *m = Partner{} }
+func (m *Partner) String() string { return proto.CompactTextString(m) }
+func (*Partner) ProtoMessage() {}
+func (*Partner) Descriptor() ([]byte, []int) {
+ return fileDescriptor_19c13223a6343523, []int{0}
+}
+
+func (m *Partner) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_Partner.Unmarshal(m, b)
+}
+func (m *Partner) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_Partner.Marshal(b, m, deterministic)
+}
+func (m *Partner) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Partner.Merge(m, src)
+}
+func (m *Partner) XXX_Size() int {
+ return xxx_messageInfo_Partner.Size(m)
+}
+func (m *Partner) XXX_DiscardUnknown() {
+ xxx_messageInfo_Partner.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Partner proto.InternalMessageInfo
+
+func (m *Partner) GetId() *PartnerId {
+ if m != nil {
+ return m.Id
+ }
+ return nil
+}
+
+func (m *Partner) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *Partner) GetEmailGroup() string {
+ if m != nil {
+ return m.EmailGroup
+ }
+ return ""
+}
+
+type PartnerList struct {
+ Value []*Partner `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PartnerList) Reset() { *m = PartnerList{} }
+func (m *PartnerList) String() string { return proto.CompactTextString(m) }
+func (*PartnerList) ProtoMessage() {}
+func (*PartnerList) Descriptor() ([]byte, []int) {
+ return fileDescriptor_19c13223a6343523, []int{1}
+}
+
+func (m *PartnerList) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PartnerList.Unmarshal(m, b)
+}
+func (m *PartnerList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PartnerList.Marshal(b, m, deterministic)
+}
+func (m *PartnerList) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PartnerList.Merge(m, src)
+}
+func (m *PartnerList) XXX_Size() int {
+ return xxx_messageInfo_PartnerList.Size(m)
+}
+func (m *PartnerList) XXX_DiscardUnknown() {
+ xxx_messageInfo_PartnerList.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PartnerList proto.InternalMessageInfo
+
+func (m *PartnerList) GetValue() []*Partner {
+ if m != nil {
+ return m.Value
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterType((*Partner)(nil), "chromiumos.config.api.Partner")
+ proto.RegisterType((*PartnerList)(nil), "chromiumos.config.api.PartnerList")
+}
+
+func init() { proto.RegisterFile("config/api/partner.proto", fileDescriptor_19c13223a6343523) }
+
+var fileDescriptor_19c13223a6343523 = []byte{
+ // 213 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x48, 0xce, 0xcf, 0x4b,
+ 0xcb, 0x4c, 0xd7, 0x4f, 0x2c, 0xc8, 0xd4, 0x2f, 0x48, 0x2c, 0x2a, 0xc9, 0x4b, 0x2d, 0xd2, 0x2b,
+ 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x4d, 0xce, 0x28, 0xca, 0xcf, 0xcd, 0x2c, 0xcd, 0xcd, 0x2f,
+ 0xd6, 0x83, 0x28, 0xd2, 0x4b, 0x2c, 0xc8, 0x94, 0x92, 0xc6, 0xd4, 0x10, 0x9f, 0x99, 0x02, 0xd1,
+ 0xa3, 0x54, 0xc0, 0xc5, 0x1e, 0x00, 0x11, 0x13, 0x32, 0xe0, 0x62, 0xca, 0x4c, 0x91, 0x60, 0x54,
+ 0x60, 0xd4, 0xe0, 0x36, 0x52, 0xd0, 0xc3, 0x6a, 0x96, 0x1e, 0x54, 0xad, 0x67, 0x4a, 0x10, 0x53,
+ 0x66, 0x8a, 0x90, 0x10, 0x17, 0x4b, 0x5e, 0x62, 0x6e, 0xaa, 0x04, 0x93, 0x02, 0xa3, 0x06, 0x67,
+ 0x10, 0x98, 0x2d, 0x24, 0xcf, 0xc5, 0x9d, 0x9a, 0x9b, 0x98, 0x99, 0x13, 0x9f, 0x5e, 0x94, 0x5f,
+ 0x5a, 0x20, 0xc1, 0x0c, 0x96, 0xe2, 0x02, 0x0b, 0xb9, 0x83, 0x44, 0x94, 0x9c, 0xb9, 0xb8, 0xa1,
+ 0xa6, 0xf8, 0x64, 0x16, 0x97, 0x08, 0x99, 0x70, 0xb1, 0x96, 0x25, 0xe6, 0x94, 0xa6, 0x4a, 0x30,
+ 0x2a, 0x30, 0x6b, 0x70, 0x1b, 0xc9, 0xe1, 0xb7, 0x38, 0x08, 0xa2, 0xd8, 0x49, 0x2b, 0x4a, 0x23,
+ 0x3d, 0x1f, 0xae, 0x54, 0x2f, 0xbf, 0x28, 0x5d, 0x1f, 0xa1, 0x4f, 0x1f, 0xea, 0xe1, 0xf4, 0x7c,
+ 0x90, 0x9f, 0x93, 0xd8, 0xc0, 0x3e, 0x35, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xe1, 0xd6, 0x17,
+ 0xde, 0x39, 0x01, 0x00, 0x00,
+}
diff --git a/go/config/api/partner_id.pb.go b/go/config/api/partner_id.pb.go
new file mode 100644
index 0000000..fb99b28
--- /dev/null
+++ b/go/config/api/partner_id.pb.go
@@ -0,0 +1,81 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: config/api/partner_id.proto
+
+package api
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Uniquely identifies any contributing partner to any of the chromiumos
+// projects.
+// E.g. ODMs, OEMs, SoC & Component Manufacturers, ...
+type PartnerId struct {
+ Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PartnerId) Reset() { *m = PartnerId{} }
+func (m *PartnerId) String() string { return proto.CompactTextString(m) }
+func (*PartnerId) ProtoMessage() {}
+func (*PartnerId) Descriptor() ([]byte, []int) {
+ return fileDescriptor_af3fa75030159ae9, []int{0}
+}
+
+func (m *PartnerId) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PartnerId.Unmarshal(m, b)
+}
+func (m *PartnerId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PartnerId.Marshal(b, m, deterministic)
+}
+func (m *PartnerId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PartnerId.Merge(m, src)
+}
+func (m *PartnerId) XXX_Size() int {
+ return xxx_messageInfo_PartnerId.Size(m)
+}
+func (m *PartnerId) XXX_DiscardUnknown() {
+ xxx_messageInfo_PartnerId.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PartnerId proto.InternalMessageInfo
+
+func (m *PartnerId) GetValue() string {
+ if m != nil {
+ return m.Value
+ }
+ return ""
+}
+
+func init() {
+ proto.RegisterType((*PartnerId)(nil), "chromiumos.config.api.PartnerId")
+}
+
+func init() { proto.RegisterFile("config/api/partner_id.proto", fileDescriptor_af3fa75030159ae9) }
+
+var fileDescriptor_af3fa75030159ae9 = []byte{
+ // 127 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0xce, 0xcf, 0x4b,
+ 0xcb, 0x4c, 0xd7, 0x4f, 0x2c, 0xc8, 0xd4, 0x2f, 0x48, 0x2c, 0x2a, 0xc9, 0x4b, 0x2d, 0x8a, 0xcf,
+ 0x4c, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x4d, 0xce, 0x28, 0xca, 0xcf, 0xcd, 0x2c,
+ 0xcd, 0xcd, 0x2f, 0xd6, 0x83, 0xa8, 0xd3, 0x4b, 0x2c, 0xc8, 0x54, 0x52, 0xe4, 0xe2, 0x0c, 0x80,
+ 0x28, 0xf5, 0x4c, 0x11, 0x12, 0xe1, 0x62, 0x2d, 0x4b, 0xcc, 0x29, 0x4d, 0x95, 0x60, 0x54, 0x60,
+ 0xd4, 0xe0, 0x0c, 0x82, 0x70, 0x9c, 0xb4, 0xa2, 0x34, 0xd2, 0xf3, 0xf5, 0x60, 0xda, 0xf5, 0xf2,
+ 0x8b, 0xd2, 0xf5, 0x11, 0x66, 0xe9, 0x43, 0xed, 0x4c, 0xcf, 0x07, 0x59, 0x9b, 0xc4, 0x06, 0xb6,
+ 0xcc, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x93, 0x74, 0xb9, 0x6b, 0x8b, 0x00, 0x00, 0x00,
+}
diff --git a/go/config/replication_config.pb.go b/go/config/replication_config.pb.go
new file mode 100644
index 0000000..43839b0
--- /dev/null
+++ b/go/config/replication_config.pb.go
@@ -0,0 +1,329 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: config/replication_config.proto
+
+package config
+
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ field_mask "google.golang.org/genproto/protobuf/field_mask"
+ math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Describes different file types that can be replicated.
+type FileType int32
+
+const (
+ FileType_FILE_TYPE_UNSPECIFIED FileType = 0
+ // A JSON file. For protos encoded as JSON, FILE_TYPE_JSONPB should be used.
+ FileType_FILE_TYPE_JSON FileType = 1
+ // A proto encoded as a JSON file.
+ FileType_FILE_TYPE_JSONPB FileType = 2
+ // A file not described by the other types.
+ FileType_FILE_TYPE_OTHER FileType = 3
+)
+
+var FileType_name = map[int32]string{
+ 0: "FILE_TYPE_UNSPECIFIED",
+ 1: "FILE_TYPE_JSON",
+ 2: "FILE_TYPE_JSONPB",
+ 3: "FILE_TYPE_OTHER",
+}
+
+var FileType_value = map[string]int32{
+ "FILE_TYPE_UNSPECIFIED": 0,
+ "FILE_TYPE_JSON": 1,
+ "FILE_TYPE_JSONPB": 2,
+ "FILE_TYPE_OTHER": 3,
+}
+
+func (x FileType) String() string {
+ return proto.EnumName(FileType_name, int32(x))
+}
+
+func (FileType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_f9326e1353140a5f, []int{0}
+}
+
+type ReplicationType int32
+
+const (
+ ReplicationType_REPLICATION_TYPE_UNSPECIFIED ReplicationType = 0
+ // Copy the entire file.
+ ReplicationType_REPLICATION_TYPE_COPY ReplicationType = 1
+ // Copy part of the file. When this type is used, a filtering mechanism must
+ // be specified, e.g. a FieldMask. Not valid for some FileTypes, e.g.
+ // FILE_TYPE_OTHER.
+ ReplicationType_REPLICATION_TYPE_FILTER ReplicationType = 2
+)
+
+var ReplicationType_name = map[int32]string{
+ 0: "REPLICATION_TYPE_UNSPECIFIED",
+ 1: "REPLICATION_TYPE_COPY",
+ 2: "REPLICATION_TYPE_FILTER",
+}
+
+var ReplicationType_value = map[string]int32{
+ "REPLICATION_TYPE_UNSPECIFIED": 0,
+ "REPLICATION_TYPE_COPY": 1,
+ "REPLICATION_TYPE_FILTER": 2,
+}
+
+func (x ReplicationType) String() string {
+ return proto.EnumName(ReplicationType_name, int32(x))
+}
+
+func (ReplicationType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_f9326e1353140a5f, []int{1}
+}
+
+// Describes how to replace a text with another text.
+type StringReplacementRule struct {
+ // The text before the transformation.
+ Before string `protobuf:"bytes,1,opt,name=before,proto3" json:"before,omitempty"`
+ // The text after the transformation.
+ After string `protobuf:"bytes,2,opt,name=after,proto3" json:"after,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *StringReplacementRule) Reset() { *m = StringReplacementRule{} }
+func (m *StringReplacementRule) String() string { return proto.CompactTextString(m) }
+func (*StringReplacementRule) ProtoMessage() {}
+func (*StringReplacementRule) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f9326e1353140a5f, []int{0}
+}
+
+func (m *StringReplacementRule) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_StringReplacementRule.Unmarshal(m, b)
+}
+func (m *StringReplacementRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_StringReplacementRule.Marshal(b, m, deterministic)
+}
+func (m *StringReplacementRule) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_StringReplacementRule.Merge(m, src)
+}
+func (m *StringReplacementRule) XXX_Size() int {
+ return xxx_messageInfo_StringReplacementRule.Size(m)
+}
+func (m *StringReplacementRule) XXX_DiscardUnknown() {
+ xxx_messageInfo_StringReplacementRule.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StringReplacementRule proto.InternalMessageInfo
+
+func (m *StringReplacementRule) GetBefore() string {
+ if m != nil {
+ return m.Before
+ }
+ return ""
+}
+
+func (m *StringReplacementRule) GetAfter() string {
+ if m != nil {
+ return m.After
+ }
+ return ""
+}
+
+// Describes how a single file should be replicated.
+type FileReplicationRule struct {
+ // Path to the original file. Should be relative to the source root,
+ // e.g. "src/private-overlays/overlay-coral-private/chromeos-base/chromeos-config-bsp-coral-private/files/build_config.json"
+ SourcePath string `protobuf:"bytes,1,opt,name=source_path,json=sourcePath,proto3" json:"source_path,omitempty"`
+ // Path to output the file. Should be relative to the source root,
+ // e.g. "src/overlays/overlay-coral/chromeos-base/chromeos-config-bsp-coral/files/build_config.json"
+ DestinationPath string `protobuf:"bytes,2,opt,name=destination_path,json=destinationPath,proto3" json:"destination_path,omitempty"`
+ // The type of file being replicated.
+ FileType FileType `protobuf:"varint,3,opt,name=file_type,json=fileType,proto3,enum=config.FileType" json:"file_type,omitempty"`
+ // The type of replication being done.
+ ReplicationType ReplicationType `protobuf:"varint,4,opt,name=replication_type,json=replicationType,proto3,enum=config.ReplicationType" json:"replication_type,omitempty"`
+ // Fields to replicate to destination config payloads. Only relevant for
+ // REPLICATION_TYPE_FILTER. If set on other replication types a
+ // reader of this rule may choose to ignore this field or throw an error.
+ //
+ // # Behavior Specific to ChromeOS Config Payloads
+ //
+ // The mask applies to each device config in the config payload, NOT to the
+ // top-level payload; i.e. to copy the "audio" field to the destination,
+ // the mask should be "audio", not "chromeos.configs.audio". This is
+ // analogous to standard FieldMask behavior on a REST list operation, where
+ // the mask applies to each individual message. Sub-fields are still
+ // fully-qualified, as per standard FieldMasks, e.g.
+ // "bluetooth.config.build-path"
+ DestinationFields *field_mask.FieldMask `protobuf:"bytes,5,opt,name=destination_fields,json=destinationFields,proto3" json:"destination_fields,omitempty"`
+ // String replacements to be done on the destination file. Replacements are
+ // done in the order they appear in this list.
+ //
+ // Note that replacements are done after filtering. For example, say a
+ // replacement rule changes the name of a field, "field1" -> "field2"; if
+ // destination_fields specifies "field2", the renamed fields will not be
+ // copied.
+ StringReplacementRules []*StringReplacementRule `protobuf:"bytes,6,rep,name=string_replacement_rules,json=stringReplacementRules,proto3" json:"string_replacement_rules,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FileReplicationRule) Reset() { *m = FileReplicationRule{} }
+func (m *FileReplicationRule) String() string { return proto.CompactTextString(m) }
+func (*FileReplicationRule) ProtoMessage() {}
+func (*FileReplicationRule) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f9326e1353140a5f, []int{1}
+}
+
+func (m *FileReplicationRule) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_FileReplicationRule.Unmarshal(m, b)
+}
+func (m *FileReplicationRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_FileReplicationRule.Marshal(b, m, deterministic)
+}
+func (m *FileReplicationRule) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FileReplicationRule.Merge(m, src)
+}
+func (m *FileReplicationRule) XXX_Size() int {
+ return xxx_messageInfo_FileReplicationRule.Size(m)
+}
+func (m *FileReplicationRule) XXX_DiscardUnknown() {
+ xxx_messageInfo_FileReplicationRule.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FileReplicationRule proto.InternalMessageInfo
+
+func (m *FileReplicationRule) GetSourcePath() string {
+ if m != nil {
+ return m.SourcePath
+ }
+ return ""
+}
+
+func (m *FileReplicationRule) GetDestinationPath() string {
+ if m != nil {
+ return m.DestinationPath
+ }
+ return ""
+}
+
+func (m *FileReplicationRule) GetFileType() FileType {
+ if m != nil {
+ return m.FileType
+ }
+ return FileType_FILE_TYPE_UNSPECIFIED
+}
+
+func (m *FileReplicationRule) GetReplicationType() ReplicationType {
+ if m != nil {
+ return m.ReplicationType
+ }
+ return ReplicationType_REPLICATION_TYPE_UNSPECIFIED
+}
+
+func (m *FileReplicationRule) GetDestinationFields() *field_mask.FieldMask {
+ if m != nil {
+ return m.DestinationFields
+ }
+ return nil
+}
+
+func (m *FileReplicationRule) GetStringReplacementRules() []*StringReplacementRule {
+ if m != nil {
+ return m.StringReplacementRules
+ }
+ return nil
+}
+
+// Describes how files should be replicated, e.g. from private to public.
+type ReplicationConfig struct {
+ // Files to be replicated.
+ FileReplicationRules []*FileReplicationRule `protobuf:"bytes,1,rep,name=file_replication_rules,json=fileReplicationRules,proto3" json:"file_replication_rules,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ReplicationConfig) Reset() { *m = ReplicationConfig{} }
+func (m *ReplicationConfig) String() string { return proto.CompactTextString(m) }
+func (*ReplicationConfig) ProtoMessage() {}
+func (*ReplicationConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f9326e1353140a5f, []int{2}
+}
+
+func (m *ReplicationConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_ReplicationConfig.Unmarshal(m, b)
+}
+func (m *ReplicationConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_ReplicationConfig.Marshal(b, m, deterministic)
+}
+func (m *ReplicationConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ReplicationConfig.Merge(m, src)
+}
+func (m *ReplicationConfig) XXX_Size() int {
+ return xxx_messageInfo_ReplicationConfig.Size(m)
+}
+func (m *ReplicationConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_ReplicationConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ReplicationConfig proto.InternalMessageInfo
+
+func (m *ReplicationConfig) GetFileReplicationRules() []*FileReplicationRule {
+ if m != nil {
+ return m.FileReplicationRules
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterEnum("config.FileType", FileType_name, FileType_value)
+ proto.RegisterEnum("config.ReplicationType", ReplicationType_name, ReplicationType_value)
+ proto.RegisterType((*StringReplacementRule)(nil), "config.StringReplacementRule")
+ proto.RegisterType((*FileReplicationRule)(nil), "config.FileReplicationRule")
+ proto.RegisterType((*ReplicationConfig)(nil), "config.ReplicationConfig")
+}
+
+func init() { proto.RegisterFile("config/replication_config.proto", fileDescriptor_f9326e1353140a5f) }
+
+var fileDescriptor_f9326e1353140a5f = []byte{
+ // 455 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0x5f, 0x6f, 0xda, 0x3c,
+ 0x14, 0xc6, 0xdf, 0xc0, 0x5b, 0xd4, 0x1e, 0xa4, 0xe2, 0xba, 0x40, 0xd3, 0x76, 0x53, 0x23, 0xae,
+ 0x58, 0xa5, 0x05, 0x89, 0x7d, 0x82, 0x95, 0x25, 0x5a, 0x26, 0x06, 0x99, 0xc9, 0x34, 0xf5, 0x2a,
+ 0x0a, 0x70, 0x4c, 0x23, 0xd2, 0x24, 0xb2, 0xcd, 0x45, 0xbf, 0xf9, 0x2e, 0xa7, 0xda, 0x20, 0xd2,
+ 0xc2, 0x9d, 0xfd, 0x3b, 0xe7, 0x39, 0x7f, 0x9e, 0x03, 0x77, 0x8b, 0x22, 0xe7, 0xe9, 0x6a, 0x20,
+ 0xb0, 0xcc, 0xd2, 0x45, 0xa2, 0xd2, 0x22, 0x8f, 0x0d, 0x72, 0x4b, 0x51, 0xa8, 0x82, 0x36, 0xcc,
+ 0xef, 0xc6, 0x59, 0x15, 0xc5, 0x2a, 0xc3, 0x81, 0xa6, 0xf3, 0x0d, 0x1f, 0xf0, 0x14, 0xb3, 0x65,
+ 0xfc, 0x9c, 0xc8, 0xb5, 0xc9, 0xec, 0x79, 0xd0, 0x99, 0x29, 0x91, 0xe6, 0x2b, 0x86, 0x65, 0x96,
+ 0x2c, 0xf0, 0x19, 0x73, 0xc5, 0x36, 0x19, 0xd2, 0x2e, 0x34, 0xe6, 0xc8, 0x0b, 0x81, 0xb6, 0xe5,
+ 0x58, 0xfd, 0x33, 0xb6, 0xfd, 0xd1, 0x36, 0x9c, 0x24, 0x5c, 0xa1, 0xb0, 0x6b, 0x1a, 0x9b, 0x4f,
+ 0xef, 0x6f, 0x0d, 0x2e, 0xfd, 0x34, 0x43, 0xb6, 0x9f, 0x48, 0x57, 0xb9, 0x83, 0xa6, 0x2c, 0x36,
+ 0x62, 0x81, 0x71, 0x99, 0xa8, 0xa7, 0x6d, 0x29, 0x30, 0x28, 0x4c, 0xd4, 0x13, 0xfd, 0x04, 0x64,
+ 0x89, 0x52, 0xa5, 0xb9, 0xd9, 0x42, 0x67, 0x99, 0xca, 0xad, 0x0a, 0xd7, 0xa9, 0x9f, 0xe1, 0x8c,
+ 0xa7, 0x19, 0xc6, 0xea, 0xa5, 0x44, 0xbb, 0xee, 0x58, 0xfd, 0xf3, 0x21, 0x71, 0xb7, 0x6b, 0xbf,
+ 0xf6, 0x8e, 0x5e, 0x4a, 0x64, 0xa7, 0x7c, 0xfb, 0xa2, 0x0f, 0x40, 0xaa, 0xfe, 0x68, 0xd5, 0xff,
+ 0x5a, 0x75, 0xb5, 0x53, 0x55, 0xa6, 0xd5, 0xe2, 0x96, 0x78, 0x0b, 0x68, 0x00, 0xb4, 0x3a, 0x9d,
+ 0x76, 0x4f, 0xda, 0x27, 0x8e, 0xd5, 0x6f, 0x0e, 0x6f, 0x5c, 0x63, 0xae, 0xbb, 0x33, 0xd7, 0xf5,
+ 0x5f, 0xc3, 0x3f, 0x13, 0xb9, 0x66, 0x17, 0x15, 0x95, 0xa6, 0x92, 0xfe, 0x01, 0x5b, 0x6a, 0xa3,
+ 0x63, 0xb1, 0x77, 0x3a, 0x16, 0x9b, 0x0c, 0xa5, 0xdd, 0x70, 0xea, 0xfd, 0xe6, 0xf0, 0xe3, 0x6e,
+ 0xac, 0xa3, 0x07, 0x61, 0x5d, 0x79, 0x0c, 0xcb, 0x1e, 0x87, 0x8b, 0xca, 0x1e, 0x23, 0x5d, 0x82,
+ 0xfe, 0x82, 0xae, 0xf6, 0xaa, 0xea, 0x80, 0xe9, 0x65, 0xe9, 0x5e, 0xb7, 0x55, 0xe3, 0xde, 0x1d,
+ 0x8d, 0xb5, 0xf9, 0x21, 0x94, 0xf7, 0x4b, 0x38, 0xdd, 0xb9, 0x4c, 0xaf, 0xa1, 0xe3, 0x07, 0x63,
+ 0x2f, 0x8e, 0x1e, 0x43, 0x2f, 0xfe, 0x3d, 0x99, 0x85, 0xde, 0x28, 0xf0, 0x03, 0xef, 0x1b, 0xf9,
+ 0x8f, 0x52, 0x38, 0xdf, 0x87, 0x7e, 0xcc, 0xa6, 0x13, 0x62, 0xd1, 0x36, 0x90, 0xb7, 0x2c, 0x7c,
+ 0x20, 0x35, 0x7a, 0x09, 0xad, 0x3d, 0x9d, 0x46, 0xdf, 0x3d, 0x46, 0xea, 0xf7, 0x6b, 0x68, 0xbd,
+ 0xbb, 0x0a, 0x75, 0xe0, 0x03, 0xf3, 0xc2, 0x71, 0x30, 0xfa, 0x1a, 0x05, 0xd3, 0xc9, 0xb1, 0x9e,
+ 0xd7, 0xd0, 0x39, 0xc8, 0x18, 0x4d, 0xc3, 0x47, 0x62, 0xd1, 0x5b, 0xb8, 0x3a, 0x08, 0xf9, 0xc1,
+ 0x38, 0xf2, 0x18, 0xa9, 0xcd, 0x1b, 0xfa, 0x74, 0x5f, 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x0e,
+ 0xb7, 0xb1, 0x2d, 0x50, 0x03, 0x00, 0x00,
+}
diff --git a/src/config/api/component.proto b/src/config/api/component.proto
new file mode 100644
index 0000000..2d19ab7
--- /dev/null
+++ b/src/config/api/component.proto
@@ -0,0 +1,106 @@
+// 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;
+}
diff --git a/src/config/api/component_id.proto b/src/config/api/component_id.proto
new file mode 100644
index 0000000..ee77bd9
--- /dev/null
+++ b/src/config/api/component_id.proto
@@ -0,0 +1,14 @@
+// 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;
+
+option go_package = "go.chromium.org/chromiumos/config/go/api";
+
+// Uniquely identifies any component used in manufacturing a device.
+message ComponentId {
+ string value = 1;
+}
diff --git a/src/config/api/partner.proto b/src/config/api/partner.proto
new file mode 100644
index 0000000..4ea6912
--- /dev/null
+++ b/src/config/api/partner.proto
@@ -0,0 +1,26 @@
+// 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/partner_id.proto";
+
+option go_package = "go.chromium.org/chromiumos/config/go/api";
+
+// Defines contributing partners participating in the design, execution,
+// and support of chromiumos projects.
+message Partner {
+ // Globally unique partner identifier.
+ PartnerId id = 1;
+ // Descriptive name (for humans) of the partner.
+ string name = 2;
+ // Email alias used for coordinating project execution.
+ string email_group = 3;
+}
+
+message PartnerList {
+ repeated Partner value = 1;
+}
diff --git a/src/config/api/partner_id.proto b/src/config/api/partner_id.proto
new file mode 100644
index 0000000..39d6fe1
--- /dev/null
+++ b/src/config/api/partner_id.proto
@@ -0,0 +1,16 @@
+// 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;
+
+option go_package = "go.chromium.org/chromiumos/config/go/api";
+
+// Uniquely identifies any contributing partner to any of the chromiumos
+// projects.
+// E.g. ODMs, OEMs, SoC & Component Manufacturers, ...
+message PartnerId {
+ string value = 1;
+}
diff --git a/src/config/replication_config.proto b/src/config/replication_config.proto
new file mode 100644
index 0000000..12d34b5
--- /dev/null
+++ b/src/config/replication_config.proto
@@ -0,0 +1,91 @@
+// 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 config;
+
+import "google/protobuf/field_mask.proto";
+
+// Describes different file types that can be replicated.
+enum FileType {
+ FILE_TYPE_UNSPECIFIED = 0;
+
+ // A JSON file. For protos encoded as JSON, FILE_TYPE_JSONPB should be used.
+ FILE_TYPE_JSON = 1;
+
+ // A proto encoded as a JSON file.
+ FILE_TYPE_JSONPB = 2;
+
+ // A file not described by the other types.
+ FILE_TYPE_OTHER = 3;
+}
+
+enum ReplicationType {
+ REPLICATION_TYPE_UNSPECIFIED = 0;
+
+ // Copy the entire file.
+ REPLICATION_TYPE_COPY = 1;
+
+ // Copy part of the file. When this type is used, a filtering mechanism must
+ // be specified, e.g. a FieldMask. Not valid for some FileTypes, e.g.
+ // FILE_TYPE_OTHER.
+ REPLICATION_TYPE_FILTER = 2;
+}
+
+// Describes how to replace a text with another text.
+message StringReplacementRule {
+ // The text before the transformation.
+ string before = 1;
+
+ // The text after the transformation.
+ string after = 2;
+}
+
+// Describes how a single file should be replicated.
+message FileReplicationRule {
+ // Path to the original file. Should be relative to the source root,
+ // e.g. "src/private-overlays/overlay-coral-private/chromeos-base/chromeos-config-bsp-coral-private/files/build_config.json"
+ string source_path = 1;
+
+ // Path to output the file. Should be relative to the source root,
+ // e.g. "src/overlays/overlay-coral/chromeos-base/chromeos-config-bsp-coral/files/build_config.json"
+ string destination_path = 2;
+
+ // The type of file being replicated.
+ FileType file_type = 3;
+
+ // The type of replication being done.
+ ReplicationType replication_type = 4;
+
+ // Fields to replicate to destination config payloads. Only relevant for
+ // REPLICATION_TYPE_FILTER. If set on other replication types a
+ // reader of this rule may choose to ignore this field or throw an error.
+ //
+ // # Behavior Specific to ChromeOS Config Payloads
+ //
+ // The mask applies to each device config in the config payload, NOT to the
+ // top-level payload; i.e. to copy the "audio" field to the destination,
+ // the mask should be "audio", not "chromeos.configs.audio". This is
+ // analogous to standard FieldMask behavior on a REST list operation, where
+ // the mask applies to each individual message. Sub-fields are still
+ // fully-qualified, as per standard FieldMasks, e.g.
+ // "bluetooth.config.build-path"
+ google.protobuf.FieldMask destination_fields = 5;
+
+ // String replacements to be done on the destination file. Replacements are
+ // done in the order they appear in this list.
+ //
+ // Note that replacements are done after filtering. For example, say a
+ // replacement rule changes the name of a field, "field1" -> "field2"; if
+ // destination_fields specifies "field2", the renamed fields will not be
+ // copied.
+ repeated StringReplacementRule string_replacement_rules = 6;
+}
+
+// Describes how files should be replicated, e.g. from private to public.
+message ReplicationConfig {
+ // Files to be replicated.
+ repeated FileReplicationRule file_replication_rules = 1;
+}