// Code generated by protoc-gen-go. DO NOT EDIT.
// source: prototype/common.proto

package prototype

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 Presence_Indicator int32

const (
	Presence_PRESENCE_UNKNOWN Presence_Indicator = 0
	Presence_PRESENT          Presence_Indicator = 1
	Presence_NOT_PRESENT      Presence_Indicator = 2
)

var Presence_Indicator_name = map[int32]string{
	0: "PRESENCE_UNKNOWN",
	1: "PRESENT",
	2: "NOT_PRESENT",
}

var Presence_Indicator_value = map[string]int32{
	"PRESENCE_UNKNOWN": 0,
	"PRESENT":          1,
	"NOT_PRESENT":      2,
}

func (x Presence_Indicator) String() string {
	return proto.EnumName(Presence_Indicator_name, int32(x))
}

func (Presence_Indicator) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_e4a0830c57d57f2a, []int{0, 0}
}

type ByteSize_Unit int32

const (
	ByteSize_UNIT_UNDEFINED ByteSize_Unit = 0
	ByteSize_BYTE           ByteSize_Unit = 1
	ByteSize_KB             ByteSize_Unit = 2
	ByteSize_MB             ByteSize_Unit = 3
	ByteSize_GB             ByteSize_Unit = 4
)

var ByteSize_Unit_name = map[int32]string{
	0: "UNIT_UNDEFINED",
	1: "BYTE",
	2: "KB",
	3: "MB",
	4: "GB",
}

var ByteSize_Unit_value = map[string]int32{
	"UNIT_UNDEFINED": 0,
	"BYTE":           1,
	"KB":             2,
	"MB":             3,
	"GB":             4,
}

func (x ByteSize_Unit) String() string {
	return proto.EnumName(ByteSize_Unit_name, int32(x))
}

func (ByteSize_Unit) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_e4a0830c57d57f2a, []int{1, 0}
}

type Presence struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Presence) Reset()         { *m = Presence{} }
func (m *Presence) String() string { return proto.CompactTextString(m) }
func (*Presence) ProtoMessage()    {}
func (*Presence) Descriptor() ([]byte, []int) {
	return fileDescriptor_e4a0830c57d57f2a, []int{0}
}

func (m *Presence) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Presence.Unmarshal(m, b)
}
func (m *Presence) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Presence.Marshal(b, m, deterministic)
}
func (m *Presence) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Presence.Merge(m, src)
}
func (m *Presence) XXX_Size() int {
	return xxx_messageInfo_Presence.Size(m)
}
func (m *Presence) XXX_DiscardUnknown() {
	xxx_messageInfo_Presence.DiscardUnknown(m)
}

var xxx_messageInfo_Presence proto.InternalMessageInfo

type ByteSize struct {
	Value                int32         `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
	Unit                 ByteSize_Unit `protobuf:"varint,2,opt,name=unit,proto3,enum=prototype.ByteSize_Unit" json:"unit,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (m *ByteSize) Reset()         { *m = ByteSize{} }
func (m *ByteSize) String() string { return proto.CompactTextString(m) }
func (*ByteSize) ProtoMessage()    {}
func (*ByteSize) Descriptor() ([]byte, []int) {
	return fileDescriptor_e4a0830c57d57f2a, []int{1}
}

func (m *ByteSize) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ByteSize.Unmarshal(m, b)
}
func (m *ByteSize) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ByteSize.Marshal(b, m, deterministic)
}
func (m *ByteSize) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ByteSize.Merge(m, src)
}
func (m *ByteSize) XXX_Size() int {
	return xxx_messageInfo_ByteSize.Size(m)
}
func (m *ByteSize) XXX_DiscardUnknown() {
	xxx_messageInfo_ByteSize.DiscardUnknown(m)
}

var xxx_messageInfo_ByteSize proto.InternalMessageInfo

func (m *ByteSize) GetValue() int32 {
	if m != nil {
		return m.Value
	}
	return 0
}

func (m *ByteSize) GetUnit() ByteSize_Unit {
	if m != nil {
		return m.Unit
	}
	return ByteSize_UNIT_UNDEFINED
}

// 4-digit hex encoded strings
type UsbDeviceId struct {
	VendorId             string   `protobuf:"bytes,1,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"`
	ProductId            string   `protobuf:"bytes,2,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"`
	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 *UsbDeviceId) Reset()         { *m = UsbDeviceId{} }
func (m *UsbDeviceId) String() string { return proto.CompactTextString(m) }
func (*UsbDeviceId) ProtoMessage()    {}
func (*UsbDeviceId) Descriptor() ([]byte, []int) {
	return fileDescriptor_e4a0830c57d57f2a, []int{2}
}

func (m *UsbDeviceId) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_UsbDeviceId.Unmarshal(m, b)
}
func (m *UsbDeviceId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_UsbDeviceId.Marshal(b, m, deterministic)
}
func (m *UsbDeviceId) XXX_Merge(src proto.Message) {
	xxx_messageInfo_UsbDeviceId.Merge(m, src)
}
func (m *UsbDeviceId) XXX_Size() int {
	return xxx_messageInfo_UsbDeviceId.Size(m)
}
func (m *UsbDeviceId) XXX_DiscardUnknown() {
	xxx_messageInfo_UsbDeviceId.DiscardUnknown(m)
}

var xxx_messageInfo_UsbDeviceId proto.InternalMessageInfo

func (m *UsbDeviceId) GetVendorId() string {
	if m != nil {
		return m.VendorId
	}
	return ""
}

func (m *UsbDeviceId) GetProductId() string {
	if m != nil {
		return m.ProductId
	}
	return ""
}

func (m *UsbDeviceId) GetBcdDevice() string {
	if m != nil {
		return m.BcdDevice
	}
	return ""
}

func init() {
	proto.RegisterEnum("prototype.Presence_Indicator", Presence_Indicator_name, Presence_Indicator_value)
	proto.RegisterEnum("prototype.ByteSize_Unit", ByteSize_Unit_name, ByteSize_Unit_value)
	proto.RegisterType((*Presence)(nil), "prototype.Presence")
	proto.RegisterType((*ByteSize)(nil), "prototype.ByteSize")
	proto.RegisterType((*UsbDeviceId)(nil), "prototype.UsbDeviceId")
}

func init() { proto.RegisterFile("prototype/common.proto", fileDescriptor_e4a0830c57d57f2a) }

var fileDescriptor_e4a0830c57d57f2a = []byte{
	// 329 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x3c, 0x8f, 0x51, 0x6b, 0xea, 0x30,
	0x14, 0xc7, 0x6d, 0xad, 0xde, 0xf6, 0x08, 0xde, 0x10, 0xe4, 0x52, 0xb8, 0x5c, 0x90, 0x3e, 0xf9,
	0x70, 0x69, 0x61, 0xb2, 0xb7, 0xc1, 0xa0, 0xb3, 0x1b, 0x45, 0x16, 0xa5, 0xb6, 0x8c, 0xed, 0xa5,
	0xd8, 0x24, 0xd3, 0xc0, 0xda, 0x48, 0x6c, 0x05, 0xf7, 0x19, 0xf6, 0xa1, 0x47, 0xd3, 0xe9, 0xd3,
	0xc9, 0xff, 0xf7, 0xcb, 0x39, 0x9c, 0x03, 0x7f, 0x0e, 0x4a, 0xd6, 0xb2, 0x3e, 0x1f, 0x78, 0x40,
	0x65, 0x59, 0xca, 0xca, 0xd7, 0x00, 0x3b, 0x57, 0xee, 0x2d, 0xc1, 0x5e, 0x2b, 0x7e, 0xe4, 0x15,
	0xe5, 0xde, 0x3d, 0x38, 0x71, 0xc5, 0x04, 0xdd, 0xd6, 0x52, 0xe1, 0x09, 0xa0, 0x75, 0x12, 0x6d,
	0x22, 0xf2, 0x10, 0xe5, 0x19, 0x59, 0x92, 0xd5, 0x0b, 0x41, 0x3d, 0x3c, 0x82, 0x5f, 0x1d, 0x4d,
	0x91, 0x81, 0x7f, 0xc3, 0x88, 0xac, 0xd2, 0xfc, 0x02, 0x4c, 0xef, 0xcb, 0x00, 0x3b, 0x3c, 0xd7,
	0x7c, 0x23, 0x3e, 0x39, 0x9e, 0xc0, 0xe0, 0xb4, 0xfd, 0x68, 0xb8, 0x6b, 0x4c, 0x8d, 0xd9, 0x20,
	0xe9, 0x02, 0xfe, 0x0f, 0x56, 0x53, 0x89, 0xda, 0x35, 0xa7, 0xc6, 0x6c, 0x7c, 0xe3, 0xfa, 0xd7,
	0x4d, 0xfc, 0x4b, 0xa3, 0x9f, 0x55, 0xa2, 0x4e, 0xf4, 0x2f, 0xef, 0x0e, 0xac, 0x36, 0x61, 0x0c,
	0xe3, 0x8c, 0xc4, 0x69, 0x9e, 0x91, 0x45, 0xf4, 0x18, 0x93, 0x68, 0x81, 0x7a, 0xd8, 0x06, 0x2b,
	0x7c, 0x4d, 0x23, 0x64, 0xe0, 0x21, 0x98, 0xcb, 0x10, 0x99, 0x6d, 0x7d, 0x0e, 0x51, 0xbf, 0xad,
	0x4f, 0x21, 0xb2, 0xbc, 0x3d, 0x8c, 0xb2, 0x63, 0xb1, 0xe0, 0x27, 0x41, 0x79, 0xcc, 0xf0, 0x5f,
	0x70, 0x4e, 0xbc, 0x62, 0x52, 0xe5, 0x82, 0xe9, 0xa5, 0x9c, 0xc4, 0xee, 0x40, 0xcc, 0xf0, 0x3f,
	0x80, 0x83, 0x92, 0xac, 0xa1, 0x75, 0x6b, 0x4d, 0x6d, 0x9d, 0x1f, 0xd2, 0xe9, 0x82, 0xb2, 0x9c,
	0xe9, 0x59, 0x6e, 0xbf, 0xd3, 0x05, 0x65, 0xdd, 0xf0, 0xf0, 0xf6, 0x6d, 0xbe, 0x93, 0x3e, 0xdd,
	0x2b, 0x59, 0x8a, 0xa6, 0xf4, 0xa5, 0xda, 0x05, 0x97, 0x20, 0x8f, 0x81, 0xa8, 0xde, 0xd5, 0x36,
	0xd0, 0x97, 0x06, 0x3b, 0x19, 0x5c, 0x4f, 0x2e, 0x86, 0xfa, 0x39, 0xff, 0x0e, 0x00, 0x00, 0xff,
	0xff, 0x81, 0x32, 0x21, 0xe9, 0xa8, 0x01, 0x00, 0x00,
}
