Committing vendored dependencies and generated protos

Change-Id: I349c149b513d9de7d9f60bde2c954a939da2fc54
diff --git a/vendor/github.com/cboling/omci/generated/omcierror.go b/vendor/github.com/cboling/omci/generated/omcierror.go
new file mode 100644
index 0000000..8bf369e
--- /dev/null
+++ b/vendor/github.com/cboling/omci/generated/omcierror.go
@@ -0,0 +1,250 @@
+/*
+ * Copyright (c) 2018 - present.  Boling Consulting Solutions (bcsw.net)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ *              https://github.com/cboling/OMCI-parser/README.md
+ */
+package generated
+
+import (
+	"errors"
+	"fmt"
+)
+
+// Custom Go Error messages for common OMCI errors
+//
+// Response Status code related errors
+type OmciErrors interface {
+	Error() string
+	StatusCode() Results
+	GetError() error
+}
+
+type OmciError struct {
+	err        string
+	statusCode Results
+}
+
+func (e *OmciError) GetError() error {
+	return errors.New(e.err)
+}
+
+func (e *OmciError) Error() string {
+	return e.err
+}
+
+func (e *OmciError) StatusCode() Results {
+	return e.statusCode
+}
+
+func NewOmciError(text string, status Results) OmciErrors {
+	if status == Success {
+		panic("Do not use OmciError to convey successful results")
+	}
+	return &OmciError{
+		err:        text,
+		statusCode: status,
+	}
+}
+
+type OmciNonStatusError struct {
+	OmciError
+}
+
+// NewNonStatusError is for processing errors that do not involve
+// frame processing status & results
+func NewNonStatusError(args ...interface{}) OmciErrors {
+	defaultValue := "command processing error"
+	return &OmciProcessingError{
+		OmciError: OmciError{
+			err: genMessage(defaultValue, args...),
+		},
+	}
+}
+
+type OmciProcessingError struct {
+	OmciError
+}
+
+// NewProcessingError means the command processing failed at the ONU
+// for reasons not described by one of the more specific error codes.
+func NewProcessingError(args ...interface{}) OmciErrors {
+	defaultValue := "command processing error"
+	return &OmciProcessingError{
+		OmciError: OmciError{
+			err:        genMessage(defaultValue, args...),
+			statusCode: ProcessingError,
+		},
+	}
+}
+
+type NotSupportedError struct {
+	OmciError
+}
+
+// NewNotSupportedError means that the message type indicated in byte 3 is
+// not supported by the ONU.
+func NewNotSupportedError(args ...interface{}) OmciErrors {
+	defaultValue := "command not supported"
+	return &NotSupportedError{
+		OmciError: OmciError{
+			err:        genMessage(defaultValue, args...),
+			statusCode: NotSupported,
+		},
+	}
+}
+
+type ParamError struct {
+	OmciError
+	FailureMask uint16
+}
+
+// NewParameterError means that the command message received by the
+// ONU was errored. It would be appropriate if an attribute mask
+// were out of range, for example. In practice, this result code is
+// frequently used interchangeably with code 1001. However, the
+// optional attribute and attribute execution masks in the reply
+// messages are only defined for code 1001.
+func NewParameterError(mask uint16, args ...interface{}) OmciErrors {
+	defaultValue := "parameter error"
+	return &ParamError{
+		OmciError: OmciError{
+			err:        genMessage(defaultValue, args...),
+			statusCode: ParameterError,
+		},
+		FailureMask: mask,
+	}
+}
+
+type UnknownEntityError struct {
+	OmciError
+}
+
+// NewUnknownEntityError This result means that the managed entity class
+// (bytes 5..6) is not supported by the ONU.
+func NewUnknownEntityError(args ...interface{}) OmciErrors {
+	defaultValue := "unknown managed entity"
+	return &UnknownEntityError{
+		OmciError: OmciError{
+			err:        genMessage(defaultValue, args...),
+			statusCode: UnknownEntity,
+		},
+	}
+}
+
+type UnknownInstanceError struct {
+	OmciError
+}
+
+// NewUnknownInstanceError means that the managed entity instance (bytes 7..8)
+// does not exist in the ONU.
+func NewUnknownInstanceError(args ...interface{}) OmciErrors {
+	defaultValue := "unknown managed entity instance"
+	return &UnknownInstanceError{
+		OmciError: OmciError{
+			err:        genMessage(defaultValue, args...),
+			statusCode: UnknownInstance,
+		},
+	}
+}
+
+type DeviceBusyError struct {
+	OmciError
+}
+
+// NewDeviceBusyError means that the command could not be processed due
+// to process-related congestion at the ONU. This result code may
+// also be used as a pause indication to the OLT while the ONU
+// conducts a time-consuming operation such as storage of a
+// software image into non-volatile memory.
+func NewDeviceBusyError(args ...interface{}) OmciErrors {
+	defaultValue := "device busy"
+	return &DeviceBusyError{
+		OmciError: OmciError{
+			err:        genMessage(defaultValue, args...),
+			statusCode: DeviceBusy,
+		},
+	}
+}
+
+type InstanceExistsError struct {
+	OmciError
+}
+
+// NewInstanceExistsError
+func NewInstanceExistsError(args ...interface{}) OmciErrors {
+	defaultValue := "instance exists"
+	return &InstanceExistsError{
+		OmciError: OmciError{
+			err:        genMessage(defaultValue, args...),
+			statusCode: InstanceExists,
+		},
+	}
+}
+
+type AttributeFailureError struct {
+	OmciError
+}
+
+// NewAttributeFailureError means that the ONU already has a managed entity
+// instance that corresponds to the one the OLT is attempting to create.
+func NewAttributeFailureError(args ...interface{}) OmciErrors {
+	defaultValue := "attribute(s) failed or unknown"
+	return &AttributeFailureError{
+		OmciError: OmciError{
+			err:        genMessage(defaultValue, args...),
+			statusCode: AttributeFailure,
+		},
+	}
+}
+
+type MessageTruncatedError struct {
+	OmciError
+}
+
+// NewAttributeFailureError means that the ONU already has a managed entity
+// instance that corresponds to the one the OLT is attempting to create.
+func NewMessageTruncatedError(args ...interface{}) OmciErrors {
+	defaultValue := "out-of-space. Cannot fit attribute into message"
+	return &MessageTruncatedError{
+		OmciError: OmciError{
+			err:        genMessage(defaultValue, args...),
+			statusCode: ProcessingError,
+		},
+	}
+}
+
+func genMessage(defaultValue string, args ...interface{}) string {
+	switch len(args) {
+	case 0:
+		return defaultValue
+
+	case 1:
+		switch first := args[0].(type) {
+		case string:
+			// Assume a simple, pre-formatted string
+			return args[0].(string)
+
+		case func() string:
+			// Assume a closure with no other arguments used
+			return first()
+
+		default:
+			panic("Unsupported parameter type")
+		}
+	}
+	return fmt.Sprintf(args[0].(string), args[1:]...)
+}