VOL-4640: Changes to DMI interface to support Combo PON functionality

Change-Id: Ia80843d350e07ad6afe6b42a9da105f3be82706b
diff --git a/cpp/dmi/hw.pb.cc b/cpp/dmi/hw.pb.cc
index 8c3af98..df8bd1a 100644
--- a/cpp/dmi/hw.pb.cc
+++ b/cpp/dmi/hw.pb.cc
@@ -19,6 +19,7 @@
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ContainerComponentAttributes_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PonIdConfig_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PsuComponentAttributes_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TransceiverComponentChangeAttributes_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TransceiverComponentsAttributes_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Uri_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Uuid_dmi_2fhw_2eproto;
@@ -57,6 +58,10 @@
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<PortComponentChangeAttributes> _instance;
 } _PortComponentChangeAttributes_default_instance_;
+class TransceiverComponentChangeAttributesDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TransceiverComponentChangeAttributes> _instance;
+} _TransceiverComponentChangeAttributes_default_instance_;
 class PonIdConfigDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<PonIdConfig> _instance;
@@ -89,6 +94,7 @@
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<ModifiableComponent> _instance;
   const ::dmi::PortComponentChangeAttributes* port_attr_;
+  const ::dmi::TransceiverComponentChangeAttributes* trx_attr_;
 } _ModifiableComponent_default_instance_;
 }  // namespace dmi
 static void InitDefaultsUuid_dmi_2fhw_2eproto() {
@@ -194,6 +200,20 @@
     {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsPortComponentChangeAttributes_dmi_2fhw_2eproto}, {
       &scc_info_PonIdConfig_dmi_2fhw_2eproto.base,}};
 
+static void InitDefaultsTransceiverComponentChangeAttributes_dmi_2fhw_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_TransceiverComponentChangeAttributes_default_instance_;
+    new (ptr) ::dmi::TransceiverComponentChangeAttributes();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::TransceiverComponentChangeAttributes::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_TransceiverComponentChangeAttributes_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTransceiverComponentChangeAttributes_dmi_2fhw_2eproto}, {}};
+
 static void InitDefaultsPonIdConfig_dmi_2fhw_2eproto() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
@@ -300,11 +320,12 @@
   ::dmi::ModifiableComponent::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<3> scc_info_ModifiableComponent_dmi_2fhw_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsModifiableComponent_dmi_2fhw_2eproto}, {
+::google::protobuf::internal::SCCInfo<4> scc_info_ModifiableComponent_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsModifiableComponent_dmi_2fhw_2eproto}, {
       &scc_info_Component_dmi_2fhw_2eproto.base,
       &scc_info_Uri_dmi_2fhw_2eproto.base,
-      &scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto.base,}};
+      &scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto.base,
+      &scc_info_TransceiverComponentChangeAttributes_dmi_2fhw_2eproto.base,}};
 
 void InitDefaults_dmi_2fhw_2eproto() {
   ::google::protobuf::internal::InitSCC(&scc_info_Uuid_dmi_2fhw_2eproto.base);
@@ -314,6 +335,7 @@
   ::google::protobuf::internal::InitSCC(&scc_info_ComponentSensorData_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PortComponentAttributes_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_TransceiverComponentChangeAttributes_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PonIdConfig_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_ContainerComponentAttributes_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PsuComponentAttributes_dmi_2fhw_2eproto.base);
@@ -323,7 +345,7 @@
   ::google::protobuf::internal::InitSCC(&scc_info_ModifiableComponent_dmi_2fhw_2eproto.base);
 }
 
-::google::protobuf::Metadata file_level_metadata_dmi_2fhw_2eproto[14];
+::google::protobuf::Metadata file_level_metadata_dmi_2fhw_2eproto[15];
 const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_dmi_2fhw_2eproto[15];
 constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_dmi_2fhw_2eproto = nullptr;
 
@@ -390,6 +412,12 @@
   ~0u,  // no _weak_field_map_
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentChangeAttributes, pon_id_config_),
   ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::TransceiverComponentChangeAttributes, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::TransceiverComponentChangeAttributes, trans_type_),
+  ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::dmi::PonIdConfig, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
@@ -472,6 +500,7 @@
   PROTOBUF_FIELD_OFFSET(::dmi::ModifiableComponent, uri_),
   PROTOBUF_FIELD_OFFSET(::dmi::ModifiableComponent, admin_state_),
   offsetof(::dmi::ModifiableComponentDefaultTypeInternal, port_attr_),
+  offsetof(::dmi::ModifiableComponentDefaultTypeInternal, trx_attr_),
   PROTOBUF_FIELD_OFFSET(::dmi::ModifiableComponent, specific_),
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
@@ -482,13 +511,14 @@
   { 29, -1, sizeof(::dmi::ComponentSensorData)},
   { 43, -1, sizeof(::dmi::PortComponentAttributes)},
   { 55, -1, sizeof(::dmi::PortComponentChangeAttributes)},
-  { 61, -1, sizeof(::dmi::PonIdConfig)},
-  { 68, -1, sizeof(::dmi::ContainerComponentAttributes)},
-  { 74, -1, sizeof(::dmi::PsuComponentAttributes)},
-  { 80, -1, sizeof(::dmi::TransceiverComponentsAttributes)},
-  { 92, -1, sizeof(::dmi::Component)},
-  { 122, -1, sizeof(::dmi::Hardware)},
-  { 130, -1, sizeof(::dmi::ModifiableComponent)},
+  { 61, -1, sizeof(::dmi::TransceiverComponentChangeAttributes)},
+  { 67, -1, sizeof(::dmi::PonIdConfig)},
+  { 74, -1, sizeof(::dmi::ContainerComponentAttributes)},
+  { 80, -1, sizeof(::dmi::PsuComponentAttributes)},
+  { 86, -1, sizeof(::dmi::TransceiverComponentsAttributes)},
+  { 98, -1, sizeof(::dmi::Component)},
+  { 128, -1, sizeof(::dmi::Hardware)},
+  { 136, -1, sizeof(::dmi::ModifiableComponent)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -499,6 +529,7 @@
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ComponentSensorData_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PortComponentAttributes_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PortComponentChangeAttributes_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_TransceiverComponentChangeAttributes_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PonIdConfig_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ContainerComponentAttributes_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PsuComponentAttributes_default_instance_),
@@ -511,7 +542,7 @@
 ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_dmi_2fhw_2eproto = {
   {}, AddDescriptors_dmi_2fhw_2eproto, "dmi/hw.proto", schemas,
   file_default_instances, TableStruct_dmi_2fhw_2eproto::offsets,
-  file_level_metadata_dmi_2fhw_2eproto, 14, file_level_enum_descriptors_dmi_2fhw_2eproto, file_level_service_descriptors_dmi_2fhw_2eproto,
+  file_level_metadata_dmi_2fhw_2eproto, 15, file_level_enum_descriptors_dmi_2fhw_2eproto, file_level_service_descriptors_dmi_2fhw_2eproto,
 };
 
 const char descriptor_table_protodef_dmi_2fhw_2eproto[] =
@@ -553,126 +584,130 @@
   "PON\020\003\022\n\n\006XGSPON\020\004\022\t\n\005GFAST\020\005\022\n\n\006SERIAL\020\006"
   "\022\010\n\004EPON\020\007\022\010\n\004BITS\020\010\"H\n\035PortComponentCha"
   "ngeAttributes\022\'\n\rpon_id_config\030\001 \001(\0132\020.d"
-  "mi.PonIdConfig\"B\n\013PonIdConfig\022\016\n\006pon_id\030"
-  "\001 \001(\014\022#\n\033pon_id_transmit_periodicity\030\002 \001"
-  "(\r\"6\n\034ContainerComponentAttributes\022\026\n\016ph"
-  "ysical_label\030\001 \001(\t\"\263\001\n\026PsuComponentAttri"
-  "butes\022G\n\021supported_voltage\030\001 \001(\0162,.dmi.P"
-  "suComponentAttributes.SupportedVoltage\"P"
-  "\n\020SupportedVoltage\022\037\n\033SUPPORTED_VOLTAGE_"
-  "UNDEFINED\020\000\022\007\n\003V48\020\001\022\010\n\004V230\020\002\022\010\n\004V115\020\003"
-  "\"\357\004\n\037TransceiverComponentsAttributes\022D\n\013"
-  "form_factor\030\001 \001(\0162/.dmi.TransceiverCompo"
-  "nentsAttributes.FormFactor\022=\n\ntrans_type"
-  "\030\002 \001(\0162).dmi.TransceiverComponentsAttrib"
-  "utes.Type\022\024\n\014max_distance\030\003 \001(\r\022+\n\022max_d"
-  "istance_scale\030\004 \001(\0162\017.dmi.ValueScale\022\025\n\r"
-  "rx_wavelength\030\005 \003(\r\022\025\n\rtx_wavelength\030\006 \003"
-  "(\r\022)\n\020wavelength_scale\030\007 \001(\0162\017.dmi.Value"
-  "Scale\"\300\001\n\nFormFactor\022\027\n\023FORM_FACTOR_UNKN"
-  "OWN\020\000\022\010\n\004QSFP\020\001\022\r\n\tQSFP_PLUS\020\002\022\n\n\006QSFP28"
-  "\020\003\022\007\n\003SFP\020\004\022\014\n\010SFP_PLUS\020\005\022\007\n\003XFP\020\006\022\010\n\004CF"
-  "P4\020\007\022\010\n\004CFP2\020\010\022\010\n\004CPAK\020\t\022\006\n\002X2\020\n\022\t\n\005OTHE"
-  "R\020\013\022\007\n\003CFP\020\014\022\014\n\010CFP2_ACO\020\r\022\014\n\010CFP2_DCO\020\016"
-  "\"h\n\004Type\022\020\n\014TYPE_UNKNOWN\020\000\022\014\n\010ETHERNET\020\001"
-  "\022\010\n\004GPON\020\002\022\t\n\005XGPON\020\003\022\n\n\006XGSPON\020\004\022\010\n\004CPO"
-  "N\020\005\022\013\n\007NG_PON2\020\006\022\010\n\004EPON\020\007\"\350\005\n\tComponent"
-  "\022\014\n\004name\030\001 \001(\t\022!\n\005class\030\002 \001(\0162\022.dmi.Comp"
-  "onentType\022\023\n\013description\030\003 \001(\t\022\016\n\006parent"
-  "\030\004 \001(\t\022\026\n\016parent_rel_pos\030\005 \001(\005\022 \n\010childr"
-  "en\030\006 \003(\0132\016.dmi.Component\022\024\n\014hardware_rev"
-  "\030\007 \001(\t\022\024\n\014firmware_rev\030\010 \001(\t\022\024\n\014software"
-  "_rev\030\t \001(\t\022\022\n\nserial_num\030\n \001(\t\022\020\n\010mfg_na"
-  "me\030\013 \001(\t\022\022\n\nmodel_name\030\014 \001(\t\022\r\n\005alias\030\r "
-  "\001(\t\022\020\n\010asset_id\030\016 \001(\t\022\016\n\006is_fru\030\017 \001(\010\022,\n"
-  "\010mfg_date\030\020 \001(\0132\032.google.protobuf.Timest"
-  "amp\022\025\n\003uri\030\021 \001(\0132\010.dmi.Uri\022\027\n\004uuid\030\022 \001(\013"
-  "2\t.dmi.Uuid\022\"\n\005state\030\023 \001(\0132\023.dmi.Compone"
-  "ntState\022-\n\013sensor_data\030\024 \003(\0132\030.dmi.Compo"
-  "nentSensorData\0221\n\tport_attr\0302 \001(\0132\034.dmi."
-  "PortComponentAttributesH\000\022;\n\016container_a"
-  "ttr\0303 \001(\0132!.dmi.ContainerComponentAttrib"
-  "utesH\000\022/\n\010psu_attr\0304 \001(\0132\033.dmi.PsuCompon"
-  "entAttributesH\000\022@\n\020transceiver_attr\0305 \001("
-  "\0132$.dmi.TransceiverComponentsAttributesH"
-  "\000B\n\n\010specific\"\212\001\n\010Hardware\022/\n\013last_chang"
-  "e\030\001 \001(\0132\032.google.protobuf.Timestamp\022\034\n\004r"
-  "oot\030\002 \001(\0132\016.dmi.Component\022/\n\013last_booted"
-  "\030\003 \001(\0132\032.google.protobuf.Timestamp\"\252\002\n\023M"
-  "odifiableComponent\022\014\n\004name\030\001 \001(\t\022!\n\005clas"
-  "s\030\002 \001(\0162\022.dmi.ComponentType\022\036\n\006parent\030\003 "
-  "\001(\0132\016.dmi.Component\022\026\n\016parent_rel_pos\030\004 "
-  "\001(\005\022\r\n\005alias\030\005 \001(\t\022\020\n\010asset_id\030\006 \001(\t\022\025\n\003"
-  "uri\030\007 \001(\0132\010.dmi.Uri\022-\n\013admin_state\030\010 \001(\016"
-  "2\030.dmi.ComponentAdminState\0227\n\tport_attr\030"
-  "2 \001(\0132\".dmi.PortComponentChangeAttribute"
-  "sH\000B\n\n\010specific*\264\003\n\rComponentType\022\034\n\030COM"
-  "PONENT_TYPE_UNDEFINED\020\000\022\032\n\026COMPONENT_TYP"
-  "E_UNKNOWN\020\001\022\032\n\026COMPONENT_TYPE_CHASSIS\020\002\022"
-  "\034\n\030COMPONENT_TYPE_BACKPLANE\020\003\022\034\n\030COMPONE"
-  "NT_TYPE_CONTAINER\020\004\022\037\n\033COMPONENT_TYPE_PO"
-  "WER_SUPPLY\020\005\022\026\n\022COMPONENT_TYPE_FAN\020\006\022\031\n\025"
-  "COMPONENT_TYPE_SENSOR\020\007\022\031\n\025COMPONENT_TYP"
-  "E_MODULE\020\010\022\027\n\023COMPONENT_TYPE_PORT\020\t\022\026\n\022C"
-  "OMPONENT_TYPE_CPU\020\n\022\032\n\026COMPONENT_TYPE_BA"
-  "TTERY\020\013\022\032\n\026COMPONENT_TYPE_STORAGE\020\014\022\031\n\025C"
-  "OMPONENT_TYPE_MEMORY\020\r\022\036\n\032COMPONENT_TYPE"
-  "_TRANSCEIVER\020\016*\263\001\n\023ComponentAdminState\022\036"
-  "\n\032COMP_ADMIN_STATE_UNDEFINED\020\000\022\034\n\030COMP_A"
-  "DMIN_STATE_UNKNOWN\020\001\022\033\n\027COMP_ADMIN_STATE"
-  "_LOCKED\020\002\022\"\n\036COMP_ADMIN_STATE_SHUTTING_D"
-  "OWN\020\003\022\035\n\031COMP_ADMIN_STATE_UNLOCKED\020\004*\250\001\n"
-  "\022ComponentOperState\022\035\n\031COMP_OPER_STATE_U"
-  "NDEFINED\020\000\022\033\n\027COMP_OPER_STATE_UNKNOWN\020\001\022"
-  "\034\n\030COMP_OPER_STATE_DISABLED\020\002\022\033\n\027COMP_OP"
-  "ER_STATE_ENABLED\020\003\022\033\n\027COMP_OPER_STATE_TE"
-  "STING\020\004*\246\001\n\023ComponentUsageState\022\036\n\032COMP_"
-  "USAGE_STATE_UNDEFINED\020\000\022\034\n\030COMP_USAGE_ST"
-  "ATE_UNKNOWN\020\001\022\031\n\025COMP_USAGE_STATE_IDLE\020\002"
-  "\022\033\n\027COMP_USAGE_STATE_ACTIVE\020\003\022\031\n\025COMP_US"
-  "AGE_STATE_BUSY\020\004*\217\002\n\023ComponentAlarmState"
-  "\022\036\n\032COMP_ALARM_STATE_UNDEFINED\020\000\022\034\n\030COMP"
-  "_ALARM_STATE_UNKNOWN\020\001\022!\n\035COMP_ALARM_STA"
-  "TE_UNDER_REPAIR\020\002\022\035\n\031COMP_ALARM_STATE_CR"
-  "ITICAL\020\003\022\032\n\026COMP_ALARM_STATE_MAJOR\020\004\022\032\n\026"
-  "COMP_ALARM_STATE_MINOR\020\005\022\034\n\030COMP_ALARM_S"
-  "TATE_WARNING\020\006\022\"\n\036COMP_ALARM_STATE_INDET"
-  "ERMINATE\020\007*\274\001\n\025ComponentStandbyState\022 \n\034"
-  "COMP_STANDBY_STATE_UNDEFINED\020\000\022\036\n\032COMP_S"
-  "TANDBY_STATE_UNKNOWN\020\001\022\032\n\026COMP_STANDBY_S"
-  "TATE_HOT\020\002\022\033\n\027COMP_STANDBY_STATE_COLD\020\003\022"
-  "(\n$COMP_STANDBY_STATE_PROVIDING_SERVICE\020"
-  "\004*\211\003\n\rDataValueType\022\030\n\024VALUE_TYPE_UNDEFI"
-  "NED\020\000\022\024\n\020VALUE_TYPE_OTHER\020\001\022\026\n\022VALUE_TYP"
-  "E_UNKNOWN\020\002\022\027\n\023VALUE_TYPE_VOLTS_AC\020\003\022\027\n\023"
-  "VALUE_TYPE_VOLTS_DC\020\004\022\026\n\022VALUE_TYPE_AMPE"
-  "RES\020\005\022\024\n\020VALUE_TYPE_WATTS\020\006\022\024\n\020VALUE_TYP"
-  "E_HERTZ\020\007\022\026\n\022VALUE_TYPE_CELSIUS\020\010\022\031\n\025VAL"
-  "UE_TYPE_PERCENT_RH\020\t\022\022\n\016VALUE_TYPE_RPM\020\n"
-  "\022\022\n\016VALUE_TYPE_CMM\020\013\022\032\n\026VALUE_TYPE_TRUTH"
-  "_VALUE\020\014\022\026\n\022VALUE_TYPE_PERCENT\020\r\022\025\n\021VALU"
-  "E_TYPE_METERS\020\016\022\024\n\020VALUE_TYPE_BYTES\020\017*\244\003"
-  "\n\nValueScale\022\031\n\025VALUE_SCALE_UNDEFINED\020\000\022"
-  "\025\n\021VALUE_SCALE_YOCTO\020\001\022\025\n\021VALUE_SCALE_ZE"
-  "PTO\020\002\022\024\n\020VALUE_SCALE_ATTO\020\003\022\025\n\021VALUE_SCA"
-  "LE_FEMTO\020\004\022\024\n\020VALUE_SCALE_PICO\020\005\022\024\n\020VALU"
-  "E_SCALE_NANO\020\006\022\025\n\021VALUE_SCALE_MICRO\020\007\022\025\n"
-  "\021VALUE_SCALE_MILLI\020\010\022\025\n\021VALUE_SCALE_UNIT"
-  "S\020\t\022\024\n\020VALUE_SCALE_KILO\020\n\022\024\n\020VALUE_SCALE"
-  "_MEGA\020\013\022\024\n\020VALUE_SCALE_GIGA\020\014\022\024\n\020VALUE_S"
-  "CALE_TERA\020\r\022\024\n\020VALUE_SCALE_PETA\020\016\022\023\n\017VAL"
-  "UE_SCALE_EXA\020\017\022\025\n\021VALUE_SCALE_ZETTA\020\020\022\025\n"
-  "\021VALUE_SCALE_YOTTA\020\021*\202\001\n\014SensorStatus\022\033\n"
-  "\027SENSOR_STATUS_UNDEFINED\020\000\022\024\n\020SENSOR_STA"
-  "TUS_OK\020\001\022\035\n\031SENSOR_STATUS_UNAVAILABLE\020\002\022"
-  " \n\034SENSOR_STATUS_NONOPERATIONAL\020\003B;Z9git"
-  "hub.com/opencord/device-management-inter"
-  "face/v3/go/dmib\006proto3"
+  "mi.PonIdConfig\"P\n$TransceiverComponentCh"
+  "angeAttributes\022(\n\ntrans_type\030\001 \001(\0162\024.dmi"
+  ".TransceiverType\"B\n\013PonIdConfig\022\016\n\006pon_i"
+  "d\030\001 \001(\014\022#\n\033pon_id_transmit_periodicity\030\002"
+  " \001(\r\"6\n\034ContainerComponentAttributes\022\026\n\016"
+  "physical_label\030\001 \001(\t\"\263\001\n\026PsuComponentAtt"
+  "ributes\022G\n\021supported_voltage\030\001 \001(\0162,.dmi"
+  ".PsuComponentAttributes.SupportedVoltage"
+  "\"P\n\020SupportedVoltage\022\037\n\033SUPPORTED_VOLTAG"
+  "E_UNDEFINED\020\000\022\007\n\003V48\020\001\022\010\n\004V230\020\002\022\010\n\004V115"
+  "\020\003\"\360\003\n\037TransceiverComponentsAttributes\022D"
+  "\n\013form_factor\030\001 \001(\0162/.dmi.TransceiverCom"
+  "ponentsAttributes.FormFactor\022(\n\ntrans_ty"
+  "pe\030\002 \001(\0162\024.dmi.TransceiverType\022\024\n\014max_di"
+  "stance\030\003 \001(\r\022+\n\022max_distance_scale\030\004 \001(\016"
+  "2\017.dmi.ValueScale\022\025\n\rrx_wavelength\030\005 \003(\r"
+  "\022\025\n\rtx_wavelength\030\006 \003(\r\022)\n\020wavelength_sc"
+  "ale\030\007 \001(\0162\017.dmi.ValueScale\"\300\001\n\nFormFacto"
+  "r\022\027\n\023FORM_FACTOR_UNKNOWN\020\000\022\010\n\004QSFP\020\001\022\r\n\t"
+  "QSFP_PLUS\020\002\022\n\n\006QSFP28\020\003\022\007\n\003SFP\020\004\022\014\n\010SFP_"
+  "PLUS\020\005\022\007\n\003XFP\020\006\022\010\n\004CFP4\020\007\022\010\n\004CFP2\020\010\022\010\n\004C"
+  "PAK\020\t\022\006\n\002X2\020\n\022\t\n\005OTHER\020\013\022\007\n\003CFP\020\014\022\014\n\010CFP"
+  "2_ACO\020\r\022\014\n\010CFP2_DCO\020\016\"\350\005\n\tComponent\022\014\n\004n"
+  "ame\030\001 \001(\t\022!\n\005class\030\002 \001(\0162\022.dmi.Component"
+  "Type\022\023\n\013description\030\003 \001(\t\022\016\n\006parent\030\004 \001("
+  "\t\022\026\n\016parent_rel_pos\030\005 \001(\005\022 \n\010children\030\006 "
+  "\003(\0132\016.dmi.Component\022\024\n\014hardware_rev\030\007 \001("
+  "\t\022\024\n\014firmware_rev\030\010 \001(\t\022\024\n\014software_rev\030"
+  "\t \001(\t\022\022\n\nserial_num\030\n \001(\t\022\020\n\010mfg_name\030\013 "
+  "\001(\t\022\022\n\nmodel_name\030\014 \001(\t\022\r\n\005alias\030\r \001(\t\022\020"
+  "\n\010asset_id\030\016 \001(\t\022\016\n\006is_fru\030\017 \001(\010\022,\n\010mfg_"
+  "date\030\020 \001(\0132\032.google.protobuf.Timestamp\022\025"
+  "\n\003uri\030\021 \001(\0132\010.dmi.Uri\022\027\n\004uuid\030\022 \001(\0132\t.dm"
+  "i.Uuid\022\"\n\005state\030\023 \001(\0132\023.dmi.ComponentSta"
+  "te\022-\n\013sensor_data\030\024 \003(\0132\030.dmi.ComponentS"
+  "ensorData\0221\n\tport_attr\0302 \001(\0132\034.dmi.PortC"
+  "omponentAttributesH\000\022;\n\016container_attr\0303"
+  " \001(\0132!.dmi.ContainerComponentAttributesH"
+  "\000\022/\n\010psu_attr\0304 \001(\0132\033.dmi.PsuComponentAt"
+  "tributesH\000\022@\n\020transceiver_attr\0305 \001(\0132$.d"
+  "mi.TransceiverComponentsAttributesH\000B\n\n\010"
+  "specific\"\212\001\n\010Hardware\022/\n\013last_change\030\001 \001"
+  "(\0132\032.google.protobuf.Timestamp\022\034\n\004root\030\002"
+  " \001(\0132\016.dmi.Component\022/\n\013last_booted\030\003 \001("
+  "\0132\032.google.protobuf.Timestamp\"\351\002\n\023Modifi"
+  "ableComponent\022\014\n\004name\030\001 \001(\t\022!\n\005class\030\002 \001"
+  "(\0162\022.dmi.ComponentType\022\036\n\006parent\030\003 \001(\0132\016"
+  ".dmi.Component\022\026\n\016parent_rel_pos\030\004 \001(\005\022\r"
+  "\n\005alias\030\005 \001(\t\022\020\n\010asset_id\030\006 \001(\t\022\025\n\003uri\030\007"
+  " \001(\0132\010.dmi.Uri\022-\n\013admin_state\030\010 \001(\0162\030.dm"
+  "i.ComponentAdminState\0227\n\tport_attr\0302 \001(\013"
+  "2\".dmi.PortComponentChangeAttributesH\000\022="
+  "\n\010trx_attr\0303 \001(\0132).dmi.TransceiverCompon"
+  "entChangeAttributesH\000B\n\n\010specific*\264\003\n\rCo"
+  "mponentType\022\034\n\030COMPONENT_TYPE_UNDEFINED\020"
+  "\000\022\032\n\026COMPONENT_TYPE_UNKNOWN\020\001\022\032\n\026COMPONE"
+  "NT_TYPE_CHASSIS\020\002\022\034\n\030COMPONENT_TYPE_BACK"
+  "PLANE\020\003\022\034\n\030COMPONENT_TYPE_CONTAINER\020\004\022\037\n"
+  "\033COMPONENT_TYPE_POWER_SUPPLY\020\005\022\026\n\022COMPON"
+  "ENT_TYPE_FAN\020\006\022\031\n\025COMPONENT_TYPE_SENSOR\020"
+  "\007\022\031\n\025COMPONENT_TYPE_MODULE\020\010\022\027\n\023COMPONEN"
+  "T_TYPE_PORT\020\t\022\026\n\022COMPONENT_TYPE_CPU\020\n\022\032\n"
+  "\026COMPONENT_TYPE_BATTERY\020\013\022\032\n\026COMPONENT_T"
+  "YPE_STORAGE\020\014\022\031\n\025COMPONENT_TYPE_MEMORY\020\r"
+  "\022\036\n\032COMPONENT_TYPE_TRANSCEIVER\020\016*\263\001\n\023Com"
+  "ponentAdminState\022\036\n\032COMP_ADMIN_STATE_UND"
+  "EFINED\020\000\022\034\n\030COMP_ADMIN_STATE_UNKNOWN\020\001\022\033"
+  "\n\027COMP_ADMIN_STATE_LOCKED\020\002\022\"\n\036COMP_ADMI"
+  "N_STATE_SHUTTING_DOWN\020\003\022\035\n\031COMP_ADMIN_ST"
+  "ATE_UNLOCKED\020\004*\250\001\n\022ComponentOperState\022\035\n"
+  "\031COMP_OPER_STATE_UNDEFINED\020\000\022\033\n\027COMP_OPE"
+  "R_STATE_UNKNOWN\020\001\022\034\n\030COMP_OPER_STATE_DIS"
+  "ABLED\020\002\022\033\n\027COMP_OPER_STATE_ENABLED\020\003\022\033\n\027"
+  "COMP_OPER_STATE_TESTING\020\004*\246\001\n\023ComponentU"
+  "sageState\022\036\n\032COMP_USAGE_STATE_UNDEFINED\020"
+  "\000\022\034\n\030COMP_USAGE_STATE_UNKNOWN\020\001\022\031\n\025COMP_"
+  "USAGE_STATE_IDLE\020\002\022\033\n\027COMP_USAGE_STATE_A"
+  "CTIVE\020\003\022\031\n\025COMP_USAGE_STATE_BUSY\020\004*\217\002\n\023C"
+  "omponentAlarmState\022\036\n\032COMP_ALARM_STATE_U"
+  "NDEFINED\020\000\022\034\n\030COMP_ALARM_STATE_UNKNOWN\020\001"
+  "\022!\n\035COMP_ALARM_STATE_UNDER_REPAIR\020\002\022\035\n\031C"
+  "OMP_ALARM_STATE_CRITICAL\020\003\022\032\n\026COMP_ALARM"
+  "_STATE_MAJOR\020\004\022\032\n\026COMP_ALARM_STATE_MINOR"
+  "\020\005\022\034\n\030COMP_ALARM_STATE_WARNING\020\006\022\"\n\036COMP"
+  "_ALARM_STATE_INDETERMINATE\020\007*\274\001\n\025Compone"
+  "ntStandbyState\022 \n\034COMP_STANDBY_STATE_UND"
+  "EFINED\020\000\022\036\n\032COMP_STANDBY_STATE_UNKNOWN\020\001"
+  "\022\032\n\026COMP_STANDBY_STATE_HOT\020\002\022\033\n\027COMP_STA"
+  "NDBY_STATE_COLD\020\003\022(\n$COMP_STANDBY_STATE_"
+  "PROVIDING_SERVICE\020\004*\211\003\n\rDataValueType\022\030\n"
+  "\024VALUE_TYPE_UNDEFINED\020\000\022\024\n\020VALUE_TYPE_OT"
+  "HER\020\001\022\026\n\022VALUE_TYPE_UNKNOWN\020\002\022\027\n\023VALUE_T"
+  "YPE_VOLTS_AC\020\003\022\027\n\023VALUE_TYPE_VOLTS_DC\020\004\022"
+  "\026\n\022VALUE_TYPE_AMPERES\020\005\022\024\n\020VALUE_TYPE_WA"
+  "TTS\020\006\022\024\n\020VALUE_TYPE_HERTZ\020\007\022\026\n\022VALUE_TYP"
+  "E_CELSIUS\020\010\022\031\n\025VALUE_TYPE_PERCENT_RH\020\t\022\022"
+  "\n\016VALUE_TYPE_RPM\020\n\022\022\n\016VALUE_TYPE_CMM\020\013\022\032"
+  "\n\026VALUE_TYPE_TRUTH_VALUE\020\014\022\026\n\022VALUE_TYPE"
+  "_PERCENT\020\r\022\025\n\021VALUE_TYPE_METERS\020\016\022\024\n\020VAL"
+  "UE_TYPE_BYTES\020\017*\244\003\n\nValueScale\022\031\n\025VALUE_"
+  "SCALE_UNDEFINED\020\000\022\025\n\021VALUE_SCALE_YOCTO\020\001"
+  "\022\025\n\021VALUE_SCALE_ZEPTO\020\002\022\024\n\020VALUE_SCALE_A"
+  "TTO\020\003\022\025\n\021VALUE_SCALE_FEMTO\020\004\022\024\n\020VALUE_SC"
+  "ALE_PICO\020\005\022\024\n\020VALUE_SCALE_NANO\020\006\022\025\n\021VALU"
+  "E_SCALE_MICRO\020\007\022\025\n\021VALUE_SCALE_MILLI\020\010\022\025"
+  "\n\021VALUE_SCALE_UNITS\020\t\022\024\n\020VALUE_SCALE_KIL"
+  "O\020\n\022\024\n\020VALUE_SCALE_MEGA\020\013\022\024\n\020VALUE_SCALE"
+  "_GIGA\020\014\022\024\n\020VALUE_SCALE_TERA\020\r\022\024\n\020VALUE_S"
+  "CALE_PETA\020\016\022\023\n\017VALUE_SCALE_EXA\020\017\022\025\n\021VALU"
+  "E_SCALE_ZETTA\020\020\022\025\n\021VALUE_SCALE_YOTTA\020\021*\202"
+  "\001\n\014SensorStatus\022\033\n\027SENSOR_STATUS_UNDEFIN"
+  "ED\020\000\022\024\n\020SENSOR_STATUS_OK\020\001\022\035\n\031SENSOR_STA"
+  "TUS_UNAVAILABLE\020\002\022 \n\034SENSOR_STATUS_NONOP"
+  "ERATIONAL\020\003*\215\001\n\017TransceiverType\022\022\n\016TYPE_"
+  "UNDEFINED\020\000\022\014\n\010ETHERNET\020\001\022\010\n\004GPON\020\002\022\t\n\005X"
+  "GPON\020\003\022\n\n\006XGSPON\020\004\022\010\n\004CPON\020\005\022\013\n\007NG_PON2\020"
+  "\006\022\010\n\004EPON\020\007\022\026\n\021TYPE_NOT_DETECTED\020\377\001B;Z9g"
+  "ithub.com/opencord/device-management-int"
+  "erface/v3/go/dmib\006proto3"
   ;
 ::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fhw_2eproto = {
   false, InitDefaults_dmi_2fhw_2eproto, 
   descriptor_table_protodef_dmi_2fhw_2eproto,
-  "dmi/hw.proto", &assign_descriptors_table_dmi_2fhw_2eproto, 6102,
+  "dmi/hw.proto", &assign_descriptors_table_dmi_2fhw_2eproto, 6264,
 };
 
 void AddDescriptors_dmi_2fhw_2eproto() {
@@ -859,42 +894,9 @@
 const TransceiverComponentsAttributes_FormFactor TransceiverComponentsAttributes::FormFactor_MAX;
 const int TransceiverComponentsAttributes::FormFactor_ARRAYSIZE;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-const ::google::protobuf::EnumDescriptor* TransceiverComponentsAttributes_Type_descriptor() {
-  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_2eproto);
-  return file_level_enum_descriptors_dmi_2fhw_2eproto[5];
-}
-bool TransceiverComponentsAttributes_Type_IsValid(int value) {
-  switch (value) {
-    case 0:
-    case 1:
-    case 2:
-    case 3:
-    case 4:
-    case 5:
-    case 6:
-    case 7:
-      return true;
-    default:
-      return false;
-  }
-}
-
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes::TYPE_UNKNOWN;
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes::ETHERNET;
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes::GPON;
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes::XGPON;
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes::XGSPON;
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes::CPON;
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes::NG_PON2;
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes::EPON;
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes::Type_MIN;
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes::Type_MAX;
-const int TransceiverComponentsAttributes::Type_ARRAYSIZE;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 const ::google::protobuf::EnumDescriptor* ComponentType_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_2eproto);
-  return file_level_enum_descriptors_dmi_2fhw_2eproto[6];
+  return file_level_enum_descriptors_dmi_2fhw_2eproto[5];
 }
 bool ComponentType_IsValid(int value) {
   switch (value) {
@@ -921,7 +923,7 @@
 
 const ::google::protobuf::EnumDescriptor* ComponentAdminState_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_2eproto);
-  return file_level_enum_descriptors_dmi_2fhw_2eproto[7];
+  return file_level_enum_descriptors_dmi_2fhw_2eproto[6];
 }
 bool ComponentAdminState_IsValid(int value) {
   switch (value) {
@@ -938,7 +940,7 @@
 
 const ::google::protobuf::EnumDescriptor* ComponentOperState_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_2eproto);
-  return file_level_enum_descriptors_dmi_2fhw_2eproto[8];
+  return file_level_enum_descriptors_dmi_2fhw_2eproto[7];
 }
 bool ComponentOperState_IsValid(int value) {
   switch (value) {
@@ -955,7 +957,7 @@
 
 const ::google::protobuf::EnumDescriptor* ComponentUsageState_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_2eproto);
-  return file_level_enum_descriptors_dmi_2fhw_2eproto[9];
+  return file_level_enum_descriptors_dmi_2fhw_2eproto[8];
 }
 bool ComponentUsageState_IsValid(int value) {
   switch (value) {
@@ -972,7 +974,7 @@
 
 const ::google::protobuf::EnumDescriptor* ComponentAlarmState_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_2eproto);
-  return file_level_enum_descriptors_dmi_2fhw_2eproto[10];
+  return file_level_enum_descriptors_dmi_2fhw_2eproto[9];
 }
 bool ComponentAlarmState_IsValid(int value) {
   switch (value) {
@@ -992,7 +994,7 @@
 
 const ::google::protobuf::EnumDescriptor* ComponentStandbyState_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_2eproto);
-  return file_level_enum_descriptors_dmi_2fhw_2eproto[11];
+  return file_level_enum_descriptors_dmi_2fhw_2eproto[10];
 }
 bool ComponentStandbyState_IsValid(int value) {
   switch (value) {
@@ -1009,7 +1011,7 @@
 
 const ::google::protobuf::EnumDescriptor* DataValueType_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_2eproto);
-  return file_level_enum_descriptors_dmi_2fhw_2eproto[12];
+  return file_level_enum_descriptors_dmi_2fhw_2eproto[11];
 }
 bool DataValueType_IsValid(int value) {
   switch (value) {
@@ -1037,7 +1039,7 @@
 
 const ::google::protobuf::EnumDescriptor* ValueScale_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_2eproto);
-  return file_level_enum_descriptors_dmi_2fhw_2eproto[13];
+  return file_level_enum_descriptors_dmi_2fhw_2eproto[12];
 }
 bool ValueScale_IsValid(int value) {
   switch (value) {
@@ -1067,7 +1069,7 @@
 
 const ::google::protobuf::EnumDescriptor* SensorStatus_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_2eproto);
-  return file_level_enum_descriptors_dmi_2fhw_2eproto[14];
+  return file_level_enum_descriptors_dmi_2fhw_2eproto[13];
 }
 bool SensorStatus_IsValid(int value) {
   switch (value) {
@@ -1081,6 +1083,27 @@
   }
 }
 
+const ::google::protobuf::EnumDescriptor* TransceiverType_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_2eproto);
+  return file_level_enum_descriptors_dmi_2fhw_2eproto[14];
+}
+bool TransceiverType_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+    case 4:
+    case 5:
+    case 6:
+    case 7:
+    case 255:
+      return true;
+    default:
+      return false;
+  }
+}
+
 
 // ===================================================================
 
@@ -4110,6 +4133,269 @@
 
 // ===================================================================
 
+void TransceiverComponentChangeAttributes::InitAsDefaultInstance() {
+}
+class TransceiverComponentChangeAttributes::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TransceiverComponentChangeAttributes::kTransTypeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TransceiverComponentChangeAttributes::TransceiverComponentChangeAttributes()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.TransceiverComponentChangeAttributes)
+}
+TransceiverComponentChangeAttributes::TransceiverComponentChangeAttributes(const TransceiverComponentChangeAttributes& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  trans_type_ = from.trans_type_;
+  // @@protoc_insertion_point(copy_constructor:dmi.TransceiverComponentChangeAttributes)
+}
+
+void TransceiverComponentChangeAttributes::SharedCtor() {
+  trans_type_ = 0;
+}
+
+TransceiverComponentChangeAttributes::~TransceiverComponentChangeAttributes() {
+  // @@protoc_insertion_point(destructor:dmi.TransceiverComponentChangeAttributes)
+  SharedDtor();
+}
+
+void TransceiverComponentChangeAttributes::SharedDtor() {
+}
+
+void TransceiverComponentChangeAttributes::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TransceiverComponentChangeAttributes& TransceiverComponentChangeAttributes::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TransceiverComponentChangeAttributes_dmi_2fhw_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TransceiverComponentChangeAttributes::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.TransceiverComponentChangeAttributes)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  trans_type_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TransceiverComponentChangeAttributes::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TransceiverComponentChangeAttributes*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .dmi.TransceiverType trans_type = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_trans_type(static_cast<::dmi::TransceiverType>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TransceiverComponentChangeAttributes::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.TransceiverComponentChangeAttributes)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .dmi.TransceiverType trans_type = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_trans_type(static_cast< ::dmi::TransceiverType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.TransceiverComponentChangeAttributes)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.TransceiverComponentChangeAttributes)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TransceiverComponentChangeAttributes::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.TransceiverComponentChangeAttributes)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.TransceiverType trans_type = 1;
+  if (this->trans_type() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->trans_type(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.TransceiverComponentChangeAttributes)
+}
+
+::google::protobuf::uint8* TransceiverComponentChangeAttributes::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.TransceiverComponentChangeAttributes)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.TransceiverType trans_type = 1;
+  if (this->trans_type() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->trans_type(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.TransceiverComponentChangeAttributes)
+  return target;
+}
+
+size_t TransceiverComponentChangeAttributes::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.TransceiverComponentChangeAttributes)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .dmi.TransceiverType trans_type = 1;
+  if (this->trans_type() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->trans_type());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TransceiverComponentChangeAttributes::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.TransceiverComponentChangeAttributes)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TransceiverComponentChangeAttributes* source =
+      ::google::protobuf::DynamicCastToGenerated<TransceiverComponentChangeAttributes>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.TransceiverComponentChangeAttributes)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.TransceiverComponentChangeAttributes)
+    MergeFrom(*source);
+  }
+}
+
+void TransceiverComponentChangeAttributes::MergeFrom(const TransceiverComponentChangeAttributes& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.TransceiverComponentChangeAttributes)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.trans_type() != 0) {
+    set_trans_type(from.trans_type());
+  }
+}
+
+void TransceiverComponentChangeAttributes::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.TransceiverComponentChangeAttributes)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TransceiverComponentChangeAttributes::CopyFrom(const TransceiverComponentChangeAttributes& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.TransceiverComponentChangeAttributes)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TransceiverComponentChangeAttributes::IsInitialized() const {
+  return true;
+}
+
+void TransceiverComponentChangeAttributes::Swap(TransceiverComponentChangeAttributes* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void TransceiverComponentChangeAttributes::InternalSwap(TransceiverComponentChangeAttributes* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(trans_type_, other->trans_type_);
+}
+
+::google::protobuf::Metadata TransceiverComponentChangeAttributes::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fhw_2eproto);
+  return ::file_level_metadata_dmi_2fhw_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
 void PonIdConfig::InitAsDefaultInstance() {
 }
 class PonIdConfig::HasBitSetters {
@@ -5090,11 +5376,11 @@
         GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
         break;
       }
-      // .dmi.TransceiverComponentsAttributes.Type trans_type = 2;
+      // .dmi.TransceiverType trans_type = 2;
       case 2: {
         if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
         ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
-        msg->set_trans_type(static_cast<::dmi::TransceiverComponentsAttributes_Type>(val));
+        msg->set_trans_type(static_cast<::dmi::TransceiverType>(val));
         GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
         break;
       }
@@ -5205,14 +5491,14 @@
         break;
       }
 
-      // .dmi.TransceiverComponentsAttributes.Type trans_type = 2;
+      // .dmi.TransceiverType trans_type = 2;
       case 2: {
         if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
           int value = 0;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                  input, &value)));
-          set_trans_type(static_cast< ::dmi::TransceiverComponentsAttributes_Type >(value));
+          set_trans_type(static_cast< ::dmi::TransceiverType >(value));
         } else {
           goto handle_unusual;
         }
@@ -5325,7 +5611,7 @@
       1, this->form_factor(), output);
   }
 
-  // .dmi.TransceiverComponentsAttributes.Type trans_type = 2;
+  // .dmi.TransceiverType trans_type = 2;
   if (this->trans_type() != 0) {
     ::google::protobuf::internal::WireFormatLite::WriteEnum(
       2, this->trans_type(), output);
@@ -5389,7 +5675,7 @@
       1, this->form_factor(), target);
   }
 
-  // .dmi.TransceiverComponentsAttributes.Type trans_type = 2;
+  // .dmi.TransceiverType trans_type = 2;
   if (this->trans_type() != 0) {
     target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
       2, this->trans_type(), target);
@@ -5495,7 +5781,7 @@
       ::google::protobuf::internal::WireFormatLite::EnumSize(this->form_factor());
   }
 
-  // .dmi.TransceiverComponentsAttributes.Type trans_type = 2;
+  // .dmi.TransceiverType trans_type = 2;
   if (this->trans_type() != 0) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::EnumSize(this->trans_type());
@@ -7947,12 +8233,15 @@
       ::dmi::Uri::internal_default_instance());
   ::dmi::_ModifiableComponent_default_instance_.port_attr_ = const_cast< ::dmi::PortComponentChangeAttributes*>(
       ::dmi::PortComponentChangeAttributes::internal_default_instance());
+  ::dmi::_ModifiableComponent_default_instance_.trx_attr_ = const_cast< ::dmi::TransceiverComponentChangeAttributes*>(
+      ::dmi::TransceiverComponentChangeAttributes::internal_default_instance());
 }
 class ModifiableComponent::HasBitSetters {
  public:
   static const ::dmi::Component& parent(const ModifiableComponent* msg);
   static const ::dmi::Uri& uri(const ModifiableComponent* msg);
   static const ::dmi::PortComponentChangeAttributes& port_attr(const ModifiableComponent* msg);
+  static const ::dmi::TransceiverComponentChangeAttributes& trx_attr(const ModifiableComponent* msg);
 };
 
 const ::dmi::Component&
@@ -7967,6 +8256,10 @@
 ModifiableComponent::HasBitSetters::port_attr(const ModifiableComponent* msg) {
   return *msg->specific_.port_attr_;
 }
+const ::dmi::TransceiverComponentChangeAttributes&
+ModifiableComponent::HasBitSetters::trx_attr(const ModifiableComponent* msg) {
+  return *msg->specific_.trx_attr_;
+}
 void ModifiableComponent::set_allocated_port_attr(::dmi::PortComponentChangeAttributes* port_attr) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   clear_specific();
@@ -7981,6 +8274,20 @@
   }
   // @@protoc_insertion_point(field_set_allocated:dmi.ModifiableComponent.port_attr)
 }
+void ModifiableComponent::set_allocated_trx_attr(::dmi::TransceiverComponentChangeAttributes* trx_attr) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_specific();
+  if (trx_attr) {
+    ::google::protobuf::Arena* submessage_arena = nullptr;
+    if (message_arena != submessage_arena) {
+      trx_attr = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, trx_attr, submessage_arena);
+    }
+    set_has_trx_attr();
+    specific_.trx_attr_ = trx_attr;
+  }
+  // @@protoc_insertion_point(field_set_allocated:dmi.ModifiableComponent.trx_attr)
+}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int ModifiableComponent::kNameFieldNumber;
 const int ModifiableComponent::kClassFieldNumber;
@@ -7991,6 +8298,7 @@
 const int ModifiableComponent::kUriFieldNumber;
 const int ModifiableComponent::kAdminStateFieldNumber;
 const int ModifiableComponent::kPortAttrFieldNumber;
+const int ModifiableComponent::kTrxAttrFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 ModifiableComponent::ModifiableComponent()
@@ -8033,6 +8341,10 @@
       mutable_port_attr()->::dmi::PortComponentChangeAttributes::MergeFrom(from.port_attr());
       break;
     }
+    case kTrxAttr: {
+      mutable_trx_attr()->::dmi::TransceiverComponentChangeAttributes::MergeFrom(from.trx_attr());
+      break;
+    }
     case SPECIFIC_NOT_SET: {
       break;
     }
@@ -8084,6 +8396,10 @@
       delete specific_.port_attr_;
       break;
     }
+    case kTrxAttr: {
+      delete specific_.trx_attr_;
+      break;
+    }
     case SPECIFIC_NOT_SET: {
       break;
     }
@@ -8239,6 +8555,19 @@
             {parser_till_end, object}, ptr - size, ptr));
         break;
       }
+      // .dmi.TransceiverComponentChangeAttributes trx_attr = 51;
+      case 51: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 154) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::TransceiverComponentChangeAttributes::_InternalParse;
+        object = msg->mutable_trx_attr();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
       default: {
       handle_unusual:
         if ((tag & 7) == 4 || tag == 0) {
@@ -8392,6 +8721,17 @@
         break;
       }
 
+      // .dmi.TransceiverComponentChangeAttributes trx_attr = 51;
+      case 51: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (410 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_trx_attr()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -8484,6 +8824,12 @@
       50, HasBitSetters::port_attr(this), output);
   }
 
+  // .dmi.TransceiverComponentChangeAttributes trx_attr = 51;
+  if (has_trx_attr()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      51, HasBitSetters::trx_attr(this), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
@@ -8568,6 +8914,13 @@
         50, HasBitSetters::port_attr(this), target);
   }
 
+  // .dmi.TransceiverComponentChangeAttributes trx_attr = 51;
+  if (has_trx_attr()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        51, HasBitSetters::trx_attr(this), target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
@@ -8651,6 +9004,13 @@
           *specific_.port_attr_);
       break;
     }
+    // .dmi.TransceiverComponentChangeAttributes trx_attr = 51;
+    case kTrxAttr: {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *specific_.trx_attr_);
+      break;
+    }
     case SPECIFIC_NOT_SET: {
       break;
     }
@@ -8714,6 +9074,10 @@
       mutable_port_attr()->::dmi::PortComponentChangeAttributes::MergeFrom(from.port_attr());
       break;
     }
+    case kTrxAttr: {
+      mutable_trx_attr()->::dmi::TransceiverComponentChangeAttributes::MergeFrom(from.trx_attr());
+      break;
+    }
     case SPECIFIC_NOT_SET: {
       break;
     }
@@ -8791,6 +9155,9 @@
 template<> PROTOBUF_NOINLINE ::dmi::PortComponentChangeAttributes* Arena::CreateMaybeMessage< ::dmi::PortComponentChangeAttributes >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::PortComponentChangeAttributes >(arena);
 }
+template<> PROTOBUF_NOINLINE ::dmi::TransceiverComponentChangeAttributes* Arena::CreateMaybeMessage< ::dmi::TransceiverComponentChangeAttributes >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::TransceiverComponentChangeAttributes >(arena);
+}
 template<> PROTOBUF_NOINLINE ::dmi::PonIdConfig* Arena::CreateMaybeMessage< ::dmi::PonIdConfig >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::PonIdConfig >(arena);
 }
diff --git a/cpp/dmi/hw.pb.h b/cpp/dmi/hw.pb.h
index ebe9767..a28a8bb 100644
--- a/cpp/dmi/hw.pb.h
+++ b/cpp/dmi/hw.pb.h
@@ -43,7 +43,7 @@
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::ParseTable schema[14]
+  static const ::google::protobuf::internal::ParseTable schema[15]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
@@ -84,6 +84,9 @@
 class PsuComponentAttributes;
 class PsuComponentAttributesDefaultTypeInternal;
 extern PsuComponentAttributesDefaultTypeInternal _PsuComponentAttributes_default_instance_;
+class TransceiverComponentChangeAttributes;
+class TransceiverComponentChangeAttributesDefaultTypeInternal;
+extern TransceiverComponentChangeAttributesDefaultTypeInternal _TransceiverComponentChangeAttributes_default_instance_;
 class TransceiverComponentsAttributes;
 class TransceiverComponentsAttributesDefaultTypeInternal;
 extern TransceiverComponentsAttributesDefaultTypeInternal _TransceiverComponentsAttributes_default_instance_;
@@ -107,6 +110,7 @@
 template<> ::dmi::PortComponentAttributes* Arena::CreateMaybeMessage<::dmi::PortComponentAttributes>(Arena*);
 template<> ::dmi::PortComponentChangeAttributes* Arena::CreateMaybeMessage<::dmi::PortComponentChangeAttributes>(Arena*);
 template<> ::dmi::PsuComponentAttributes* Arena::CreateMaybeMessage<::dmi::PsuComponentAttributes>(Arena*);
+template<> ::dmi::TransceiverComponentChangeAttributes* Arena::CreateMaybeMessage<::dmi::TransceiverComponentChangeAttributes>(Arena*);
 template<> ::dmi::TransceiverComponentsAttributes* Arena::CreateMaybeMessage<::dmi::TransceiverComponentsAttributes>(Arena*);
 template<> ::dmi::Uri* Arena::CreateMaybeMessage<::dmi::Uri>(Arena*);
 template<> ::dmi::Uuid* Arena::CreateMaybeMessage<::dmi::Uuid>(Arena*);
@@ -253,33 +257,6 @@
   return ::google::protobuf::internal::ParseNamedEnum<TransceiverComponentsAttributes_FormFactor>(
     TransceiverComponentsAttributes_FormFactor_descriptor(), name, value);
 }
-enum TransceiverComponentsAttributes_Type {
-  TransceiverComponentsAttributes_Type_TYPE_UNKNOWN = 0,
-  TransceiverComponentsAttributes_Type_ETHERNET = 1,
-  TransceiverComponentsAttributes_Type_GPON = 2,
-  TransceiverComponentsAttributes_Type_XGPON = 3,
-  TransceiverComponentsAttributes_Type_XGSPON = 4,
-  TransceiverComponentsAttributes_Type_CPON = 5,
-  TransceiverComponentsAttributes_Type_NG_PON2 = 6,
-  TransceiverComponentsAttributes_Type_EPON = 7,
-  TransceiverComponentsAttributes_Type_TransceiverComponentsAttributes_Type_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
-  TransceiverComponentsAttributes_Type_TransceiverComponentsAttributes_Type_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
-};
-bool TransceiverComponentsAttributes_Type_IsValid(int value);
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes_Type_Type_MIN = TransceiverComponentsAttributes_Type_TYPE_UNKNOWN;
-const TransceiverComponentsAttributes_Type TransceiverComponentsAttributes_Type_Type_MAX = TransceiverComponentsAttributes_Type_EPON;
-const int TransceiverComponentsAttributes_Type_Type_ARRAYSIZE = TransceiverComponentsAttributes_Type_Type_MAX + 1;
-
-const ::google::protobuf::EnumDescriptor* TransceiverComponentsAttributes_Type_descriptor();
-inline const ::std::string& TransceiverComponentsAttributes_Type_Name(TransceiverComponentsAttributes_Type value) {
-  return ::google::protobuf::internal::NameOfEnum(
-    TransceiverComponentsAttributes_Type_descriptor(), value);
-}
-inline bool TransceiverComponentsAttributes_Type_Parse(
-    const ::std::string& name, TransceiverComponentsAttributes_Type* value) {
-  return ::google::protobuf::internal::ParseNamedEnum<TransceiverComponentsAttributes_Type>(
-    TransceiverComponentsAttributes_Type_descriptor(), name, value);
-}
 enum ComponentType {
   COMPONENT_TYPE_UNDEFINED = 0,
   COMPONENT_TYPE_UNKNOWN = 1,
@@ -532,6 +509,34 @@
   return ::google::protobuf::internal::ParseNamedEnum<SensorStatus>(
     SensorStatus_descriptor(), name, value);
 }
+enum TransceiverType {
+  TYPE_UNDEFINED = 0,
+  ETHERNET = 1,
+  GPON = 2,
+  XGPON = 3,
+  XGSPON = 4,
+  CPON = 5,
+  NG_PON2 = 6,
+  EPON = 7,
+  TYPE_NOT_DETECTED = 255,
+  TransceiverType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  TransceiverType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool TransceiverType_IsValid(int value);
+const TransceiverType TransceiverType_MIN = TYPE_UNDEFINED;
+const TransceiverType TransceiverType_MAX = TYPE_NOT_DETECTED;
+const int TransceiverType_ARRAYSIZE = TransceiverType_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* TransceiverType_descriptor();
+inline const ::std::string& TransceiverType_Name(TransceiverType value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    TransceiverType_descriptor(), value);
+}
+inline bool TransceiverType_Parse(
+    const ::std::string& name, TransceiverType* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<TransceiverType>(
+    TransceiverType_descriptor(), name, value);
+}
 // ===================================================================
 
 class Uuid final :
@@ -1630,6 +1635,118 @@
 };
 // -------------------------------------------------------------------
 
+class TransceiverComponentChangeAttributes final :
+    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.TransceiverComponentChangeAttributes) */ {
+ public:
+  TransceiverComponentChangeAttributes();
+  virtual ~TransceiverComponentChangeAttributes();
+
+  TransceiverComponentChangeAttributes(const TransceiverComponentChangeAttributes& from);
+
+  inline TransceiverComponentChangeAttributes& operator=(const TransceiverComponentChangeAttributes& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TransceiverComponentChangeAttributes(TransceiverComponentChangeAttributes&& from) noexcept
+    : TransceiverComponentChangeAttributes() {
+    *this = ::std::move(from);
+  }
+
+  inline TransceiverComponentChangeAttributes& operator=(TransceiverComponentChangeAttributes&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TransceiverComponentChangeAttributes& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TransceiverComponentChangeAttributes* internal_default_instance() {
+    return reinterpret_cast<const TransceiverComponentChangeAttributes*>(
+               &_TransceiverComponentChangeAttributes_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    7;
+
+  void Swap(TransceiverComponentChangeAttributes* other);
+  friend void swap(TransceiverComponentChangeAttributes& a, TransceiverComponentChangeAttributes& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TransceiverComponentChangeAttributes* New() const final {
+    return CreateMaybeMessage<TransceiverComponentChangeAttributes>(nullptr);
+  }
+
+  TransceiverComponentChangeAttributes* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TransceiverComponentChangeAttributes>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TransceiverComponentChangeAttributes& from);
+  void MergeFrom(const TransceiverComponentChangeAttributes& from);
+  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TransceiverComponentChangeAttributes* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return nullptr;
+  }
+  inline void* MaybeArenaPtr() const {
+    return nullptr;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .dmi.TransceiverType trans_type = 1;
+  void clear_trans_type();
+  static const int kTransTypeFieldNumber = 1;
+  ::dmi::TransceiverType trans_type() const;
+  void set_trans_type(::dmi::TransceiverType value);
+
+  // @@protoc_insertion_point(class_scope:dmi.TransceiverComponentChangeAttributes)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  int trans_type_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_dmi_2fhw_2eproto;
+};
+// -------------------------------------------------------------------
+
 class PonIdConfig final :
     public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.PonIdConfig) */ {
  public:
@@ -1668,7 +1785,7 @@
                &_PonIdConfig_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    7;
+    8;
 
   void Swap(PonIdConfig* other);
   friend void swap(PonIdConfig& a, PonIdConfig& b) {
@@ -1795,7 +1912,7 @@
                &_ContainerComponentAttributes_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    8;
+    9;
 
   void Swap(ContainerComponentAttributes* other);
   friend void swap(ContainerComponentAttributes& a, ContainerComponentAttributes& b) {
@@ -1915,7 +2032,7 @@
                &_PsuComponentAttributes_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    9;
+    10;
 
   void Swap(PsuComponentAttributes* other);
   friend void swap(PsuComponentAttributes& a, PsuComponentAttributes& b) {
@@ -2057,7 +2174,7 @@
                &_TransceiverComponentsAttributes_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    10;
+    11;
 
   void Swap(TransceiverComponentsAttributes* other);
   friend void swap(TransceiverComponentsAttributes& a, TransceiverComponentsAttributes& b) {
@@ -2164,44 +2281,6 @@
     return TransceiverComponentsAttributes_FormFactor_Parse(name, value);
   }
 
-  typedef TransceiverComponentsAttributes_Type Type;
-  static const Type TYPE_UNKNOWN =
-    TransceiverComponentsAttributes_Type_TYPE_UNKNOWN;
-  static const Type ETHERNET =
-    TransceiverComponentsAttributes_Type_ETHERNET;
-  static const Type GPON =
-    TransceiverComponentsAttributes_Type_GPON;
-  static const Type XGPON =
-    TransceiverComponentsAttributes_Type_XGPON;
-  static const Type XGSPON =
-    TransceiverComponentsAttributes_Type_XGSPON;
-  static const Type CPON =
-    TransceiverComponentsAttributes_Type_CPON;
-  static const Type NG_PON2 =
-    TransceiverComponentsAttributes_Type_NG_PON2;
-  static const Type EPON =
-    TransceiverComponentsAttributes_Type_EPON;
-  static inline bool Type_IsValid(int value) {
-    return TransceiverComponentsAttributes_Type_IsValid(value);
-  }
-  static const Type Type_MIN =
-    TransceiverComponentsAttributes_Type_Type_MIN;
-  static const Type Type_MAX =
-    TransceiverComponentsAttributes_Type_Type_MAX;
-  static const int Type_ARRAYSIZE =
-    TransceiverComponentsAttributes_Type_Type_ARRAYSIZE;
-  static inline const ::google::protobuf::EnumDescriptor*
-  Type_descriptor() {
-    return TransceiverComponentsAttributes_Type_descriptor();
-  }
-  static inline const ::std::string& Type_Name(Type value) {
-    return TransceiverComponentsAttributes_Type_Name(value);
-  }
-  static inline bool Type_Parse(const ::std::string& name,
-      Type* value) {
-    return TransceiverComponentsAttributes_Type_Parse(name, value);
-  }
-
   // accessors -------------------------------------------------------
 
   // repeated uint32 rx_wavelength = 5;
@@ -2234,11 +2313,11 @@
   ::dmi::TransceiverComponentsAttributes_FormFactor form_factor() const;
   void set_form_factor(::dmi::TransceiverComponentsAttributes_FormFactor value);
 
-  // .dmi.TransceiverComponentsAttributes.Type trans_type = 2;
+  // .dmi.TransceiverType trans_type = 2;
   void clear_trans_type();
   static const int kTransTypeFieldNumber = 2;
-  ::dmi::TransceiverComponentsAttributes_Type trans_type() const;
-  void set_trans_type(::dmi::TransceiverComponentsAttributes_Type value);
+  ::dmi::TransceiverType trans_type() const;
+  void set_trans_type(::dmi::TransceiverType value);
 
   // uint32 max_distance = 3;
   void clear_max_distance();
@@ -2323,7 +2402,7 @@
                &_Component_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    11;
+    12;
 
   void Swap(Component* other);
   friend void swap(Component& a, Component& b) {
@@ -2734,7 +2813,7 @@
                &_Hardware_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    12;
+    13;
 
   void Swap(Hardware* other);
   friend void swap(Hardware& a, Hardware& b) {
@@ -2865,6 +2944,7 @@
 
   enum SpecificCase {
     kPortAttr = 50,
+    kTrxAttr = 51,
     SPECIFIC_NOT_SET = 0,
   };
 
@@ -2874,7 +2954,7 @@
                &_ModifiableComponent_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    13;
+    14;
 
   void Swap(ModifiableComponent* other);
   friend void swap(ModifiableComponent& a, ModifiableComponent& b) {
@@ -3018,12 +3098,22 @@
   ::dmi::PortComponentChangeAttributes* mutable_port_attr();
   void set_allocated_port_attr(::dmi::PortComponentChangeAttributes* port_attr);
 
+  // .dmi.TransceiverComponentChangeAttributes trx_attr = 51;
+  bool has_trx_attr() const;
+  void clear_trx_attr();
+  static const int kTrxAttrFieldNumber = 51;
+  const ::dmi::TransceiverComponentChangeAttributes& trx_attr() const;
+  ::dmi::TransceiverComponentChangeAttributes* release_trx_attr();
+  ::dmi::TransceiverComponentChangeAttributes* mutable_trx_attr();
+  void set_allocated_trx_attr(::dmi::TransceiverComponentChangeAttributes* trx_attr);
+
   void clear_specific();
   SpecificCase specific_case() const;
   // @@protoc_insertion_point(class_scope:dmi.ModifiableComponent)
  private:
   class HasBitSetters;
   void set_has_port_attr();
+  void set_has_trx_attr();
 
   inline bool has_specific() const;
   inline void clear_has_specific();
@@ -3040,6 +3130,7 @@
   union SpecificUnion {
     SpecificUnion() {}
     ::dmi::PortComponentChangeAttributes* port_attr_;
+    ::dmi::TransceiverComponentChangeAttributes* trx_attr_;
   } specific_;
   mutable ::google::protobuf::internal::CachedSize _cached_size_;
   ::google::protobuf::uint32 _oneof_case_[1];
@@ -3856,6 +3947,24 @@
 
 // -------------------------------------------------------------------
 
+// TransceiverComponentChangeAttributes
+
+// .dmi.TransceiverType trans_type = 1;
+inline void TransceiverComponentChangeAttributes::clear_trans_type() {
+  trans_type_ = 0;
+}
+inline ::dmi::TransceiverType TransceiverComponentChangeAttributes::trans_type() const {
+  // @@protoc_insertion_point(field_get:dmi.TransceiverComponentChangeAttributes.trans_type)
+  return static_cast< ::dmi::TransceiverType >(trans_type_);
+}
+inline void TransceiverComponentChangeAttributes::set_trans_type(::dmi::TransceiverType value) {
+  
+  trans_type_ = value;
+  // @@protoc_insertion_point(field_set:dmi.TransceiverComponentChangeAttributes.trans_type)
+}
+
+// -------------------------------------------------------------------
+
 // PonIdConfig
 
 // bytes pon_id = 1;
@@ -4018,15 +4127,15 @@
   // @@protoc_insertion_point(field_set:dmi.TransceiverComponentsAttributes.form_factor)
 }
 
-// .dmi.TransceiverComponentsAttributes.Type trans_type = 2;
+// .dmi.TransceiverType trans_type = 2;
 inline void TransceiverComponentsAttributes::clear_trans_type() {
   trans_type_ = 0;
 }
-inline ::dmi::TransceiverComponentsAttributes_Type TransceiverComponentsAttributes::trans_type() const {
+inline ::dmi::TransceiverType TransceiverComponentsAttributes::trans_type() const {
   // @@protoc_insertion_point(field_get:dmi.TransceiverComponentsAttributes.trans_type)
-  return static_cast< ::dmi::TransceiverComponentsAttributes_Type >(trans_type_);
+  return static_cast< ::dmi::TransceiverType >(trans_type_);
 }
-inline void TransceiverComponentsAttributes::set_trans_type(::dmi::TransceiverComponentsAttributes_Type value) {
+inline void TransceiverComponentsAttributes::set_trans_type(::dmi::TransceiverType value) {
   
   trans_type_ = value;
   // @@protoc_insertion_point(field_set:dmi.TransceiverComponentsAttributes.trans_type)
@@ -5690,6 +5799,47 @@
   return specific_.port_attr_;
 }
 
+// .dmi.TransceiverComponentChangeAttributes trx_attr = 51;
+inline bool ModifiableComponent::has_trx_attr() const {
+  return specific_case() == kTrxAttr;
+}
+inline void ModifiableComponent::set_has_trx_attr() {
+  _oneof_case_[0] = kTrxAttr;
+}
+inline void ModifiableComponent::clear_trx_attr() {
+  if (has_trx_attr()) {
+    delete specific_.trx_attr_;
+    clear_has_specific();
+  }
+}
+inline ::dmi::TransceiverComponentChangeAttributes* ModifiableComponent::release_trx_attr() {
+  // @@protoc_insertion_point(field_release:dmi.ModifiableComponent.trx_attr)
+  if (has_trx_attr()) {
+    clear_has_specific();
+      ::dmi::TransceiverComponentChangeAttributes* temp = specific_.trx_attr_;
+    specific_.trx_attr_ = nullptr;
+    return temp;
+  } else {
+    return nullptr;
+  }
+}
+inline const ::dmi::TransceiverComponentChangeAttributes& ModifiableComponent::trx_attr() const {
+  // @@protoc_insertion_point(field_get:dmi.ModifiableComponent.trx_attr)
+  return has_trx_attr()
+      ? *specific_.trx_attr_
+      : *reinterpret_cast< ::dmi::TransceiverComponentChangeAttributes*>(&::dmi::_TransceiverComponentChangeAttributes_default_instance_);
+}
+inline ::dmi::TransceiverComponentChangeAttributes* ModifiableComponent::mutable_trx_attr() {
+  if (!has_trx_attr()) {
+    clear_specific();
+    set_has_trx_attr();
+    specific_.trx_attr_ = CreateMaybeMessage< ::dmi::TransceiverComponentChangeAttributes >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:dmi.ModifiableComponent.trx_attr)
+  return specific_.trx_attr_;
+}
+
 inline bool ModifiableComponent::has_specific() const {
   return specific_case() != SPECIFIC_NOT_SET;
 }
@@ -5728,6 +5878,8 @@
 
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 
@@ -5761,11 +5913,6 @@
 inline const EnumDescriptor* GetEnumDescriptor< ::dmi::TransceiverComponentsAttributes_FormFactor>() {
   return ::dmi::TransceiverComponentsAttributes_FormFactor_descriptor();
 }
-template <> struct is_proto_enum< ::dmi::TransceiverComponentsAttributes_Type> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::dmi::TransceiverComponentsAttributes_Type>() {
-  return ::dmi::TransceiverComponentsAttributes_Type_descriptor();
-}
 template <> struct is_proto_enum< ::dmi::ComponentType> : ::std::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::dmi::ComponentType>() {
@@ -5811,6 +5958,11 @@
 inline const EnumDescriptor* GetEnumDescriptor< ::dmi::SensorStatus>() {
   return ::dmi::SensorStatus_descriptor();
 }
+template <> struct is_proto_enum< ::dmi::TransceiverType> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::dmi::TransceiverType>() {
+  return ::dmi::TransceiverType_descriptor();
+}
 
 }  // namespace protobuf
 }  // namespace google
diff --git a/cpp/dmi/hw_management_service.pb.cc b/cpp/dmi/hw_management_service.pb.cc
index eda5b7b..4beefa2 100644
--- a/cpp/dmi/hw_management_service.pb.cc
+++ b/cpp/dmi/hw_management_service.pb.cc
@@ -18,7 +18,7 @@
 
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Uuid_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_Hardware_dmi_2fhw_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_ModifiableComponent_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<4> scc_info_ModifiableComponent_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<9> scc_info_Component_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fmanagement_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_EntitiesLogLevel_dmi_2fhw_5fmanagement_5fservice_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fmanagement_5fservice_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_ManagedDeviceInfo_dmi_2fhw_5fmanagement_5fservice_2eproto;
@@ -809,128 +809,129 @@
   "_uuid\030\001 \001(\0132\t.dmi.Uuid\022!\n\016component_uuid"
   "\030\002 \001(\0132\t.dmi.Uuid\022\026\n\016component_name\030\003 \001("
   "\t\022)\n\007changes\030\004 \001(\0132\030.dmi.ModifiableCompo"
-  "nent\"\224\002\n\032HWComponentInfoSetResponse\022\033\n\006s"
+  "nent\"\251\002\n\032HWComponentInfoSetResponse\022\033\n\006s"
   "tatus\030\001 \001(\0162\013.dmi.Status\0226\n\006reason\030\002 \001(\016"
   "2&.dmi.HWComponentInfoSetResponse.Reason"
-  "\022\025\n\rreason_detail\030\003 \001(\t\"\211\001\n\006Reason\022\024\n\020UN"
+  "\022\025\n\rreason_detail\030\003 \001(\t\"\236\001\n\006Reason\022\024\n\020UN"
   "DEFINED_REASON\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\025\n\021"
   "UNKNOWN_COMPONENT\020\002\022\022\n\016INVALID_PARAMS\020\003\022"
   "\022\n\016INTERNAL_ERROR\020\004\022\026\n\022DEVICE_UNREACHABL"
-  "E\020\005\"\347\002\n\033StartManagingDeviceResponse\022\033\n\006s"
-  "tatus\030\001 \001(\0162\013.dmi.Status\0227\n\006reason\030\002 \001(\016"
-  "2\'.dmi.StartManagingDeviceResponse.Reaso"
-  "n\022\036\n\013device_uuid\030\003 \001(\0132\t.dmi.Uuid\022\025\n\rrea"
-  "son_detail\030\004 \001(\t\"\272\001\n\006Reason\022\024\n\020UNDEFINED"
-  "_REASON\020\000\022\032\n\026DEVICE_ALREADY_MANAGED\020\001\022!\n"
-  "\035OPERATION_ALREADY_IN_PROGRESS\020\002\022\022\n\016INVA"
-  "LID_PARAMS\020\003\022\022\n\016INTERNAL_ERROR\020\004\022\032\n\026AUTH"
-  "ENTICATION_FAILURE\020\005\022\027\n\023INCOMPATIBLE_DEV"
-  "ICE\020\006\")\n\031StopManagingDeviceRequest\022\014\n\004na"
-  "me\030\001 \001(\t\"\274\001\n\032StopManagingDeviceResponse\022"
-  "\033\n\006status\030\001 \001(\0162\013.dmi.Status\0226\n\006reason\030\002"
-  " \001(\0162&.dmi.StopManagingDeviceResponse.Re"
-  "ason\022\025\n\rreason_detail\030\003 \001(\t\"2\n\006Reason\022\024\n"
-  "\020UNDEFINED_REASON\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\""
-  "[\n\021ManagedDeviceInfo\022&\n\004info\030\001 \001(\0132\030.dmi"
-  ".ModifiableComponent\022\036\n\013device_uuid\030\002 \001("
-  "\0132\t.dmi.Uuid\"\306\001\n\026ManagedDevicesResponse\022"
-  "\033\n\006status\030\001 \001(\0162\013.dmi.Status\0222\n\006reason\030\002"
-  " \001(\0162\".dmi.ManagedDevicesResponse.Reason"
-  "\022\'\n\007devices\030\003 \003(\0132\026.dmi.ManagedDeviceInf"
-  "o\"2\n\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016INT"
-  "ERNAL_ERROR\020\001\"o\n\031SetLoggingEndpointReque"
-  "st\022\036\n\013device_uuid\030\001 \001(\0132\t.dmi.Uuid\022\030\n\020lo"
-  "gging_endpoint\030\002 \001(\t\022\030\n\020logging_protocol"
-  "\030\003 \001(\t\"\303\002\n\031SetRemoteEndpointResponse\022\033\n\006"
-  "status\030\001 \001(\0162\013.dmi.Status\0225\n\006reason\030\002 \001("
-  "\0162%.dmi.SetRemoteEndpointResponse.Reason"
-  "\022\025\n\rreason_detail\030\003 \001(\t\"\272\001\n\006Reason\022\024\n\020UN"
+  "E\020\005\022\023\n\017SET_UNSUPPORTED\020\006\"\347\002\n\033StartManagi"
+  "ngDeviceResponse\022\033\n\006status\030\001 \001(\0162\013.dmi.S"
+  "tatus\0227\n\006reason\030\002 \001(\0162\'.dmi.StartManagin"
+  "gDeviceResponse.Reason\022\036\n\013device_uuid\030\003 "
+  "\001(\0132\t.dmi.Uuid\022\025\n\rreason_detail\030\004 \001(\t\"\272\001"
+  "\n\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\032\n\026DEVICE"
+  "_ALREADY_MANAGED\020\001\022!\n\035OPERATION_ALREADY_"
+  "IN_PROGRESS\020\002\022\022\n\016INVALID_PARAMS\020\003\022\022\n\016INT"
+  "ERNAL_ERROR\020\004\022\032\n\026AUTHENTICATION_FAILURE\020"
+  "\005\022\027\n\023INCOMPATIBLE_DEVICE\020\006\")\n\031StopManagi"
+  "ngDeviceRequest\022\014\n\004name\030\001 \001(\t\"\274\001\n\032StopMa"
+  "nagingDeviceResponse\022\033\n\006status\030\001 \001(\0162\013.d"
+  "mi.Status\0226\n\006reason\030\002 \001(\0162&.dmi.StopMana"
+  "gingDeviceResponse.Reason\022\025\n\rreason_deta"
+  "il\030\003 \001(\t\"2\n\006Reason\022\024\n\020UNDEFINED_REASON\020\000"
+  "\022\022\n\016UNKNOWN_DEVICE\020\001\"[\n\021ManagedDeviceInf"
+  "o\022&\n\004info\030\001 \001(\0132\030.dmi.ModifiableComponen"
+  "t\022\036\n\013device_uuid\030\002 \001(\0132\t.dmi.Uuid\"\306\001\n\026Ma"
+  "nagedDevicesResponse\022\033\n\006status\030\001 \001(\0162\013.d"
+  "mi.Status\0222\n\006reason\030\002 \001(\0162\".dmi.ManagedD"
+  "evicesResponse.Reason\022\'\n\007devices\030\003 \003(\0132\026"
+  ".dmi.ManagedDeviceInfo\"2\n\006Reason\022\024\n\020UNDE"
+  "FINED_REASON\020\000\022\022\n\016INTERNAL_ERROR\020\001\"o\n\031Se"
+  "tLoggingEndpointRequest\022\036\n\013device_uuid\030\001"
+  " \001(\0132\t.dmi.Uuid\022\030\n\020logging_endpoint\030\002 \001("
+  "\t\022\030\n\020logging_protocol\030\003 \001(\t\"\303\002\n\031SetRemot"
+  "eEndpointResponse\022\033\n\006status\030\001 \001(\0162\013.dmi."
+  "Status\0225\n\006reason\030\002 \001(\0162%.dmi.SetRemoteEn"
+  "dpointResponse.Reason\022\025\n\rreason_detail\030\003"
+  " \001(\t\"\272\001\n\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n"
+  "\016UNKNOWN_DEVICE\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\032\n"
+  "\026LOGGING_ENDPOINT_ERROR\020\003\022#\n\037LOGGING_END"
+  "POINT_PROTOCOL_ERROR\020\004\022\031\n\025MSGBUS_ENDPOIN"
+  "T_ERROR\020\005\022\026\n\022DEVICE_UNREACHABLE\020\006\"\234\002\n\032Ge"
+  "tLoggingEndpointResponse\022\033\n\006status\030\001 \001(\016"
+  "2\013.dmi.Status\0226\n\006reason\030\002 \001(\0162&.dmi.GetL"
+  "oggingEndpointResponse.Reason\022\030\n\020logging"
+  "_endpoint\030\003 \001(\t\022\030\n\020logging_protocol\030\004 \001("
+  "\t\022\025\n\rreason_detail\030\005 \001(\t\"^\n\006Reason\022\024\n\020UN"
   "DEFINED_REASON\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\022\n\016"
-  "INTERNAL_ERROR\020\002\022\032\n\026LOGGING_ENDPOINT_ERR"
-  "OR\020\003\022#\n\037LOGGING_ENDPOINT_PROTOCOL_ERROR\020"
-  "\004\022\031\n\025MSGBUS_ENDPOINT_ERROR\020\005\022\026\n\022DEVICE_U"
-  "NREACHABLE\020\006\"\234\002\n\032GetLoggingEndpointRespo"
-  "nse\022\033\n\006status\030\001 \001(\0162\013.dmi.Status\0226\n\006reas"
-  "on\030\002 \001(\0162&.dmi.GetLoggingEndpointRespons"
-  "e.Reason\022\030\n\020logging_endpoint\030\003 \001(\t\022\030\n\020lo"
-  "gging_protocol\030\004 \001(\t\022\025\n\rreason_detail\030\005 "
-  "\001(\t\"^\n\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016U"
-  "NKNOWN_DEVICE\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\026\n\022D"
-  "EVICE_UNREACHABLE\020\003\"3\n\030SetMsgBusEndpoint"
-  "Request\022\027\n\017msgbus_endpoint\030\001 \001(\t\"\353\001\n\031Get"
-  "MsgBusEndpointResponse\022\033\n\006status\030\001 \001(\0162\013"
-  ".dmi.Status\0225\n\006reason\030\002 \001(\0162%.dmi.GetMsg"
-  "BusEndpointResponse.Reason\022\027\n\017msgbus_end"
-  "point\030\003 \001(\t\022\025\n\rreason_detail\030\004 \001(\t\"J\n\006Re"
-  "ason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016INTERNAL_E"
-  "RROR\020\001\022\026\n\022DEVICE_UNREACHABLE\020\002\"E\n\020Entiti"
-  "esLogLevel\022\037\n\010logLevel\030\001 \001(\0162\r.dmi.LogLe"
-  "vel\022\020\n\010entities\030\002 \003(\t\"^\n\022SetLogLevelRequ"
-  "est\022\036\n\013device_uuid\030\001 \001(\0132\t.dmi.Uuid\022(\n\tl"
-  "oglevels\030\002 \003(\0132\025.dmi.EntitiesLogLevel\"\222\002"
-  "\n\023SetLogLevelResponse\022\036\n\013device_uuid\030\001 \001"
-  "(\0132\t.dmi.Uuid\022\033\n\006status\030\002 \001(\0162\013.dmi.Stat"
-  "us\022/\n\006reason\030\003 \001(\0162\037.dmi.SetLogLevelResp"
-  "onse.Reason\022\025\n\rreason_detail\030\004 \001(\t\"v\n\006Re"
-  "ason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016UNKNOWN_DE"
-  "VICE\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\026\n\022UNKNOWN_LO"
-  "G_ENTITY\020\003\022\026\n\022DEVICE_UNREACHABLE\020\004\"F\n\022Ge"
-  "tLogLevelRequest\022\036\n\013device_uuid\030\001 \001(\0132\t."
-  "dmi.Uuid\022\020\n\010entities\030\002 \003(\t\"\274\002\n\023GetLogLev"
-  "elResponse\022\036\n\013device_uuid\030\001 \001(\0132\t.dmi.Uu"
-  "id\022(\n\tlogLevels\030\002 \003(\0132\025.dmi.EntitiesLogL"
-  "evel\022\033\n\006status\030\003 \001(\0162\013.dmi.Status\022/\n\006rea"
-  "son\030\004 \001(\0162\037.dmi.GetLogLevelResponse.Reas"
-  "on\022\025\n\rreason_detail\030\005 \001(\t\"v\n\006Reason\022\024\n\020U"
-  "NDEFINED_REASON\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\022\n"
-  "\016INTERNAL_ERROR\020\002\022\026\n\022UNKNOWN_LOG_ENTITY\020"
-  "\003\022\026\n\022DEVICE_UNREACHABLE\020\004\"<\n\032GetLoggable"
-  "EntitiesRequest\022\036\n\013device_uuid\030\001 \001(\0132\t.d"
-  "mi.Uuid\"(\n\tHeartbeat\022\033\n\023heartbeat_signat"
-  "ure\030\001 \001(\007\"5\n\023RebootDeviceRequest\022\036\n\013devi"
-  "ce_uuid\030\001 \001(\0132\t.dmi.Uuid\"\334\001\n\024RebootDevic"
-  "eResponse\022\033\n\006status\030\003 \001(\0162\013.dmi.Status\0220"
-  "\n\006reason\030\004 \001(\0162 .dmi.RebootDeviceRespons"
-  "e.Reason\022\025\n\rreason_detail\030\005 \001(\t\"^\n\006Reaso"
-  "n\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016UNKNOWN_DEVIC"
-  "E\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\026\n\022DEVICE_UNREAC"
-  "HABLE\020\0032\256\t\n\031NativeHWManagementService\022S\n"
-  "\023StartManagingDevice\022\030.dmi.ModifiableCom"
-  "ponent\032 .dmi.StartManagingDeviceResponse"
-  "0\001\022U\n\022StopManagingDevice\022\036.dmi.StopManag"
-  "ingDeviceRequest\032\037.dmi.StopManagingDevic"
-  "eResponse\022H\n\021GetManagedDevices\022\026.google."
-  "protobuf.Empty\032\033.dmi.ManagedDevicesRespo"
-  "nse\022W\n\024GetPhysicalInventory\022\035.dmi.Physic"
-  "alInventoryRequest\032\036.dmi.PhysicalInvento"
-  "ryResponse0\001\022W\n\022GetHWComponentInfo\022\036.dmi"
-  ".HWComponentInfoGetRequest\032\037.dmi.HWCompo"
-  "nentInfoGetResponse0\001\022U\n\022SetHWComponentI"
-  "nfo\022\036.dmi.HWComponentInfoSetRequest\032\037.dm"
-  "i.HWComponentInfoSetResponse\022T\n\022SetLoggi"
-  "ngEndpoint\022\036.dmi.SetLoggingEndpointReque"
-  "st\032\036.dmi.SetRemoteEndpointResponse\022F\n\022Ge"
-  "tLoggingEndpoint\022\017.dmi.HardwareID\032\037.dmi."
-  "GetLoggingEndpointResponse\022R\n\021SetMsgBusE"
-  "ndpoint\022\035.dmi.SetMsgBusEndpointRequest\032\036"
-  ".dmi.SetRemoteEndpointResponse\022K\n\021GetMsg"
-  "BusEndpoint\022\026.google.protobuf.Empty\032\036.dm"
-  "i.GetMsgBusEndpointResponse\022P\n\023GetLoggab"
-  "leEntities\022\037.dmi.GetLoggableEntitiesRequ"
-  "est\032\030.dmi.GetLogLevelResponse\022@\n\013SetLogL"
-  "evel\022\027.dmi.SetLogLevelRequest\032\030.dmi.SetL"
-  "ogLevelResponse\022@\n\013GetLogLevel\022\027.dmi.Get"
-  "LogLevelRequest\032\030.dmi.GetLogLevelRespons"
-  "e\0228\n\016HeartbeatCheck\022\026.google.protobuf.Em"
-  "pty\032\016.dmi.Heartbeat\022C\n\014RebootDevice\022\030.dm"
-  "i.RebootDeviceRequest\032\031.dmi.RebootDevice"
-  "ResponseB;Z9github.com/opencord/device-m"
-  "anagement-interface/v3/go/dmib\006proto3"
+  "INTERNAL_ERROR\020\002\022\026\n\022DEVICE_UNREACHABLE\020\003"
+  "\"3\n\030SetMsgBusEndpointRequest\022\027\n\017msgbus_e"
+  "ndpoint\030\001 \001(\t\"\353\001\n\031GetMsgBusEndpointRespo"
+  "nse\022\033\n\006status\030\001 \001(\0162\013.dmi.Status\0225\n\006reas"
+  "on\030\002 \001(\0162%.dmi.GetMsgBusEndpointResponse"
+  ".Reason\022\027\n\017msgbus_endpoint\030\003 \001(\t\022\025\n\rreas"
+  "on_detail\030\004 \001(\t\"J\n\006Reason\022\024\n\020UNDEFINED_R"
+  "EASON\020\000\022\022\n\016INTERNAL_ERROR\020\001\022\026\n\022DEVICE_UN"
+  "REACHABLE\020\002\"E\n\020EntitiesLogLevel\022\037\n\010logLe"
+  "vel\030\001 \001(\0162\r.dmi.LogLevel\022\020\n\010entities\030\002 \003"
+  "(\t\"^\n\022SetLogLevelRequest\022\036\n\013device_uuid\030"
+  "\001 \001(\0132\t.dmi.Uuid\022(\n\tloglevels\030\002 \003(\0132\025.dm"
+  "i.EntitiesLogLevel\"\222\002\n\023SetLogLevelRespon"
+  "se\022\036\n\013device_uuid\030\001 \001(\0132\t.dmi.Uuid\022\033\n\006st"
+  "atus\030\002 \001(\0162\013.dmi.Status\022/\n\006reason\030\003 \001(\0162"
+  "\037.dmi.SetLogLevelResponse.Reason\022\025\n\rreas"
+  "on_detail\030\004 \001(\t\"v\n\006Reason\022\024\n\020UNDEFINED_R"
+  "EASON\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\022\n\016INTERNAL_"
+  "ERROR\020\002\022\026\n\022UNKNOWN_LOG_ENTITY\020\003\022\026\n\022DEVIC"
+  "E_UNREACHABLE\020\004\"F\n\022GetLogLevelRequest\022\036\n"
+  "\013device_uuid\030\001 \001(\0132\t.dmi.Uuid\022\020\n\010entitie"
+  "s\030\002 \003(\t\"\274\002\n\023GetLogLevelResponse\022\036\n\013devic"
+  "e_uuid\030\001 \001(\0132\t.dmi.Uuid\022(\n\tlogLevels\030\002 \003"
+  "(\0132\025.dmi.EntitiesLogLevel\022\033\n\006status\030\003 \001("
+  "\0162\013.dmi.Status\022/\n\006reason\030\004 \001(\0162\037.dmi.Get"
+  "LogLevelResponse.Reason\022\025\n\rreason_detail"
+  "\030\005 \001(\t\"v\n\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\022"
+  "\n\016UNKNOWN_DEVICE\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\026"
+  "\n\022UNKNOWN_LOG_ENTITY\020\003\022\026\n\022DEVICE_UNREACH"
+  "ABLE\020\004\"<\n\032GetLoggableEntitiesRequest\022\036\n\013"
+  "device_uuid\030\001 \001(\0132\t.dmi.Uuid\"(\n\tHeartbea"
+  "t\022\033\n\023heartbeat_signature\030\001 \001(\007\"5\n\023Reboot"
+  "DeviceRequest\022\036\n\013device_uuid\030\001 \001(\0132\t.dmi"
+  ".Uuid\"\334\001\n\024RebootDeviceResponse\022\033\n\006status"
+  "\030\003 \001(\0162\013.dmi.Status\0220\n\006reason\030\004 \001(\0162 .dm"
+  "i.RebootDeviceResponse.Reason\022\025\n\rreason_"
+  "detail\030\005 \001(\t\"^\n\006Reason\022\024\n\020UNDEFINED_REAS"
+  "ON\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\022\n\016INTERNAL_ERR"
+  "OR\020\002\022\026\n\022DEVICE_UNREACHABLE\020\0032\256\t\n\031NativeH"
+  "WManagementService\022S\n\023StartManagingDevic"
+  "e\022\030.dmi.ModifiableComponent\032 .dmi.StartM"
+  "anagingDeviceResponse0\001\022U\n\022StopManagingD"
+  "evice\022\036.dmi.StopManagingDeviceRequest\032\037."
+  "dmi.StopManagingDeviceResponse\022H\n\021GetMan"
+  "agedDevices\022\026.google.protobuf.Empty\032\033.dm"
+  "i.ManagedDevicesResponse\022W\n\024GetPhysicalI"
+  "nventory\022\035.dmi.PhysicalInventoryRequest\032"
+  "\036.dmi.PhysicalInventoryResponse0\001\022W\n\022Get"
+  "HWComponentInfo\022\036.dmi.HWComponentInfoGet"
+  "Request\032\037.dmi.HWComponentInfoGetResponse"
+  "0\001\022U\n\022SetHWComponentInfo\022\036.dmi.HWCompone"
+  "ntInfoSetRequest\032\037.dmi.HWComponentInfoSe"
+  "tResponse\022T\n\022SetLoggingEndpoint\022\036.dmi.Se"
+  "tLoggingEndpointRequest\032\036.dmi.SetRemoteE"
+  "ndpointResponse\022F\n\022GetLoggingEndpoint\022\017."
+  "dmi.HardwareID\032\037.dmi.GetLoggingEndpointR"
+  "esponse\022R\n\021SetMsgBusEndpoint\022\035.dmi.SetMs"
+  "gBusEndpointRequest\032\036.dmi.SetRemoteEndpo"
+  "intResponse\022K\n\021GetMsgBusEndpoint\022\026.googl"
+  "e.protobuf.Empty\032\036.dmi.GetMsgBusEndpoint"
+  "Response\022P\n\023GetLoggableEntities\022\037.dmi.Ge"
+  "tLoggableEntitiesRequest\032\030.dmi.GetLogLev"
+  "elResponse\022@\n\013SetLogLevel\022\027.dmi.SetLogLe"
+  "velRequest\032\030.dmi.SetLogLevelResponse\022@\n\013"
+  "GetLogLevel\022\027.dmi.GetLogLevelRequest\032\030.d"
+  "mi.GetLogLevelResponse\0228\n\016HeartbeatCheck"
+  "\022\026.google.protobuf.Empty\032\016.dmi.Heartbeat"
+  "\022C\n\014RebootDevice\022\030.dmi.RebootDeviceReque"
+  "st\032\031.dmi.RebootDeviceResponseB;Z9github."
+  "com/opencord/device-management-interface"
+  "/v3/go/dmib\006proto3"
   ;
 ::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fhw_5fmanagement_5fservice_2eproto = {
   false, InitDefaults_dmi_2fhw_5fmanagement_5fservice_2eproto, 
   descriptor_table_protodef_dmi_2fhw_5fmanagement_5fservice_2eproto,
-  "dmi/hw_management_service.proto", &assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto, 5677,
+  "dmi/hw_management_service.proto", &assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto, 5698,
 };
 
 void AddDescriptors_dmi_2fhw_5fmanagement_5fservice_2eproto() {
@@ -1010,6 +1011,7 @@
     case 3:
     case 4:
     case 5:
+    case 6:
       return true;
     default:
       return false;
@@ -1023,6 +1025,7 @@
 const HWComponentInfoSetResponse_Reason HWComponentInfoSetResponse::INVALID_PARAMS;
 const HWComponentInfoSetResponse_Reason HWComponentInfoSetResponse::INTERNAL_ERROR;
 const HWComponentInfoSetResponse_Reason HWComponentInfoSetResponse::DEVICE_UNREACHABLE;
+const HWComponentInfoSetResponse_Reason HWComponentInfoSetResponse::SET_UNSUPPORTED;
 const HWComponentInfoSetResponse_Reason HWComponentInfoSetResponse::Reason_MIN;
 const HWComponentInfoSetResponse_Reason HWComponentInfoSetResponse::Reason_MAX;
 const int HWComponentInfoSetResponse::Reason_ARRAYSIZE;
diff --git a/cpp/dmi/hw_management_service.pb.h b/cpp/dmi/hw_management_service.pb.h
index fe01fa4..c350b06 100644
--- a/cpp/dmi/hw_management_service.pb.h
+++ b/cpp/dmi/hw_management_service.pb.h
@@ -214,12 +214,13 @@
   HWComponentInfoSetResponse_Reason_INVALID_PARAMS = 3,
   HWComponentInfoSetResponse_Reason_INTERNAL_ERROR = 4,
   HWComponentInfoSetResponse_Reason_DEVICE_UNREACHABLE = 5,
+  HWComponentInfoSetResponse_Reason_SET_UNSUPPORTED = 6,
   HWComponentInfoSetResponse_Reason_HWComponentInfoSetResponse_Reason_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
   HWComponentInfoSetResponse_Reason_HWComponentInfoSetResponse_Reason_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
 };
 bool HWComponentInfoSetResponse_Reason_IsValid(int value);
 const HWComponentInfoSetResponse_Reason HWComponentInfoSetResponse_Reason_Reason_MIN = HWComponentInfoSetResponse_Reason_UNDEFINED_REASON;
-const HWComponentInfoSetResponse_Reason HWComponentInfoSetResponse_Reason_Reason_MAX = HWComponentInfoSetResponse_Reason_DEVICE_UNREACHABLE;
+const HWComponentInfoSetResponse_Reason HWComponentInfoSetResponse_Reason_Reason_MAX = HWComponentInfoSetResponse_Reason_SET_UNSUPPORTED;
 const int HWComponentInfoSetResponse_Reason_Reason_ARRAYSIZE = HWComponentInfoSetResponse_Reason_Reason_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* HWComponentInfoSetResponse_Reason_descriptor();
@@ -1305,6 +1306,8 @@
     HWComponentInfoSetResponse_Reason_INTERNAL_ERROR;
   static const Reason DEVICE_UNREACHABLE =
     HWComponentInfoSetResponse_Reason_DEVICE_UNREACHABLE;
+  static const Reason SET_UNSUPPORTED =
+    HWComponentInfoSetResponse_Reason_SET_UNSUPPORTED;
   static inline bool Reason_IsValid(int value) {
     return HWComponentInfoSetResponse_Reason_IsValid(value);
   }