// NOTICE: SEMI makes no warranties or representations as to the suitability of // the standards set forth herein for any particular application. The // determination of the suitability of the standard is solely the responsibility // of the user. Users are cautioned to refer to manufacturer's instructions, // product labels, product data sheets, and other relevant literature, // respecting any materials or equipment mentioned herein. These standards // are subject to change without notice. // // By publication of this standard, Semiconductor Equipment and Materials // International (SEMI) takes no position respecting the validity of any patent // rights or copyrights asserted in connection with any items mentioned in this // standard. Users of this standard are expressly advised that determination of // any such patent rights or copyrights, and the risk of infringement of such // rights are entirely their own responsibility. // This proto file will define representations of objects in SEMI E134 in the Protocol Buffer 3 language syntax = "proto3"; package semi; // Import statements allow Protocol Buffer messages defined in this .proto file to use // Protocol Buffer messages defined in other .proto files // Import statements need to match the filenames of the corresponding .proto files to import for // this .proto file to compile properly. // // This .proto file can import .proto files corresponding to newer revisions of SEMI Standards // used by this SEMI Standard as long as they are compatible (e.g. the SEMI standard revision corresponding // to the .proto file to import is the latest revision referenced by the SEMI standard corresponding to this // .proto file. // * This allows referenced SEMI Standards to be updated without having to constantly update the import statements // used by this .proto file. // * For example, implementers can update the import statement referencing the .proto file corresponding to a newer // revision of SEMI E179. // * If a specific revision of the referenced SEMI Standard is required, this .proto file will be explicitly updated to // import the corresponding .proto file of the referenced SEMI standard as part of updates to this .proto file. import "semi_e179-1224.proto"; import "semi_e125-02-1224.proto"; import "semi_e132-02-1224.proto"; import "google/protobuf/descriptor.proto"; import "google/protobuf/timestamp.proto"; // *************************************************************** // Version information // *************************************************************** // Protobuf3 doesn't support the concept of constants // We want a way for the implementor to get the .proto file version // if they want to log or check this information. // We workaround the issue by exposing a file attribute with the version information // Information corresponding to the associated SEMI Standard as a custom file option on the .proto file. // // Note - the proto_buf_file_version will uniquely identify the .proto file version. // * For the .proto file associated with the official standard, the proto_buf_file_version will // be the SEMI Standard version (including the publication date in MMYY format) // For example, // proto_buf_file_version="E134.2-MMYY" will indicate this .proto file is for // an official SEMI Version (SEMI E134.2-MMYY) // * If the .proto file is for an interim release (for example as part of a ballot), // suffix information along the lines of "-Ballot-" can be added. // For example, // proto_buf_file_version="E134.2-Ballot1234-20180522" will indicate this .proto file is an interim version for // SEMI E134.2-XXXX Ballot 1234 and was released on May 22, 2018 // // Note - semi_standard_information Field is defined once in the SEMI E179 .proto file option (semi_standard_information) = { semi_standard : "SEMI E134.2", proto_buf_file_version : "SEMIE134-02-1224" }; // *************************************************************** // Enumerated Type Definitions // *************************************************************** // Best Practice is to specify Unknown element as index 0 for future proofing // Enum elements need to be unique across the namespace, so make sure Unknown element name // is meaningful to the enum. // INTERNAL - This is defined as an enumeration, not a message // INTERNAL - Do not need to include urn:semi-org: prefix as it was to satisfy SOAP/XML requirements // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - enum JobType { JOB_TYPE_UNSPECIFIED = 0; // Value when unspecified enum value is received - per Protocol Buffers best practice SEMI_E94_CONTROL_JOB = 1; SEMI_E40_PROCESS_JOB = 2; SEMI_E30_PP_SELECT = 3; SEMI_E30_RCP_SELECT = 4; reserved 5 to 200; // Reserved for future use } // Specifies possible values for Exception's state enum ExceptionState { EXCEPTION_STATE_UNSPECIFIED = 0; // Value when unspecified enum value is received - per Protocol Buffers best practice SET_STATE = 1; CLEAR_STATE = 2; NO_STATE = 3; reserved 4 to 200; // Reserved for future use } // *************************************************************** // Message Definitions // *************************************************************** // INTERNAL - Not used - data is contained in NewData message directly // INTERNAL - rather than have a wrapper class // INTERNAL - // Represents one report type (TraceReport, EventReport or ExceptionReport) message ReportType { // INTERNAL - If DataCollectionReportType has multiple ReportType, they will be ordered according to the time of their occurrence // INTERNAL - No need for an index field to be added to this message oneof report { TraceReportType trace_report = 1; // INTERNAL - EventReportType event_report = 2; // INTERNAL - ExceptionReportType exception_report = 3; // INTERNAL - CachedDataReportType cached_data_report = 4; } } message EventReportType // INTERNAL - { uint32 event_request_id = 1; // Unique identifier specified in the event request string source_id = 2; // INTERNAL - string event_name = 3; // INTERNAL - google.protobuf.Timestamp event_time = 4; // INTERNAL - uint64 numeric_id = 6; // Use uint64 data type because largest CEID per SEMI E5 is // 8 byte integer (unsigned). repeated ParameterValueType parameter_values = 5; // Maps to ParameterValues // INTERNAL - } message ExceptionReportType // INTERNAL - { uint32 exception_request_id = 1; // Unique identifier for this exception report string source_id = 2; // INTERNAL - string exception_name = 3; // INTERNAL - string description = 4; // INTERNAL - google.protobuf.Timestamp exception_time = 5; // INTERNAL - ExceptionSeveritySpecifier severity = 6; // INTERNAL - ExceptionState state = 7; // INTERNAL - Previously string data type uint64 numeric_id = 9; // Use uint64 data type because largest ALID per SEMI E5 is // 8 byte integer (unsigned). string details = 10; repeated ParameterValueType parameter_values = 8; // Maps to ParameterValues // INTERNAL - } // INTERNAL - Although it would be more efficient to combine Trigger Time and Selector Type into a different message // INTERNAL - (One for start, one for stop), it is left as separate fields for clarity. message TraceReportType // INTERNAL - { uint32 trace_request_id = 1; // INTERNAL - google.protobuf.Timestamp report_time = 2; // INTERNAL - google.protobuf.Timestamp start_trigger_time = 3; // INTERNAL - google.protobuf.Timestamp stop_trigger_time = 4; // INTERNAL - // INTERNAL - oneof start_trigger { EventTriggerType start_event_trigger = 5; // INTERNAL - ExceptionTriggerType start_exception_trigger = 6; // INTERNAL - } oneof stop_trigger { EventTriggerType stop_event_trigger = 7; // INTERNAL - ExceptionTriggerType stop_exception_trigger = 8; // INTERNAL - } repeated CollectedDataType collected_data = 9; // INTERNAL - } // Information about the collected data message CollectedDataType // INTERNAL - { // INTERNAL - Renamed this to be index, rather than i to be more descriptive since names aren't used in transmission uint32 index = 1; // Use uint32 since the index is always a positive number (starts at 1) // INTERNAL - google.protobuf.Timestamp collection_time = 2; // INTERNAL - repeated ParameterValueType parameter_values = 3; // Maps to ParameterValues } // INTERNAL - Although it would be more efficient to combine Trigger Time and Selector Type into a different message // INTERNAL - (One for start, one for stop), it is left as separate fields for clarity. message CachedDataReportType { uint32 cached_data_request_id = 1; // Unique identifier specified in the cached data request google.protobuf.Timestamp report_time = 2; google.protobuf.Timestamp start_trigger_time = 3; google.protobuf.Timestamp stop_trigger_time = 4; google.protobuf.Timestamp collection_time = 5; float collection_interval = 6; oneof start_trigger { EventTriggerType start_event_trigger = 7; ExceptionTriggerType start_exception_trigger = 8; } oneof stop_trigger { EventTriggerType stop_event_trigger = 9; ExceptionTriggerType stop_exception_trigger = 10; } repeated ParameterArrayValueType parameter_array_values = 11; // Maps to parameterValues // Use ParameterArrayValueType rather than ParameterValueType // to enforce array data type only (rather than single data type, etc) } // INTERNAL - This will be moved to SEMI E179 in a future ballot // Represents a parameter value type that is specifically restricted to arrays message ParameterArrayValueType { // The ItemType value represents the data type for the parameter // * If an array option is specified, this should specify the data type of all the array options SimpleTypeSpecifier item_type = 1; // Parameter value is an array data type // INTERNAL - There is no need to support NoValueType because the cached data will // INTERNAL - always be an array - ArrayParameterValue array_value = 2; } // INTERNAL - Original E134.1 code had TriggerSelectorType as a choice, meaning that either the trigger was an EventTriggerType or ExceptionTriggerType // INTERNAL - Don't need to worry about this here, as we restrict to a single choice in the ReportTriggerInformation definition. // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // Defines various trigger types (Event-based and Exception-based) // Can have multiple triggers of each type message TriggerSelectorType // INTERNAL - { repeated EventTriggerType event_triggers = 1; // INTERNAL - repeated ExceptionTriggerType exception_triggers = 2; // INTERNAL - } // Specifies the Event Trigger information message EventTriggerType // INTERNAL - { uint32 event_trigger_id = 1; // Unique identifier for this event trigger string source_id = 2; // INTERNAL - string event_name = 3; // INTERNAL - string state_machine = 4; // Corresponding State machine instance or state machine reference (if any) repeated ConditionType conditions = 5; // INTERNAL - } // Describes the Condition information // Note - ConditionValue should be a single data type value (not an Array or Structured item) message ConditionType // INTERNAL - { OperatorType operator = 1; // INTERNAL - // INTERNAL - There is no need to define a ConditionValueType, as it's purpose was to allow any value parameter value whose // INTERNAL - data type matched the reference parameter. // INTERNAL - Instead, specify the condition value here directly ParameterValueType condition_value = 2; // INTERNAL - ParameterReferenceType parameter = 3; // INTERNAL - } // INTERNAL - Obsolete // INTERNAL - No need to define a message corresponding to ConditionValueType // INTERNAL - XSD:any and lax means if the XSD schema doesn't exist, no error will occur // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - message ParameterReferenceType // INTERNAL - { string source_id = 1; // INTERNAL - string parameter_name = 2; // INTERNAL - } message ExceptionTriggerType // INTERNAL - { uint32 exception_trigger_id = 1; // Unique identifier for this exception trigger string source_id = 2; // INTERNAL - string exception_name = 3; // INTERNAL - ExceptionState exception_state = 4; // INTERNAL - Previously string data type } // *************************************************************** // Data Management Messages // *************************************************************** message ParameterRequestType // INTERNAL - { string source_id = 1; // INTERNAL - string parameter_name = 2; // INTERNAL - } message EventRequestType // INTERNAL - { uint32 event_request_id = 1; // Unique identifier for this event report string source_id = 2; // INTERNAL - string event_name = 3; // INTERNAL - string state_machine = 4; // Corresponding State machine instance or state machine reference (if any) repeated ParameterRequestType parameter_requests = 5; // INTERNAL - } message ExceptionRequestType // INTERNAL - { uint32 exception_request_id = 1; // Unique identifier for this exception report string source_id = 2; // INTERNAL - string exception_name = 3; // INTERNAL - ExceptionSeveritySpecifier severity = 4; // INTERNAL - } message TraceRequestType // INTERNAL - { uint32 trace_request_id = 1; // Unique identifier specified in the trace request // INTERNAL - float interval_in_seconds = 2; // INTERNAL - uint32 collection_count = 3; // Collection Count defined to be a positive integer, so use uint32 // INTERNAL - uint32 group_size = 4; // Group size defined to be a positive integer, so use uint32 // INTERNAL - bool is_cyclical = 5; // INTERNAL - // If there is no trigger, do not populate the oneof field. oneof start_trigger { TriggerSelectorType start_on = 6; // INTERNAL - } oneof stop_trigger { TriggerSelectorType stop_on = 7; // INTERNAL - } repeated ParameterRequestType parameter_requests = 8; // INTERNAL - } message CachedDataRequestType { uint32 cached_data_request_id = 1; // Unique identifier specified in the cached data request float collection_interval = 2; uint32 collection_count = 3; // Collection Count defined to be a positive integer, so use uint32 uint32 reporting_interval = 4; // Reporting Interval defined to be a positive integer, so use uint32 bool is_cyclical = 5; // If there is no trigger, do not populate the oneof field. oneof start_trigger { TriggerSelectorType starts_on = 6; } oneof stop_trigger { TriggerSelectorType stops_on = 7; } repeated ParameterRequestType parameter_requests = 8; } message RequestType { oneof request { EventRequestType event_request = 1; // INTERNAL - ExceptionRequestType exception_request = 2; // INTERNAL - TraceRequestType trace_request = 3; // INTERNAL - CachedDataRequestType cached_data_request = 4; } } message DataCollectionPlanType // INTERNAL - { string plan_name = 1; // INTERNAL - string plan_id = 2; // INTERNAL - uint32 buffer_time_in_seconds = 3; // BufferTimeInSeconds defined to be a positive integer, so use uint32 bool is_persistent = 4; // INTERNAL - // INTERNAL - block=all prevents replacement by all derivations. Not really used in .proto structure string description = 5; // INTERNAL - repeated RequestType requests = 6; // Use RequestType to access oneof possible request type (Event, Exception, Trace) // INTERNAL - // INTERNAL - // INTERNAL - } message DCPDefinedType // INTERNAL - { string plan_id = 1; // INTERNAL - string plan_name = 2; // INTERNAL - google.protobuf.Timestamp time_defined = 3; // INTERNAL - // If this message is used as part of a message sente gRPC connection this message will be sent on is insecure, the // ClientID should be hashed (and IdHash field should be populated) oneof defined_by { string client_id = 4; // ClientID value in plain-text // INTERNAL - string client_id_hash = 5; // ClientID value hashed } // INTERNAL - block=all prevents replacement by all derivations. Not really used in .proto structure string description = 6; // INTERNAL - } message InvalidEventRequestType // INTERNAL - { string source_id = 1; // INTERNAL - string event_name = 2; // INTERNAL - bool invalid_source_id = 3; // INTERNAL - bool invalid_event_name = 4; // INTERNAL - bool not_produced_by_source = 5; // INTERNAL - bool is_duplicate = 6; // INTERNAL - bool is_request_id_invalid = 7; uint32 invalid_request_id = 8; repeated InvalidParameterRequestType invalid_parameters = 9; // INTERNAL - } message InvalidExceptionRequestType // INTERNAL - { string source_id = 1; // INTERNAL - string exception_name = 2; // INTERNAL - ExceptionSeveritySpecifier severity = 3; // INTERNAL - bool invalid_source_id = 4; // INTERNAL - bool invalid_exception_name = 5; // INTERNAL - bool invalid_severity = 6; // INTERNAL - bool not_produced_by_source = 7; // INTERNAL - bool is_duplicate = 8; // INTERNAL - bool is_request_id_invalid = 9; uint32 invalid_request_id = 10; } message InvalidParameterRequestType // INTERNAL - { string source_id = 1; // INTERNAL - string parameter_name = 2; // INTERNAL - bool invalid_source_id = 3; // INTERNAL - bool invalid_parameter_name = 4; // INTERNAL - bool not_produced_by_source = 5; // INTERNAL - bool invalid_context = 6; // INTERNAL - bool not_available_for_cached_data = 7; } message InvalidConditionType // INTERNAL - { bool unknown_operator = 1; // INTERNAL - bool bad_operator = 2; // INTERNAL - bool unknown_parameter = 3; // INTERNAL - bool invalid_parameter = 4; // INTERNAL - bool bad_value = 5; // INTERNAL - } message InvalidTriggerType // INTERNAL - { string source_id = 1; // INTERNAL - string item_name = 2; // INTERNAL - bool invalid_start_trigger = 3; // INTERNAL - bool invalid_event_trigger = 4; // INTERNAL - bool invalid_exception_state = 5; // INTERNAL - bool invalid_source_id = 6; // INTERNAL - bool invalid_item_name = 7; // INTERNAL - bool not_produced_by_source = 8; // INTERNAL - bool is_duplicate = 9; // INTERNAL - bool is_trigger_id_invalid = 10; uint32 invalid_trigger_id = 11; repeated InvalidConditionType invalid_conditions = 12; // INTERNAL - } message InvalidTraceRequestType // INTERNAL - { uint32 trace_request_id = 1; // INTERNAL - bool is_request_id_invalid = 2; // INTERNAL - repeated InvalidParameterRequestType invalid_parameters = 3; // INTERNAL - repeated InvalidTriggerType invalid_triggers = 4; // INTERNAL - // Use oneof structure to enforce 0..1 relationship - if the Interval is invalid, // implementing code should assign a value to InvalidInterval field. oneof invalid_interval_specified { InvalidIntervalType invalid_interval = 5; // INTERNAL - } // Use oneof structure to enforce 0..1 relationship - if the Cycle is invalid, // implementing code should assign a value to InvalidCycle field. oneof invalid_cycle_specified { InvalidCycleType invalid_cycle = 6; // INTERNAL - } // Use oneof structure to enforce 0..1 relationship - if the Cycle is invalid, // implementing code should assign a value to InvalidGroupSizeForInterval field. oneof invalid_group_size_for_interval_specified { InvalidGroupSizeForIntervalType invalid_group_size_for_interval = 7; // INTERNAL - } } // Although ValidInterval value could just be included in parent message, it // is defined in this message to map to current E134 specification. // (so if another attribute is added to the object in the specification, // it doesn't require an interface change in the .proto file) message InvalidIntervalType // INTERNAL - { float valid_interval = 2; // Valid trace interval closest to the requested interval // INTERNAL - } message InvalidCycleType // INTERNAL - { bool needs_start_trigger = 1; // INTERNAL - bool needs_stop_trigger = 2; // INTERNAL - } // Although ValidGroupSize value could just be included in parent message, it // is defined in this message to map to current E134 specification. // (so if another attribute is added to the object in the specification, // it doesn't require an interface change in the .proto file) message InvalidGroupSizeForIntervalType // INTERNAL - { uint32 valid_group_size = 2; // Smallest groupSize value allowed for the requested IntervalInSeconds // INTERNAL - } message InvalidCachedDataRequestType { uint32 cached_data_request_id = 1; bool is_request_id_invalid = 2; repeated InvalidParameterRequestType invalid_parameters = 3; repeated InvalidTriggerType invalid_triggers = 4; // Use oneof structure to enforce 0..1 relationship - if the Interval is invalid, // implementing code should assign a value to InvalidInterval field. oneof invalid_interval_specified { InvalidIntervalType invalid_interval = 5; } // Use oneof structure to enforce 0..1 relationship - if the Cycle is invalid, // implementing code should assign a value to InvalidCycle field. oneof invalid_cycle_specified { InvalidCycleType invalid_cycle = 6; } // Use oneof structure to enforce 0..1 relationship - if the Cycle is invalid, // implementing code should assign a value to InvalidReportingInterval field. oneof invalid_reporting_interval_specified { InvalidReportingIntervalType invalid_reporting_interval = 7; } } // Although ValidReportingInterval value could just be included in parent message, it // is defined in this message to map to current E134 specification. // (so if another attribute is added to the object in the specification, // it doesn't require an interface change in the .proto file) message InvalidReportingIntervalType { uint32 valid_reporting_interval = 1; // Reporting Interval defined to be a positive integer, so use uint32 } message InvalidPlanType // INTERNAL - { string plan_id = 1; // INTERNAL - string description = 2; // INTERNAL - repeated InvalidEventRequestType invalid_events = 3; // INTERNAL - repeated InvalidExceptionRequestType invalid_exceptions = 4; // INTERNAL - DCPDefinedType duplicate_plan_id = 5; // INTERNAL - repeated InvalidTraceRequestType invalid_trace_requests = 6; // INTERNAL - repeated InvalidCachedDataRequestType invalid_cached_data_requests = 7; } // INTERNAL - Do not need a message for this type since it will be encoded in the response message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - Do not need a message for this type since it will be encoded in the response message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - Don't need a separate message for a PlanID that doesn't exist // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - Do not need a message for this type since it will be encoded in the response message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - message DCPActivatedType // INTERNAL - { string plan_id = 1; // INTERNAL - string plan_name = 2; // INTERNAL - google.protobuf.Timestamp time_activated = 3; // INTERNAL - // If the gRPC connection this message will be sent on is insecure, the // ClientID should be hashed (and IdHash field should be populated) oneof activated_by { string client_id = 4; // ClientID value in plain-text // INTERNAL - string client_id_hash = 5; // ClientID value hashed } string description = 6; // INTERNAL - } // INTERNAL - Do not need a message for this type since it will be encoded in the response message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - Do not need a message for this type since it will be encoded in the response message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - message DCPDeactivatedType // INTERNAL - { string plan_id = 1; // INTERNAL - google.protobuf.Timestamp time_deactivated = 2; // INTERNAL - // If the gRPC connection this message will be sent on is insecure, the // ClientID should be hashed (and IdHash field should be populated) oneof deactivated_by { string client_id = 3; // ClientID value in plain-text // INTERNAL - string client_id_hash = 4; // ClientID value hashed } string reason = 5; // INTERNAL - } // INTERNAL - Do not need a separate message to represent this information // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - Do not need a message for this type since it will be encoded in the response message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - message DCPDeletedType // INTERNAL - { string plan_id = 1; // INTERNAL - google.protobuf.Timestamp time_deleted = 2; // INTERNAL - // If the gRPC connection this message will be sent on is insecure, the // ID should be hashed (and IdHash field should be populated) oneof deleted_by { string client_id = 3; // ClientID value in plain-text // INTERNAL - string client_id_hash = 4; // ClientID value hashed } } message DCPActivationType { repeated DCPActivatedType activation_notices = 1; } // INTERNAL - Do not need a separate message to represent this information // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - Do not need a message for this type since it will be encoded in the response message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - Do not need a message for this type since it will be encoded in the response message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - message ObjTypeRequestType // INTERNAL - { string source_id = 1; // INTERNAL - string obj_type_id = 2; // INTERNAL - } // INTERNAL - This type is only used to wrap data for a method call. Not required with protobuf // INTERNAL - // INTERNAL - // INTERNAL - message ObjTypeRequestErrorType // INTERNAL - { bool invalid_source = 1; // INTERNAL - bool invalid_object = 2; // INTERNAL - bool source_does_not_produce_obj_type = 3; // INTERNAL - } message ObjTypeResultType // INTERNAL - { string source_id = 1; // INTERNAL - string obj_type_id = 2; // INTERNAL - oneof Result // INTERNAL - { // Protocol Buffers does not support repeated datatypes within a oneof structure. Use helper Protocol Buffer messages to represented the repeated datatypes. ArrayObjTypeInstanceType obj_type_instances = 3; // INTERNAL - ArrayObjTypeRequestErrorType obj_type_request_errors = 4; // INTERNAL - } } // Array of ObjTypeInstanceIDs message ArrayObjTypeInstanceType { repeated string instance_ids = 1; } // Array of ObjTYpeRequestErrors message ArrayObjTypeRequestErrorType { repeated ObjTypeRequestErrorType obj_type_request_errors = 1; } // INTERNAL - This is defined as an enumeration, not a message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - message ActiveJobType // INTERNAL - { string job_id = 1; // INTERNAL - JobType job_type = 2; // INTERNAL - } message AffectedSystemType // INTERNAL - { string equipment_component = 1; // INTERNAL - string description = 2; // INTERNAL - } message PerformanceStatusType // INTERNAL - { google.protobuf.Timestamp time_last_evaluated = 1; // INTERNAL - bool is_below_threshold = 2; // INTERNAL - string description = 3; // INTERNAL - repeated DCPActivatedType active_plans = 4; // Corresponds to activePlans parameter in E134 // INTERNAL - repeated ActiveJobType active_jobs = 5; // Corresponds to activeJobs parameter in E134 // INTERNAL - repeated AffectedSystemType affected_systems = 6; // Corresponds to affectedSystems in E134 // INTERNAL - } message DCPHibernationType // INTERNAL - { string plan_id = 1; // INTERNAL - google.protobuf.Timestamp time_hibernated = 2; // INTERNAL - } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata message DefinePlanRequestType // INTERNAL - { DataCollectionPlanType new_plan = 1; // INTERNAL - } message DefinePlanResponseType // INTERNAL - { DCPDefinedType plan_defined = 1; // INTERNAL - oneof error_information // INTERNAL - { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; // INTERNAL - InvalidPlanType invalid_plan_error = 4; // INTERNAL - } } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata // INTERNAL - Currently no fields are required in this message // Note - Define the message as empty to accommodate future changes // (if adding input parameters, don't need to change the method interface) message GetDefinedPlanIdsRequestType // INTERNAL - { } message GetDefinedPlanIdsResponseType // INTERNAL - { repeated DCPDefinedType defined_plans = 1; // INTERNAL - oneof error_information // INTERNAL - { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; // INTERNAL - } } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata message GetPlanDefinitionRequestType // INTERNAL - { string plan_id = 1; // INTERNAL - } message GetPlanDefinitionResponseType // INTERNAL - { DataCollectionPlanType plan_definition = 1; // INTERNAL - oneof error_information // INTERNAL - { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; // INTERNAL - name="UnauthorizedOperationError" type="auth:UnauthorizedOperationType" nillable="false"/> string no_such_plan_error = 4; // If specified, string is the PlanID that does not exist. // INTERNAL - NoSuchPlanType - } } message ActivatePlanRequestType // INTERNAL - { string plan_id = 1; // INTERNAL - } message ActivatePlanResponseType // INTERNAL - { DCPActivatedType activated_plan = 1; // INTERNAL - oneof error_information // INTERNAL - { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; // INTERNAL - name="UnauthorizedOperationError" type="auth:UnauthorizedOperationType" nillable="false"/> string no_such_plan_error = 4; // If specified, string is the PlanID that does not exist. // INTERNAL - NoSuchPlanType - InvalidPlanType invalid_plan_error = 5; // INTERNAL - DCPActivatedType dcp_is_active_error = 6; // INTERNAL - } } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata // INTERNAL - Currently no fields are required in this message // INTERNAL - Note - Define the message as empty to accommodate future changes // INTERNAL - (if adding input parameters in the future, don't need to change the method interface) message GetActivePlanIdsRequestType // INTERNAL - { } message GetActivePlanIdsResponseType // INTERNAL - { repeated DCPActivatedType activated_plans = 1; // Corresponds to activePlans parameter in E134.GetActivePlanIds // INTERNAL - oneof error_information // INTERNAL - { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; // INTERNAL - name="UnauthorizedOperationError" type="auth:UnauthorizedOperationType" nillable="false"/> } } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata message DeactivatePlanRequestType // INTERNAL - { string plan_id = 1; // INTERNAL - bool terminate = 2; // INTERNAL - } message DeactivatePlanResponseType // INTERNAL - { DCPDeactivatedType deactivated_plan = 1; // INTERNAL - oneof error_information // INTERNAL - { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; // INTERNAL - name="UnauthorizedOperationError" type="auth:UnauthorizedOperationType" nillable="false"/> string no_such_plan_error = 4; // If specified, string is the PlanID that does not exist. // INTERNAL - NoSuchPlanType - ErrorType dcp_not_active_error = 5; // If specified, string is the PlanID that is not active. // INTERNAL - } } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata message DeletePlanRequestType // INTERNAL - { string plan_id = 1; // INTERNAL - } message DeletePlanResponseType // INTERNAL - { DCPDeletedType deleted_plan = 1; // INTERNAL - oneof error_information // INTERNAL - { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; // INTERNAL - name="UnauthorizedOperationError" type="auth:UnauthorizedOperationType" nillable="false"/> string no_such_plan_error = 4; // If specified, string is the PlanID that does not exist. // INTERNAL - NoSuchPlanType - DCPActivatedType dcp_is_active_error = 5; // INTERNAL - } } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata message GetParameterValuesRequestType // INTERNAL - { repeated ParameterRequestType parameter_requests = 1; // INTERNAL - } message GetParameterValuesResponseType // INTERNAL - { google.protobuf.Timestamp report_time = 1; // INTERNAL - repeated ParameterValueType parameter_values = 2; // INTERNAL - oneof error_information // INTERNAL - { ErrorType error = 3; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 4; // INTERNAL - name="UnauthorizedOperationError" type="auth:UnauthorizedOperationType" nillable="false"/> } } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata message GetObjTypeInstanceIdsRequestType // INTERNAL - { repeated ObjTypeRequestType obj_types = 1; // INTERNAL - } // INTERNAL - Do not need a message for this type since it will be encoded in the response message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - name="UnauthorizedOperationError" type="auth:UnauthorizedOperationType" nillable="false" minOccurs="0"/> // INTERNAL - // INTERNAL - message GetObjTypeInstanceIdsResponseType // INTERNAL - { repeated ObjTypeResultType obj_type_results = 1; // INTERNAL - oneof error_information // INTERNAL - { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; // INTERNAL - name="UnauthorizedOperationError" type="auth:UnauthorizedOperationType" nillable="false"/> ObjTypeRequestErrorType invalid_input_criteria = 4; } } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata // INTERNAL - Currently no fields are required in this message // INTERNAL - Note - Define the message as empty to accommodate future changes // INTERNAL - (if adding input parameters in the future, don't need to change the method interface) message GetCurrentPerformanceStatusRequestType // INTERNAL - { } // INTERNAL - Do not need a message for this type since it will be encoded in the response message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - name="UnauthorizedOperationError" type="auth:UnauthorizedOperationType" nillable="false" minOccurs="0"/> // INTERNAL - // INTERNAL - message GetCurrentPerformanceStatusResponseType // INTERNAL - { PerformanceStatusType status = 1; // INTERNAL - oneof error_information // INTERNAL - { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; // INTERNAL - name="UnauthorizedOperationError" type="auth:UnauthorizedOperationType" nillable="false"/> } } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata message GetCurrentDateTimeRequestType // INTERNAL - { } // INTERNAL - Do not need a message for this type since it will be encoded in the response message // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - name="UnauthorizedOperationError" type="auth:UnauthorizedOperationType" nillable="false" minOccurs="0"/> // INTERNAL - // INTERNAL - message GetCurrentDateTimeResponseType // INTERNAL - { google.protobuf.Timestamp current_time = 1; // INTERNAL - oneof error_information // INTERNAL - { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; // INTERNAL - } } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata // INTERNAL - Currently no fields are required in this message // INTERNAL - Note - Define the message as empty to accommodate future changes // INTERNAL - (if adding input parameters in the future, don't need to change the method interface) message GetCurrentSetExceptionsRequestType { } // Describes the exception set on the equipment message SetExceptionReportType { string source_id = 1; string exception_name = 2; string description = 3; google.protobuf.Timestamp exception_time = 4; ExceptionSeveritySpecifier severity = 5; } message GetCurrentSetExceptionsResponseType { repeated SetExceptionReportType set_exceptions = 1; oneof error_information { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; } } // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata message GetObjTypeAttributesRequestType { ObjTypeRequestType obj_type = 1; repeated string obj_ids = 2; // INTERNAL - per coding standard, use singular name for a repeated field repeated string attr_ids = 3; // INTERNAL - per coding standard, use singular name for a repeated field } // Represents ObjectAttributeValues object from SEMI E134 message ObjectAttributeValueType { string obj_id = 1; repeated AttributeDataType attr_data_list = 2; } message AttributeDataType { string attribute_id = 1; ParameterValueType attribute_value = 2; } message GetObjTypeAttributesResponseType { repeated ObjectAttributeValueType results = 1; // INTERNAL - per coding standard, use singular name for a repeated field oneof error_information { ErrorType error = 2; // Use this for regular errors that use ErrorType content // for example UnrecognizedSession UnauthorizedOperationType unauthorized_operation_error = 3; ObjTypeRequestErrorType invalid_input_criteria = 4; } } // INTERNAL - Don't need to specify SessionId in this message as it will be included in the parent ProtoBuf message message NewDataType // INTERNAL - { // INTERNAL - No need for DataCollectionReportType as new data message only has one data collection report // INTERNAL - // INTERNAL - // INTERNAL - // This message is the content of the DataCollectionReport class google.protobuf.Timestamp report_time = 1; // INTERNAL - string plan_id = 2; // INTERNAL - google.protobuf.Timestamp buffer_start_time = 3; // INTERNAL - google.protobuf.Timestamp buffer_end_time = 4; // INTERNAL - // INTERNAL - Cannot have repeated oneof structures in Protocol Buffer. Have a repeated ReportType field instead // INTERNAL - If there are multiple ReportType, they will be ordered according to the time of their occurrence // INTERNAL - No need for an index field to be added to this message repeated ReportType reports = 5; } // INTERNAL - This type is only used to wrap data for a method call. Not required with protobuf // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - This type is only used to wrap data for a method call. Not required with protobuf // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - This type is only used to wrap data for a method call. Not required with protobuf // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - This type is only used to wrap data for a method call. Not required with protobuf // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - This type is only used to wrap data for a method call. Not required with protobuf // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - This type is only used to wrap data for a method call. Not required with protobuf // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - // INTERNAL - With E134.1, the SessionId of the EDA Client was specified in the SOAP Header // INTERNAL - With gRPC/Protocol Buffers, it will be specified in the gRPC metadata // Container message for all the items that could be sent on the stream for the ConsumerData message ConsumerDataCollectionUsageStreamRequest { oneof request { NewDataType new_data = 1; // INTERNAL - WebService - } } // Container message for all the items that could be sent on the stream from the consumer to the EDA Server // when the EDA Server initiated gRPC Communications // Note - Define the message as empty to accommodate future changes // (if adding input parameters, don't need to change the method interface) message ConsumerDataCollectionUsageStreamResponse { // INTERNAL - If in the future we have messages that could be sent on the stream // INTERNAL - it should be defined in the oneof structure // INTERNAL - oneof result // INTERNAL - { // INTERNAL - // Add message definition // INTERNAL - } } // Container message for all the items that could be sent on the stream to the server related to Status Data // Note - Define the message as empty to accommodate future changes // (if adding input parameters, don't need to change the method interface) message DataCollectionNotificationUsageStreamRequest { // INTERNAL - If in the future we have messages that could be sent on the stream // INTERNAL - it should be defined in the oneof structure // INTERNAL - oneof request // INTERNAL - { // INTERNAL - // Add message definition // INTERNAL - } } // Container message for all the items that could be sent on the stream from the server // related to status (unprompted information from the Server) message DataCollectionNotificationUsageStreamResponse { oneof result { PerformanceStatusType performance_warning_notification = 1; // INTERNAL - WebService - PerformanceStatusType performance_restored_notification = 2; // INTERNAL - WebService - DCPDeactivatedType dcp_deactivation_notification = 3; // INTERNAL - WebService - DCPHibernationType dcp_hibernation_notification = 4; // INTERNAL - WebService - DCPDefinedType dcp_defined_notification = 5; // INTERNAL - WebService - DCPDeletedType dcp_deleted_notification = 6; // INTERNAL - WebService - DCPActivationType dcp_activation_notification = 7; } } // Container message for all the items that could be sent on the stream from the server related to Status Data message ConsumerDataCollectionNotificationUsageStreamRequest { oneof result { PerformanceStatusType performance_warning_notification = 1; // INTERNAL - WebService - PerformanceStatusType performance_restored_notification = 2; // INTERNAL - WebService - DCPDeactivatedType dcp_deactivation_notification = 3; // INTERNAL - WebService - DCPHibernationType dcp_hibernation_notification = 4; // INTERNAL - WebService - DCPDefinedType dcp_defined_notification = 5; // INTERNAL - WebService - DCPDeletedType dcp_deleted_notification = 6; // INTERNAL - WebService - DCPActivationType dcp_activation_notification = 7; } } // Container message for all the items that could be sent on the stream to the server // Note - Define the message as empty to accommodate future changes // (if adding input parameters, don't need to change the method interface) message ConsumerDataCollectionNotificationUsageStreamResponse { // INTERNAL - If in the future we have messages that could be sent on the stream // INTERNAL - it should be defined in the oneof structure // INTERNAL - oneof result // INTERNAL - { // INTERNAL - // Add message definition // INTERNAL - } } // Container message for all the items that could be sent on the stream from the consumer to the server for collected data // (when gRPC communications is established by the EDA Consumer) message DataCollectionUsageStreamRequest { // INTERNAL - If in the future we have messages that could be sent on the stream // INTERNAL - it should be defined in the oneof structure // INTERNAL - oneof result // INTERNAL - { // INTERNAL - // Add message definition // INTERNAL - } } // Container message for all the items that could be sent on the stream from the EDA Server to the consumer // (when gRPC communications is established by the EDA Consumer) message DataCollectionUsageStreamResponse { oneof result { NewDataType new_data = 1; // INTERNAL - WebService - } } // *************************************************************** // Service Definitions // *************************************************************** // This gRPC service looks after data collection functionality defined in SEMI E134 that is handled by a Client (management and receiving messages) service E134DataCollectionManagement { // ********************************************************************* // Unary Request/Response methods to manage Data Collection metadata // ********************************************************************* // INTERNAL - WebService - // INTERNAL - WebService - rpc DefinePlan (DefinePlanRequestType) returns (DefinePlanResponseType){}; // INTERNAL - WebService - // INTERNAL - WebService - rpc GetDefinedPlanIds (GetDefinedPlanIdsRequestType) returns (GetDefinedPlanIdsResponseType) {} // INTERNAL - WebService - // INTERNAL - WebService - rpc GetPlanDefinition (GetPlanDefinitionRequestType) returns (GetPlanDefinitionResponseType) {} // INTERNAL - WebService - // INTERNAL - WebService - rpc ActivatePlan (ActivatePlanRequestType) returns (ActivatePlanResponseType) {} // INTERNAL - WebService - // INTERNAL - WebService - rpc GetActivePlanIds (GetActivePlanIdsRequestType) returns (GetActivePlanIdsResponseType) {} // INTERNAL - WebService - // INTERNAL - WebService - rpc DeactivatePlan (DeactivatePlanRequestType) returns (DeactivatePlanResponseType) {} // INTERNAL - WebService - // INTERNAL - WebService - rpc DeletePlan (DeletePlanRequestType) returns (DeletePlanResponseType) {} // INTERNAL - WebService - // INTERNAL - WebService - rpc GetParameterValues (GetParameterValuesRequestType) returns (GetParameterValuesResponseType) {} // INTERNAL - WebService - // INTERNAL - WebService - rpc GetObjTypeInstanceIds (GetObjTypeInstanceIdsRequestType) returns (GetObjTypeInstanceIdsResponseType) {} // INTERNAL - WebService - // INTERNAL - WebService - rpc GetCurrentPerformanceStatus (GetCurrentPerformanceStatusRequestType) returns (GetCurrentPerformanceStatusResponseType) {} // INTERNAL - WebService - // INTERNAL - WebService - rpc GetCurrentDateTime (GetCurrentDateTimeRequestType) returns (GetCurrentDateTimeResponseType) {} rpc GetCurrentSetExceptions (GetCurrentSetExceptionsRequestType) returns (GetCurrentSetExceptionsResponseType) {} rpc GetObjTypeAttributes(GetObjTypeAttributesRequestType) returns(GetObjTypeAttributesResponseType) {} // ********************************************************************* // Streaming methods // ********************************************************************* // Establish stream to and from the Equipment Server for operational messages // INTERNAL – Client -> Server messages // INTERNAL - Use a bi-directional stream, even though there won't be any messages going to the server // INTERNAL - This is for future functionality to make it easier to support sending a message to the Server on the stream, // INTERNAL - without changing the method interface // INTERNAL - Server -> Client messages // INTERNAL - WebService - rpc DataCollectionUsageStream (stream DataCollectionUsageStreamRequest) returns (stream DataCollectionUsageStreamResponse) {} // Establish stream to and from the Equipment Server for notification messages // Separate RPC method because not all Clients are interested in these messages // INTERNAL - Put all messages related to 'unprompted' notification messages from the server into one stream // INTERNAL - coming from the EDA Server. This means several existing WebService are combined into one gRPC method // INTERNAL - // INTERNAL - Client -> Server messages // INTERNAL - Use a bi-directional stream, even though there won't be any messages going to the server // INTERNAL - This is for future functionality to make it easier to support sending a message to the Server on the stream, // INTERNAL - without changing the method interface // INTERNAL - Server -> Client messages // INTERNAL - WebService - // INTERNAL - WebService - // INTERNAL - WebService - // INTERNAL - WebService - // INTERNAL - WebService - // INTERNAL - WebService - // INTERNAL - DCPActivation WebService Notification rpc DataCollectionNotificationUsageStream (stream DataCollectionNotificationUsageStreamRequest) returns (stream DataCollectionNotificationUsageStreamResponse) {} } // This gRPC service looks after data collection functionality defined in SEMI E134 that is handled by a Consumer // It is in a separate service because the Equipment Server opens the connection to the Consumer. service E134DataCollectionConsumer { // ********************************************************************* // Unary Request/Response methods related to data collection // ********************************************************************* // None // ********************************************************************* // Streaming methods // ********************************************************************* // Establish stream to and from the Consumer for operational messages // INTERNAL - Server -> Consumer messages // INTERNAL - WebService - // INTERNAL - Consumer -> Server messages // INTERNAL - Use a bi-directional stream, even though there won't be any messages going to the server // INTERNAL - This is for future functionality to make it easier to support sending a message to the Server on the stream, // INTERNAL - without changing the method interface rpc ConsumerDataCollectionUsageStream (stream ConsumerDataCollectionUsageStreamRequest) returns (stream ConsumerDataCollectionUsageStreamResponse) {} // Establish stream to and from the Consumer for notification messages // Separate RPC method because not all Consumers are interested in these messages // INTERNAL - Put all messages related to 'unprompted' notification messages from the server into one stream // INTERNAL - coming from the EDA Server. This means several existing WebService are combined into one gRPC method // INTERNAL - // INTERNAL - Server -> Consumer messages // INTERNAL - WebService - // INTERNAL - WebService - // INTERNAL - WebService - // INTERNAL - WebService - // INTERNAL - WebService - // INTERNAL - WebService - // INTERNAL - DCPActivationNotification WebService // INTERNAL - Consumer -> Server messages // INTERNAL - Use a bi-directional stream, even though there won't be any messages going to the server // INTERNAL - This is for future functionality to make it easier to support sending a message to the Server on the stream, // INTERNAL - without changing the method interface rpc ConsumerDataCollectionNotificationUsageStream (stream ConsumerDataCollectionNotificationUsageStreamRequest) returns (stream ConsumerDataCollectionNotificationUsageStreamResponse) {} }