BAL2.4 proto file changes

Change-Id: Ic5e71c2d56972ce4642518e3eb7de30051f9df88
diff --git a/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py b/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
index ee0a9f4..462fe37 100644
--- a/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
+++ b/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
@@ -179,7 +179,6 @@
         self.adapter_agent.add_logical_port(logical_device_id, logical_port)
 
     def handle_access_term_ind(self, ind_info):
-        #import pdb; pdb.set_trace()
         device = self.adapter_agent.get_device(self.device_id)
         if ind_info['actv_status'] == 'success':
             self.log.info('successful access terminal Indication',
@@ -196,7 +195,6 @@
                #self.send_connect_olt(self.olt_id)
                port_no = 100
                self.add_port(port_no, port_type=Port.PON_OLT)
-               #import pdb; pdb.set_trace()
                self.bal.activate_pon_port(self.olt_id, port_no);
             except Exception as e:
                return
@@ -208,9 +206,13 @@
         return
 
     def handle_subscriber_term_ind(self, ind_info):
-        #import pdb; pdb.set_trace()
         self.log.info('To-DO Need to handle ONU Indication')
-       
+
+    def send_proxied_message(self, proxy_address, msg):
+        try:
+            self.bal.send_omci_request_message(proxy_address, msg)
+        except Exception as e:
+            return
 
 def disable(self):
         super(Asfvolt16Handler, self).disable()
diff --git a/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py b/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
index f23e66b..067d2fd 100644
--- a/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
+++ b/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
@@ -58,17 +58,23 @@
         self.log.info('Group indication is not implemented', device_id=device_id)
 
     def process_interface_ind(self, bal_indication, device_id):
-        self.log.info('Inteface Ind received', intf_id=bal_indication.balObjInfo.keyStr)
+        self.log.info('Inteface Ind received')
         self.log.info('Awaiting ONU discovery')
         return
 
     def process_packet_ind(self, bal_indication, device_id):
-        self.log.info('packet indication is not implemented', device_id=device_id)
+        self.log.info('received omci msg')
+        proxy_address=Device.ProxyAddress(
+                      device_id=device_id,
+                      channel_id=bal_indication.balOmciResp.key.packet_send_dest.itu_omci_channel.sub_term_id,  
+                      onu_id=bal_indication.balOmciResp.key.packet_send_dest.itu_omci_channel.sub_term_id,
+                      onu_session_id=bal_indication.balOmciResp.key.packet_send_dest.itu_omci_channel.sub_term_id
+        )
+        self.adapter_agent.receive_proxied_message(proxy_address, bal_indication.balOmciRespInfo.data.pkt.val)
 
     def process_subscriber_term_ind(self, bal_indication, device_id):
-        onu_data = bal_indication.balObjInfo.onuDiscoveryInfo
-        self.log.info('Subscriber termination message received',
-                              admin_state=onu_data.data.admin_state)
+        onu_data = bal_indication.terminal_disc
+        self.log.info('Subscriber termination message received')
         #     ind_info: {'object_type': <str>
         #                '_device_id': <str>
         #                '_pon_id' : <int>
@@ -85,10 +91,10 @@
         ind_info['_vendor_id'] = '4252434D'
         ind_info['_vendor_specific'] = onu_data.data.serial_number.vendor_specific
 
-        if(bal_model_types_pb2.BAL_STATE_DOWN == onu_data.data.admin_state):
-            ind_info['activation_successful']=False
-        elif(bal_model_types_pb2.BAL_STATE_UP == onu_data.data.admin_state):
-            ind_info['activation_successful']=True
+        #if(bal_model_types_pb2.BAL_STATE_DOWN == onu_data.data.admin_state):
+        #    ind_info['activation_successful']=False
+        #elif(bal_model_types_pb2.BAL_STATE_UP == onu_data.data.admin_state):
+        #    ind_info['activation_successful']=True
         reactor.callLater(0,
                           self.adapter.devices_handlers[device_id].handle_subscriber_term_ind, 
                           ind_info)
@@ -106,7 +112,7 @@
         #                'actv_status': <str>}
         ind_info = dict()
         ind_info['object_type'] = 'access_terminal'
-        if bal_indication.balObjInfo.status != bal_errno_pb2.BAL_ERR_OK:
+        if bal_indication.access_term_ind.data.admin_state != bal_model_ids_pb2.BAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE:
             ind_info['actv_status'] = 'failed'
         else:
             ind_info['actv_status'] = 'success'
@@ -129,12 +135,10 @@
     @twisted_async
     def BalIndInfo(self, request, context):
         self.log.info('get-device-info')
-        self.log.info('received indication for object type',obj_type=request.balObjInfo.objType)
-        #import pdb; pdb.set_trace()
-        #reactor.callFromThread(self.Baltest, request)
+        self.log.info('received indication for object type',obj_type=request.objType)
         device_id = request.device_id.decode('unicode-escape')
         try:
-            handler = self.ind_handlers.get(request.balObjInfo.objType)
+            handler = self.ind_handlers.get(request.objType)
             if handler:
                 handler(self, request, device_id)
         except Exception as e:
diff --git a/voltha/adapters/asfvolt16_olt/bal.py b/voltha/adapters/asfvolt16_olt/bal.py
index 25e3426..2c5c861 100644
--- a/voltha/adapters/asfvolt16_olt/bal.py
+++ b/voltha/adapters/asfvolt16_olt/bal.py
@@ -73,3 +73,26 @@
         except Exception as e:
             self.log.info('activating-pon-port in olt-exception', exc=str(e))
         return
+
+    @inlineCallbacks
+    def send_omci_request_message(self, proxy_address, msg):
+        if isinstance(msg, Packet):
+            msg = str(msg)
+
+        self.log.info('send_omci_request_message',
+                      proxy_address=proxy_address.channel_id,
+                      msg=msg)
+        try:
+            obj = bal_pb2.BalCfg()
+            #Fill Header details
+            obj.device_id = self.device_id.encode('ascii', 'ignore')
+            obj.hdr.obj_type = bal_model_ids_pb2.BAL_OBJ_ID_PACKET
+            #Fill packet Details
+            obj.packet.key.packet_send_dest.type = bal_model_types_pb2.BAL_DEST_TYPE_ITU_OMCI_CHANNEL
+            obj.packet.key.packet_send_dest.itu_omci_channel.sub_term_id = proxy_address.channel_id
+            obj.packet.key.packet_send_dest.itu_omci_channel.int_id = 0
+            obj.packet.data.pkt = msg
+	    yield self.stub.BalCfgSet(obj)
+        except Exception as e:
+            self.log.info('send-proxied_message-exception', exc=str(e))
+        return
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal.proto b/voltha/adapters/asfvolt16_olt/protos/bal.proto
index f2091f8..885d0bf 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal.proto
@@ -61,12 +61,6 @@
     }
 }
 
-message BalOmciReq {
-        uint32 olt_no = 1;/*OLT number*/
-        uint32 onu_id = 2;/*ONU number*/
-        bytes  omciMsg = 3;/*OMCI msg*/
-}
-
 service Bal {
     /**
      * Initialize the BAL Public API internal data structures
@@ -85,6 +79,4 @@
     rpc BalCfgSet(BalCfg) returns(BalErr) {}
     rpc BalCfgClear(BalKey) returns(BalErr) {}
     rpc BalCfgGet(BalKey) returns(BalCfg) {}
-
-    rpc BalOmciMsg(BalOmciReq) returns(BalErr){}
 }
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_indications.proto b/voltha/adapters/asfvolt16_olt/protos/bal_indications.proto
index b4ee69b..8dd5fc3 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal_indications.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_indications.proto
@@ -17,178 +17,37 @@
 syntax = "proto3";
 
 import "bal_model_ids.proto";
-import "bal_errno.proto";
 import "bal_model_types.proto";
 import "bal.proto";
 
-enum BalAlarmIndStatus{
-    BAL_ALARM_IND_CLEARED = 0; //Alarm cleared
-    BAL_ALARM_IND_RAISED  = 1; //Alarm raised
-}
-
-//ONU alarm info
-message BalOnuAlarmInfo{
-    uint32  onu_id = 1;  //onu id
-    BalSerialNumber serial_number = 2; //serial number of the ONU
-    BalAlarmIndStatus onu_alarm_status = 3; //status of the alarm raised by ONU
-    string onu_alarm_name = 4; //name of the alarm raised by ONU
-}
-
-//OLT alarm info
-message BalOltAlarmInfo{
-    uint32  olt_no = 1; //olt number
-    uint32  deviceId = 2; //pon interface number of the corresponding OLT
-    BalAlarmIndStatus olt_alarm_status = 3; //status of the alarm raised by OLT
-    string olt_alarm_name = 4; //name of the alarm raised by OLT
-}
-
-//Alarms generated by the system
-message BalAlarmInfo{
-    uint32  NoOfAlarmsPresent = 1;  //number of alarms present in the BAL system currently
-    BalOnuAlarmInfo onuAlarmInfo = 2; //ONU alarm info
-    BalOltAlarmInfo oltAlarmInfo = 3; //OLT alarm info
-}
-
-//NNI statistics
-message BalNniStatsInfo{
-    uint32      nni_rx_frames_64 = 1;
-    uint32      nni_rx_frames_65_127 = 2;
-    uint32      nni_rx_frames_128_255 = 3;
-    uint32      nni_rx_frames_256_511 = 4;
-    uint32      nni_rx_frames_512_1023 = 5;
-    uint32      nni_rx_frames_1024_1518 = 6;
-    uint32      nni_rx_frames_1519_2047 = 7;
-    uint32      nni_rx_frames_2048_4095 = 8;
-    uint32      nni_rx_frames_4096_9216 = 9;
-    uint32      nni_rx_frames_9217_16383 = 10;
-    uint32      nni_rx_frames = 11;
-    uint32      nni_rx_bytes = 12;
-    uint32      nni_rx_good_frames = 13;
-    uint32      nni_rx_unicast_frames = 14;
-    uint32      nni_rx_multicast_frames = 15;
-    uint32      nni_rx_broadcast_frames = 16;
-    uint32      nni_rx_fcs_errors = 17;
-    uint32      nni_rx_control_frames = 18;
-    uint32      nni_rx_pause_frames = 19;
-    uint32      nni_rx_pfc_frames = 20;
-    uint32      nni_rx_unsupported_opcode = 21;
-    uint32      nni_rx_unsupported_da = 22;
-    uint32      nni_rx_alignment_errors = 23;
-    uint32      nni_rx_length_out_of_range = 24;
-    uint32      nni_rx_code_errors = 25;
-    uint32      nni_rx_oversized_frames = 26;
-    uint32      nni_rx_jabber_frames = 27;
-    uint32      nni_rx_mtu_check_errors = 28;
-    uint32      nni_rx_promiscuous_frames = 29;
-    uint32      nni_rx_vlan_frames = 30;
-    uint32      nni_rx_double_vlan_frames = 31;
-    uint32      nni_rx_truncated_frames = 32;
-    uint32      nni_rx_undersize_frames = 33;
-    uint32      nni_rx_fragmented_frames = 34;
-    uint32      nni_rx_runt_frames = 35;
-    uint32      nni_tx_frames_64 = 36;
-    uint32      nni_tx_frames_65_127 = 37;
-    uint32      nni_tx_frames_128_255 = 38;
-    uint32      nni_tx_frames_256_511 = 39;
-    uint32      nni_tx_frames_512_1023 = 40;
-    uint32      nni_tx_frames_1024_1518 = 41;
-    uint32      nni_tx_frames_1519_2047 = 42;
-    uint32      nni_tx_frames_2048_4095 = 44;
-    uint32      nni_tx_frames_4096_9216 = 45;
-    uint32      nni_tx_frames_9217_16383 = 46;
-    uint32      nni_tx_frames = 47;
-    uint32      nni_tx_bytes = 48;
-    uint32      nni_tx_good_frames = 49;
-    uint32      nni_tx_unicast_frames = 50;
-    uint32      nni_tx_multicast_frames = 51;
-    uint32      nni_tx_broadcast_frames = 52;
-    uint32      nni_tx_pause_frames = 53;
-    uint32      nni_tx_pfc_frames = 54;
-    uint32      nni_tx_jabber_frames = 55;
-    uint32      nni_tx_fcs_errors = 56;
-    uint32      nni_tx_control_frames = 57;
-    uint32      nni_tx_oversize_frames = 58;
-    uint32      nni_tx_fragmented_frames = 59;
-    uint32      nni_tx_error_frames = 60;
-    uint32      nni_tx_vlan_frames = 61;
-    uint32      nni_tx_double_vlan_frames = 62;
-    uint32      nni_tx_runt_frames = 63;
-    uint32      nni_tx_underrun_frames = 64;
-}
-
-//PON statistics
-message BalPonNiStatsInfo{
-    uint32       pon_ni_tx_packets = 1;
-    uint32       pon_ni_rx_omci = 2;
-    uint32       pon_ni_tx_omci = 3;
-    uint32       pon_ni_rx_xgem = 4;
-    uint32       pon_ni_tx_xgem = 5;
-}
-
-//Gem port based statistics
-message BalPonGemStatsInfo{
-    uint32       pon_gem_rx_packets = 1;
-    uint32       pon_gem_rx_bytes = 2;
-    uint32       pon_gem_tx_packets = 3;
-    uint32       pon_gem_tx_bytes = 4;
-}
-
-//ONU statistics
-message BalOnuStatsInfo{
-    uint32       onu_id = 1;
-    uint32       onu_rx_words = 2;
-    uint32       onu_rx_omci = 3;
-    uint32       onu_positive_drift = 4;
-    uint32       onu_negative_drift = 5;
-}
-
-enum BalIndStatsType{
-    BAL_IND_NNI_STATS     = 0;
-    BAL_IND_PON_STATS     = 1;
-    BAL_IND_PON_GEM_STATS = 2;
-    BAL_IND_ONU_STATS     = 3;
-}
-
-message BalIndStatsInfo{
-    uint32                device_id = 1; //OLT number
-    uint32                pon_ni = 2; //pon interface number of the corresponding OLT
-    BalIndStatsType       stats_type = 3; //type of statistics
-    BalNniStatsInfo       nni_stats = 4; //nni statistics info
-    BalPonNiStatsInfo     pon_ni_stats = 5; //pon based statistics
-    BalPonGemStatsInfo    pon_gem_stats = 6; //gem port based statistics
-    BalOnuStatsInfo       onu_stats = 7; //onu statistics
-}
-
-message BalOmciRespInfo{
-    bytes  balOmciResp = 1; //response msg
-    uint32 pon_ni = 2; //pon interface number
-    uint32 onu_id = 3; //onu id
-    uint32 port_id = 4; //port id
-    uint32 crc_ok = 5; //crc status
-}
-
-message BalObjInd{
-    BalObjId     objType = 1; //type of object for which the indications have been received
-    BalErrno     status  = 2; //status of the indication received from BAL utilities
-    string       keyStr  = 3; //key string containing additional data
-    oneof u {
-        BalSubscriberTerminalCfg onuDiscoveryInfo = 4; // ONU discovery info
-        bytes        pktData = 5; //raw packet in case of object type is PACKET
-	}
-}
-
 message BalIndications{
-    oneof u {
-          BalObjInd balObjInfo = 1; //raw packet in case of object type is PACKET
-          BalAlarmInfo balAlarmInfo = 2; //alarm info from BAL
-          BalIndStatsInfo balStatsInfo = 3; //statistics info from BAL
-          BalOmciRespInfo balOmciRespInfo = 4; // OMCI response
-    }
-    string device_id = 5; //Deviced Id
+   BalObjId     objType = 1; //type of object for which the indications have been received
+   oneof u {
+         BalAccessTerminalInd access_term_ind                        = 2;  // Access Terminal
+         BalAccessTerminalOperStatusChange access_term_ind_op_state  = 3;  // Access Terminal Operational State Change
+         BalFlowOperStatusChange flow_op_state                       = 4;  // Flow Operational State Change
+         BalFlowInd flow_ind                                         = 5;  // Flow
+         BalGroupInd group_ind                                       = 6;  // Group
+         BalInterfaceOperStatusChange interface_op_state             = 7;  // Interface Operational State Change
+         BalInterfaceLos interface_los                               = 8;  // OLT alarms
+         BalInterfaceInd interface_ind                               = 9;  // Interface
+         BalInterfaceStat interface_stats                            = 10; // NNI statistics
+         BalSubscriberTerminalOperStatusChange terminal_op_state     = 11; // Subscriber Terminal Operational State Change
+         BalSubscriberTerminalSubTermDisc terminal_disc              = 12; // Subscriber discovery
+         BalSubscriberTerminalSubTermAlarm terminal_alarm            = 13; // Subscriber alarm
+         BalSubscriberTerminalDgi terminal_dgi                       = 14; // Subscriber dgi
+         BalSubscriberTerminalInd terminal_ind                       = 15; // Subscriber
+         BalTmQueueInd tm_queue_Ind                                  = 16; // TmQueue Ind
+         BalTmSchedInd tm_sched_Ind                                  = 17; // TmScheduler Ind
+         BalPacketBearerChannelRx  pktData                           = 18; // packet data
+         BalPacketItuOmciChannelRx balOmciResp                       = 19; // OMCI response
+         BalPacketIeeeOamChannelRx balOamResp                        = 20; // PLOAM response
+      }
+      string device_id                                               = 21; //Deviced Id
 }
 
 service BalInd {
 
-    //Handling of bal indications from the device
-    rpc BalIndInfo(BalIndications) returns(BalErr) {}
+      //Handling of bal indications from the device
+      rpc BalIndInfo(BalIndications) returns(BalErr) {}
 }
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto b/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto
index ca87dcd..f8152b0 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto
@@ -16,32 +16,46 @@
 
 syntax = "proto3";
 
-/** Identifiers for all properties contained in the access_terminal_cfg group. 
+/** Identifiers for all properties contained in the access_terminal_cfg group.
  */
 enum BalAccessTerminalCfgId
 {
     BAL_ACCESS_TERMINAL_CFG_ID_ADMIN_STATE   = 0;    /**< Administrative state. */
     BAL_ACCESS_TERMINAL_CFG_ID_OPER_STATUS   = 1;    /**< Operational status. */
     BAL_ACCESS_TERMINAL_CFG_ID_IWF_MODE      = 2;    /**< Interworking function mode. */
+    BAL_ACCESS_TERMINAL_CFG_ID_TOPOLOGY      = 3;    /**< Topology mode. */
+    BAL_ACCESS_TERMINAL_CFG_ID_SW_VERSION    = 4;    /**< Software version mode. */
 }
 
-/** Identifiers for all properties contained in the access_terminal_ind group. 
+/** Identifiers for all properties contained in the access_terminal_ind group.
  */
 enum BalAccessTerminalIndId
 {
     BAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE   = 0;    /**< Administrative state. */
     BAL_ACCESS_TERMINAL_IND_ID_OPER_STATUS   = 1;    /**< Operational status. */
     BAL_ACCESS_TERMINAL_IND_ID_IWF_MODE      = 2;    /**< Interworking function mode. */
+    BAL_ACCESS_TERMINAL_IND_ID_TOPOLOGY      = 3;    /**< Topology mode */
+    BAL_ACCESS_TERMINAL_IND_ID_SW_VERSION    = 4;    /**< Software version mode */
 }
 
-/** Identifiers for all properties contained in the access_terminal_key group. 
+/** Identifiers for all properties contained in the access_terminal_key group.
  */
 enum BalAccessTerminalKeyId
 {
     BAL_ACCESS_TERMINAL_KEY_ID_ACCESS_TERM_ID= 0;    /**< access_term_id. */
 }
 
-/** Identifiers for all properties contained in the flow_cfg group. 
+/** Identifiers for all properties contained in the
+   * access_terminal_oper_status_change group.
+   */
+enum BalOperStatusChangeId
+{
+    BAL_ACCESS_TERMINAL_OPER_STATUS_CHANGE_ID_NEW_OPER_STATUS= 0;
+    BAL_ACCESS_TERMINAL_OPER_STATUS_CHANGE_ID_OLD_OPER_STATUS= 1;
+    BAL_ACCESS_TERMINAL_OPER_STATUS_CHANGE_ID_ADMIN_STATE    = 2;
+}
+
+/** Identifiers for all properties contained in the flow_cfg group.
  */
 enum BalFlowCfgId
 {
@@ -52,18 +66,17 @@
     BAL_FLOW_CFG_ID_SUB_TERM_ID              = 4;    /**< Subscriber Terminal ID. */
     BAL_FLOW_CFG_ID_SUB_TERM_UNI_IDX         = 5;    /**< Subscriber Terminal uni port index. */
     BAL_FLOW_CFG_ID_SVC_PORT_ID              = 6;    /**< Service Port ID. */
-    BAL_FLOW_CFG_ID_AGG_PORT_ID              = 7;    /**< Aggregate port ID. */
-    BAL_FLOW_CFG_ID_RESOLVE_MAC              = 8;    /**< Resolve mac. */
-    BAL_FLOW_CFG_ID_CLASSIFIER               = 9;    /**< Classifier. */
-    BAL_FLOW_CFG_ID_ACTION                   = 10;   /**< Action. */
-    BAL_FLOW_CFG_ID_SLA                      = 11;   /**< SLA. */
-    BAL_FLOW_CFG_ID_COOKIE                   = 12;   /**< Cookie. */
-    BAL_FLOW_CFG_ID_PRIORITY                 = 13;   /**< Priority. */
-    BAL_FLOW_CFG_ID_GROUP_ID                 = 14;   /**< Group ID. */
-    BAL_FLOW_CFG_ID_QUEUE                    = 15;   /**< Egress queue. */
+    BAL_FLOW_CFG_ID_RESOLVE_MAC              = 7;    /**< Resolve mac. */
+    BAL_FLOW_CFG_ID_CLASSIFIER               = 8;    /**< Classifier. */
+    BAL_FLOW_CFG_ID_ACTION                   = 9;    /**< Action. */
+    BAL_FLOW_CFG_ID_COOKIE                   = 10;   /**< Cookie. */
+    BAL_FLOW_CFG_ID_PRIORITY                 = 11;   /**< Priority. */
+    BAL_FLOW_CFG_ID_GROUP_ID                 = 12;   /**< Group ID. */
+    BAL_FLOW_CFG_ID_QUEUE                    = 13;   /**< Egress queue. */
+    BAL_FLOW_CFG_ID_DBA_TM_SCHED_ID          = 14;   /**< Tm Sched. */
 }
 
-/** Identifiers for all properties contained in the flow_ind group. 
+/** Identifiers for all properties contained in the flow_ind group.
  */
 enum BalFlowIndId
 {
@@ -72,18 +85,19 @@
     BAL_FLOW_IND_ID_ACCESS_INT_ID            = 2;    /**< Access interface ID. */
     BAL_FLOW_IND_ID_NETWORK_INT_ID           = 3;    /**< Network Interface ID. */
     BAL_FLOW_IND_ID_SUB_TERM_ID              = 4;    /**< Subscriber terminal ID. */
-    BAL_FLOW_IND_ID_SVC_PORT_ID              = 5;    /**< Service port ID. */
-    BAL_FLOW_IND_ID_AGG_PORT_ID              = 6;    /**< Aggregate port ID. */
+    BAL_FLOW_IND_ID_SUB_TERM_UNI_IDX         = 5;    /**< Subscriber terminal UNI ID. */
+    BAL_FLOW_IND_ID_SVC_PORT_ID              = 6;    /**< Service port ID. */
     BAL_FLOW_IND_ID_RESOLVE_MAC              = 7;    /**< Resolve mac. */
-    BAL_FLOW_IND_ID_BASE_TC_ID               = 8;    /**< Base TCONT ID. */
-    BAL_FLOW_IND_ID_CLASSIFIER               = 9;    /**< Classifier. */
-    BAL_FLOW_IND_ID_ACTION                   = 10;   /**< Action. */
-    BAL_FLOW_IND_ID_SLA                      = 11;   /**< SLA. */
-    BAL_FLOW_IND_ID_COOKIE                   = 12;   /**< Cookie. */
-    BAL_FLOW_IND_ID_PRIORITY                 = 13;   /**< Priority. */
+    BAL_FLOW_IND_ID_CLASSIFIER               = 8;    /**< Classifier. */
+    BAL_FLOW_IND_ID_ACTION                   = 9;   /**< Action. */
+    BAL_FLOW_IND_ID_COOKIE                   = 10;   /**< Cookie. */
+    BAL_FLOW_IND_ID_PRIORITY                 = 11;   /**< Priority. */
+    BAL_FLOW_IND_ID_GROUP_ID                 = 12;   /**< Group ID. */
+    BAL_FLOW_IND_ID_QUEUE                    = 13;   /**< Egress queue. */
+    BAL_FLOW_IND_ID_DBA_TM_SCHED_ID          = 14;   /**< Tm Sched. */
 }
 
-/** Identifiers for all properties contained in the flow_key group. 
+/** Identifiers for all properties contained in the flow_key group.
  */
 enum BalFlowKeyId
 {
@@ -91,7 +105,19 @@
     BAL_FLOW_KEY_ID_FLOW_TYPE                = 1;    /**< Flow type. */
 }
 
-/** Identifiers for all properties contained in the flow_stat group. 
+/** Identifiers for all properties contained in the flow_oper_status_change group.
+    */
+enum BalFlowOperStatusChangeId
+{
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_NEW_OPER_STATUS           = 0;
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_OLD_OPER_STATUS           = 1;
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_ADMIN_STATE               = 2;
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_SVC_PORT_ID               = 3;
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_DBA_TM_SCHED_ID           = 4;
+   BAL_FLOW_OPER_STATUS_CHANGE_ID_COOKIE                    = 5;
+}
+
+/** Identifiers for all properties contained in the flow_stat group.
  */
 enum BalFlowStatId
 {
@@ -101,7 +127,7 @@
     BAL_FLOW_STAT_ID_TX_BYTES                = 3;    /**< Transmitted bytes. */
 }
 
-/** Identifiers for all properties contained in the group_cfg group. 
+/** Identifiers for all properties contained in the group_cfg group.
  */
 enum BalGroupCfgId
 {
@@ -112,14 +138,25 @@
     BAL_GROUP_CFG_ID_OWNER                   = 4;    /**< Owner of the group. */
 }
 
-/** Identifiers for all properties contained in the group_key group. 
+/** Identifiers for all properties contained in the group_ind group.
+    */
+enum BalGroupIndId
+{
+   BAL_GROUP_IND_ID_MEMBERS_CMD              = 0;
+   BAL_GROUP_IND_ID_MEMBERS                  = 1;
+   BAL_GROUP_IND_ID_COOKIE                   = 2;
+   BAL_GROUP_IND_ID_FLOWS                    = 3;
+   BAL_GROUP_IND_ID_OWNER                    = 4;
+}
+
+/** Identifiers for all properties contained in the group_key group.
  */
 enum BalGroupKeyId
 {
     BAL_GROUP_KEY_ID_GROUP_ID                = 0;    /**< Group ID. */
 }
 
-/** Identifiers for all properties contained in the interface_cfg group. 
+/** Identifiers for all properties contained in the interface_cfg group.
  */
 enum BalInterfaceCfgId
 {
@@ -150,9 +187,10 @@
     BAL_INTERFACE_IND_ID_FLOW_CONTROL        = 7;            /**< Flow control. */
     BAL_INTERFACE_IND_ID_DS_TM               = 8;            /**< Downstream scheduler and shaper. */
     BAL_INTERFACE_IND_ID_US_TM               = 9;            /**< Upstream scheduler and shaper. */
+    BAL_INTERFACE_IND_ID_SUB_TERM_ID_LIST    = 10;           /**< Sub term id list */
 }
 
-/** Identifiers for all properties contained in the interface_key group. 
+/** Identifiers for all properties contained in the interface_key group.
  */
 enum BalInterfaceKeyId
 {
@@ -160,17 +198,59 @@
     BAL_INTERFACE_KEY_ID_INTF_TYPE           = 1;            /**< intf_type. */
 }
 
-/** Identifiers for all properties contained in the interface_stat group. 
+/** Identifiers for all properties contained in the interface_los group
+    */
+enum BalInterfaceLosId
+{
+   BAL_INTERFACE_LOS_ID_STATUS                              = 0;
+}
+
+/** Identifiers for all properties contained in the interface_oper_stat
+   * group.
+   */
+enum BalInterfaceOperStatusChangeId
+{
+    BAL_INTERFACE_OPER_STATUS_CHANGE_ID_NEW_OPER_STATUS      = 0;
+    BAL_INTERFACE_OPER_STATUS_CHANGE_ID_OLD_OPER_STATUS      = 1;
+    BAL_INTERFACE_OPER_STATUS_CHANGE_ID_ADMIN_STATE          = 2;
+}
+
+/** Identifiers for all properties contained in the interface_stat group.
  */
 enum BalInterfaceStatId
 {
-    BAL_INTERFACE_STAT_ID_RX_PACKETS         = 0;            /**< Recieved packets. */
-    BAL_INTERFACE_STAT_ID_RX_BYTES           = 1;            /**< Received bytes. */
-    BAL_INTERFACE_STAT_ID_TX_PACKETS         = 2;            /**< Transmitted packets. */
-    BAL_INTERFACE_STAT_ID_TX_BYTES           = 3;            /**< Transmitted bytes. */
+    BAL_INTERFACE_STAT_ID_RX_BYTES                           = 0;    /**< Received bytes. */
+    BAL_INTERFACE_STAT_ID_RX_PACKETS                         = 1;    /**< Recieved packets. */
+    BAL_INTERFACE_STAT_ID_RX_UCAST_PACKETS                   = 2;    /**< Received unicast packets. */
+    BAL_INTERFACE_STAT_ID_RX_MCAST_PACKETS                   = 3;    /**< Received multicast packets. */
+    BAL_INTERFACE_STAT_ID_RX_BCAST_PACKETS                   = 4;    /**< Received broadcast packets. */
+    BAL_INTERFACE_STAT_ID_RX_ERROR_PACKETS                   = 5;    /**< Received error packets. */
+    BAL_INTERFACE_STAT_ID_RX_UNKNOWN_PROTOS                  = 6;    /**< Received unknown-proto packets. */
+    BAL_INTERFACE_STAT_ID_TX_BYTES                           = 7;    /**< Transmitted bytes. */
+    BAL_INTERFACE_STAT_ID_TX_PACKETS                         = 8;    /**< Transmitted packets. */
+    BAL_INTERFACE_STAT_ID_TX_UCAST_PACKETS                   = 9;    /**< Transmitted unicast packets. */
+    BAL_INTERFACE_STAT_ID_TX_MCAST_PACKETS                   = 10;   /**< Transmitted multicast packets. */
+    BAL_INTERFACE_STAT_ID_TX_BCAST_PACKETS                   = 11;   /**< Transmitted broadcast packets. */
+    BAL_INTERFACE_STAT_ID_TX_ERROR_PACKETS                   = 12;   /**< Transmitted error packets. */
+    BAL_INTERFACE_STAT_ID_RX_CRC_ERRORS                      = 13;   /**< Received packets with CRC error. */
+    BAL_INTERFACE_STAT_ID_BIP_ERRORS                         = 14;   /**< Received bip errors (bip8 for gpon, bip32 for xgpon). */
 }
 
-/** Identifiers for all properties contained in the packet_cfg group. 
+/** Identifiers for all properties contained in the packet_bearer_channel_rx
+ * group.
+ */
+enum BalPacketBearerChannelRxId
+{
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_FLOW_ID                  = 0;    /**< Flow Id. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_FLOW_TYPE                = 1;    /**< Flow Type. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_INTF_ID                  = 2;    /**< Interface ID. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_INTF_TYPE                = 3;    /**< Interface Type. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_SVC_PORT                 = 4;    /**< Service Port. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_FLOW_COOKIE              = 5;    /**< Flow Cookie. */
+    BAL_PACKET_BEARER_CHANNEL_RX_ID_PKT                      = 6;    /**< Packet Data. */
+}
+
+/** Identifiers for all properties contained in the packet_cfg group.
  */
 enum BalPacketCfgId
 {
@@ -183,20 +263,21 @@
     BAL_PACKET_CFG_ID_PKT                    = 6;            /**< Packet Data. */
 }
 
-/** Identifiers for all properties contained in the packet_ind group. 
+/** Identifiers for all properties contained in the packet_ieee_oam_channel_rx group.
  */
-enum BalPacketIndId
+enum BalPacketIeeeOamChannelRxId
 {
-    BAL_PACKET_IND_ID_FLOW_ID                = 0;            /**< Flow Id. */
-    BAL_PACKET_IND_ID_FLOW_TYPE              = 1;            /**< Flow Type. */
-    BAL_PACKET_IND_ID_INTF_ID                = 2;            /**< Interface ID. */
-    BAL_PACKET_IND_ID_INTF_TYPE              = 3;            /**< Interface Type. */
-    BAL_PACKET_IND_ID_SVC_PORT               = 4;            /**< Service Port. */
-    BAL_PACKET_IND_ID_FLOW_COOKIE            = 5;            /**< Flow Cookie. */
-    BAL_PACKET_IND_ID_PKT                    = 6;            /**< Packet Data. */
+    BAL_PACKET_IEEE_OAM_CHANNEL_RX_ID_PKT                    = 0;    /**< Packet Data. */
 }
 
-/** Identifiers for all properties contained in the packet_key group. 
+/** Identifiers for all properties contained in the packet_itu_omci_channel_rx group.
+ */
+enum BalPacketItuOmciChannelRxId
+{
+    BAL_PACKET_ITU_OMCI_CHANNEL_RX_ID_PKT                    = 0;    /**< Packet Data. */
+}
+
+/** Identifiers for all properties contained in the packet_key group.
  */
 enum BalPacketKeyId
 {
@@ -204,8 +285,8 @@
     BAL_PACKET_KEY_ID_PACKET_SEND_DEST       = 1;            /**< Packet destination. */
 }
 
-/** Identifiers for all properties contained in the subscriber_terminal_cfg 
- * group. 
+/** Identifiers for all properties contained in the subscriber_terminal_cfg
+ * group.
  */
 enum BalSubscriberTerminalCfgId
 {
@@ -220,26 +301,38 @@
     BAL_SUBSCRIBER_TERMINAL_CFG_ID_US_TM             = 8;    /**< Upstream scheduler and shaper. */
     BAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID_LIST  = 9;    /**< svc_port_id list. */
     BAL_SUBSCRIBER_TERMINAL_CFG_ID_AGG_PORT_ID_LIST  = 10;   /**< agg_port_id list. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_SUB_TERM_RATE     = 11;   /**< sub_term_rate. */
 }
 
-/** Identifiers for all properties contained in the subscriber_terminal_ind 
- * group. 
+/** Identifiers for all properties contained in the subscriber_terminal_dgi
+ * group.
+ */
+enum BalSubscriberTerminalDgiId
+{
+    BAL_SUBSCRIBER_TERMINAL_DGI_ID_DGI_STATUS                = 0;    /**< dgi_status. */
+}
+
+/** Identifiers for all properties contained in the subscriber_terminal_ind
+ * group.
  */
 enum BalSubscriberTerminalIndId
 {
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE       = 0;    /**< Administrative state. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS       = 1;    /**< Operational status. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER     = 2;    /**< Serial number. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD          = 3;    /**< Password. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID   = 4;    /**< Registration id. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID       = 5;    /**< Service port ID. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_MAC_ADDRESS       = 6;    /**< MAC address. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_DS_TM             = 7;    /**< Downstream scheduler and shaper. */
-    BAL_SUBSCRIBER_TERMINAL_IND_ID_US_TM             = 8;    /**< Upstream scheduler and shaper. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE               = 0;    /**< Administrative state. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS               = 1;    /**< Operational status. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER             = 2;    /**< Serial number. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD                  = 3;    /**< Password. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID           = 4;    /**< Registration id. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID               = 5;    /**< Service port ID. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_MAC_ADDRESS               = 6;    /**< MAC address. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_DS_TM                     = 7;    /**< Downstream scheduler and shaper. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_US_TM                     = 8;    /**< Upstream scheduler and shaper. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID_LIST          = 9;    /**< svc_port_id list. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_AGG_PORT_ID_LIST          = 10;   /**< agg_port_id list. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_SUB_TERM_RATE             = 11;   /**< sub_term_rate. */
 }
 
-/** Identifiers for all properties contained in the subscriber_terminal_key 
- * group. 
+/** Identifiers for all properties contained in the subscriber_terminal_key
+ * group.
  */
 enum BalSubscriberTerminalKeyId
 {
@@ -247,8 +340,18 @@
     BAL_SUBSCRIBER_TERMINAL_KEY_ID_INTF_ID           = 1;    /**< intf_id. */
 }
 
-/** Identifiers for all properties contained in the subscriber_terminal_stat 
- * group. 
+/** Identifiers for all properties contained in the
+ * subscriber_terminal_oper_status_change group.
+ */
+enum BalSubscriberTerminalOperStatusChangeId
+{
+    BAL_SUBSCRIBER_TERMINAL_OPER_STATUS_CHANGE_ID_NEW_OPER_STATUS= 0;    /**< current oper status. */
+    BAL_SUBSCRIBER_TERMINAL_OPER_STATUS_CHANGE_ID_OLD_OPER_STATUS= 1;    /**< old oper status. */
+    BAL_SUBSCRIBER_TERMINAL_OPER_STATUS_CHANGE_ID_ADMIN_STATE    = 2;    /**< current admin state. */
+}
+
+/** Identifiers for all properties contained in the subscriber_terminal_stat
+ * group.
  */
 enum BalSubscriberTerminalStatId
 {
@@ -258,7 +361,23 @@
     BAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_BYTES         = 3;    /**< Transmitted bytes. */
 }
 
-/** Identifiers for all properties contained in the tm_queue_cfg group. 
+/** Identifiers for all properties contained in the
+ * subscriber_terminal_sub_term_alarm group.
+ */
+enum BalSubscriberTerminalSubTermAlarmId
+{
+    BCMBAL_SUBSCRIBER_TERMINAL_SUB_TERM_ALARM_ID_ALARM              = 0;    /**< Alarm. */
+}
+
+/** Identifiers for all properties contained in the
+ * subscriber_terminal_sub_term_disc group.
+ */
+enum BalSubscriberTerminalSubTermDiscId
+{
+    BCMBAL_SUBSCRIBER_TERMINAL_SUB_TERM_DISC_ID_SERIAL_NUMBER       = 0;    /**< Serial number. */
+}
+
+/** Identifiers for all properties contained in the tm_queue_cfg group.
  */
 enum BalTmQueueCfgId
 {
@@ -270,14 +389,19 @@
     BAL_TM_QUEUE_CFG_ID_REF_COUNT                    = 5;    /**< ref_count. */
 }
 
-/** Identifiers for all properties contained in the tm_queue_ind group. 
+/** Identifiers for all properties contained in the tm_queue_ind group.
  */
 enum BalTmQueueIndId
 {
-    BAL_TM_QUEUE_IND_ID_RET                          = 0;    /**< ret. */
+    BAL_TM_QUEUE_IND_ID_PRIORITY                     = 0;    /**< priority. */
+    BAL_TM_QUEUE_IND_ID_WEIGHT                       = 1;    /**< weight. */
+    BAL_TM_QUEUE_IND_ID_RATE                         = 2;    /**< rate. */
+    BAL_TM_QUEUE_IND_ID_BAC                          = 3;    /**< bac. */
+    BAL_TM_QUEUE_IND_ID_CREATE_MODE                  = 4;    /**< create_mode. */
+    BAL_TM_QUEUE_IND_ID_REF_COUNT                    = 5;    /**< ref_count. */
 }
 
-/** Identifiers for all properties contained in the tm_queue_key group. 
+/** Identifiers for all properties contained in the tm_queue_key group.
  */
 enum BalTmQueueKeyId
 {
@@ -286,7 +410,7 @@
     BAL_TM_QUEUE_KEY_ID_ID                           = 2;    /**< id. */
 }
 
-/** Identifiers for all properties contained in the tm_queue_stat group. 
+/** Identifiers for all properties contained in the tm_queue_stat group.
  */
 enum BalTmQueueStatId
 {
@@ -296,30 +420,41 @@
     BAL_TM_QUEUE_STAT_ID_BYTES_DISCARDED             = 3;    /**< bytes_discarded. */
 }
 
-/** Identifiers for all properties contained in the tmSched_cfg group. 
+/** Identifiers for all properties contained in the tm_sched_cfg group.
  */
 enum BalTmSchedCfgId
 {
-    BAL_TM_SCHED_CFG_ID_OWNER                        = 0;    /**< owner. */
-    BAL_TM_SCHED_CFG_ID_SCHED_TYPE                   = 1;    /**< type. */
-    BAL_TM_SCHED_CFG_ID_SCHED_PARENT                 = 2;    /**< parent. */
-    BAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE             = 3;    /**< child_type. */
-    BAL_TM_SCHED_CFG_ID_RATE                         = 4;    /**< rate. */
-    BAL_TM_SCHED_CFG_ID_TCONT_SLA                    = 5;    /**< tcont_sla. */
-    BAL_TM_SCHED_CFG_ID_CREATION_MODE                = 6;    /**< creation_mode. */
-    BAL_TM_SCHED_CFG_ID_QUEUES                       = 7;    /**< queues. */
-    BAL_TM_SCHED_CFG_ID_SUB_SCHEDS                   = 8;    /**< sub_scheds. */
-    BAL_TM_SCHED_CFG_ID_NUM_PRIORITIES               = 9;    /**< num_priorities. */
+    BAL_TM_SCHED_CFG_ID_OWNER                                    = 0;    /**< owner. */
+    BAL_TM_SCHED_CFG_ID_SCHED_TYPE                               = 1;    /**< type. */
+    BAL_TM_SCHED_CFG_ID_SCHED_PARENT                             = 2;    /**< parent. */
+    BAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE                         = 3;    /**< child_type. */
+    BAL_TM_SCHED_CFG_ID_NUM_PRIORITIES                           = 4;    /**< num_priorities. */
+    BAL_TM_SCHED_CFG_ID_RATE                                     = 5;    /**< rate. */
+    BAL_TM_SCHED_CFG_ID_EXT_ITU_DBA                              = 6;    /**< extended itu dba. */
+    BAL_TM_SCHED_CFG_ID_EXT_EPON_DBA                             = 7;    /**< extended epon dba. */
+    BAL_TM_SCHED_CFG_ID_CREATION_MODE                            = 8;    /**< creation_mode. */
+    BAL_TM_SCHED_CFG_ID_QUEUES                                   = 9;    /**< queues. */
+    BAL_TM_SCHED_CFG_ID_SUB_SCHEDS                               = 10;   /**< sub_scheds. */
 }
 
-/** Identifiers for all properties contained in the tm_sched_ind group. 
+/** Identifiers for all properties contained in the tm_sched_ind group.
  */
 enum BalTmSchedIndId
 {
-    BAL_TM_SCHED_IND_ID_RET                          = 0;    /**< ret. */
+    BAL_TM_SCHED_IND_ID_OWNER                                    = 0;    /**< owner. */
+    BAL_TM_SCHED_IND_ID_SCHED_TYPE                               = 1;    /**< type. */
+    BAL_TM_SCHED_IND_ID_SCHED_PARENT                             = 2;    /**< parent. */
+    BAL_TM_SCHED_IND_ID_SCHED_CHILD_TYPE                         = 3;    /**< child_type. */
+    BAL_TM_SCHED_IND_ID_NUM_PRIORITIES                           = 4;    /**< num_priorities. */
+    BAL_TM_SCHED_IND_ID_RATE                                     = 5;    /**< rate. */
+    BAL_TM_SCHED_IND_ID_EXT_ITU_DBA                              = 6;    /**< extended itu dba. */
+    BAL_TM_SCHED_IND_ID_EXT_EPON_DBA                             = 7;    /**< extended epon dba. */
+    BAL_TM_SCHED_IND_ID_CREATION_MODE                            = 8;    /**< creation_mode. */
+    BAL_TM_SCHED_IND_ID_QUEUES                                   = 9;    /**< queues. */
+    BAL_TM_SCHED_IND_ID_SUB_SCHEDS                               = 10;   /**< sub_scheds. */
 }
 
-/** Identifiers for all properties contained in the tm_sched_key group. 
+/** Identifiers for all properties contained in the tm_sched_key group.
  */
 enum BalTmSchedKeyId
 {
@@ -346,78 +481,106 @@
  */
 enum BalObjGroupId
 {
-    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_KEY             = 0;    /**< BAL Access Terminal - key */
-    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_CFG             = 1;    /**< BAL Access Terminal - cfg */
-    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_IND             = 2;    /**< BAL Access Terminal - Access Terminal Indication */
-    BAL_OBJ_GROUP_ID_FLOW_KEY                        = 3;    /**< BAL Flow - key */
-    BAL_OBJ_GROUP_ID_FLOW_CFG                        = 4;    /**< BAL Flow - cfg */
-    BAL_OBJ_GROUP_ID_FLOW_STAT                       = 5;    /**< BAL Flow - stat */
-    BAL_OBJ_GROUP_ID_FLOW_IND                        = 6;    /**< BAL Flow - Flow Indication */
-    BAL_OBJ_GROUP_ID_GROUP_KEY                       = 7;    /**< BAL Group - key */
-    BAL_OBJ_GROUP_ID_GROUP_CFG                       = 8;    /**< BAL Group - cfg */
-    BAL_OBJ_GROUP_ID_INTERFACE_KEY                   = 9;    /**< BAL Interface - key */
-    BAL_OBJ_GROUP_ID_INTERFACE_CFG                   = 10;   /**< BAL Interface - cfg */
-    BAL_OBJ_GROUP_ID_INTERFACE_STAT                  = 11;   /**< BAL Interface - stat */
-    BAL_OBJ_GROUP_ID_INTERFACE_IND                   = 12;   /**< BAL Interface - Interface Indication */
-    BAL_OBJ_GROUP_ID_PACKET_KEY                      = 13;   /**< packet - key */
-    BAL_OBJ_GROUP_ID_PACKET_CFG                      = 14;   /**< packet - cfg */
-    BAL_OBJ_GROUP_ID_PACKET_IND                      = 15;   /**< packet - Packet indication */
-    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_KEY         = 16;   /**< BAL Subscriber Terminal - key */
-    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_CFG         = 17;   /**< BAL Subscriber Terminal - cfg */
-    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_STAT        = 18;   /**< BAL Subscriber Terminal - stat */
-    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_IND         = 19;   /**< BAL Subscriber Terminal - Subscriber Terminal Indication */
-    BAL_OBJ_GROUP_ID_TM_QUEUE_KEY                    = 20;   /**< tm_queue - key */
-    BAL_OBJ_GROUP_ID_TM_QUEUE_CFG                    = 21;   /**< tm_queue - cfg */
-    BAL_OBJ_GROUP_ID_TM_QUEUE_STAT                   = 22;   /**< tm_queue - stat */
-    BAL_OBJ_GROUP_ID_TM_QUEUE_IND                    = 23;   /**< tm_queue - Tm Queue Indication */
-    BAL_OBJ_GROUP_ID_TM_SCHED_KEY                    = 24;   /**< tm_sched - key */
-    BAL_OBJ_GROUP_ID_TM_SCHED_CFG                    = 25;   /**< tm_sched - cfg */
-    BAL_OBJ_GROUP_ID_TM_SCHED_IND                    = 26;   /**< tm_sched - Tm Sched Indication */
+    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_KEY                         = 0;    /**< BAL Access Terminal - key */
+    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_CFG                         = 1;    /**< BAL Access Terminal - cfg */
+    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_IND                         = 2;    /**< BAL Access Terminal - Access Terminal Indication */
+    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_OPER_STATUS_CHANGE          = 3;    /**< BAL Access Terminal - Change of operational status */
+    BAL_OBJ_GROUP_ID_FLOW_KEY                                    = 4;    /**< BAL Flow - key */
+    BAL_OBJ_GROUP_ID_FLOW_CFG                                    = 5;    /**< BAL Flow - cfg */
+    BAL_OBJ_GROUP_ID_FLOW_STAT                                   = 6;    /**< BAL Flow - stat */
+    BAL_OBJ_GROUP_ID_FLOW_IND                                    = 7;    /**< BAL Flow - Flow Indication */
+    BAL_OBJ_GROUP_ID_FLOW_OPER_STATUS_CHANGE                     = 8;    /**< BAL Flow - Change of operational status */
+    BAL_OBJ_GROUP_ID_GROUP_KEY                                   = 9;    /**< BAL Group - key */
+    BAL_OBJ_GROUP_ID_GROUP_CFG                                   = 10;   /**< BAL Group - cfg */
+    BAL_OBJ_GROUP_ID_GROUP_IND                                   = 11;   /**< BAL Group - Group indication */
+    BAL_OBJ_GROUP_ID_INTERFACE_KEY                               = 12;   /**< BAL Interface - key */
+    BAL_OBJ_GROUP_ID_INTERFACE_CFG                               = 13;   /**< BAL Interface - cfg */
+    BAL_OBJ_GROUP_ID_INTERFACE_STAT                              = 14;   /**< BAL Interface - stat */
+    BAL_OBJ_GROUP_ID_INTERFACE_IND                               = 15;   /**< BAL Interface - Interface Indication */
+    BAL_OBJ_GROUP_ID_INTERFACE_LOS                               = 16;   /**< BAL Interface - LOS */
+    BAL_OBJ_GROUP_ID_INTERFACE_OPER_STATUS_CHANGE                = 17;   /**< BAL Interface - Change of operational status */
+    BAL_OBJ_GROUP_ID_PACKET_KEY                                  = 18;   /**< packet - key */
+    BAL_OBJ_GROUP_ID_PACKET_CFG                                  = 19;   /**< packet - cfg */
+    BAL_OBJ_GROUP_ID_PACKET_BEARER_CHANNEL_RX                    = 20;   /**< packet - Bearer channel rx packet indication */
+    BAL_OBJ_GROUP_ID_PACKET_IEEE_OAM_CHANNEL_RX                  = 21;   /**< packet - IEEE OAM channel rx packet indication */
+    BAL_OBJ_GROUP_ID_PACKET_ITU_OMCI_CHANNEL_RX                  = 22;   /**< packet - ITU OMCI channel rx packet indication */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_KEY                     = 23;   /**< BAL Subscriber Terminal - key */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_CFG                     = 24;   /**< BAL Subscriber Terminal - cfg */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_STAT                    = 25;   /**< BAL Subscriber Terminal - stat */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_DGI                     = 26;   /**< BAL Subscriber Terminal - Receive Dying-Gasp of subscriber terminal */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_IND                     = 27;   /**< BAL Subscriber Terminal - Subscriber Terminal Indication */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_OPER_STATUS_CHANGE      = 28;   /**< BAL Subscriber Terminal - Change of operational status */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_SUB_TERM_ALARM          = 29;   /**< BAL Subscriber Terminal - Subscriber Terminal Alarm Indication */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_SUB_TERM_DISC           = 30;   /**< BAL Subscriber Terminal - Subscriber Terminal Discovery Indication */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_KEY                                = 31;   /**< tm_queue - key */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_CFG                                = 32;   /**< tm_queue - cfg */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_STAT                               = 33;   /**< tm_queue - stat */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_IND                                = 34;   /**< tm_queue - tm queue indication */
+    BAL_OBJ_GROUP_ID_TM_SCHED_KEY                                = 35;   /**< tm_sched - key */
+    BAL_OBJ_GROUP_ID_TM_SCHED_CFG                                = 36;   /**< tm_sched - cfg */
+    BAL_OBJ_GROUP_ID_TM_SCHED_IND                                = 37;   /**< tm_sched - Tm Sched Indication */
 }
 
-/** List of all access_terminal groups of type auto. 
+/** List of all access_terminal groups of type auto.
  */
 enum BalAccessTerminalAutoId
 {
     BAL_ACCESS_TERMINAL_AUTO_ID_IND                  = 0;    /**< Access Terminal Indication. */
+    BAL_ACCESS_TERMINAL_AUTO_ID_OPER_STATUS_CHANGE   = 1;    /**< Change of operational status. */
 }
 
-/** List of all flow groups of type auto. 
+/** List of all flow groups of type auto.
  */
 enum BalFlowAutoId
 {
     BAL_FLOW_AUTO_ID_IND                             = 0;    /**< Flow Indication. */
+    BAL_FLOW_AUTO_ID_OPER_STATUS_CHANGE              = 1;    /**< Change of operational status. */
 }
 
-/** List of all interface groups of type auto. 
+/** List of all group groups of type auto.
+ */
+enum BalGroupAutoId
+{
+    BAL_GROUP_AUTO_ID_IND                        = 0;    /**< Group indication. */
+}
+
+/** List of all interface groups of type auto.
  */
 enum BalInterfaceAutoId
 {
-    BAL_INTERFACE_AUTO_ID_IND                        = 0;    /**< Interface Indication. */
+    BAL_INTERFACE_AUTO_ID_IND                    = 0;    /**< Interface Indication. */
+    BAL_INTERFACE_AUTO_ID_LOS                    = 1;    /**< LOS. */
+    BAL_INTERFACE_AUTO_ID_OPER_STATUS_CHANGE     = 2;    /**< Change of operational status. */
 }
 
-/** List of all packet groups of type auto. 
+/** List of all packet groups of type auto.
  */
 enum BalPacketAutoId
 {
-    BAL_PACKET_AUTO_ID_IND                           = 0;    /**< Packet indication. */
+    BAL_PACKET_AUTO_ID_BEARER_CHANNEL_RX         = 0;    /**< Bearer channel rx packet indication. */
+    BAL_PACKET_AUTO_ID_IEEE_OAM_CHANNEL_RX       = 1;    /**< IEEE OAM channel rx packet indication. */
+    BAL_PACKET_AUTO_ID_ITU_OMCI_CHANNEL_RX       = 2;    /**< ITU OMCI channel rx packet indication. */
 }
 
-/** List of all subscriber_terminal groups of type auto. 
+/** List of all subscriber_terminal groups of type auto.
  */
 enum BalSubscriberTerminalAutoId
 {
-    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_IND              = 0;    /**< Subscriber Terminal Indication. */
+    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_DGI                 = 0;    /**< Receive Dying-Gasp of subscriber terminal. */
+    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_IND                 = 1;    /**< Subscriber Terminal Indication. */
+    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_OPER_STATUS_CHANGE  = 2;    /**< Change of operational status. */
+    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_SUB_TERM_ALARM      = 3;    /**< Subscriber Terminal Alarm Indication. */
+    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_SUB_TERM_DISC       = 4;    /**< Subscriber Terminal Discovery Indication. */
 }
 
-/** List of all tm_queue groups of type auto. 
+/** List of all tm_queue groups of type auto.
  */
 enum BalTmQueueAutoId
 {
     BAL_TM_QUEUE_AUTO_ID_IND                         = 0;    /**< Tm Queue Indication. */
 }
 
-/** List of all tm_sched groups of type auto. 
+/** List of all tm_sched groups of type auto.
  */
 enum BalTmSchedAutoId
 {
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto b/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto
index 1a6da61..a56ff04 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto
@@ -51,6 +51,15 @@
     BAL_ACTION_CMD_ID_TRAP_TO_HOST       = 0x1000;   /**< Not a valid action for a group object member */
 }
 
+/** alarm status.
+ */
+enum BalAlarmStatus
+{
+    BAL_ALARM_STATUS_OFF                 = 0;        /**< alarm status is off */
+    BAL_ALARM_STATUS_ON                  = 1;        /**< alarm status is on */
+    BAL_ALARM_STATUS_NO__CHANGE          = 2;        /**< alarm status should not be changed */
+}
+
 /** classifier ID.
  */
 enum BalClassifierId {
@@ -96,7 +105,9 @@
     BAL_DEST_TYPE_INVALID                = 0;
     BAL_DEST_TYPE_NNI                    = 1;        /**< for packets being sent to the NNI */
     BAL_DEST_TYPE_SUB_TERM               = 2;        /**< for packets being sent to a subscriber terminal */
-    BAL_DEST_TYPE_HOST                   = 3;        /**<  for packet indications received from NNI or SUB_TERM and being sent to the host */
+    BAL_DEST_TYPE_SVC_PORT               = 3;        /**< for packet being sent to the pon service port */
+    BAL_DEST_TYPE_ITU_OMCI_CHANNEL       = 4;        /**< for itu omci channel packets */
+    BAL_DEST_TYPE_IEEE_OAM_CHANNEL       = 5;        /**< for ieee oam channel packets */
 }
 
 /** Downstrean action for unknown packets.
@@ -105,7 +116,47 @@
     BAL_DS_MISS_MODE_DISCARD             = 0;        /**< Discard. */
     BAL_DS_MISS_MODE_BROADCAST           = 1;        /**< Broadcast. */
     BAL_DS_MISS_MODE_VID                 = 2;        /**< Vid. */
-    BAL_DS_MISS_MODE__NUM_OF             = 3;        /**< Number of enum entries, not an entry itself. */
+}
+/** extended epon dba ID.
+ */
+enum BalExtendedEponDbaId
+{
+    BAL_EXTENDED_EPON_DBA_ID_NONE                    = 0;
+    BAL_EXTENDED_EPON_DBA_ID_POLLING_INTERVAL_US     = 0x0001;   /**< The amount of time between when this LLID last reported upstream data and when it will next be polled (approximate: rounded down to the nearest 65.536 us). */
+    BAL_EXTENDED_EPON_DBA_ID_GRANT_THRESHOLD_TQ      = 0x0002;   /**< Used to determine the maximum grant size that will be issued to this LLID (in TQ; rounded up to the nearest 128TQ; 1TQ = 16ns = 2Bytes@1G or 20Bytes@10G). */
+    BAL_EXTENDED_EPON_DBA_ID_CIR_PRIORITY            = 0x0004;   /**< The priority of the CIR scheduling element. */
+    BAL_EXTENDED_EPON_DBA_ID_CIR_WEIGHT_TQ           = 0x0008;   /**< The weight of the CIR scheduler (in TQ rounded up to nearest 128). Must be greater than or equal to Grant Threshold. */
+    BAL_EXTENDED_EPON_DBA_ID_PIR_PRIORITY            = 0x0010;   /**< The priority of the PIR scheduling element. */
+    BAL_EXTENDED_EPON_DBA_ID_PIR_WEIGHT_TQ           = 0x0020;   /**< The weight of the PIR scheduler (in TQ rounded up to nearest 128). Must be greater than or equal to Grant Threshold. */
+    BAL_EXTENDED_EPON_DBA_ID_TDM_GRANT_SIZE_TQ       = 0x0040;   /**< Size of TDM grants (in TQ). */
+    BAL_EXTENDED_EPON_DBA_ID_TDM_GRANT_INTERVAL_US   = 0x0080;   /**< Interval between TDM grants (in us). */
+    BAL_EXTENDED_EPON_DBA_ID_ALL                     = 0x00FF;    /**< All fields */
+}
+
+/** Polling Interval.
+ */
+enum BalPollingInterval
+{
+    BAL_POLLING_INTERVAL_POLLING_DISABLED            = 0;        /**< No polling gates will be sent to this LLID. */
+    BAL_POLLING_INTERVAL_US_500                      = 500;      /**< 500 us. */
+    BAL_POLLING_INTERVAL_MS_1                        = 1000;     /**< 1 ms. */
+    BAL_POLLING_INTERVAL_MS_2                        = 2000;     /**< 2 ms. */
+    BAL_POLLING_INTERVAL_MS_4                        = 4000;     /**< 4 ms. */
+    BAL_POLLING_INTERVAL_MS_8                        = 8000;     /**< 8 ms. */
+    BAL_POLLING_INTERVAL_MS_16                       = 16000;     /**< 16 ms. */
+}
+
+/** extended itu dba ID.
+ */
+enum BalExtendedItuDbaId
+{
+    BAL_EXTENDED_ITU_DBA_ID_NONE                     = 0;
+    BAL_EXTENDED_ITU_DBA_ID_EXTRA_BW_ELIG            = 0x0001;   /**< Extra BW eligibility type */
+    BAL_EXTENDED_ITU_DBA_ID_NRT_CBR                  = 0x0002;   /**< NRT CBR */
+    BAL_EXTENDED_ITU_DBA_ID_RT_CBR                   = 0x0004;   /**< RT_CBR */
+    BAL_EXTENDED_ITU_DBA_ID_RT_PROFILE               = 0x0008;   /**< RT Profile */
+    BAL_EXTENDED_ITU_DBA_ID_NRT_PROFILE              = 0x0010;   /**< NRT Profile */
+    BAL_EXTENDED_ITU_DBA_ID_ALL                      = 0x001F;   /**< All fields */
 }
 
 /** Extra BW Eligibility Type
@@ -154,7 +205,8 @@
     BAL_INTF_TYPE_INVALID                    = 0;    /**< INVALID.*/
     BAL_INTF_TYPE_NNI                        = 1;    /**< NNI Interface. */
     BAL_INTF_TYPE_PON                        = 2;    /**< POIN Interface. */
-    BAL_INTF_TYPE__NUM_OF                    = 3;    /**< Number of enum entries, not an entry itself. */
+    BAL_INTF_TYPE_EPON_1G_PATH               = 3;    /**< EPON 1G Path. */
+    BAL_INTF_TYPE_EPON_10G_PATH              = 4;    /**< EPON 10G Path. */
 }
 
 /** Interworking Function Mode.
@@ -162,7 +214,25 @@
 enum BalIwfMode {
     BAL_IWF_MODE_DIRECT_MAPPING              = 0;    /**< Direct mapping. */
     BAL_IWF_MODE_PER_FLOW                    = 1;    /**< Per flow . */
-    BAL_IWF_MODE__NUM_OF                     = 2;    /**< Number of enum entries, not an entry itself. */
+}
+
+/** The PON family
+ */
+enum BalPonFamily
+{
+    BAL_PON_FAMILY_GPON                      = 0;    /**< GPON family. */
+    BAL_PON_FAMILY_EPON                      = 1;    /**< EPON family. */
+    BAL_PON_FAMILY_INVALID                   = 2;    /**< INVALID . */
+}
+
+/** The PON sub-family
+ */
+enum BalPonSubFamily
+{
+    BAL_PON_SUB_FAMILY_GPON                  = 0;    /**< GPON. */
+    BAL_PON_SUB_FAMILY_XGPON                 = 1;    /**< XGPON. */
+    BAL_PON_SUB_FAMILY_EPON                  = 2;    /**< EPON. */
+    BAL_PON_SUB_FAMILY_INVALID               = 3;    /**< INVALID. */
 }
 
 /** SLA ID.
@@ -195,6 +265,24 @@
     BAL_STATUS_UNKNOWN                       = 6;        /**< Oper status unknown */
 }
 
+/** sub_term_rate.
+ */
+enum BalSubTermRate
+{
+    BAL_SUB_TERM_RATE_NONE                           = 0;        /**< none. */
+    BAL_SUB_TERM_RATE_RATE_10_G                      = 1;        /**< rate_10_g. */
+    BAL_SUB_TERM_RATE_RATE_2_5_G                     = 2;        /**< rate_2_5_g. */
+}
+
+/** The type of release version
+ */
+enum BalVersionType
+{
+    BAL_VERSION_TYPE_UNKNOWN                         = 0;    /**< illegal */
+    BAL_VERSION_TYPE_RELEASE                         = 1;    /**< released version */
+    BAL_VERSION_TYPE_DEVELOPMENT                     = 2;    /**< debug version */
+}
+
 /** Buffer Admission Control Type
  */
 enum BalTmBacType {
@@ -202,7 +290,6 @@
     BAL_TM_BAC_TYPE_WTAILDROP                = 1;        /**< Weighted taildrop */
     BAL_TM_BAC_TYPE_RED                      = 2;        /**< Random Early Discard */
     BAL_TM_BAC_TYPE_WRED                     = 3;        /**< Weighted Random Early Discard */
-    BAL_TM_BAC_TYPE__NUM_OF                  = 4;        /**< Number of enum entries, not an entry itself. */
 }
 
 /** TM Creation Mode
@@ -210,7 +297,6 @@
 enum BalTmCreationMode {
     BAL_TM_CREATION_MODE_MANUAL              = 0;            /**< tm object created manually */
     BAL_TM_CREATION_MODE_AUTO                = 1;            /**< tm object created automatically */
-    BAL_TM_CREATION_MODE__NUM_OF             = 2;            /**< Number of enum entries, not an entry itself. */
 }
 
 /** Scheduling Level for the Children TM
@@ -218,7 +304,6 @@
 enum BalTmSchedChildType {
     BAL_TM_SCHED_CHILD_TYPE_QUEUE            = 0;            /**< Queue-level scheduler */
     BAL_TM_SCHED_CHILD_TYPE_SCHED            = 1;            /**< Scheduler-level scheduler */
-    BAL_TM_SCHED_CHILD_TYPE__NUM_OF          = 2;            /**< Number of enum entries, not an entry itself. */
 }
 
 /** Traffic Direction
@@ -286,19 +371,6 @@
     BAL_TM_SHAPING_ID_ALL                        = 0x0007;   /**< All fields */
 }
 
-/** TmTcontSla ID.
- */
-enum BalTmTcontSlaId
-{
-    BAL_TM_TCONT_SLA_ID_NONE                     = 0;
-    BAL_TM_TCONT_SLA_ID_EXTRA_BW_ELIG            = 0x0001;   /**< Extra BW eligibility type */
-    BAL_TM_TCONT_SLA_ID_NRT_CBR                  = 0x0002;   /**< NRT CBR */
-    BAL_TM_TCONT_SLA_ID_RT_CBR                   = 0x0004;   /**< RT_CBR */
-    BAL_TM_TCONT_SLA_ID_RT_PROFILE               = 0x0008;   /**< RT Profile */
-    BAL_TM_TCONT_SLA_ID_NRT_PROFILE              = 0x0010;   /**< NRT Profile */
-    BAL_TM_TCONT_SLA_ID_ALL                      = 0x001F;   /**< All fields */
-}
-
 /** Transceiver types
  */
 enum BalTrxType
@@ -311,7 +383,7 @@
     BAL_TRX_TYPE_XGPON_LTH_7222_PC               = 5;        /**< xgpon_lth_7222_pc. */
     BAL_TRX_TYPE_XGPON_LTH_7226_PC               = 6;        /**< xgpon_lth_7226_pc. */
     BAL_TRX_TYPE_XGPON_LTH_5302_PC               = 7;        /**< xgpon_lth_5302_pc. */
-    BAL_TRX_TYPE__NUM_OF                         = 8;        /**< Number of enum entries, not an entry itself. */
+    BAL_TRX_TYPE_XGPON_LTH_7226_A_PC_PLUS        = 8;        /**< xgpon_lth_7226_a_pc_plus. */
 }
 
 /** action.
@@ -328,13 +400,6 @@
     uint32 i_tpid = 8;                    /**< Inner tpid. */
 }
 
-/** Variable-length list of aggregationPortId.
- */
-message BalAggregationPortIdList
-{
-    repeated uint32 val = 1;    /**< List contents. */
-}
-
 /** classifier.
  */
 message BalClassifier
@@ -369,25 +434,67 @@
     uint32 int_id = 3;            /**< Interface ID. */
 }
 
+message BalDestSvcPort
+{
+    uint32 svc_port_id   = 1; /**< GEM ID or LLID.*/
+    uint32 int_id        = 2; /**< Interface ID. */
+}
+
+message BalItuOmciChannel
+{
+    uint32 sub_term_id   = 1; /**< Subscriber terminal*/
+    uint32 int_id        = 2; /**< Interface ID. */
+}
+
+message BalIeeeOamChannel
+{
+    bytes mac_address    = 1; /**< MAC address for this link. */
+    uint32 int_id        = 2; /**< Interface ID. */
+}
+
 message BalDest
 {
     BalDestType type = 1;              /**< packet destination type. */
     oneof u {
         BalDestNni nni = 2;
         BalDestSubTerm sub_term = 3;
+        BalDestSvcPort svc_port = 4;
+        BalItuOmciChannel itu_omci_channel = 5;
+        BalIeeeOamChannel ieee_oam_channel = 6;
     }
 }
 
-/** Variable-length list of flowId.
+/** extended epon dba.
  */
-message BalFlowIdList
+message BalExtendedEponDba
 {
-    repeated uint32 val = 1;    /**< List contents. */
+    BalExtendedEponDbaId presence_mask     = 1;      /**< Presence Mask. */
+    BalPollingInterval polling_interval_us = 2;    /**< The amount of time between when this LLID last reported upstream data and when it will next be polled (approximate: rounded down to the nearest 65.536 us). */
+    uint32 grant_threshold_tq              = 3;          /**< Used to determine the maximum grant size that will be issued to this LLID (in TQ; rounded up to the nearest 128TQ; 1TQ = 16ns = 2Bytes@1G or 20Bytes@10G). */
+    uint32 cir_priority                    = 4;                   /**< The priority of the CIR scheduling element. */
+    uint32 cir_weight_tq                   = 5;       /**< The weight of the CIR scheduler (in TQ rounded up to nearest 128). Must be greater than or equal to Grant Threshold. */
+    uint32 pir_priority                     = 6;                   /**< The priority of the PIR scheduling element. */
+    uint32 pir_weight_tq                   = 7;       /**< The weight of the PIR scheduler (in TQ rounded up to nearest 128). Must be greater than or equal to Grant Threshold. */
+    uint32 tdm_grant_size_tq               = 8;   /**< Size of TDM grants (in TQ). */
+    uint32 tdm_grant_interval_us           = 9;         /**< Interval between TDM grants (in us). */
 }
 
+/** Extended itu dba parameters
+ */
+message BalExtendedItuDba
+{
+    BalExtendedItuDbaId presence_mask      = 1; /**< Presence Mask. */
+    BalExtraBwEligibilityType extra_bw_elig= 2; /**< Extra BW eligibility type */
+    uint32 nrt_cbr                        = 3; /**< NRT CBR */
+    uint32 rt_cbr                         = 4; /**< RT_CBR */
+    uint32 rt_profile                     = 5; /**< RT Profile */
+    uint32  nrt_profile                    = 6;/**< NRT Profile */
+}
+
+
 /** Queue Reference
  */
-message BalTmQueue_ref
+message BalTmQueueRef
 {
     uint32 sched_id = 1;    /**< Scheduler (Tmsched) ID */
     uint32 queue_id = 2;    /**< Queue ID */
@@ -398,9 +505,9 @@
 message BalGroupMemberInfo
 {
     uint32 intf_id = 1;             /**< Access interface id for this member */
-    uint32 svc_port_id = 2; /**< The multicast "GEM" for this member */
+    uint32 svc_port_id = 2;         /**< GPON/XGPON - The multicast "GEM" for this member. EPON - The multicast link identifier. */ 
     BalAction action = 3;               /**< VLAN actions */
-    BalTmQueue_ref queue = 4;          /**< Egress queue */
+    BalTmQueueRef queue = 4;          /**< Egress queue */
 }
 
 /** Variable-length list of groupMemberInfo.
@@ -420,7 +527,7 @@
 
 /** Variable-length list of servicePortId.
  */
-message SvcPortIdList
+message BalIdList
 {
     repeated uint32 val = 1;    /**< List contents. */
 }
@@ -434,11 +541,26 @@
     uint32 max_rate = 3;              /**< The maximum rate for this flow, in kilobits per second (optional) */
 }
 
-/** Variable-length list of subId.
+/** Subscriber Terminal Alarms.
  */
-message SubTermIdList
+message BalSubscriberTerminalAlarms
 {
-    repeated uint32 val = 1; /**< List contents. */
+    BalAlarmStatus los           = 1;  /**< LOS. */
+    BalAlarmStatus lob           = 2;  /**< LOB. */
+    BalAlarmStatus lopc_miss     = 3;  /**< LOPC miss. */
+    BalAlarmStatus lopc_mic_error= 4;  /**< LOPC mic error. */
+}
+
+/** Software version information
+ */
+message BalSwVersion
+{
+    BalVersionType      version_type = 1;   /**< Release or debug version */
+    uint32 major_rev                 = 2;   /**< Major rev */
+    uint32 minor_rev                 = 3;   /**< Minor rev */
+    uint32 patch_rev                 = 4;   /**< Patch number */
+    uint32 om_version                = 5;   /**< BAL API Object Model version */
+    uint32 dev_point                 = 6;   /**< Development point - only valid for development versions, 0 otherwise */
 }
 
 /** Random Early Discard Configuration
@@ -477,20 +599,6 @@
     }
 }
 
-/** Variable-length list of TmQueueId.
- */
-message BalTmQueueIdList
-{
-    repeated uint32 val = 1;    /**< List contents. */
-}
-
-/** Variable-length list of TmSchedId.
- */
-message BalTmSchedIdList
-{
-    repeated uint32 val = 1;    /**< List contents. */
-}
-
 /** TM Scheduler Owner
  */
 message BalTmSchedOwnerInterface
@@ -552,21 +660,21 @@
 message BalTmShaping
 {
     BalTmShapingId presence_mask = 1; /**< Presence Mask. */
-    uint32 sbr = 2;                       /**< Sustained Bit Rate (kbps) */
-    uint32 pbr = 3;                       /**< Peak Bit Rate (kbps) */
-    uint32 burst = 4;                     /**< Max Burst Bytes at Peak Bit Rate */
+    uint32 cir                   = 2; /**< Committed Information Rate (kbps) */
+    uint32 pir                   = 3; /**< Peak Information Rate (kbps) */
+    uint32 burst                 = 4; /**< Max Burst Bytes at Peak Bit Rate */
 }
 
-/** ITU-PON Extended SLA Parameters
+/** BAL topology.
  */
-message BalTmTcontSla
+message BalTopology
 {
-    BalTmTcontSlaId presence_mask = 1;           /**< Presence Mask. */
-    BalExtraBwEligibilityType extra_bw_elig = 2; /**< Extra BW eligibility type */
-    uint32 nrt_cbr = 3;        /**< NRT CBR */
-    uint32 rt_cbr = 4;         /**< RT_CBR */
-    uint32 rt_profile = 5;     /**< RT Profile */
-    uint32 nrt_profile = 6;    /**< NRT Profile */
+    uint32 num_of_nni_ports        = 1; /**< The number of nni ports for the access_terminal */
+    uint32 num_of_pon_ports        = 2; /**< The number of pon ports for the access_terminal */
+    uint32 num_of_mac_devs         = 3; /**< The number of mac devices associated with this access_terminal */
+    uint32 num_of_pons_per_mac_dev = 4; /**< The number of pon ports per mac device in this access_terminal */
+    uint32 pon_family              = 5; /**< The PON family for the access_terminal */
+    uint32 pon_sub_family          = 6; /**< The PON sub-family for the access_terminal */
 }
 
 /** Structure definition for the "key" group of the "access_terminal" object.
@@ -600,6 +708,9 @@
     BalState admin_state = 1;   /**< Current administrative state */
     BalStatus oper_status = 2;  /**< Current operational status */
     BalIwfMode iwf_mode = 3;   /**< The interworking mode */
+    BalTopology topology = 4;       /**< Topology. */
+    BalSwVersion sw_version = 5;   /**< Software version information */
+
 }
 
 /** Transport message definition for "ind" group of "access_terminal" object.
@@ -611,6 +722,28 @@
     BalAccessTerminalIndData data = 3;   /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "oper_status_change" group of the
+ * "access_terminal" object.
+ *
+ * An indication of a change of operational status
+ */
+message BalAccessTerminalOperStatusChangeData
+{
+    BalStatus new_oper_status = 1;  /**< The current oper status */
+    BalStatus old_oper_status = 2;  /**< The previous oper status before this indication was reported */
+    BalState admin_state = 3;       /**< The current admin status */
+}
+
+/** Transport message definition for "oper_status_change" group of
+ *  access_terminal object.
+ */
+message BalAccessTerminalOperStatusChange
+{
+    BalObj hdr = 1;                /**< Transport header. */
+    BalAccessTerminalKey key = 2; /**< Object key. */
+    BalAccessTerminalOperStatusChangeData data = 3;    /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "key" group of the "flow" object.
  */
 message BalFlowKey
@@ -630,23 +763,23 @@
     uint32 sub_term_id = 5;              /**< The ID of the subsccriber terminal device */
     uint32 sub_term_uni_idx = 6;               /**< The index of the subsccriber terminal uni port the flow is related to */
     uint32 svc_port_id = 7;     /**< The ID of the service port (for GPON/XGPON - GEM ID) */
-    uint32 agg_port_id = 8; /**< The ID of the aggregate port (for GPON/XGPON - ALLOC ID) */
-    bool resolve_mac = 9;                 /**< A flag indicating if the MAC address table should be used in DS GEM resolution */
-    BalClassifier classifier = 10;           /**< The classifier for this flow */
-    BalAction action = 11;                   /**< The action associated with the flow */
-    BalSla sla = 12;             /**< SLA parameters for this flow */
-    uint64 cookie = 13;       /**< Application cookie */
-    uint32 priority = 14;          /**< Priority for this flow in case of multiple match. */
-    uint32 group_id = 15;   /**< RW - The multicast group associated with this flow, valid for type MULTICAST only */
-    BalTmQueue_ref queue = 16;  /**< Egress queue */
+    bool resolve_mac = 8;                 /**< A flag indicating if the MAC address table should be used in DS GEM resolution */
+    BalClassifier classifier = 9;           /**< The classifier for this flow */
+    BalAction action = 10;                   /**< The action associated with the flow */
+    uint64 cookie = 11;       /**< Application cookie */
+    uint32 priority = 12;          /**< Priority for this flow in case of multiple match. */
+    uint32 group_id = 13;   /**< RW - The multicast group associated with this flow, valid for type MULTICAST only */
+    BalTmQueueRef queue = 14;  /**< Egress queue */
+    uint32 dba_tm_sched_id = 15; /**< A reference to an us tm_sched used for us dba for this flow */
 }
 
 /** Transport message definition for "cfg" group of "flow" object.
  */
 message BalFlowCfg
 {
-    BalFlowKey key = 1;        /**< Object key. */
-    BalFlowCfgData data = 2;  /**< All properties that must be set by the user. */
+    BalObj hdr = 1;            /**< Transport header. */
+    BalFlowKey key = 2;        /**< Object key. */
+    BalFlowCfgData data = 3;  /**< All properties that must be set by the user. */
 }
 
 /** Structure definition for the "stat" group of the "flow" object.
@@ -677,15 +810,17 @@
     uint32 access_int_id = 3;         /**< The ID of the subscriber side interface; i.e. PON */
     uint32 network_int_id = 4;        /**< The ID of the network side interface; i.e. NNI */
     uint32 sub_term_id = 5;           /**< The ID of the subsccriber terminal device */
-    uint32 svc_port_id = 6;           /**< The ID of the service port (for GPON/XGPON - GEM ID) */
-    uint32 agg_port_id = 7;           /**< The ID of the aggregate port (for GPON/XGPON - ALLOC ID) */
+    uint32 sub_term_uni_idx = 6;           /**< The index of the subsccriber terminal uni port the flow is related to */
+    uint32 svc_port_id = 7;           /**< The ID of the service port (for GPON/XGPON - GEM ID) */
     bool resolve_mac = 8;         /**< A flag indicating if the MAC address table should be used in DS GEM resolution */
-    uint32 base_tc_id = 9;            /**< The base index of the TC object(s) to be used for this flow */
-    BalClassifier classifier = 10;   /**< The classifier for this flow */
-    BalAction action = 11;           /**< The action associated with the flow */
-    BalSla sla = 12;                 /**< SLA parameters for this flow */
-    uint32 cookie = 13;                /**< Application cookie */
-    uint32 priority = 14;              /**< Priority for this flow in case of multiple match. */
+    BalClassifier classifier = 9;   /**< The classifier for this flow */
+    BalAction action = 10;           /**< The action associated with the flow */
+    uint32 cookie = 11;                /**< Application cookie */
+    uint32 priority = 12;              /**< Priority for this flow in case of multiple match. */
+    uint32 group_id = 13;           /**< RW - The multicast group associated with this flow, valid for type MULTICAST only */
+    BalTmQueueRef queue = 14;          /**< Egress queue */
+    uint32 dba_tm_sched_id = 15; /**< A reference to an us tm_sched used for us dba for this flow */
+
 }
 
 /** Transport message definition for "ind" group of "flow" object.
@@ -697,6 +832,31 @@
     BalFlowIndData data = 3;  /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "oper_status_change" group of the "flow"
+ * object.
+ *
+ * An indication of a change of operational status
+ */
+message BalFlowOperStatusChangeData
+{
+   BalStatus new_oper_status = 1;      /**< The current oper status */
+   BalStatus old_oper_status = 2;      /**< The previous oper status before this indication was reported */
+   BalState admin_state = 3;           /**< The current admin status */
+   uint32 svc_port_id = 4;               /**< The ID of the service port (for GPON/XGPON - GEM ID) */
+   uint32 dba_tm_sched_id = 5; /**< A reference to an us tm_sched used for us dba for this flow */
+   uint64 cookie = 6;               /**< Opaque application cookie associated with the flow (not interpreted by Maple) */
+}
+
+/** Transport message definition for "oper_status_change" group of "flow"
+ * object.
+ */
+message BalFlowOperStatusChange
+{
+    BalObj hdr = 1;        /**< Transport header. */
+    BalFlowKey key = 2;    /**< Object key. */
+    BalFlowOperStatusChangeData data = 3;   /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "key" group of the "group" object.
  */
 message BalGroupKey
@@ -711,7 +871,7 @@
     BalGroupMemberCmd members_cmd = 1;        /**< Membership operation commands. */
     BalGroupMemberInfoList members = 2;  /**< The list of members associated with this group */
     uint64 cookie = 3;                       /**< Application cookie */
-    BalFlowIdList flows = 4;              /**< List of flows associated with this group */
+    BalIdList flows = 4;              /**< List of flows associated with this group */
     BalGroupOwner owner = 5;                   /**< Owner of the group. */
 }
 
@@ -723,6 +883,26 @@
     BalGroupCfgData data = 2; /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "ind" group of the "group" object.
+ */
+message BalGroupIndData
+{
+    BalGroupMemberCmd members_cmd = 1;        /**< Membership operation commands. */
+    BalGroupMemberInfoList members = 2;  /**< The list of members associated with this group */
+    uint64 cookie = 3;                       /**< Application cookie */
+    BalIdList flows = 4;              /**< List of flows associated with this group */
+    BalGroupOwner owner = 5;                   /**< Owner of the group. */
+}
+
+/** Transport message definition for "ind" group of "group" object.
+ */
+message BalGroupInd
+{
+    BalObj hdr = 1;            /**< Transport header. */
+    BalGroupKey key = 2;       /**< Object key. */
+    BalGroupIndData data = 3; /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "key" group of the "interface" object.
  */
 message BalInterfaceKey
@@ -739,13 +919,13 @@
     BalStatus oper_status = 2;  /**< Operational status */
     uint32 min_data_agg_port_id = 3;    /**< The minimum agg_portId that is allowed in the system */
     uint32 min_data_svc_port_id = 4;        /**< The minimum svc_portId that is allowed in the system */
-    BalTrxType transceiver_type = 5;                   /**< The transceiver type used on an interface */
+    BalTrxType transceiver_type = 5;                   /**< The transceiver type used on an interface. N/A for EPON.*/
     BalDsMissMode ds_miss_mode = 6;                   /**< Defines the action to take for unknown downstream packets */
     uint32 mtu = 7;                   /**< The MTU for an interface */
     BalControl flow_control = 8;    /**< Flow control enable or disable */
     uint32 ds_tm = 9;       /**< Downstream scheduler and shaper */
     uint32 us_tm = 10;       /**< Upstream scheduler and shaper */
-    SubTermIdList sub_term_id_list = 11;    /**< A list of subscriber terminal ids configured on this interface */
+    BalIdList sub_term_id_list = 11;    /**< A list of subscriber terminal ids configured on this interface */
 }
 
 /** Transport message definition for "cfg" group of "interface" object.
@@ -760,10 +940,21 @@
  */
 message BalInterfaceStatData
 {
-    uint64 rx_packets = 1;    /**< Recieved packets. */
-    uint64 rx_bytes = 2;      /**< Received bytes. */
-    uint64 tx_packets = 3;    /**< Transmitted packets. */
-    uint64 tx_bytes = 4;      /**< Transmitted bytes. */
+    uint64 rx_bytes = 1;          /**< RFC 2233 */
+    uint64 rx_packets = 2;        /**< RFC 1213 ucast + none-ucast */
+    uint64 rx_ucast_packets = 3;  /**< RFC 2233 */
+    uint64 rx_mcast_packets = 4;  /**< RFC 2233 */
+    uint64 rx_bcast_packets = 5;  /**< RFC 2233 */
+    uint64 rx_error_packets = 6;  /**< RFC 1213 */
+    uint64 rx_unknown_protos = 7; /**< RFC 1213 */
+    uint64 tx_bytes = 8;          /**< RFC 2233 */
+    uint64 tx_packets = 9;        /**< RFC 1213 ucast + none-ucast */
+    uint64 tx_ucast_packets = 10;  /**< RFC 2233 */
+    uint64 tx_mcast_packets = 11;  /**< RFC 2233 */
+    uint64 tx_bcast_packets = 12;  /**< RFC 2233 */
+    uint64 tx_error_packets = 13;  /**< RFC 1213 */
+    uint64 rx_crc_errors = 14;     /**< Received packets with CRC error. */
+    uint64 bip_errors = 15;        /**< Received bip errors (bip8 for gpon, bip32 for xgpon). */
 }
 
 /** Transport message definition for "stat" group of "interface" object.
@@ -789,6 +980,7 @@
     BalControl flow_control = 8;        /**< Flow control enable or disable */
     uint32 ds_tm = 9;           /**< Downstream scheduler and shaper */
     uint32 us_tm = 10;           /**< Upstream scheduler and shaper */
+    BalIdList sub_term_id_list = 11;    /**< A list of subscriber terminal ids configured on this interface */
 }
 
 /** Transport message definition for "ind" group of "interface" object.
@@ -800,6 +992,46 @@
     BalInterfaceIndData data = 3; /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "los" group of the "interface" object.
+ *
+ * An indication of a change olt los alarm
+ */
+message BalInterfaceLosData
+{
+    BalAlarmStatus status = 1; /**< The current admin status */
+}
+
+/** Transport message definition for "los" group of "interface" object.
+ */
+message BalInterfaceLos
+{
+    BalObj hdr = 1;                /**< Transport header. */
+    BalInterfaceKey key = 2;       /**< Object key. */
+    BalInterfaceLosData data = 3; /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "oper_status_change" group of the "interface"
+ * object.
+ *
+ * An indication of a change of operational status
+ */
+message BalInterfaceOperStatusChangeData
+{
+    BalStatus new_oper_status = 1;  /**< The current oper status */
+    BalStatus old_oper_status = 2;  /**< The previous oper status before this indication was reported */
+    BalState admin_state = 3;       /**< The current admin status */
+}
+
+/** Transport message definition for "oper_status_change" group of "interface"
+ * object.
+ */
+message BalInterfaceOperStatusChange
+{
+    BalObj hdr = 1;            /**< Transport header. */
+    BalInterfaceKey key = 2;   /**< Object key. */
+    BalInterfaceOperStatusChangeData data = 3;  /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "key" group of the "packet" object.
  */
 message BalPacketKey
@@ -831,7 +1063,7 @@
 
 /** Structure definition for the "ind" group of the "packet" object.
  */
-message BalPacketIndData
+message BalPacketBearerChannelRxData
 {
     uint32 flow_id = 1;             /**< N/A for sending a packet */
     BalFlowType flow_type = 2;         /**< Flow Type. */
@@ -842,13 +1074,53 @@
     bytes pkt = 7;             /**< Packet Data. */
 }
 
-/** Transport message definition for "ind" group of "packet" object.
+/** Transport message definition for "bearer_channel_rx" group of "packet"
+ * object.
  */
-message BalPacketInd
+message BalPacketBearerChannelRx
+{
+    BalObj hdr = 1;        /**< Transport header. */
+    BalPacketKey key = 2;  /**< Object key. */
+    BalPacketBearerChannelRxData data = 3;  /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "ieee_oam_channel_rx" group of the "packet"
+ * object.
+ *
+ * Rx indication on the IEEE OAM channel
+ */
+message BalPacketIeeeOamChannelRxData
+{
+    BalIdList pkt = 1;    /**< Packet Data. */
+}
+
+/** Transport message definition for "ieee_oam_channel_rx" group of "packet"
+ * object.
+ */
+message BalPacketIeeeOamChannelRx
+{
+    BalObj hdr = 1;        /**< Transport header. */
+    BalPacketKey key = 2;  /**< Object key. */
+    BalPacketIeeeOamChannelRxData data = 3;    /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "itu_omci_channel_rx" group of the "packet"
+ * object.
+ *
+ * Rx indication on the ITU OMCI channel
+ */
+message BalPacketItuOmciChannelRxData
+{
+    BalIdList pkt = 1;    /**< Packet Data. */
+}
+
+/** Transport message definition for "itu_omci_channel_rx" group of "packet" object.
+ */
+message BalPacketItuOmciChannelRx
 {
     BalObj hdr = 1;                /**< Transport header. */
     BalPacketKey key = 2;          /**< Object key. */
-    BalPacketIndData data = 3;    /**< All properties that must be set by the user. */
+    BalPacketItuOmciChannelRxData data = 3;    /**< All properties that must be set by the user. */
 }
 
 /** Structure definition for the "key" group of the "subscriber_terminal"
@@ -874,8 +1146,9 @@
     bytes mac_address = 7;                          /**< The Ethernet MAC address of an EPON subscriber terminal */
     uint32 ds_tm = 8;                               /**< Downstream scheduler and shaper */
     uint32 us_tm = 9;                               /**< Upstream scheduler and shaper */
-    SvcPortIdList svc_port_id_list = 10;        /**< A list of bearer traffic svc_port_ids associated with this subscriber terminal */
-    BalAggregationPortIdList agg_port_id_list = 11;    /**< A list of aggrPort_ids associated with this subscriber terminal */
+    BalIdList svc_port_id_list = 10;        /**< A list of bearer traffic svc_port_ids associated with this subscriber terminal */
+    BalIdList agg_port_id_list = 11;    /**< A list of aggrPort_ids associated with this subscriber terminal */
+    BalSubTermRate sub_term_rate = 12;                     /**< sub_term_rate. */
 }
 
 /** Transport message definition for "cfg" group of "subscriber_terminal"
@@ -908,6 +1181,24 @@
     BalSubscriberTerminalStatData data = 3;  /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "dgi" group of the "subscriber_terminal"
+ * object.
+ */
+message BalSubscriberTerminalDgiData
+{
+    BalAlarmStatus dgi_status = 1; /**< dgi_status. */
+}
+
+/** Transport message definition for "dgi" group of "subscriber_terminal"
+ * object.
+ */
+message BalSubscriberTerminalDgi
+{
+    BalObj hdr = 1;                    /**< Transport header. */
+    BalSubscriberTerminalKey key = 2; /**< Object key. */
+    BalSubscriberTerminalDgiData data = 3;   /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "ind" group of the "subscriber_terminal"
  * object.
  */
@@ -922,6 +1213,8 @@
     bytes mac_address = 7;          /**< The Ethernet MAC address of an epon subscriber terminal */
     uint32 ds_tm = 8;               /**< Downstream scheduler and shaper */
     uint32 us_tm = 9;               /**< Upstream scheduler and shaper */
+    BalIdList agg_port_id_list = 10;    /**< A list of aggr_port_ids associated with this subscriber terminal */
+    BalSubTermRate sub_term_rate = 11;                     /**< sub_term_rate. */
 }
 
 /** Transport message definition for "ind" group of "subscriber_terminal"
@@ -934,6 +1227,64 @@
     BalSubscriberTerminalIndData data = 3;   /**< All properties that must be set by the user. */
 }
 
+/** Structure definition for the "oper_status_change" group of the
+ * "subscriber_terminal" object.
+ *
+ * An indication of a change of operational status
+ */
+message BalSubscriberTerminalOperStatusChangeData
+{
+    BalStatus new_oper_status = 1;  /**< The current oper status */
+    BalStatus old_oper_status = 2;  /**< The previous oper status before this indication was reported */
+    BalState admin_state = 3;       /**< The current admin status */
+}
+
+/** Transport message definition for "oper_status_change" group of
+ * "subscriber_terminal" object.
+ */
+message BalSubscriberTerminalOperStatusChange
+{
+    BalObj hdr = 1;                    /**< Transport header. */
+    BalSubscriberTerminalKey key = 2; /**< Object key. */
+    BalSubscriberTerminalOperStatusChangeData data = 4;    /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "sub_term_alarm" group of the
+ * "subscriber_terminal" object.
+ */
+message BalsubscriberTerminalSubTermAlarmData
+{
+    BalSubscriberTerminalAlarms alarm = 1;    /**< The serial number of an  ITU PON (GPON/XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
+}
+
+/** Transport message definition for "sub_term_alarm" group of
+ * "subscriber_terminal" object.
+ */
+message BalSubscriberTerminalSubTermAlarm
+{
+    BalObj hdr = 1;                    /**< Transport header. */
+    BalSubscriberTerminalKey key = 2; /**< Object key. */
+    BalsubscriberTerminalSubTermAlarmData data = 3;    /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "sub_term_disc" group of the
+ * "subscriber_terminal" object.
+ */
+message BalSubscriberTerminalSubTermDiscData
+{
+    BalSerialNumber serial_number = 1; /**< The serial number of an  ITU PON (GPON/XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
+}
+
+/** Transport message definition for "sub_term_disc" group of
+ * "subscriber_terminal" object.
+ */
+message BalSubscriberTerminalSubTermDisc
+{
+    BalObj hdr = 1;                    /**< Transport header. */
+    BalSubscriberTerminalKey key = 2; /**< Object key. */
+    BalSubscriberTerminalSubTermDiscData data = 3; /**< All properties that must be set by the user. */
+}
+
 /** Structure definition for the "key" group of the "TmQueue" object.
  */
 message BalTmQueueKey
@@ -988,7 +1339,12 @@
  */
 message BalTmQueueIndData
 {
-    uint32 ret = 1;   /**< ret */
+    uint32 priority = 1;    /**< priority. */
+    uint32 weight = 2;        /**< weight. */
+    BalTmShaping rate = 3;         /**< rate. */
+    BalTmBac bac = 4;              /**< bac. */
+    BalTmCreationMode create_mode = 5;    /**< create_mode. */
+    uint32 ref_count = 6;                      /**< ref_count. */
 }
 
 /** Transport message definition for "ind" group of "TmQueue" object.
@@ -1012,16 +1368,17 @@
  */
 message BalTmSchedCfgData
 {
-    BalTmSchedOwner owner = 1;        /**< owner. */
+    BalTmSchedOwner owner = 1;        /**< The owner of the tm_sched object instance*/
     BalTmSchedType sched_type = 2;    /**< Scheduler type */
     BalTmSchedParent sched_parent = 3;            /**< Scheduling parameters for parent scheduler */
     BalTmSchedChildType sched_child_type = 4;    /**< Scheduling level for children tm  */
-    BalTmShaping rate = 5;                 /**< Rate shaping parameters */
-    BalTmTcontSla tcont_sla = 6;          /**< Additional SLA parameters for aggPort owner */
-    BalTmCreationMode creation_mode = 7;  /**< Creation mode */
-    BalTmQueueIdList queues = 8;      /**< Subsidiary queues */
-    BalTmSchedIdList sub_scheds = 9;  /**< Subsidiary schedulers */
-    uint32 num_priorities = 10;                 /**< Max number of strict priority scheduling elements */
+    uint32 num_priorities = 5;                 /**< Max number of strict priority scheduling elements */
+    BalTmShaping rate = 6;                 /**< Rate shaping parameters */
+    BalExtendedItuDba ext_itu_dba = 7;    /**< Extended itu dba parameters for an agg_port owned tm_sched */
+    BalExtendedEponDba ext_epon_dba = 8;  /**< epon dba parameters for an agg_port owned tm_sched */
+    BalTmCreationMode creation_mode = 9;  /**< Creation mode */
+    BalIdList queues = 10;      /**< Subsidiary queues */
+    BalIdList sub_scheds = 11;  /**< Subsidiary schedulers */
 }
 
 /** Transport message definition for "cfg" group of "Tmsched" object.
@@ -1038,7 +1395,17 @@
  */
 message BalTmSchedIndData
 {
-    uint32 ret = 1;   /**< ret */
+    BalTmSchedOwner owner = 1;        /**< The owner of the tm_sched object instance */
+    BalTmSchedType sched_type = 2;    /**< Scheduler type */
+    BalTmSchedParent sched_parent = 3;            /**< Scheduling parameters for parent scheduler */
+    BalTmSchedChildType sched_child_type= 4;    /**< Scheduling type of all child tm objects */
+    uint32 num_priorities = 5;                 /**< Max number of strict priority scheduling elements */
+    BalTmShaping rate = 6;                 /**< Rate shaping parameters */
+    BalExtendedItuDba ext_itu_dba = 7;    /**< Extended itu dba parameters for an agg_port owned tm_sched */
+    BalExtendedEponDba ext_epon_dba = 8;  /**< epon dba parameters for an agg_port owned tm_sched */
+    BalTmCreationMode creation_moden= 9;  /**< Creation mode */
+    BalIdList queues = 10;      /**< Subsidiary queues */
+    BalIdList sub_scheds = 11;  /**< Subsidiary schedulers */
 }
 
 /** Transport message definition for "ind" group of "TmSched" object.
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_obj.proto b/voltha/adapters/asfvolt16_olt/protos/bal_obj.proto
index d528be3..9d4b169 100644
--- a/voltha/adapters/asfvolt16_olt/protos/bal_obj.proto
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_obj.proto
@@ -28,13 +28,14 @@
 {
     uint32         version_major = 2;   /**< Header Major version number */
     uint32         version_minor = 3;   /**< Header Minor version number */
-    BalMsgType  msg_type = 4;        /**< Request / Response / Ack / Indication */
+    BalMsgType     msg_type = 4;        /**< Request / Response / Ack / Indication */
     uint32         msg_id = 5;          /**< Message ID – the ID of the message (subID under the message type) */
     uint32         ex_id = 6;           /**< Exchange ID for message tracking between endpoints */
-    BalSubsystem    sender = 7;          /**< Sender subsystem - used for additional validation */
+    BalSubsystem   sender = 7;          /**< Sender subsystem - used for additional validation */
     uint32         timestamp = 8;       /**< Timestamp when the message was sent */
-    uint64            scratchpad = 10;      /**< Scratchpad used for inter-thread communication */
-    bytes          payload = 11;       /**< Payload follows the header */
+    uint64         scratchpad = 10;     /**< Scratchpad used for inter-thread communication */
+    uint32         access_term_id = 11; /**< Access Term Id for this BAL message */
+    bytes          payload = 12;        /**< Payload follows the header */
 }
 
 /** Helper type to determine what the data format of a message should look like */
@@ -68,12 +69,12 @@
 message BalObj
 {
     Bal_comm_msg_hdr     comm_hdr = 1;      /**< Communication header */
-    uint32    version = 2;       /**< Version of the Object definition/messageure */
-    BalObjId        obj_type = 3;      /**< An enumerated ID associated with the object being specified */
-    Bal_mgt_group     group = 4;         /**< Management group */
-    uint32             subgroup = 5;      /**< Subgroup for indications */
-    BalObj_msg_type  type = 6;          /**< Type (e.g. get / set / clear)  */
-    BalObj_msg_dir   dir = 7;           /**< Direction - request / response */
-    BalErrno		     status = 8;        /**< BAL status code (BCM_ERR_OK–success, error code otherwise) */
-    uint64 presence_mask = 9; /**< Indicates which attribute parameters are present */
+    uint32               om_version = 2;    /**< Version of the Object Model definition/messageure */
+    BalObjId             obj_type = 3;      /**< An enumerated ID associated with the object being specified */
+    Bal_mgt_group        group = 4;         /**< Management group */
+    uint32               subgroup = 5;      /**< Subgroup for indications */
+    BalObj_msg_type      type = 6;          /**< Type (e.g. get / set / clear)  */
+    BalObj_msg_dir       dir = 7;           /**< Direction - request / response */
+    BalErrno		 status = 8;        /**< BAL status code (BCM_ERR_OK–success, error code otherwise) */
+    uint64               presence_mask = 9; /**< Indicates which attribute parameters are present */
 }