# -*- 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\"\xab\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\x12!\n\x0e\x63omponent_uuid\x18\x04 \x01(\x0b\x32\t.dmi.UuidB\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=1627
  _EVENTIDS._serialized_end=3677
  _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=1056
  _EVENTSCONFIGURATIONRESPONSE._serialized_start=1059
  _EVENTSCONFIGURATIONRESPONSE._serialized_end=1313
  _EVENTSCONFIGURATIONRESPONSE_REASON._serialized_start=1199
  _EVENTSCONFIGURATIONRESPONSE_REASON._serialized_end=1313
  _EVENTMETADATA._serialized_start=1315
  _EVENTMETADATA._serialized_end=1421
  _EVENT._serialized_start=1424
  _EVENT._serialized_end=1624
  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_start=3680
  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_end=3917
# @@protoc_insertion_point(module_scope)
