# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: dmi/hw_events_mgmt_service.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from dmi import commons_pb2 as dmi_dot_commons__pb2
from dmi import hw_pb2 as dmi_dot_hw__pb2
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2


DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dmi/hw_events_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"N\n\tValueType\x12\x11\n\x07int_val\x18\x01 \x01(\x03H\x00\x12\x12\n\x08uint_val\x18\x02 \x01(\x04H\x00\x12\x13\n\tfloat_val\x18\x03 \x01(\x02H\x00\x42\x05\n\x03val\"G\n\nWaterMarks\x12\x1c\n\x04high\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12\x1b\n\x03low\x18\x02 \x01(\x0b\x32\x0e.dmi.ValueType\"]\n\nThresholds\x12 \n\x05upper\x18\x01 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x12 \n\x05lower\x18\x02 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x42\x0b\n\tthreshold\"c\n\x14ThresholdInformation\x12&\n\x0eobserved_value\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12#\n\nthresholds\x18\x02 \x01(\x0b\x32\x0f.dmi.Thresholds\"g\n\x08\x45ventCfg\x12\x1f\n\x08\x65vent_id\x18\x01 \x01(\x0e\x32\r.dmi.EventIds\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12#\n\nthresholds\x18\x03 \x01(\x0b\x32\x0f.dmi.Thresholds\")\n\tEventsCfg\x12\x1c\n\x05items\x18\x01 \x03(\x0b\x32\r.dmi.EventCfg\"\xf8\x01\n\x12ListEventsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12.\n\x06reason\x18\x02 \x01(\x0e\x32\x1e.dmi.ListEventsResponse.Reason\x12\x1e\n\x06\x65vents\x18\x03 \x01(\x0b\x32\x0e.dmi.EventsCfg\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"\x88\x01\n\x1a\x45ventsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x0e.dmi.EventsCfgH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"\xfe\x01\n\x1b\x45ventsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x37\n\x06reason\x18\x02 \x01(\x0e\x32\'.dmi.EventsConfigurationResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"r\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x12\n\x0eINVALID_CONFIG\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"j\n\rEventMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"\xc8\x01\n\x05\x45vent\x12*\n\x0e\x65vent_metadata\x18\x01 \x01(\x0b\x32\x12.dmi.EventMetaData\x12\x1f\n\x08\x65vent_id\x18\x02 \x01(\x0e\x32\r.dmi.EventIds\x12-\n\traised_ts\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\x0ethreshold_info\x18\x04 \x01(\x0b\x32\x19.dmi.ThresholdInformation\x12\x10\n\x08\x61\x64\x64_info\x18\x05 \x01(\t*\x82\x10\n\x08\x45ventIds\x12\x18\n\x14\x45VENT_NAME_UNDEFINED\x10\x00\x12\x1e\n\x1a\x45VENT_TRANSCEIVER_PLUG_OUT\x10\x64\x12\x1d\n\x19\x45VENT_TRANSCEIVER_PLUG_IN\x10\x65\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD\x10\x66\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD\x10g\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD\x10h\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD\x10i\x12-\n)EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD\x10j\x12-\n)EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD\x10k\x12.\n*EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD\x10l\x12.\n*EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD\x10m\x12.\n*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD\x10n\x12.\n*EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD\x10o\x12\x1d\n\x19\x45VENT_TRANSCEIVER_FAILURE\x10p\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED\x10q\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\x10r\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED\x10s\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\x10t\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED\x10u\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED\x10v\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED\x10w\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED\x10x\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED\x10y\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED\x10z\x12\'\n#EVENT_TRANSCEIVER_FAILURE_RECOVERED\x10{\x12\x17\n\x12\x45VENT_PSU_PLUG_OUT\x10\xc8\x01\x12\x16\n\x11\x45VENT_PSU_PLUG_IN\x10\xc9\x01\x12\x16\n\x11\x45VENT_PSU_FAILURE\x10\xca\x01\x12 \n\x1b\x45VENT_PSU_FAILURE_RECOVERED\x10\xcb\x01\x12\x16\n\x11\x45VENT_FAN_FAILURE\x10\xac\x02\x12\x17\n\x12\x45VENT_FAN_PLUG_OUT\x10\xad\x02\x12\x16\n\x11\x45VENT_FAN_PLUG_IN\x10\xae\x02\x12 \n\x1b\x45VENT_FAN_FAILURE_RECOVERED\x10\xaf\x02\x12)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL\x10\x90\x03\x12&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATAL\x10\x91\x03\x12\x33\n.EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\x92\x03\x12\x30\n+EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\x93\x03\x12\x1a\n\x15\x45VENT_HW_DEVICE_RESET\x10\xf4\x03\x12/\n*EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL\x10\xf5\x03\x12,\n\'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL\x10\xf6\x03\x12\x39\n4EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\xf7\x03\x12\x36\n1EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\xf8\x03\x12\x1b\n\x16\x45VENT_HW_DEVICE_REBOOT\x10\xf9\x03\x12\'\n\"EVENT_HW_TEMPERATURE_SENSOR_FAILED\x10\xfa\x03\x12,\n\'EVENT_HW_ALL_TEMPERATURE_SENSORS_FAILED\x10\xfb\x03\x12\x1d\n\x18\x45VENT_LINE_CARD_PLUG_OUT\x10\xd8\x04\x12\x1c\n\x17\x45VENT_LINE_CARD_PLUG_IN\x10\xd9\x04\x32\xed\x01\n\x1dNativeEventsManagementService\x12\x36\n\nListEvents\x12\x0f.dmi.HardwareID\x1a\x17.dmi.ListEventsResponse\x12^\n\x19UpdateEventsConfiguration\x12\x1f.dmi.EventsConfigurationRequest\x1a .dmi.EventsConfigurationResponse\x12\x34\n\x0cStreamEvents\x12\x16.google.protobuf.Empty\x1a\n.dmi.Event0\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3')

_EVENTIDS = DESCRIPTOR.enum_types_by_name['EventIds']
EventIds = enum_type_wrapper.EnumTypeWrapper(_EVENTIDS)
EVENT_NAME_UNDEFINED = 0
EVENT_TRANSCEIVER_PLUG_OUT = 100
EVENT_TRANSCEIVER_PLUG_IN = 101
EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD = 102
EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD = 103
EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD = 104
EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD = 105
EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD = 106
EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD = 107
EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD = 108
EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD = 109
EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD = 110
EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD = 111
EVENT_TRANSCEIVER_FAILURE = 112
EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED = 113
EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED = 114
EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED = 115
EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED = 116
EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED = 117
EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED = 118
EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED = 119
EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED = 120
EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED = 121
EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED = 122
EVENT_TRANSCEIVER_FAILURE_RECOVERED = 123
EVENT_PSU_PLUG_OUT = 200
EVENT_PSU_PLUG_IN = 201
EVENT_PSU_FAILURE = 202
EVENT_PSU_FAILURE_RECOVERED = 203
EVENT_FAN_FAILURE = 300
EVENT_FAN_PLUG_OUT = 301
EVENT_FAN_PLUG_IN = 302
EVENT_FAN_FAILURE_RECOVERED = 303
EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL = 400
EVENT_CPU_TEMPERATURE_ABOVE_FATAL = 401
EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED = 402
EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED = 403
EVENT_HW_DEVICE_RESET = 500
EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL = 501
EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL = 502
EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED = 503
EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED = 504
EVENT_HW_DEVICE_REBOOT = 505
EVENT_HW_TEMPERATURE_SENSOR_FAILED = 506
EVENT_HW_ALL_TEMPERATURE_SENSORS_FAILED = 507
EVENT_LINE_CARD_PLUG_OUT = 600
EVENT_LINE_CARD_PLUG_IN = 601


_VALUETYPE = DESCRIPTOR.message_types_by_name['ValueType']
_WATERMARKS = DESCRIPTOR.message_types_by_name['WaterMarks']
_THRESHOLDS = DESCRIPTOR.message_types_by_name['Thresholds']
_THRESHOLDINFORMATION = DESCRIPTOR.message_types_by_name['ThresholdInformation']
_EVENTCFG = DESCRIPTOR.message_types_by_name['EventCfg']
_EVENTSCFG = DESCRIPTOR.message_types_by_name['EventsCfg']
_LISTEVENTSRESPONSE = DESCRIPTOR.message_types_by_name['ListEventsResponse']
_EVENTSCONFIGURATIONREQUEST = DESCRIPTOR.message_types_by_name['EventsConfigurationRequest']
_EVENTSCONFIGURATIONRESPONSE = DESCRIPTOR.message_types_by_name['EventsConfigurationResponse']
_EVENTMETADATA = DESCRIPTOR.message_types_by_name['EventMetaData']
_EVENT = DESCRIPTOR.message_types_by_name['Event']
_LISTEVENTSRESPONSE_REASON = _LISTEVENTSRESPONSE.enum_types_by_name['Reason']
_EVENTSCONFIGURATIONRESPONSE_REASON = _EVENTSCONFIGURATIONRESPONSE.enum_types_by_name['Reason']
ValueType = _reflection.GeneratedProtocolMessageType('ValueType', (_message.Message,), {
  'DESCRIPTOR' : _VALUETYPE,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.ValueType)
  })
_sym_db.RegisterMessage(ValueType)

WaterMarks = _reflection.GeneratedProtocolMessageType('WaterMarks', (_message.Message,), {
  'DESCRIPTOR' : _WATERMARKS,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.WaterMarks)
  })
_sym_db.RegisterMessage(WaterMarks)

Thresholds = _reflection.GeneratedProtocolMessageType('Thresholds', (_message.Message,), {
  'DESCRIPTOR' : _THRESHOLDS,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.Thresholds)
  })
_sym_db.RegisterMessage(Thresholds)

ThresholdInformation = _reflection.GeneratedProtocolMessageType('ThresholdInformation', (_message.Message,), {
  'DESCRIPTOR' : _THRESHOLDINFORMATION,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.ThresholdInformation)
  })
_sym_db.RegisterMessage(ThresholdInformation)

EventCfg = _reflection.GeneratedProtocolMessageType('EventCfg', (_message.Message,), {
  'DESCRIPTOR' : _EVENTCFG,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.EventCfg)
  })
_sym_db.RegisterMessage(EventCfg)

EventsCfg = _reflection.GeneratedProtocolMessageType('EventsCfg', (_message.Message,), {
  'DESCRIPTOR' : _EVENTSCFG,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.EventsCfg)
  })
_sym_db.RegisterMessage(EventsCfg)

ListEventsResponse = _reflection.GeneratedProtocolMessageType('ListEventsResponse', (_message.Message,), {
  'DESCRIPTOR' : _LISTEVENTSRESPONSE,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.ListEventsResponse)
  })
_sym_db.RegisterMessage(ListEventsResponse)

EventsConfigurationRequest = _reflection.GeneratedProtocolMessageType('EventsConfigurationRequest', (_message.Message,), {
  'DESCRIPTOR' : _EVENTSCONFIGURATIONREQUEST,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.EventsConfigurationRequest)
  })
_sym_db.RegisterMessage(EventsConfigurationRequest)

EventsConfigurationResponse = _reflection.GeneratedProtocolMessageType('EventsConfigurationResponse', (_message.Message,), {
  'DESCRIPTOR' : _EVENTSCONFIGURATIONRESPONSE,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.EventsConfigurationResponse)
  })
_sym_db.RegisterMessage(EventsConfigurationResponse)

EventMetaData = _reflection.GeneratedProtocolMessageType('EventMetaData', (_message.Message,), {
  'DESCRIPTOR' : _EVENTMETADATA,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.EventMetaData)
  })
_sym_db.RegisterMessage(EventMetaData)

Event = _reflection.GeneratedProtocolMessageType('Event', (_message.Message,), {
  'DESCRIPTOR' : _EVENT,
  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
  # @@protoc_insertion_point(class_scope:dmi.Event)
  })
_sym_db.RegisterMessage(Event)

_NATIVEEVENTSMANAGEMENTSERVICE = DESCRIPTOR.services_by_name['NativeEventsManagementService']
if _descriptor._USE_C_DESCRIPTORS == False:

  DESCRIPTOR._options = None
  DESCRIPTOR._serialized_options = b'Z9github.com/opencord/device-management-interface/v3/go/dmi'
  _EVENTIDS._serialized_start=1592
  _EVENTIDS._serialized_end=3642
  _VALUETYPE._serialized_start=136
  _VALUETYPE._serialized_end=214
  _WATERMARKS._serialized_start=216
  _WATERMARKS._serialized_end=287
  _THRESHOLDS._serialized_start=289
  _THRESHOLDS._serialized_end=382
  _THRESHOLDINFORMATION._serialized_start=384
  _THRESHOLDINFORMATION._serialized_end=483
  _EVENTCFG._serialized_start=485
  _EVENTCFG._serialized_end=588
  _EVENTSCFG._serialized_start=590
  _EVENTSCFG._serialized_end=631
  _LISTEVENTSRESPONSE._serialized_start=634
  _LISTEVENTSRESPONSE._serialized_end=882
  _LISTEVENTSRESPONSE_REASON._serialized_start=788
  _LISTEVENTSRESPONSE_REASON._serialized_end=882
  _EVENTSCONFIGURATIONREQUEST._serialized_start=885
  _EVENTSCONFIGURATIONREQUEST._serialized_end=1021
  _EVENTSCONFIGURATIONRESPONSE._serialized_start=1024
  _EVENTSCONFIGURATIONRESPONSE._serialized_end=1278
  _EVENTSCONFIGURATIONRESPONSE_REASON._serialized_start=1164
  _EVENTSCONFIGURATIONRESPONSE_REASON._serialized_end=1278
  _EVENTMETADATA._serialized_start=1280
  _EVENTMETADATA._serialized_end=1386
  _EVENT._serialized_start=1389
  _EVENT._serialized_end=1589
  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_start=3645
  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_end=3882
# @@protoc_insertion_point(module_scope)
